summaryrefslogtreecommitdiff
path: root/language/chinese/CJK/cjk-4.8.5
diff options
context:
space:
mode:
Diffstat (limited to 'language/chinese/CJK/cjk-4.8.5')
-rw-r--r--language/chinese/CJK/cjk-4.8.5/ChangeLog2603
-rw-r--r--language/chinese/CJK/cjk-4.8.5/MANIFEST466
-rw-r--r--language/chinese/CJK/cjk-4.8.5/Makefile216
-rw-r--r--language/chinese/CJK/cjk-4.8.5/README36
-rw-r--r--language/chinese/CJK/cjk-4.8.5/TODO6
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/DNP.sfd42
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42goth.fd22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42goth.fdx66
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42maru.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42maru.fdx66
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42min.fd26
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42min.fdx91
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52maru.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52maru.fdx16
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52min.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52min.fdx16
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70goth.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70goth.fdx137
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70maru.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70maru.fdx137
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70min.fd28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70min.fdx203
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/fixwada81
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/fixwada2.pl242
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/makefont108
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/makeuniwada.pl333
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/wadalab.map187
-rw-r--r--language/chinese/CJK/cjk-4.8.5/contrib/wadalab/wadalab.txt384
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/CEF.txt86
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/CJK.txt1273
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/CJKnumb.txt25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/CJKspace.txt22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/CJKutf8.txt40
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/COPYING340
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/INSTALL686
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/TDS.txt172
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/chinese/README7
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/chinese/READMEb5.tex1150
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/chinese/READMEgb.tex92
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/chinese/emTeXb5.txt357
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/chinese/teTeXb5.txt327
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/cjk-enc.txt438
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/commands.txt388
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/dvidrv.txt56
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/fdxfiles.txt111
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/fonts.txt311
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/hbf2gf.txt382
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/history.2_5202
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/history.txt1576
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/japanese/README18
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/japanese/ascii.txt58
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/japanese/japanese.jis642
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/japanese/japanese.txt637
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/japanese/jp-fonts.txt54
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/japanese/jp-tex.txt50
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/japanese/preview.txt39
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/japanese/shibuaki.txt150
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/HOWTO.txt425
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/bkai.map55
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/cid-x.map364
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/cwtb.map55
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/dvipdfmx.cfg164
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/gen-map.pl120
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/map.list78
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/Bg5/c00cwtb.fd11
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/Bg5/c00tmpl.fd11
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/GB/c10tmpl.fd11
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/JIS/c40tmpl.fd10
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/SJIS/c49tmpl.fd10
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/updmap.my161
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/wcl.sfd62
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pinyin.txt62
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/pyhyphen.txt135
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/reftex.txt34
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/ruby.txt139
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/thaifont.txt130
-rw-r--r--language/chinese/CJK/cjk-4.8.5/doc/vertical.txt120
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/Big5.tex35
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/Big5vert.tex35
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/CEF_test.tex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/CJKbabel.tex138
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/CJKfntef.tex90
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/CJKmixed.tex81
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/CJKspace.tex41
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/CJKutf8.tex139
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/GB.tex31
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/JIS.tex35
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/KS.tex31
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/README66
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/SJIS.tex39
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/UTF8.tex48
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/muletest.tex152
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/py_test.tex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/rubytest.tex56
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/thai.tex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/examples/thai_utf8.tex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.cap86
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.chr219
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.cpx86
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.enc226
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/HK.enc276
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bkai.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bkai.fdx147
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmi.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmi.fdx147
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmir.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmir.fdx15
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00cns.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00fs.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kai.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kair.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kair.fdx15
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00song.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c01song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c05song.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c09song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CEF/c80song.fd34
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CEF/c81song.fd33
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CJK.enc1092
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CJK.sty1136
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CJKfntef.sty509
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CJKnumb.sty400
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CJKspace.sty98
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CJKulem.sty193
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CJKutf8.sty720
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CJKvert.sty159
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.bdg130
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.chr210
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.enc138
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CNS/c31song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CNS/c32song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CNS/c33song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CNS/c34song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CNS/c35song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CNS/c36song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/CNS/c37song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/GB.cap86
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/GB.cpx84
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/c10fs.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gbsn.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gbsn.fdx70
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gkai.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gkai.fdx70
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/c10song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/c11song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/c19song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/c20song.fd31
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/GB/c21song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.bdg131
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.chr246
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.enc141
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JPdnp.enc142
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/JIS.cap83
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/JIS.cpx80
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/JISdnp.enc132
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/c40song.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/c41song.fd23
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/c42song.fd28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/c43song.fd27
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/JIS/c50song.fd26
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/HLaTeX.chr229
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/KSHL.enc134
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63bm.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63dn.fd69
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gr.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gs.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gt.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jgt.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jmj.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jnv.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jsr.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63mj.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pg.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pga.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63ph.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pn.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63sh.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63tz.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63vd.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63yt.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64bm.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64dn.fd69
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gr.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gs.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gt.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jgt.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jmj.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jnv.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jsr.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64mj.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pg.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pga.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64ph.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pn.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64sh.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64tz.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64vd.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64yt.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65bm.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65dn.fd69
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gr.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gs.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gt.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jgt.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jmj.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jnv.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jsr.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65mj.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pg.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pga.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65ph.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pn.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65sh.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65tz.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65vd.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65yt.fd53
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/pshan.sty29
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/KS.chr251
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/KS.enc114
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c60dr.fd22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gr.fd22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gs.fd22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gt.fd22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hgt.fd22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hmj.fd22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hol.fd22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hpg.fd22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c60mj.fd22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c61dr.fd27
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gr.fd26
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gs.fd26
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gt.fd26
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hgt.fd24
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hmj.fd24
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hol.fd26
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hpg.fd24
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c61mj.fd24
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/c62song.fd22
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul.cap74
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul.cpx71
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul2.cap74
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul2.cpx71
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/hanja.cap74
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/KS/hanja.cpx71
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.bdg162
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.cap84
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.chr260
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.cpx81
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.enc199
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJISdnp.chr253
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJISdnp.enc192
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/SJIS/c49song.fd25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.bdg156
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.chr276
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.enc140
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bkai.fd21
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bkai.fdx325
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bsmi.fd21
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bsmi.fdx325
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gbsn.fd21
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gbsn.fdx15
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gkai.fd21
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gkai.fdx15
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70mj.fd51
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70mj.fdx15
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70song.fd21
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ja.cpx83
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hang.cpx74
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hang2.cpx74
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hani.cpx74
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/zh-Hans.cpx86
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/UTF8/zh-Hant.cpx86
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/extended.chr219
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/extended.enc289
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/mule/MULEenc.sty501
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/pinyin.sty1234
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/pmC.chr98
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/pmCbig.enc133
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/pmCsmall.enc133
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/ruby.sty174
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/standard.bdg161
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/standard.chr203
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/standard.enc131
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmr.fd24
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmss.fd24
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmtt.fd24
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/thai/c90enc.def110
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/thai/c90gar.fd34
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/thai/c90nrsr.fd34
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texinput/thai/thaicjk.ldf89
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texlive/README2
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texlive/bin-cjkutils.pl112
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texlive/c63mj.fd56
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texlive/c64mj.fd56
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texlive/c65mj.fd56
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texlive/c90.pl28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texlive/cjk-build.pl63
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texlive/cjk.pl489
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texlive/dnp.pl21
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texlive/garuda-c90.pl32
-rw-r--r--language/chinese/CJK/cjk-4.8.5/texlive/norasi-c90.pl32
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.1110
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.c33
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.w121
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex.cmd44
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5pdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.1127
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.c135
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.w237
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5latex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5ltx.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5ltx.cmd46
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5pdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.1117
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.c127
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.w221
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex.cmd46
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefpdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.1127
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.c135
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.w240
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefslatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsltx.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsltx.cmd46
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefspdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.1110
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.c33
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.w123
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjislatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisltx.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisltx.cmd44
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjispdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/cjklatex/cjklatex.c293
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/extconv/bg5+latex43
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/extconv/bg5+pdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5pltx.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5pltx.cmd44
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.1111
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.c34
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.w122
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex.cmd44
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/extconv/gbkpdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/f_name.bat205
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/Makefile.gnu127
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/Makefile.in127
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/README2
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/c-auto.h39
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/README10
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5ka12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5kr12.cfg30
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5so12.cfg31
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c1so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c2so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c3so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c4so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c5so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c6so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c7so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/csso12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/gsfs14.cfg27
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/j2so12.cfg30
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/jsso12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/ksso17.cfg27
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/hbf2gf/config.guess1748
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/hbf2gf/config.sub1884
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/hbf2gf/configure5224
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/configure.ac128
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/dvidrv.btm352
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emdir.c109
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emdir.h25
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emtexdir.c405
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emtexdir.h57
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf.c1494
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf.h215
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.1718
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.c2250
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.def3
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.w2816
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/hbf2gf/install-sh541
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.5/utils/hbf2gf/mkinstalldirs162
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXPK.diff63
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXTFM.diff28
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-6.1/MakeTeXPK.diff75
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-6.1/README1
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.0/MakeTeXPK.diff67
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.0/MakeTeXTFM.diff36
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.1/MakeTeXPK.diff72
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.1/MakeTeXTFM.diff36
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.2/mktexpk.diff72
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.2/mktextfm.diff36
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/lisp/cjkspace.el102
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/lisp/cjktilde.el111
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/lisp/emacs/cjk-enc.el1183
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/lisp/emacs/thai-word.el11052
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/lisp/mule-2.3/cjk-enc.el625
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/GNUmakefile75
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-pinyin.in66
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-pinyin.tex253
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-tonepinyin.tex253
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/make-patterns.sh62
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.c494
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.ldf75
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.tr51
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pytest.tex51
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pytestutf8.tex68
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/subfonts/clonevf.pl122
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/subfonts/hlatex2agl.pl477
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/subfonts/makefdx.pl340
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/subfonts/sfd2uni.pl348
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/subfonts/subfonts.pe95
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/subfonts/uni2sfd.pl312
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/subfonts/vertical.pe108
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/subfonts/vertref.pe121
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c901
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c901
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc334
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map4
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map4
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfmbin0 -> 3660 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfmbin0 -> 3912 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfmbin0 -> 3832 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfmbin0 -> 3580 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfmbin0 -> 6412 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfmbin0 -> 6640 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftni8z.tfmbin0 -> 6664 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfmbin0 -> 6424 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/INSTALL333
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/c90.etx2346
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/c90.mtx42
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/config.dbtt-old1
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx46
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx36
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex139
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst78
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old.map4
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/garuda-c90.fontinst77
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/norasi-c90.fontinst85
443 files changed, 82046 insertions, 0 deletions
diff --git a/language/chinese/CJK/cjk-4.8.5/ChangeLog b/language/chinese/CJK/cjk-4.8.5/ChangeLog
new file mode 100644
index 0000000000..d5563c1f7b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/ChangeLog
@@ -0,0 +1,2603 @@
+2021-10-16 Werner LEMBERG <wl@gnu.org>
+
+ Version 4.8.5 released
+ ======================
+
+ Set version to 4.8.5.
+
+ * doc/history.txt: Updated.
+
+ Update headers in all text files.
+
+2021-10-16 Werner LEMBERG <wl@gnu.org>
+
+ [hbf2gf] Update config and auxiliary scripts.
+
+ * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub,
+ utils/hbf2gf/install-sh, utils/hbf2gf/mkinstalldirs: Updated to
+ current versions.
+
+ * utils/hbf2gf/configure: Regenerated with autoconf 2.71.
+
+2021-10-16 Werner Lemberg <wl@gnu.org>
+
+ Update to current LaTeX version.
+
+ Currently, there is a first-aid patch in the LaTeX kernel to make
+ the CJK package work. This commit moves the corresponding code to
+ here so that the first-aid stuff can be removed.
+
+ * texinput/CJK.sty (\IfFormatAtLeastTF): New macro.
+ (\selectfont): Use the `\selectfont' hook for recent LaTeX versions.
+
+2018-11-25 Werner Lemberg <wl@gnu.org>
+
+ Generate pinyin hyphenation pattern files from last commit.
+
+ * utils/pyhyphen/hyph-zh-latn-pinyin.tex,
+ utils/pyhyphen/hyph-zh-latn-tonepinyin.tex: New files.
+
+2018-11-25 Werner Lemberg <wl@gnu.org>
+
+ Rewrite pinyin hyphenation support.
+
+ Investigation has shown that the apostrophe before a syllable
+ starting with `a', `e', or `o' should vanish if a line break occurs.
+ This commit fixes this bug: The apostrophe should now be entered
+ with the Babel shorthand "'; character ' itself is no longer part of
+ the hyphenation patterns.
+
+ It also adds support for pinyin syllables with tone markers, to be
+ used with Unicode engines like XeTeX or luatex.
+
+ Finally, the license for the resulting pattern files have been
+ changed from GPL to MIT to allow broader usage.
+
+ * utils/pyhyphen/GNUmakefile: New file. Saying `make' will generate
+ the hyphenation pattern files `hyph-zh-latn-pinyin.tex' and
+ `hyph-zh-latn-tonepinyin.tex'.
+
+ * utils/pyhyphen/hyph-zh-latn-pinyin.in,
+ utils/pyhyphen/make-patterns.sh: New auxiliary files.
+
+ * utils/pyhyphen/pyhyph.tex: Removed. Obsolete.
+
+ * utils/pyhyphen/pytestutf8.tex: New file to demonstrate patterns
+ for tone pinyin.
+
+ * utils/pyhyphen/pinyin.c, utils/pyhyphen/pinyin.ldf,
+ utils/pyhyphen/pinyin.tr, utils/pytest.tex: Updated.
+
+ * doc/pyhyphen.txt, MANIFEST: Updated.
+
+2016-12-27 Werner Lemberg <wl@gnu.org>
+
+ * utils/lisp/emacs/cjk-enc.el (cjk-coding): Remove `chinese-big5'.
+
+ Hin-Tak reports this doesn't work...
+
+2016-12-26 Hin-Tak Leung <htl10@users.sourceforge.net>
+
+ [cjk-enc.el] Updated to work with Emacs 25 and later.
+
+ In batch mode, `message' in Emacs 25+ obeys coding-system-for-write.
+
+ http://git.savannah.gnu.org/cgit/emacs.git/commit/?h=emacs-25&id=c63246628461f748d66a8a07ba008de2e00fd33a
+
+ `cjk-encode' can mis-behave and, at worst, crash from `message'
+ recursing.
+
+ https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25203
+
+ The charset priority system introduced with Emacs 23+ changes
+ further in Emacs 25+. Charset `big5' has been updated (together
+ with `big5-hkscs') and now takes priority over the historical
+ `chinese-big5-2' and `chinese-big5-1'.
+
+ http://git.savannah.gnu.org/cgit/emacs.git/commit/?h=emacs-25&id=9f89ea1f84dbf708228ced0202774b36f30f2b01
+ http://git.savannah.gnu.org/cgit/emacs.git/commit/?h=emacs-25&id=49fa1919e9be863f22ec8042704bf3436d0ec26d
+
+ Also worth noting is that, "Wrote output.cjk" is no longer seen with
+ Emacs 25+.
+
+ http://git.savannah.gnu.org/cgit/emacs.git/commit/?h=emacs-25&id=d20f82e6f1ab902469723ebd530ca21bea9cc41b
+
+ Tested against example/{Big5.tex, Big5vert.tex, CJKbabel.tex,
+ muletest.tex, rubytest.tex, thai.tex}, and LANG'ed non-'coding:'ed
+ big5 example, with emacs 21.4, 22.3, 23.3, 24.5 and 25.1.
+
+ Thanks for advice from Eli Zaretskii.
+
+ * utils/lisp/emacs/cjk-enc.el (cjk-enc-table,
+ cjk-format-spec-table): Add `big5' encoding.
+ (cjk-coding): Add `chinese-big5'.
+ (cjk-encode): Adjust Big5 language detection heuristics for Emacs
+ 25+; support `big5' encoding.
+ Use `terminal-coding-system' while emitting messages.
+
+2015-04-18 Werner LEMBERG <wl@gnu.org>
+
+ Version 4.8.4 released
+ ======================
+
+ Set version to 4.8.4.
+
+ * doc/history.txt: Updated.
+
+ * Makefile (distsrc, distdoc): Use tar's `ustar' format.
+ Compress better.
+
+ Update headers in all text files.
+
+2015-04-18 Werner LEMBERG <wl@gnu.org>
+
+ [hbf2gf] Update aux scripts.
+
+ * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub,
+ utils/hbf2gf/install-sh: Updated to current versions.
+
+2014-08-31 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ [hbf2gf]: Avoid undefined behaviour when `char' is signed.
+
+ * utils/hbf2gf/hbf.c (match, add_property, skip_word, get_line): Use
+ proper cast.
+ * utils/hbf2gf/hbf2gf.w (fsearch, <Check for environment
+ variables>): Ditto.
+
+2014-08-31 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * utils/hbf2gf/hbf2hf.w (path_open): Drop unused variable.
+
+2014-06-28 Leo Liu <leoliu.pku@gmail.com>
+
+ [CJKutf8] Fix space handing of non-CJK characters.
+
+ * texinput/CJKutf8.sty (\CJK@XX, \CJK@XXp, \CJK@XXX, \CJK@XXXp):
+ Only apply \CJK@ignorespaces for CJK characters (or rather, only for
+ multibyte sequences that don't map to a `\u8:...' macro).
+
+2012-09-13 Werner LEMBERG <wl@gnu.org>
+
+ * examples/CJKutf8.tex: Add Greek.
+
+ This finally works due to the recent lgrx package which delivers
+ good Babel UTF8 support for LGR encoding.
+
+ An unsolved problem yet, however, is proper cut-and-paste support.
+ While dvipdfmx properly generates CMaps for CJK encodings (even
+ for virtual fonts which pdftex doesn't handle at all), it doesn't
+ handle encodings like LGR correctly, something the `cmap' package
+ provides for pdflatex.
+
+2012-08-26 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty (\Unicode): Fix conditional to allow line breaks.
+
+ Problem reported by Jinsong Zhao <jszhao@yeah.net>; it seems that
+ this bug has been there since from the beginning.
+
+2012-06-21 Werner LEMBERG <wl@gnu.org>
+
+ Make some commands robust.
+
+ * texinput/CJK.sty (\CJKtilde, \standardtilde, \CJKspace,
+ \CJKnospace): Use \DeclareRobustCommand.
+
+2012-05-20 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ [hbf2gf] Build fix for 64-bit Mac OS X 10.7.3.
+
+ * utils/hbf2gf/hbf2gf.w: Clang does not like non-static inline
+ functions as used here. While at it, all local functions are
+ declared static.
+ Do not extend #ifdef HAVE_EMTEXDIR...#endif over several sections.
+
+2012-05-08 Werner LEMBERG <wl@gnu.org>
+
+ * texlive/cjk.pl: Add missing file.
+
+2012-05-07 Werner LEMBERG <wl@gnu.org>
+
+ Version 4.8.3 released
+ ======================
+
+ Set version to 4.8.3.
+
+ * doc/history.txt: Updated.
+
+ * Makefile (CJK2DVI, LATEX2DVI): Set TFMFONTS.
+
+ Update headers in all text files.
+
+2012-05-07 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub,
+ utils/hbf2gf/install-sh, utils/hbf2gf/mkinstalldirs: Updated to
+ current versions.
+
+ * utils/hbf2gf/configure: Regenerated with autoconf 2.69.
+
+2012-05-07 Werner LEMBERG <wl@gnu.org>
+
+ [thai] Update to font-tlwg 0.5.
+
+ * doc/thaifont.txt, utils/thaifont/tools/INSTALL: Updated.
+
+ * utils/thaifont/texmf/fonts/tfm/public/norasi/ftnr8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftnb8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftnbo8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftno8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/garuda/fgdr8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/garuda/fgdb8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/garuda/fgdbo8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/garuda/fgdo8z.tfm: Regenerated
+ with fontinst.
+
+2012-05-05 Hin-Tak Leung <htl10@users.sourceforge.net>
+
+ [cjk-enc.el] Accept Thai input in utf-8 encoding.
+
+ * utils/lisp/emacs/cjk-enc.el: Treat Unicode 0x0EXX inputs as Thai.
+
+ * examples/thai_utf8.tex: New sample file.
+
+ * Makefile (DISTTARGETS): Add `thai_utf8.tex'.
+ (thai_utf8): New target.
+
+ * MANIFEST, texlive/cjk.pl: Updated.
+
+2012-05-05 Werner LEMBERG <wl@gnu.org>
+
+ Remove xCJK files.
+
+ The stuff is obsolete and no longer works out of the box. Given
+ that there exists the `xeCJK' package, those files are really
+ useless today.
+
+ * examples/xCJK.tex, texinput/UTF8/xUTF8.chr,
+ texinput/UTF8/xUTF8.enc, texinput/xCJK.sty, texinput/xpmC.chr,
+ texinput/xpmC.enc, doc/xCJK.txt: Removed.
+
+ * MANIFEST, texlive/cjk.pl: Updated.
+
+ * Makefile (XELATEX, xCJK): Removed.
+ (DISTTARGETS): Updated.
+
+2012-05-05 Qing Lee <sobenlee@gmail.com>
+
+ [CJKfntef] Fix incompatibility with `ulem.sty'.
+
+ * texinput/CJKfntef.tex (\CJKunderdot): Version 2010-01-21 of
+ `ulem.sty' silently adds a line which redefines \par (its author
+ says this was an oversight). This exhibits a bug in \CJKunderdot
+ which implicitly emits \par by inserting an \hskip command in
+ vertical mode. Simply omitting this \hskip fixes the issue.
+
+2012-04-20 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/Bg5/Bg5.cpx, texinput/JIS/JIS.cpx: Fix typos.
+
+2012-04-20 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/UTF8/zh-Hans.cpx: Synchronize.
+
+2012-04-20 Jiangsheng Yu <yujs@ittc.ku.edu>
+
+ * texinput/GB/GB.cap, texinput/GB/GB.cpx: Improve.
+
+2011-12-16 Hin-Tak Leung <htl10@users.sourceforge.net>
+
+ [cjk-enc.el] Make it work with emacs 23 and newer.
+
+ Emacs 23+ introduces native Unicode support and uses a new charset
+ priority system: `char-charset' and `split-char' preferably now
+ return the Unicode charset and code points, respectively;
+ non-Unicode charsets and code points are only used if they have a
+ higher charset priority. On the other hand, information on the
+ original charset is preserved in the text property `charset'.
+
+ Another change is the new charset/text-property called `tis620-2533'
+ (a superset of `ascii' and `thai-tis620'), introduced in emacs 23.
+ This has the tendency of swallowing up every ASCII character and
+ goes into an infinite loop with `examples/thai.tex', so we have to
+ handle this also.
+
+ Tested with emacs 22.3 and 23.3, and
+ EMACS_PRETEST_24_0_92-142-g559675b on examples/{CJKbabel.tex,
+ muletest.tex, rubytest.tex, thai.tex}.
+
+ * utils/lisp/emacs/cjk-enc.el [emacs version >= 23]:
+ `make-coding-system' is deprecated -- use `define-coding-system'
+ instead.
+
+ Use the `charset' text property instead of the outcome of
+ `char-charset' to explicitly set the charset priority; this makes
+ `split-char' work as with emacs 22 and earlier.
+
+ Set new optional `restriction' argument of `char-charset' to avoid
+ problems with `tis620-2533'.
+
+2011-12-03 Werner LEMBERG <wl@gnu.org>
+
+ * examples/thai.tex: Improve prologue comments.
+
+2011-10-04 Werner LEMBERG <wl@gnu.org>
+
+ [CEFconv, SJISconv] Document missing range 0xF0-0xFC.
+
+ * utils/CEFconv/cefsconv.w, utils/SJISconv/sjisconv.w: Do it.
+
+2011-10-04 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ [cjklatex] Don't include `kpathsea/win32lib.h'.
+ This is already done from `kpathsea/config.h'.
+
+ * utils/cjklatex/cjklatex.c: Implement it.
+
+2011-10-04 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ [cefconv] Various fixes.
+
+ * utils/CEFconv/cef5conv.w: Fix output so that it really works as
+ bg5conv + cefconv.
+ * utils/CEFconv/cefsconv.w: Fix output so that it really works as
+ sjisconv + cefconv.
+ * utils/CEFconv/cefconv.w: Typo.
+
+2011-09-03 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ [cjklatex] Introduce `LATEX' preprocessor macro.
+
+ * utils/cjklatex/cjklatex.c (LATEX): New macro. Use it where
+ appropriate to remove the hardcoded usage of `latex'. For example,
+ LATEX can be defined as `pdflatex' (as done in TeXLive).
+
+2011-09-03 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ [cjklatex] Various updates to stay in sync with TeXLive.
+
+ * utils/cjklatex/cjklatex.c: Include kpathsea/win32lib.h instead of
+ win32lib.h directly.
+ Decorate with `const'.
+ (usage_str, CJKtable): Updated.
+
+2011-09-03 Werner LEMBERG <wl@gnu.org>
+
+ [hbf2gf] Update manpage.
+
+ * utils/hbf2gf/hbf2gf.1, doc/hbf2gf.txt: Remove information on
+ ancient kpathsea versions.
+
+2011-09-03 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ [hbf2gf] Update kpathsea support.
+
+ * utils/hbf2gf/hbf2gf.w (OLD_KPATHSEA, VERY_OLD_KPATHSEA): Removed.
+ (DllImport, KPSEDLL): Removed.
+ [HAVE_CONFIG_H]: Include `c-auto.h'.
+
+2011-09-03 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ [hbf2gf] Decorate with `const'.
+
+ * utils/hbf2gf/hbf2gf.w, utils/hbf2gf/hbf.c: Do it.
+
+2011-09-03 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Adapt utility programs to ANSI C.
+
+ * utils/Bg5conv/bg5conv.w, utils/CEFconv/cefconv.w,
+ utils/CEFconv/cef5conv.w, utils/CEFconv/cefsconv.w,
+ utils/SJISconv/sjisconv.w, utils/extconv/extconv.w,
+ utils/hbf2gf/hbf.c, utils/hbf2gf/hbf2gf.w: Do it.
+
+2011-02-07 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJK.txt: Document possible problems in `tabular' environment.
+ Problem reported by LI Ruo-Meng <15003990378@163.com>.
+
+2010-01-04 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJK.txt: Document Babel bug related to ^^xx notation.
+ Problem reported by Peter Grzybek <peter.grzybek@uni-graz.at>.
+
+2009-11-07 Werner LEMBERG <wl@gnu.org>
+
+ Fix line breaks with furigana.
+
+ * texinput/ruby.txt (\ruby): If the furigana is smaller than
+ the base glyph, really behave as documented, this is, behave like an
+ ordinary CJK character.
+
+2009-08-25 Werner LEMBERG <wl@gnu.org>
+
+ * examples/CJKfntef.tex: Updated.
+
+2009-08-25 Wenchang Sun <sunwch@hotmail.com>
+
+ New macros for CJKfntef.sty.
+
+ * texinput/CJKfntef.sty (\varCJKunderline, \CJKunderanyline,
+ \CJKunderanysymbol): New macros.
+ (\CJKunderdot): Fix interaction with XeTeX.
+
+ * doc/history.txt: Document it.
+
+2009-08-25 Wenchang Sun <sunwch@hotmail.com>
+
+ * texinput/CJKfntef.sty: Replace \global with \CJKf@global.
+
+2009-01-19 Werner LEMBERG <wl@gnu.org>
+
+ * texlive/cjk-build.pl: Remove unused stuff.
+ From Karl Berry.
+
+2009-01-05 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJK.txt: Document usage of CJKutf8.sty with beamer class.
+
+2008-12-29 Werner LEMBERG <wl@gnu.org>
+
+ Version 4.8.2 released
+ ======================
+
+ Set version to 4.8.2.
+
+ * doc/history.txt: Updated.
+
+ Update headers in all text files.
+
+2008-12-29 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub,
+ utils/hbf2gf/install-sh, utils/hbf2gf/mkinstalldirs: Updated to
+ current versions.
+
+ * utils/hbf2gf/configure: Regenerated with autoconf 2.63.
+
+2008-12-29 Werner LEMBERG <wl@gnu.org>
+
+ * doc/TeXLive.txt: Replaced with...
+ * texlive/*.pl: These new files which define the various TeXLive
+ packages derived from the CJK bundle.
+
+ * MANIFEST: Updated.
+
+2008-12-28 Werner LEMBERG <wl@gnu.org>
+
+ * doc/history.txt: Updated.
+
+ * doc/CJKnumb.txt: New file.
+
+ * MANIFEST: Updated.
+
+2008-12-28 Werner LEMBERG <wl@gnu.org>
+
+ Rename garuda & norasi stuff to garuda-c90 & norasi-c90.
+
+ * MANIFEST, doc/thaifont.txt, utils/thaifont/tools/INSTALL: Updated.
+
+ * utils/thaifont/texmf/dvips/garuda/config.garuda: Moved to...
+ * utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90: This
+ file. Updated.
+ * utils/thaifont/texmf/dvips/norasi/config.norasi: Moved to...
+ * utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90: This
+ file. Updated.
+ * utils/thaifont/texmf/fonts/map/dvips/garuda/garuda.map: Moved
+ to...
+ * utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map:
+ This file.
+ * utils/thaifont/texmf/fonts/map/dvips/norasi/norasi.map: Moved
+ to...
+ * utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map:
+ This file.
+ * utils/thaifont/texmf/fonts/tfm/public/garuda/*: Moved to...
+ * utils/thaifont/texmf/fonts/tfm/public/garuda-c90/*: This
+ directory.
+ * utils/thaifont/texmf/fonts/tfm/public/norasi/*: Moved to...
+ * utils/thaifont/texmf/fonts/tfm/public/norasi-c90/*: This
+ directory.
+ * utils/thaifont/tools/garuda.fontinst: Moved to...
+ * utils/thaifont/tools/garuda-c90.fontinst: This file.
+ * utils/thaifont/tools/norasi.fontinst: Moved to...
+ * utils/thaifont/tools/norasi-c90.fontinst: This file.
+
+2008-12-28 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/wadalab/DNP.txt: Renamed to...
+ * contrib/wadalab/wadalab.txt: This.
+ * MANIFEST: Updated.
+
+2008-12-28 Werner LEMBERG <wl@gnu.org>
+
+ Use same font names as in thailatex.
+
+ * doc/thaifont.txt,
+ utils/thaifont/texmf/fonts/map/dvips/garuda/garuda.map,
+ utils/thaifont/texmf/fonts/map/dvips/norasi/norasi.map: Updated.
+
+
+ Update to thailatex 0.4.2.
+
+ * doc/thaifont.txt,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftnr8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftnb8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftnbo8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftno8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/garuda/fgdr8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/garuda/fgdb8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/garuda/fgdbo8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/garuda/fgdo8z.tfm: Regenerated
+ with fontinst.
+
+2008-11-25 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKnumb.sty: Use U+3007 (IDEOGRAPHIC NUMBER ZERO),
+ not U+25CB (WHITE CIRCLE).
+
+ * texinput/UTF8/c70bkai.fdx, texinput/UTF8/c70bsmi.fdx: Map U+25CB
+ to U+3007.
+ * texinput/UTF8/c70gbsn.fdx, texinput/UTF8/c70gkai.fdx,
+ texinput/UTF8/c70mj.fdx: New files which do the same.
+
+ * MANIFEST: Updated.
+
+2008-11-25 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty (\Unicode): Use vertical glyph representation
+ forms.
+
+2008-11-25 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKnumb.sty (\CJKdigits*): New command to use traditional
+ form of glyph zero.
+
+ * doc/history.txt: Updated.
+
+2008-10-01 Werner LEMBERG <wl@gnu.org>
+
+ * *.fd: Add \CJKnormal to all font families which use \CJKbold. This
+ is necessary because NFSS doesn't call \selectfont if a font gets
+ substituted by another one (and \selectfont resets the \CJK@bold@
+ flag). Here an example (where `gbsn' uses \CJKbold for boldface
+ emulation):
+
+ \begin{CJK*}{GB}{gbsn}
+ {\bf\CJKchar{"D6}{"D0}}
+ {\em\CJKchar{"D6}{"D0}}
+ \end{CJK*}
+
+2008-09-23 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfonts/subfonts.pe: Fix error message for too-old
+ FontForge versions.
+
+2008-08-21 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfonts/subfonts.pe: Handle CID-keyed fonts.
+
+2008-08-10 Werner LEMBERG <wl@gnu.org>
+
+ Version 4.8.1 released
+ ======================
+
+ Set version to 4.8.1.
+
+ * doc/history.txt, README: Updated.
+
+ * doc/TeXLive.txt: Updated.
+ PDF man pages are now autogenerated in TeXLive.
+
+ Update headers in all text files.
+
+ * utils/hbf2gf/config.sub: Updated to current version.
+
+2008-08-03 Werner LEMBERG <wl@gnu.org>
+
+ Add some missing files. Found by Daniel Flipo.
+
+ * texinput/Bg5/c00bkai.fd, texinput/GB/c10gkai.fd,
+ texinput/GB/c10gkai.fdx: New files.
+
+ * MANIFEST: Updated.
+
+2008-07-11 Werner LEMBERG <wl@gnu.org>
+
+ Make macros in pinyin.sty robust.
+
+ Problem reported by Denis Roegel <roegel@loria.fr>.
+
+ * texinput/pinyin.sty (\py@macron): Make it work again with Plain
+ TeX.
+ (\py@@@): No longer needed.
+ (\py@): Do what \py@@@ did formerly.
+ (py@DRC): New macro to make the pinyin syllables robust.
+ Update all pinyin syllable macro definitions to use it.
+
+ * doc/history.txt: Updated.
+
+2008-07-11 Werner LEMBERG <wl@gnu.org>
+
+ Incorporate Wen-Chang's CJKspace package.
+
+ * texinput/CJKspace.sty, examples/CJKspace.tex, doc/CJKspace.txt:
+ New files.
+ * texinput/CJK.sty (\CJK@@@): New signature macro for CJKspace.sty.
+ (\CJK@namedef, \CJK@namepdef, \CJK@nameppdef, \CJK@namepppdef,
+ \CJK@nameppppdef): Use it.
+
+ * Makefile, doc/history.txt, MANIFEST: Updated.
+
+2008-05-22 Werner LEMBERG <wl@gnu.org>
+
+ Version 4.8.0 released
+ ======================
+
+ Set version to 4.8.0.
+
+ * doc/history.txt, doc/INSTALL, doc/TeXLive.txt, README: Updated.
+
+ Update headers in all text files.
+
+ * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub: Updated to
+ current versions.
+
+ * utils/hbf2gf/configure: Regenerated with autoconf 2.62.
+
+2008-05-18 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile (DISTDIRS): We are now using git, not CVS.
+
+2008-05-18 Werner LEMBERG <wl@gnu.org>
+
+ * doc/history.txt: Mention xCJK.sty.
+
+2008-05-17 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty (\CJK@UnicodeEnc): New macro (so that xCJK.sty
+ can overwrite it).
+ * texinput/CJKnumb.sty: Use it.
+
+ * texinput/xCJK.sty: Simplify -- unicode mappings to other encodings
+ are no longer supported (since it hasn't worked for Big5 or GBK
+ anyway).
+
+ (\xCJK@xUTF): Removed.
+ (\CJKsymbol): Simplified.
+ (\toutf@XXX): Removed.
+ (\xCJK@CJKenc, \CJKenc): Removed.
+ (\CJK@envStart): Produce error if encoding is not `UTF8'.
+ Simplified.
+ (\xCJK@setenc, \CJK@xpmC, \xCJK@enc@UTF8, \xCJK@xUTF8@hook):
+ Removed.
+ (\CJK@xUTF8@hook, \CJK@UnicodeEnc): New macros.
+ (\xCJK@@char): Removed.
+ (\CJK@XXpdf): Simplified.
+ (\CJK@@XXpdf): Removed.
+
+ Add support for non-BMP Unicode.
+
+ (\CJK@nameppppdef): New macro.
+ (\xCJK@char): Redefined.
+ (\xCJK@@char, \xCJK@@@char): New macros.
+ (\CJK@XXp, \CJK@XXXp): Redefined.
+ (\CJK@XXXXp): New macro.
+
+ xdvipdfmx automatically handles UTF-8 encoded bookmarks.
+
+ (\xCJK@four, \xCJK@@@char, <\if@filesw>): Removed.
+
+ (\special): Use \utfout.
+
+2008-05-12 Danai SAE-HAN <danai.sae-han@edpnet.be>
+
+ * utils/hbf2gf/hbf2gf.1: Replace some `-' with `\-'.
+
+2008-03-10 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/hbf2gf.1: s|-|\-| where appropriate.
+
+2008-03-09 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile (XELATEX): Call xelatex twice.
+ (manpages): Increase font size to 11pt for DVI and PDF output.
+
+2008-03-09 Werner LEMBERG <wl@gnu.org>
+
+ Add support for EUC-JP with DNP font encoding.
+
+ * texinput/CJK.enc (\CJK@@@EUC-JPdnp@hook, \CJK@EUC-JPdnp@enc): New
+ macros.
+
+ * texinput/JIS/EUC-JPdnp.enc: New file.
+
+ * texinput/JIS/EUC-JP.chr (\CJK@shiftchar): Define \CJK@plane as
+ empty.
+
+ * doc/history.txt, MANIFEST: Updated.
+
+2008-03-09 Werner LEMBERG <wl@gnu.org>
+
+ Make \CJK@bold work with C49 encoding too. The idea is to handle
+ the font as a CJK font but with \CJK@plane set to empty.
+
+ * texinput/SJIS/SJIS.chr, texinput/SJIS/SJIdnp.chr (\CJK@sjischar):
+ Define \CJK@plane as empty.
+
+ * texinput/SJIS/c49song.fd: Use `CJK' size function.
+
+ * doc/history.txt: Updated.
+
+2008-03-03 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKutf8.sty, texinput/xCJK.sty,
+ texinput/mule/MULEenc.sty: Use \ProvidesPackage, not \ProvidesFile.
+
+2008-03-03 Werner LEMBERG <wl@gnu.org>
+
+ Better control for \baselinestretch with CJKvert.sty.
+
+ * texinput/CJKvert.sty (usebaselinestretch): New option.
+ (\CJKbaselinestretch): New macro.
+
+ * doc/history.txt, doc/vertical.txt: Document it.
+
+2008-02-11 Werner LEMBERG <wl@gnu.org>
+
+ * doc/xCJK.txt: New file.
+ * MANIFEST: Updated.
+
+2008-02-11 Werner LEMBERG <wl@gnu.org>
+
+ * doc/fonts.txt: Document installation of cyberbit.ttf.
+
+2008-02-05 Werner LEMBERG <wl@gnu.org>
+
+ Add SUN Wen-Chang's xCJK bundle.
+
+ * examples/xCJK.tex, texinput/UTF8/xUTF8.chr,
+ texinput/UTF8/xUTF8.enc, texinput/xCJK.sty, texinput/xpmC.chr,
+ texinput/xpmC.enc: New files.
+
+ * MANIFEST: Updated.
+
+ * Makefile (XELATEX): New macro.
+ (xCJK): New target.
+ (CJK2DVI, LATE2DVI): Simplify.
+
+2008-01-15 Gernot Hassenpflug <aikishugyo@gmail.com>
+
+ * contrib/wadalab/c70goth.fdx, contrib/wadalab/c70min.fdx,
+ contrib/wadalab/c70maru.fdx: Rotate more glyphs for vertical
+ typesetting.
+ Shift small kana for vertical typesetting.
+ Other minor improvements.
+
+2007-12-27 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfonts/vertical.pe, utils/subfonts/vertref.pe: Abort if no
+ vertical glyph representation forms are available.
+
+2006-12-05 Werner LEMBERG <wl@gnu.org>
+
+ Make pinyin syllables work with \MakeUppercase and \MakeLowercase.
+
+ * pinyin.sty: Almost completely rewrite macro logic to replace e.g.
+ `\py@@@a' with `\py@ a' so that the argument gets handled by
+ \MakeUppercase.
+
+2006-12-04 Werner LEMBERG <wl@gnu.org>
+
+ Make pinyin syllables work with hyperref bookmarks.
+
+ * pinyin.sty: Use \AtBeginDocument hook to add missing characters to
+ PU encoding needed for pinyin syllables.
+ Use \AtBeginDocument hook to set up some replacement macros for
+ bookmarks.
+ (\py@hr@macron, \py@hr@v): New replacement macros for
+ bookmarks.
+
+2007-11-23 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.enc: Add punctuation tables for GBK encoding.
+
+2007-11-06 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfonts/subfonts.pe, utils/subfonts/vertical.pe,
+ utils/subfonts/vertref.pe: Put current time stamp into copyright
+ string.
+ Need FontForge 20071105 or newer.
+
+2007-11-02 SUN Wenchang <sunwch@hotmail.com>
+
+ * texinput/CJKfntef.sty (\CJK@preUnderdot): Use \cdot (in math mode).
+ (\CJKxout): Use `/' in math mode.
+ (\CJKunderdotbasesep, \CJKunderdotsep): Adjusted.
+
+2007-10-26 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfonts/vertical.pe: Use glyph names of the horizontal
+ representation glyphs with an appended `.vert'. This makes dvipdfmx
+ automatically create a correct /ToUnicode CMap.
+
+2007-10-25 Werner LEMBERG <wl@gnu.org>
+
+ Provide final fix for patch 2007-10-04.
+
+ * utils/subfonts/makefdx.pl: Provide flag `-u' to produce a CMap
+ macro in the FDX file.
+ Don't specify FDX file directly on the command line but give family
+ name and encoding separately which are then concatenated to give the
+ FDX name (we need the family name separately).
+ Add code to produce a macro which provides a /ToUnicode CMap entry
+ as needed by pdfTeX.
+ Fix loop to not omit last glyph.
+
+ * texinput/UTF8/c70bsmi.fdx, texinput/UTF8/c70bkai.fdx: Regenerated.
+ These now provide the macros \CJK@cmap@bsmiv and \CJK@cmap@bkaiv,
+ respectively.
+
+ * texinput/CJKutf8.sty (\pickup@font): Call `\CJK@cmap@...' if it
+ exists.
+
+2007-10-04 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKutf8.sty (\pickup@font): Disable generation of
+ ToUnicode cmap for `v' subfont (which holds vertical representation
+ glyphs). This is a temporary hack; the right solution is to modify
+ makefdx.pl so that it creates a ToUnicode macro for the specific
+ font; \CJK@addcmap should be then modified to use this macro instead
+ of autogenerating a cmap.
+
+ Problem reported by Edward G.J. Lee.
+
+2007-09-10 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfonts/vertical.pe, utils.subfonts/vertref.pe: Adapt to
+ FontForge version 2007-Sep-10 and newer.
+
+2007-07-26 Gernot Hassenpflug <gernot@nict.go.jp>
+
+ * contrib/wadalab/c70goth.fdx, contrib/wadalab/c70min.fdx,
+ contrib/wadalab/c70maru.fdx: New files to support vertical writing
+ with Unicode encoded Wadalab fonts.
+
+2007-07-07 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/pinyin.sty (\ding): Rename to...
+ (\py@ding): This to make \ding work actually.
+
+2007-05-04 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKvert.sty (\CJKsymbol): Honour \CJKhdef{offset}{...}.
+ * doc/fdxfiles.txt, doc/history.txt: Document it.
+
+2007-04-08 Werner LEMBERG <wl@gnu.org>
+
+ * utils/pyhyphen/pyhyph.tex: Replace latin-1 characters with
+ ^^xx sequences. Suggested by David Kastrup.
+
+ * doc/cjk-enc.txt: Document special space handling for Emacs quail
+ input methods.
+
+2006-11-06 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/pinyin.sty (\py@macron, \py@@@v): Support T5 encoding.
+ * doc/history.txt: Document it.
+
+2006-10-31 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJK.txt, doc/CJKutf8.txt: Mention Byte Order Mark in UTF-8.
+
+2006-10-19 Werner LEMBERG <wl@gnu.org>
+
+ * doc/TeXLive.txt, MANIFEST: Minor fixes.
+
+ * Makefile (DVI2PDF): Add argument for paper format.
+ (CONVERT, MULE, LATEX): Add optional argument for paper format;
+ default to `letter'.
+ (manpages, cweb): Use letter paper format.
+ (READMEb5): Use A4 paper.
+
+ * examples/README: Minor fix.
+
+2006-10-17 Werner LEMBERG <wl@gnu.org>
+
+ Version 4.7.0 released
+ ======================
+
+ Set version to 4.7.0.
+
+ * doc/history.txt, doc/INSTALL, doc/TeXLive.txt, README: Updated.
+
+ Update headers in all text files.
+
+2006-10-09 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile (abs-distdir): Fix assignment.
+ (distdoc): Remove generated C files.
+
+ * utils/hbf2gf/hbf2gf.1: s/`/\(oq/ and s/'/\(cq/ where appropriate.
+
+2006-10-06 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJKutf8.txt, doc/history.txt: Minor additions.
+ * MANIFEST: Sorted and updated.
+
+2006-10-05 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKutf8.sty (\CJK@surr): Use \expandafter to make
+ \uppercase work actually.
+
+ * texinput/CJK.sty (\CJK@makeActive, \CJK@makeInactive): Handle 0x80
+ also (which is needed for UTF8).
+
+2006-10-05 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKutf8.sty (\CJK@surr): New function.
+ (\CJK@addcmap): Use \CJK@surr so that values > U+FFFF are correctly
+ represented as surrogates.
+
+2006-09-30 Werner LEMBERG <wl@gnu.org>
+
+ In CJKutf8.sty, add ToUnicode cmaps for pdfTeX. Note, however, that
+ it currently fails with virtual fonts: pdftex 3.141592-1.30.4-2.2
+ can't resolve them to the used base fonts.
+
+ * texinput/CJKutf8.sty: Require ifpdf package.
+ (\pickup@font) [\ifpdf]: Redefine, adding a call to CJK@addcmap.
+ (\CJK@addcmap) [\ifpdf]: New function.
+
+ * doc/history.txt: Updated.
+
+2006-09-16 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty (\CJK@ifundefined): New macro.
+ Update all affected files where possible to use it instead of
+ \@ifundefined. This fixes a bug reported by Danai which made
+ \chapter work in the `scrartcl' article class (instead of
+ reporting an error) after using a CJK caption file.
+
+ * *.cap, *.cpx: Don't redefine \thepart but use its previous
+ definition for \partformat. This fixes a bug reported by Danai
+ which produced bad TOC entries.
+
+ * doc/history.txt: Updated.
+
+2006-09-12 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/UTF8/ko-Hanj.cpx: Renamed to...
+ * texinput/UTF8/ko-Hani.cpx: This to use the correct ISO 15924
+ script tag.
+
+ * doc/history.txt, doc/CJK.txt: Updated.
+
+2006-09-08 Werner LEMBERG <wl@gnu.org>
+
+ Add caption files for UTF8 encoding.
+
+ * texinput/UTF8/{ja,ko-Hang,ko-Hang2,ko-Hanj,zh-Hans,zh-Hant}.cap:
+ New files.
+
+ * doc/history.txt, doc/CJK.txt: Mention them.
+
+2006-08-31 Werner LEMBERG <wl@gnu.org>
+
+ Reimplement the \CJKbold mechanism to call the last argument of
+ \DeclareFontShape each time the font is selected only if a CJK size
+ function has been used. This fixes shape declarations like the ones
+ in the fourier package which rely on being called only once.
+
+ * texinput/CJK.sty (\CJK@curr@fontshape): New macro.
+ (\CJK@empty, \CJK@fixed, \CJK@sub, \CJK@DNPgen, \CJK@DNP): Define a
+ macro where the name is the argument of \CJK@curr@fontshape.
+ (\selectfont): Execute macro where the name is the argument of
+ \CJK@curr@fontshape only if it exists.
+
+ * doc/history.txt, doc/CJK.txt: Mention it.
+
+2006-08-29 Danai SAE-HAN <danai.sae-han@skynet.be>
+
+ * utils/subfonts/hlatex2agl.pl: Make it accept a third parameter
+ which specifies the used SFD file.
+ (process_afmfile, process_pfbfile): Add minor tweaks to handle fonts
+ generated with other tools than FontForge.
+
+2006-08-29 Werner LEMBERG <wl@gnu.org>
+
+ * utils/Bg5conv/bg5conv.w, utils/extconv/extconv.w,
+ utils/hbf2gf/hbf2gf.w, utils/CEFconv/cefconv.w,
+ utils/CEFconv/cef5conv.w, utils/CEFconv/cefsconv.w,
+ utils/SJISconv/sjisconv.w: s/@/@@/ in email address.
+
+ * utils/Bg5conv/bg5conv.c, utils/extconv/extconv.c,
+ utils/hbf2gf/hbf2gf.c, utils/CEFconv/cefconv.c,
+ utils/CEFconv/cef5conv.c, utils/CEFconv/cefsconv.c,
+ utils/SJISconv/sjisconv.c: Removed. These files are now generated
+ by the Makefile.
+
+ * Makefile (version): Set to 4.7.0.
+ (CJK2DVI, LATEX2DVI): Add `texlive' subdirectory
+ (distsrc): Build .c from .w files.
+
+2006-08-28 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/*: Add various replacement files for TeXLive.
+
+2006-08-17 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJK.txt: Mention problem with fourier.sty.
+
+2006-08-01 Werner LEMBERG <wl@gnu.org>
+
+ * doc/cjk-enc.txt: Mention problems with UTF-8.
+
+2006-07-30 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/wadalab/DNP.txt: Fix patch for wftodm.c.
+
+2006-04-25 Danai SAE-HAN <danai.sae-han@skynet.be>
+
+ * <many files>: Add GPL.
+ * MANIFEST: New file.
+
+2006-03-25 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKutf8.sty (\pdfstringdefPreHook): Don't overwrite but
+ prepend to this macro.
+
+2006-03-23 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfonts/hlatex2agl.pl: New script (which has been used
+ to create the Korean fonts in TeXLive 2005).
+
+
+ * texinput/CJKutf8.sty: Add support for Unicode bookmarks.
+ (\CJK@UnicodeFourBytesFirst, \CJK@UnicodeFourBytesSecond,
+ \CJK@UnicodeFourBytesThird, \CJK@UnicodeThreeBytesFirst,
+ \CJK@UnicodeThreeBytesSecond, \CJK@UnicodeTwoBytesFirst,
+ \CJK@UnicodeLast): New macros to convert UTF-8 into UTF-16BE.
+ (\CJK@XXpdf, \CJK@XXXpdf, \CJK@XXXXpdf): Replacements for the
+ \CJK@XX, \CJK@XXX, and \CJK@XXXX macros, respectively.
+ (\pdfstringdefPreHook): Activate them.
+
+2006-03-22 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/KS/HLaTeX/c63sh.fd, texinput/KS/HLaTeX/c64sh.fd,
+ texinput/KS/HLaTeX/c65sh.fd: Fix font declaration. Bug reported by
+ Danai SAE-HAN <danai.sae-han@skynet.be>.
+
+2006-02-20 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/UTF8/UTF8.bdg: Bugfix: Handle 0x80 also.
+
+ * doc/history.txt: Mention it.
+
+2006-02-09 Werner LEMBERG <wl@gnu.org>
+
+ Support complete Unicode range (up to U+10FFFF).
+
+ * texinput/UTF8/UTF8.bdg: Handle leading characters 0xF0-0xF4.
+
+ * texinput/UTF8/UTF8.enc: Ditto.
+
+ * texinput/UTF8/UTF8.chr (\CJK@altxchar): New macro for four-byte
+ Unicode values.
+
+ * texinput/CJK.enc (\CJK@unicodexError): New error macro.
+
+ * texinput/CJK.sty (\CJK@numbxToHex): New auxiliary macro to convert
+ a number to a four-digit hex number string.
+ (\Unicode): Accept values greater than U+FFFF.
+
+ * doc/command.txt, doc/CJK.txt: Document extended \Unicode (and
+ \CJKchar) command.
+ * doc/history.txt: Updated.
+
+2006-01-23 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.enc (\CJK@HK@enc): Load `HK' encoding, not `Bg5'.
+ Use \def, not \@namedef.
+
+ * doc/CJK.txt: Mention `HKtext' environment.
+
+2006-01-22 Werner LEMBERG <wl@gnu.org>
+
+ Add new encoding `HK' (C05) for Hong Kong's HKSCS-2004.
+
+ * texinput/Bg5/HK.enc, texinput/Bg5/c05song.fd: New files.
+ * texinput/CJK.enc: Add support for `HK' (C05).
+ * texinput/CJKnumb.sty: Handle `HK'.
+
+ * doc/CJK.txt: Bg5+ *cannot* be used for HKSCS. Fix this.
+ * doc/history.txt: Document `HK' encoding.
+
+2006-01-19 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJK.txt: Mention usage of Bg5+ for HKSCS-2001/HKSCS-2004.
+
+2006-01-04 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/pinyin.sty (\PYding): New \let.
+ (\PYactivate, \PYdeacticate): Handle \ding (from pifont.sty).
+
+ * doc/pinyin.tex: Document possible problems with pifont.sty.
+
+ * doc/history.txt: Updated.
+
+2005-12-27 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/cfg/csso12.cfg: Fix typo.
+
+2005-10-31 Danai SAE-HAN <danai.sae-han@skynet.be>
+
+ * utils/subfonts/makefdx.pl: Provide header for output.
+ Add \CJKvlet lines.
+
+2005-08-19 Werner LEMBERG <wl@gnu.org>
+
+ * doc/TeXLive.txt: New file, describing the relationship between
+ CJK files and TeXLive packages.
+
+2005-08-18 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/mule/MULEenc.sty: Define \CJK@verbatim correctly if not
+ already defined. Reported by Andre Dierker.
+
+ * doc/pdf/*: Move to...
+ * doc/pdfhowto/*: This.
+
+2005-08-11 Werner LEMBERG <wl@gnu.org>
+
+ Version 4.6.0 released
+ ======================
+
+ Set version to 4.6.0.
+
+ * doc/history.txt, doc/INSTALL, Makefile (version): Updated.
+
+ Update headers in all text files.
+
+2005-08-10 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CEF.txt, doc/CJK.txt, doc/CJKutf8.txt, doc/INSTALL,
+ doc/TDS.txt, doc/cjk-enc.txt, doc/commands.txt, doc/dvidrv.txt,
+ doc/fonts.txt, doc/hbf2gf.txt, doc/history.2_5, doc/history.txt,
+ doc/pinyin.txt, doc/pyhyphen.txt, doc/ruby.txt, doc/thaifont.txt,
+ doc/vertical.txt: Updated and revised.
+
+2005-08-05 Werner LEMBERG <wl@gnu.org>
+
+ * COPYING: Updated to new FSF address.
+
+2005-08-05 Werner LEMBERG <wl@gnu.org>
+
+ After email exchange with Ross Paterson, the old (too restrictive)
+ license of the hbf module has been changed to the three-clause BSD
+ license -- Ross no longer maintains and distributes this code.
+
+ * utils/hbf2gf/hbf.c: Change license to BSD.
+ (strdup) [WIN32]: Define. Change taken from teTeX distribution.
+
+ * utils/hbf2gf/hbf.h: Change license to BSD.
+
+ * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub: Updated to
+ current versions.
+
+ * utils/hbf2gf/configure: Regenerated with autoconf 2.59b.
+
+2005-08-04 Werner LEMBERG <wl@gnu.org>
+
+ Update files to compile with the forthcoming TeXLive 2005.
+
+ * doc/README: Updated, extended.
+
+ * examples/muletest.tex: Updated to new VnTeX (for Vietnamese).
+ Use type1ec.sty.
+ Suppress hyphenation.
+
+ * examples/CJKbabel.tex: Don't use t5.sty but `vietnam' option of
+ babel.
+ Use type1ec.sty.
+
+ * examples/CJKmixed.tex: Define and use `TChinese' environment.
+ Call \CJKhorz at the beginning of document.
+
+ * examples/CJKutf8.tex: Don't use cyberbit but the new Unicode
+ (virtual) fonts of gbsn, bsmi, and mj.
+
+ * texinput/Bg5/c00bsmi.fdx: Updated to new bsmi vertical glyph font.
+
+ * texinput/Bg5/c00bkai.fdx: New file.
+
+ * texinput/UTF8/c70bkai.fd, texinput/UTF8/c70bkai.fdx,
+ texinput/UTF8/c70bsmi.fd, texinput/UTF8/c70bsmi.fdx,
+ texinput/UTF8/c60gbsn.fd, texinput/UTF8/c70gkai.fd,
+ texinput/UTF8/c70mj.fd: New files.
+
+ * utils/pyhyphen/pytest.tex: Usae type1ec.sty.
+
+ * Makefile: Add rules for new example and documentation files.
+ (version): Set top 4.5.3.
+ (CJK2DVI, LATEX2DVI): Add `utils/pyhyphen' to TEXINPUTS variable.
+ (DVI2PS): Replace it with...
+ (DVI2PDF): New variable.
+ Update all callers.
+ (MULE): Add path to `cjk-enc.el' while calling emacs.
+ (DISTTARGETS): Add new example and documentation files.
+ (predistdoc): Don't create `ps' but `pdf' subdirectories.
+ (manpages): Add `-ww' option to groff.
+ Don't create `ps' but `pdf' files.
+ (cweb): Don't create `ps' but `pdf' file.
+
+2005-08-04 Werner LEMBERG <wl@gnu.org>
+
+ * doc/*.doc, doc/japanese/*.doc, doc/chinese/*.doc,
+ contrib/wadalab/DNP.doc: Renamed to ...
+ * doc/*.txt, doc/japanese/*.txt, doc/chinese/*.txt,
+ contrib/wadalab/DNP.txt: This.
+
+ Update all references.
+
+2005-08-03 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKvert.sty (\CJKvert, \CJKhorz): Make commands act
+ completely local.
+ * doc/history.txt: Mention it.
+
+ * doc/pdf/HOWTO.txt: Mention new $SFDFONTS variable from TDS 1.1.
+
+2005-08-02 Werner LEMBERG <wl@gnu.org>
+
+ Update of HLaTeX support to version 1.0.1.
+
+ * texinput/KS/HLaTeX/c63mg.fd, texinput/KS/HLaTeX/c63mgt.fd,
+ texinput/KS/HLaTeX/c63mmj.fd, texinput/KS/HLaTeX/c63mnv.fd,
+ texinput/KS/HLaTeX/c63msr.fd, texinput/KS/HLaTeX/c63ol.fd,
+ texinput/KS/HLaTeX/c63pbm.fd, texinput/KS/HLaTeX/c63pgr.fd,
+ texinput/KS/HLaTeX/c63pgs.fd, texinput/KS/HLaTeX/c63pgt.fd,
+ texinput/KS/HLaTeX/c63pmg.fd, texinput/KS/HLaTeX/c63pmgt.fd,
+ texinput/KS/HLaTeX/c63pmj.fd, texinput/KS/HLaTeX/c63pmmj.fd,
+ texinput/KS/HLaTeX/c63pmnv.fd, texinput/KS/HLaTeX/c63pmsr.fd,
+ texinput/KS/HLaTeX/c63pol.fd, texinput/KS/HLaTeX/c63ppg.fd,
+ texinput/KS/HLaTeX/c63ppn.fd, texinput/KS/HLaTeX/c63psm.fd,
+ texinput/KS/HLaTeX/c63ptt.fd, texinput/KS/HLaTeX/c63pyt.fd,
+ texinput/KS/HLaTeX/c63sm.fd, texinput/KS/HLaTeX/c63tt.fd,
+ texinput/KS/HLaTeX/c64mg.fd, texinput/KS/HLaTeX/c64mgt.fd,
+ texinput/KS/HLaTeX/c64mmj.fd, texinput/KS/HLaTeX/c64mnv.fd,
+ texinput/KS/HLaTeX/c64msr.fd, texinput/KS/HLaTeX/c64ol.fd,
+ texinput/KS/HLaTeX/c64pbm.fd, texinput/KS/HLaTeX/c64pgr.fd,
+ texinput/KS/HLaTeX/c64pgs.fd, texinput/KS/HLaTeX/c64pgt.fd,
+ texinput/KS/HLaTeX/c64pmg.fd, texinput/KS/HLaTeX/c64pmgt.fd,
+ texinput/KS/HLaTeX/c64pmj.fd, texinput/KS/HLaTeX/c64pmmj.fd,
+ texinput/KS/HLaTeX/c64pmnv.fd, texinput/KS/HLaTeX/c64pmsr.fd,
+ texinput/KS/HLaTeX/c64pol.fd, texinput/KS/HLaTeX/c64ppg.fd,
+ texinput/KS/HLaTeX/c64ppn.fd, texinput/KS/HLaTeX/c64psm.fd,
+ texinput/KS/HLaTeX/c64ptt.fd, texinput/KS/HLaTeX/c64pyt.fd,
+ texinput/KS/HLaTeX/c64sm.fd, texinput/KS/HLaTeX/c64tt.fd,
+ texinput/KS/HLaTeX/c65mg.fd, texinput/KS/HLaTeX/c65mgt.fd,
+ texinput/KS/HLaTeX/c65mmj.fd, texinput/KS/HLaTeX/c65mnv.fd,
+ texinput/KS/HLaTeX/c65msr.fd, texinput/KS/HLaTeX/c65ol.fd,
+ texinput/KS/HLaTeX/c65pbm.fd, texinput/KS/HLaTeX/c65pgr.fd,
+ texinput/KS/HLaTeX/c65pgs.fd, texinput/KS/HLaTeX/c65pgt.fd,
+ texinput/KS/HLaTeX/c65pmg.fd, texinput/KS/HLaTeX/c65pmgt.fd,
+ texinput/KS/HLaTeX/c65pmj.fd, texinput/KS/HLaTeX/c65pmmj.fd,
+ texinput/KS/HLaTeX/c65pmnv.fd, texinput/KS/HLaTeX/c65pmsr.fd,
+ texinput/KS/HLaTeX/c65pol.fd, texinput/KS/HLaTeX/c65ppg.fd,
+ texinput/KS/HLaTeX/c65ppn.fd, texinput/KS/HLaTeX/c65psm.fd,
+ texinput/KS/HLaTeX/c65ptt.fd, texinput/KS/HLaTeX/c65pyt.fd,
+ texinput/KS/HLaTeX/c65sm.fd, texinput/KS/HLaTeX/c65tt.fd: Removed.
+
+ * texinput/KS/HLaTeX/c63dn.fd, texinput/KS/HLaTeX/c63jgt.fd,
+ texinput/KS/HLaTeX/c63jmj.fd, texinput/KS/HLaTeX/c63jnv.fd,
+ texinput/KS/HLaTeX/c63jsr.fd, texinput/KS/HLaTeX/c63pga.fd,
+ texinput/KS/HLaTeX/c63ph.fd, texinput/KS/HLaTeX/c63sh.fd,
+ texinput/KS/HLaTeX/c63tz.fd, texinput/KS/HLaTeX/c63vd.fd,
+ texinput/KS/HLaTeX/c64dn.fd, texinput/KS/HLaTeX/c64jgt.fd,
+ texinput/KS/HLaTeX/c64jmj.fd, texinput/KS/HLaTeX/c64jnv.fd,
+ texinput/KS/HLaTeX/c64jsr.fd, texinput/KS/HLaTeX/c64pga.fd,
+ texinput/KS/HLaTeX/c64ph.fd, texinput/KS/HLaTeX/c64sh.fd,
+ texinput/KS/HLaTeX/c64tz.fd, texinput/KS/HLaTeX/c64vd.fd,
+ texinput/KS/HLaTeX/c65dn.fd, texinput/KS/HLaTeX/c65jgt.fd,
+ texinput/KS/HLaTeX/c65jmj.fd, texinput/KS/HLaTeX/c65jnv.fd,
+ texinput/KS/HLaTeX/c65jsr.fd, texinput/KS/HLaTeX/c65pga.fd,
+ texinput/KS/HLaTeX/c65ph.fd, texinput/KS/HLaTeX/c65sh.fd,
+ texinput/KS/HLaTeX/c65tz.fd, texinput/KS/HLaTeX/c65vd.fd: New files.
+
+ * texinput/KS/HLaTeX/c63bm.fd, texinput/KS/HLaTeX/c63gr.fd,
+ texinput/KS/HLaTeX/c63gs.fd, texinput/KS/HLaTeX/c63gt.fd,
+ texinput/KS/HLaTeX/c63mj.fd, texinput/KS/HLaTeX/c63pg.fd,
+ texinput/KS/HLaTeX/c63pn.fd, texinput/KS/HLaTeX/c63yt.fd,
+ texinput/KS/HLaTeX/c64bm.fd, texinput/KS/HLaTeX/c64gr.fd,
+ texinput/KS/HLaTeX/c64gs.fd, texinput/KS/HLaTeX/c64gt.fd,
+ texinput/KS/HLaTeX/c64mj.fd, texinput/KS/HLaTeX/c64pg.fd,
+ texinput/KS/HLaTeX/c64pn.fd, texinput/KS/HLaTeX/c64yt.fd,
+ texinput/KS/HLaTeX/c65bm.fd, texinput/KS/HLaTeX/c65gr.fd,
+ texinput/KS/HLaTeX/c65gs.fd, texinput/KS/HLaTeX/c65gt.fd,
+ texinput/KS/HLaTeX/c65mj.fd, texinput/KS/HLaTeX/c65pg.fd,
+ texinput/KS/HLaTeX/c65pn.fd, texinput/KS/HLaTeX/c65yt.fd: Updated.
+
+ * texinput/KS/HLaTeX/pshan.sty: No longer needed. Make it empty for
+ backwards compatibility.
+
+ * texinput/CJK.enc (\CJK@KSHL@enc): Updated.
+
+ * doc/history.txt, doc/CJK.doc: Updated.
+
+2005-08-01 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfont/uni2sfd.pl (read_tfmfile): Fix reading CHARWD,
+ CHARHT, and CHARDP.
+
+2005-07-31 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfont/sfd2uni.pl: New script to produce Unicode virtual
+ subfonts from encoding specific subfonts.
+
+2005-07-29 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/wadalab/DNP.sfd: Fix typo. Found by Shunsaku Hirata.
+ * contrib/wadalab/fixwada2.pl: Since Wadalab fonts have already
+ been uploaded to CTAN, and the bug in DNP.sfd makes it necessary to
+ regenerate the fonts, and to update the version number and creation
+ date.
+
+2005-07-18 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfonts/makefdx.pl, utils/subfonts/uni2sfd.pl: Fix typos.
+
+ * utils/subfonts/clonevf.pl: New script to produce a VF clone of
+ a TFM file.
+
+2005-07-18 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfonts/makefdx.pl: New script to create FDX entries.
+
+2005-07-17 Werner LEMBERG <wl@gnu.org>
+
+ * utils/subfonts/subfonts.pe, utils/subfonts/uni2sfd.pl,
+ utils/subfonts/vertical.pe, utils/vertref.pe: New perl and FontForge
+ scripts for creating and handling subfonts.
+
+2005-07-12 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/wadalab/fixwada2.pl, contrib/wadalab/makeuniwada.pl: New
+ scripts which fix glyph names and create virtual Unicode fonts for
+ the Wadalab font families.
+
+ * contrib/wadalab/DNP.sfd: A subfont definition file used by
+ `fixwada2.pl' and `makeuniwada.pl'.
+
+ * contrib/wadalab/c70goth.fd, contrib/wadalab/c70maru.fd,
+ contrib/wadalab/c70min.fd: New font definition files for Wadalab
+ fonts in Unicode encoding.
+
+ * contrib/wadalab/DNP.doc: Completely revised and updated.
+
+2005-07-07 Werner LEMBERG <wl@gnu.org>
+
+ * doc/history.txt: Updated.
+
+2005-07-05 Werner LEMBERG <wl@gnu.org>
+
+ * utils/thaifont/tools/c90.etx: Fix some typos.
+
+2005-07-04 Werner LEMBERG <wl@gnu.org>
+
+ Update Thai support:
+
+ . Use fontinst. We no longer need virtual fonts.
+ . Replace support for dbtt (which has an uncertain license) with
+ garuda.
+ . Update to TDS 1.1.
+
+ * utils/thaifont/texmf/dvips/base/dbtt.enc: Removed.
+ * utils/thaifont/texmf/dvips/config/config.dbtt: Removed.
+ * utils/thaifont/texmf/dvips/config/dbtt.map: Removed.
+ * utils/thaifont/texmf/fonts/tfm/public/dbtt/*: Removed.
+ * utils/thaifont/texmf/fonts/vf/public/dbtt/*: Removed.
+
+ * utils/thaifont/texmf/dvips/base/norasi.enc: Removed.
+ * utils/thaifont/texmf/dvips/config/config.norasi: Move to...
+ * utils/thaifont/texmf/dvips/norasi/config.norasi: Here.
+ * utils/thaifont/texmf/dvips/config/norasi.map: Moved to...
+ * utils/thai/font/texmf/fonts/map/dvips/norasi/norasi.map: Here.
+ Updated.
+ * utils/thaifont/texmf/fonts/tfm/public/norasi/ftnr9z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftnb9z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftnbo9z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftno9z.tfm: Removed.
+ * utils/thaifont/texmf/fonts/tfm/public/norasi/ftnr8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftnb8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftnbo8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/norasi/ftno8z.tfm: Updated.
+ * utils/thaifont/texmf/fonts/vf/public/norasi/*: Removed.
+
+ * utils/thaifont/texmf/dvips/garuda/config.garuda: New file.
+ * utils/thaifont/texmf/fonts/map/dvips/garuda/garuda.map: New file.
+ * utils/thaifont/texmf/fonts/tfm/public/garuda/fgdr8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/garuda/fgdb8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/garuda/fgdbo8z.tfm,
+ utils/thaifont/texmf/fonts/tfm/public/garuda/fgdo8z.tfm: New files.
+
+ * utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc: New file,
+ generated by fontinst.
+
+ * utils/thaifont/tools/c90.etx: New file.
+ * utils/thaifont/tools/c90.mtx: New file.
+ * utils/thaifont/tools/garuda.fontinst: New file.
+ * utils/thaifont/tools/norasi.fontinst: New file.
+ * utils/thaifont/tools/INSTALL: New file.
+ * utils/thaifont/tools/dbtt-old/*: New files.
+ * utils/thaifont/tools/README: Removed.
+ * utils/thaifont/tools/thai-dummy.afm: Removed.
+ * utils/thaifont/tools/thai.enc: Removed.
+ * utils/thaifont/tools/thailigs.vpl: Removed.
+
+ * texinput/thai/c90cmss.fd, texinput/thai/c90cmtt.fd,
+ texinput/thai/c90nrsr.fd: Updated.
+ * texinput/thai/c90dbss.fd: Removed.
+ * texinput/thai/c90gar.fd: New file.
+
+2005-06-27 Werner LEMBERG <wl@gnu.org>
+
+ Remove the `rotate' keyword for vertical typesetting and introduce
+ the opposite, `norotate'.
+
+ * texinput/Bg5/c00bsmir.fdx, texinput/Bg5/c00kair.fdx: New files.
+
+ * doc/fdxfiles.doc, doc/vertical.doc, texinput/Bg5/c00bsmi.fdx,
+ texinput/GB/c10gbsn.fdx, texinput/CJKvert.sty: Updated.
+
+2005-06-25 Werner LEMBERG <wl@gnu.org>
+
+ * examples/CJKmixed.tex: New example file to demonstrate how to
+ use CJK scripts vertically and horizontally at the same time.
+
+2005-06-24 Werner LEMBERG <wl@gnu.org>
+
+ * doc/vertical.doc: Mention that you need an `.fdx' file if you
+ want to use rotated glyphs for vertical typesetting.
+
+2005-05-23 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJK.doc: Improve documentation of `encapsulated' option.
+ Suggested by Brian Murphy.
+
+2005-04-26 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/UTF8/UTF8.chr (\CJK@punctchar): Wrap code after \usefont
+ into three groups to make it work with CJKulem.sty.
+
+ * texinput/CJKutf8.sty, examples/CJKutf8.tex, doc/CJKutf8.doc: New
+ files.
+
+ * doc/history.txt: Updated.
+
+2005-04-22 Werner LEMBERG <wl@gnu.org>
+
+ * utils/lisp/emacs/cjk-enc.el (cjk-viscii-lower, cjk-viscii-upper),
+ utils/lisp/mule-2.3/cjk-enc.el (cjk-viscii-lower, cjk-viscii-upper):
+ Update to next vntex version which no longer uses dblaccnt.sty.
+
+2005-03-27 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty (\CJKspace): Don't use \relax but \@empty.
+
+2005-03-02 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJK.doc: Mention `CJKbookmarks' option of hyperref package.
+
+2005-02-23 Werner LEMBERG <wl@gnu.org>
+
+ * README: Updated. No public CVS access possible currently.
+
+2004-07-26 Werner LEMBERG <wl@gnu.org>
+
+ * utils/lisp/emacs/thai-word.el (thai-word-table): Use Thai word
+ list from IBM's ICU4J project; it is slightly larger and uses an
+ X license.
+
+2004-07-25 Werner LEMBERG <wl@gnu.org>
+
+ * utils/lisp/emacs-20.3/*: Moved to...
+ * utils/lisp/emacs/*: This.
+
+ * utils/thaifont/tools/thai.enc: Minor updates. Will be replaced
+ with a fontinst solution soon.
+
+2004-06-08 Werner LEMBERG <wl@gnu.org>
+
+ * doc/reftex.doc: New file.
+ * doc/history.txt: Updated.
+
+2004-06-07 Werner LEMBERG <wl@gnu.org>
+
+ * utils/lisp/emacs-20.3/cjk-enc.el (cjk-write-all-files): Handle
+ case where files are in other directories. Bug reported by Hartwig
+ Crailsheim.
+
+ * doc/cjk-enc.doc, doc/history.txt: Updated.
+
+2004-06-04 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/wadalab/c42goth.fdx, contrib/wadalab/c42maru.fdx,
+ contrib/wadalab/c42min.fdx: Don't rotate the Hiragana-Katagana
+ prolongation mark.
+
+ * doc/vertical.doc: Updated.
+ Move text describing .fdx files to...
+ * doc/fdxfiles.doc: New file.
+
+ * texinput/CJK.sty: Minor spelling improvements.
+
+2004-06-03 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/wadalab/DNP.doc: Improve patch for wftodm.c.
+
+2004-04-29 Werner LEMBERG <wl@gnu.org
+ Wenchang Sun <sunwch@hotmail.com>
+
+ Add a style file for various CJK font effects.
+
+ * texinput/CJKfntef.sty, examples/CJKfntef.tex: New files.
+ * doc/CJK.doc, doc/history.txt: Document it.
+
+2004-03-13 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/*.enc: Replace \relax with \@empty in the \CJK@namegdef
+ assignments to assure that we only have expansion at this macro
+ level.
+
+ * doc/history.txt: Updated.
+
+2004-02-08 Werner LEMBERG <wl@gnu.org>
+
+ Bug fix: Umlaut u with diacritic appears bold.
+
+ * texinput/pinyin.sty (\py@@@v): Apply kerning at correct place.
+
+2004-02-07 Werner LEMBERG <wl@gnu.org>
+
+ Bug fix: Umlaut u with macron above was broken.
+
+ * texinput/pinyin.sty (\py@macron): Add second argument to
+ initialize \dimen@. Update all callers.
+
+2004-02-06 Werner LEMBERG <wl@gnu.org>
+
+ Bug fix: Use user-defined \CJKglue value.
+
+ * texinput/CJKulem.sty (\CJK@skip): New skip register.
+ (\UL@CJKglue): Use it.
+ (\UL@hook): Initialize \CJK@skip.
+ Move assignments of \LA@CJKglue, \LA@Thaiglue, and \LA@Thaibreak
+ to here.
+
+2004-02-05 Wenchang Sun <sunwch@hotmail.com>
+
+ Bug fix: Disable line breaks before a post-punctuation CJK glyph
+ when \uline, \uwave, etc., are used.
+
+ * texinput/CJK.sty (\CJKnobreakglue): New macro.
+ (\Unicode): Use it.
+
+ * texinput/CJKulem.sty (\UL@CJKnobreakglue): New macro.
+
+ * texinput/standard.chr, texinput/extended.chr, texinput/pmC.chr,
+ texinput/Bg5/bg5.chr, texinput/JIS/EUC-JP.chr,
+ texinput/SJIS/SJIS.chr, texinput/SJIS/SJISdnp.chr,
+ texinput/UTF8/UTF8.chr, texinput/CNS/EUC-TW.chr (\CJK@char,
+ \CJK@charx, \CJK@punctchar, \CJK@punctcharx): Use \CJKnobreakglue.
+
+2004-02-02 Hin-Tak Leung <htl10@users.sourceforge.net>
+
+ * doc/pdf/*: New directory tree documenting usage of CJK for
+ improved PDF output.
+ * doc/history.txt: Document it.
+
+2004-01-29 Wenchang Sun <sunwch@hotmail.com>
+
+ * texinput/CJK.sty (\CJKpunctsymbol): New \let to \CJKsymbol.
+
+ * texinput/standard.chr, texinput/extended.chr, texinput/pmC.chr,
+ texinput/Bg5/bg5.chr, texinput/JIS/EUC-JP.chr, texinput/KS/KS.chr,
+ texinput/SJIS/SJIS.chr, texinput/SJIS/SJISdnp.chr,
+ texinput/UTF8/UTF8.chr, texinput/CNS/EUC-TW.chr (\CJK@punctchar,
+ \CJK@punctcharx): Replace \CJKsymbol with \CJKpunctsymbol.
+
+2003-10-12 Werner LEMBERG <wl@gnu.org>
+
+ A first step to allow modification of horizontal character widths
+ which is needed for CJK fonts which don't have punctuation glyphs
+ centered within the CJK square. The same mechanism will work with
+ vertical glyphs also; since a common interface will differ from the
+ current implementation, *.fdv files are renamed to *.fdx. Note that
+ special character width handling of punctuation characters is still
+ missing.
+
+ * texinput/CJK.sty (\CJK@load@fdx): New function, used as a hook
+ for \try@load@fontshape. It defines the macros \CJKhdef, \CJKhlet,
+ \CJKvdef, and \CJKvlet. The writing direction is appended to the
+ character macros -- this also fixes a bug for vertical writing
+ support with Big5 encoding (some characters disappeared in the
+ output without any warning due to character macro name clashes with
+ the subfont macro names).
+ (\CJK@direction): New macro to select the writing direction.
+ (\ifCJK@vertical@): Moved to CJKvert.sty.
+
+ * texinput/CJKvert.sty (\ifCJK@vertical@): Moved from CJK.sty.
+ (\CJKvert, \CJKhorz): Set \CJK@direction.
+ (\CJKsymbol): Updated to use writing direction.
+ (\CJK@load@fdv): Removed.
+
+ * texinput/*.chr: Simplified since \ifCJK@vertical@ is no longer
+ needed.
+
+ * texinput/*.fdv, contrib/wadalab/*.fdv: Renamed to...
+ * texinput/*.fdx, contrib/wadalab/*.fdx: This.
+
+2003-10-25 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/mule/MULEenc.sty: Fix positions of \texordfeminine and
+ \textordmasculine.
+
+2003-09-20 Werner LEMBERG <wl@gnu.org>
+
+ With the help of Paul Eggert <eggert@twinsum.com> and Edward G.J.
+ Lee <edt1023@ms17.hinet.net>, the conversion scripts now accept
+ parameters.
+
+ * utils/Bg5conv/bg5{pdf,}latex,
+ utils/CEFconv/{cef5{pdf,}latex,cef{pdf,}latex,cefs{pdf,}latex},
+ utils/SJISconv/sjis{pdf,}latex,
+ utils/extconv/{bg5+{pdf,}latex,gbk{pdf,}latex}: Rewritten to accept
+ arguments.
+ * doc/history.txt: Updated.
+
+2003-09-16 Werner LEMBERG <wl@gnu.org>
+
+ * utils/Bg5conv/bg5pdflatex,
+ utils/CEFconv/{cef5pdflatex,cefpdflatex,cefspdflatex},
+ utils/SJISconv/sjispdflatex,
+ utils/extconv/{bg5+pdflatex,gbkpdflatex}: New scripts to call
+ pdflatex.
+ * doc/history.txt: Updated.
+
+2003-07-06 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/mule/MULEenc.sty: Add some \@gobble macros in commands
+ defined with \mule@def.
+ Change definition of Thai EOL macro to make it really work.
+ (\mule@ignorespaces, \Thaispace, \Thainospace): New macros.
+
+ * doc/cjk-enc.doc, doc/history.txt: Document \Thaispace and
+ \Thainospace.
+
+2003-03-30 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJK.doc: Add item how to handle \bibliography which has
+ author names containing CJK characters.
+
+ * utils/hbf2gf/hbf2gf.1: Minor workarounds for current grohtml bugs.
+
+2003-03-28 Werner LEMBERG <wl@gnu.org>
+
+ Version 4.5.2 released
+ ======================
+
+ Update version numbers and time stamps in all non-binary files.
+
+2003-03-19 Werner LEMBERG <wl@gnu.org>
+
+ Add improved support for pseudo-vertical typesetting. Based on
+ ideas by Robert Fendt <robert.fendt@epost.de>.
+
+ * texinput/CJK.sty (\ifCJK@vertical@): New if.
+
+ * texinput/CJKvert.sty: Require `graphicx' package.
+ (\CJKvert, \CJKhorz, \CJKvdef, \CJKvlet, \CJKsymbolsimple): New
+ commands.
+ (\CJKsymbol): Add support for vertical parameters (`rotate',
+ `offset', `fullheight, `height') in the new *.fdv files.
+ (\CJK@load@fdv): New command to be appended to LaTeX's
+ \try@load@fontshape.
+
+ * texinput/*/*.chr: Replace calls to \CJKsymbol with an extended
+ version which, if \CJKvert is active, checks the existence of a
+ macro
+
+ \<encoding>/<family>/<series>/<shape>/<plane>/<code>
+
+ This macro is then called if it exists, instead of calling
+ \CJKsymbol. For halfwidth katakana, the macro is called
+
+ \<encoding>/<family>/<series>/<shape>/<code>
+
+ For HLaTeX, the macro is called
+
+ \<encoding>/<family>/<series>/<shape>/<first byte>/<second byte>
+
+ For UTF8, only characters in the range 0x800-0xFFFF get the new
+ code.
+
+ <code>, <first byte>, and <second byte> are decimal numbers.
+
+ * contrib/wadalab/c42{goth,maru,min}.fdv,
+ contrib/wadalab/c52{maru,min}.fdv, texinput/Bg5/c00bsmi.fdv,
+ texinput/GB/c10gbsn.fdv: New files containing information for
+ vertical typesetting.
+
+ * examples/Big5vert.tex: Use font shape `bsmi'.
+
+ * doc/history.txt, doc/chinese/README, contrib/wadalab/DNP.doc,
+ doc/vertical.doc, examples/README, README: Updated.
+
+ * Makefile (DVI2PS): Load bsmilp.map and gbsnlp.map.
+ (cweb): Fix typo (cms->cmz).
+
+ * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub: Updated to
+ current versions.
+
+ * utils/extconv/extconv.w: Remove duplicated lines.
+ Fix incorrect use of \@.
+ * utils/extconv/extconv.c: Regenerated.
+
+2003-03-18 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/pinyin.sty (\rua): New syllable. While only dialect, it
+ actually is used...
+
+2003-03-12 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/pinyin.sty (\den, \chua): Add missing syllables (found by
+ Jean-Luc Koning <Jean-Luc.Koning@esisar.inpg.fr>).
+
+2003-03-07 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/pinyin.sty (\py@hy): Assure horizontal mode.
+
+2003-02-10 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty (\CJKchar): Make \CJKchar accept 7bit input for
+ character definitions other than standard.chr.
+ * doc/history.txt: Updated.
+
+2003-02-06 Werner LEMBERG <wl@gnu.org>
+
+ Horizontal hints in Wadalab fonts weren't shifted vertically,
+ causing inferior results at small sizes.
+
+ * contrib/wadalab/makefont: Rewritten using awk.
+ * contrib/wadalab/fixwada: New.
+ * contrib/wadalab/DNP.doc, doc/history.txt: Updated.
+ * doc/INSTALL: Minor fixes. Mention wadalab.doc and pfaedit.
+
+2003-01-31 Werner LEMBERG <wl@gnu.org>
+
+ Add two commands \CJKhwkatakana and \CJKnohwkatakana to control
+ whether C49 encoding is used or whether SJIS half-width katakana are
+ mapped to full-width glyphs instead.
+
+ * texinput/CJK.sty (\CJKhwkatakana, \CJK@nohwkatakana): New commands.
+ (\ifCJK@hwkatakana@): New if-macro.
+
+ * texinput/SJIS/SJIS.chr, texinput/SJIS/SJISdnp.chr (\CJK@sjischar):
+ Add second and third parameter to call \CJK@XXX conditionally.
+ * texinput/SJIS/SJIS.enc (\CJK@SJISEncoding): Fill second and
+ third parameters for half-width katakana.
+ * texinput/SJIS/SJISdnp.enc (\CJK@SJISdnpEncoding): Ditto.
+ * doc/commands.doc, doc/CJK.doc, doc/history.txt: Updated.
+
+ * examples/README: New file.
+
+2002-07-29 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CNS/EUC-TW.chr (\CJK@shiftchar): Pass correct parameters
+ to \CJKchar.
+
+2002-06-19 Werner LEMBERG <wl@gnu.org>
+
+ Version 4.5.1 released
+ ======================
+
+ Update version numbers and time stamps in all non-binary files.
+
+2002-06-17 Werner LEMBERG <wl@gnu.org>
+
+ Preparation of release 4.5.1.
+
+ * README: Updated.
+ * texinput/CJK.sty, doc/CJK.doc: Require LaTeX 2001/06/01 to have
+ support for \textkra, \texttstroke, and \textTstroke.
+ Other minor documentation updates.
+ * doc/*: Updated.
+
+2002-06-16 Werner LEMBERG <wl@gnu.org>
+
+ * doc/chinese/READMEgb.tex: Use `gbsn' font.
+ * Makefile (CJK2DVI): Remove *.toc also.
+ (LATEX2DVI): Take two arguments.
+ (LATEX): Ditto.
+ (DISTTARGETS): Add READMEb5 and pytest.
+ (READMEgb, pytest): New rules
+ (GB...): Updated.
+ (predistdoc): Create README file.
+ (distdoc): Depend also on `cweb'.
+ (cweb): New target.
+
+2002-06-14 Edward Lee <edt1023@ms17.hinet.net>
+
+ * texinput/Bg5/c00bsmi.fd, texinput/Bg5/c00bsmir.fd: Fix typo.
+
+2002-06-13 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile: New file, used for creating the tarballs.
+ * README: Updated.
+ * texinput/GB/c10gbsn.fd, texinput/Bg5/c00bsmi.fd,
+ texinput/Bg5/c00bsmir.fd: New files for fonts from the TeXLive CD.
+ * doc/chinese/READMEb5.tex, examples/*: Changed to use the fonts
+ provided by the TeXLive CD.
+
+2002-06-12 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/JISdnp.enc (\CJK@JISdnpEncoding): Fix position of closing
+ brace.
+
+2002-06-07 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/thai/c90enc.def: New file, contributed by Dominique
+ Unruh <dominique@unruh.de>.
+ * texinput/thai/thaicjk.ldf: Use it.
+ * doc/history.txt: Updated.
+
+2002-05-16 Werner LEMBERG <wl@gnu.org>
+
+ * doc/cjk-enc.doc: Document behaviour for master files without CJK
+ characters.
+ * doc/CJK.doc: Explain usage of `~' for BibTeX.
+
+2002-05-10 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKnumb.sty (\CJKnullspace): New macro to control the
+ additional space inserted before and after a circle used as a
+ CJK zero digit.
+ * doc/history.txt: Updated.
+
+2002-05-09 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKnumb.sty (\CJK@traditionalNumbers,
+ \CJK@simplifiedNumbers): New macros.
+ Use them for GB, GBK, Bg5, Bg5+ hooks.
+
+2002-05-01 Werner LEMBERG <wl@gnu.org>
+
+ * doc/commands.doc: Minor fix.
+
+ * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub: Updated to
+ current versions.
+ * utils/hbf2gf/configure.in: Renamed to...
+ * utils/hbf2gf/configure.ac: This.
+ Updated to autoconf 2.53.
+ * utils/hbf2gf/configure: Regenerated with autoconf 2.53.
+ * utils/hbf2gf/README: Text improved.
+ * utils/hbf2gf/hbf2gf.1: Minor typographical fixes.
+
+2002-04-30 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty (\CJK@errxx, \CJKindent): New macros.
+ * texinput/CJK.enc (\CJK@spaceChar): Define it for all encodings.
+ It is used by \CJKindent.
+ (\CJK@KSHL@enc): Add \CJK@min and \CJK@max.
+ * texinput/SJIS/SJISdnp.enc (\CJK@SJISdnpEncoding),
+ texinput/JIS/JISdnp.enc (\CJK@JISdnpEncoding),
+ texinput/KS/HLaTeX/KSHL.enc (\CJK@KSHLEncoding): Use \CJK@errxx
+ for unused slots.
+
+ * doc/history.txt, doc/commands.doc: Document \CJKindent.
+
+ * utils/CEFconv/cef5conv.w, utils/CEFconv/cefconv.w: Fix
+ documentation errors.
+ * utils/CEFconv/cef5conv.c, utils/CEFconv/cefconv.c: Regenerated.
+
+2002-04-29 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty (\pickup@font): Add comment character.
+
+2002-04-28 Werner LEMBERG <wl@gnu.org>
+
+ Preparation of release 4.5.0.
+
+ * README: Updated.
+
+2002-04-27 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty (\CJKsymbol, \CJKsymbols): Simplified.
+ (\Unicode, \CJKenc): Fix error text.
+
+2001-10-08 Mike Fabian <mfabian@suse.de>
+
+ * contrib/wadalab/c42goth.fd: Use `dgj' for normal series and add
+ `\CJKbold' for bold series.
+
+2001-07-31 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJK.doc: Note use of \cleardoublepage if problems occur with
+ two-column printing.
+
+2001-07-27 Fabrice Popineau <Fabrice.Popineau@supelec.fr>
+
+ * utils/cjklatex/cjklatex.c: New file.
+
+2001-06-27 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CJK.doc: Add info how to use a CJK environment in the
+ preamble.
+ * doc/cjk-enc.doc: Simplify usage of AUC TeX.
+ Modify definition of `TeX-run-CJK-LaTeX' to handle directories
+ properly.
+
+2001-06-15 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.enc (\CJK@disableMakeUppercase): Define it as \relax
+ if in preprocessed mode.
+
+2001-06-14 HANDA Ken'ichi <handa@etl.go.jp>
+
+ * utils/lisp/emacs-20.3/cjk-enc.el (cjk-set-buffer-multibyte):
+ Use backquote operator to make cjk-enc.elc work correctly.
+
+2001-06-08 Werner LEMBERG <wl@gnu.org>
+
+ The next LaTeX release will use \textkra, \texttstroke, and
+ \textTstroke for the missing latin-4 characters.
+
+ * texinput/mule/MULEenc.sty: Use \textkra. Add \TEXTTSTROKE.
+ * utils/lisp/emacs-20.3/cjk-enc.el, utils/lisp/mule-2.3/cjk-enc.el:
+ Use \texttstroke and \TEXTTSTROKE.
+
+2001-05-26 Werner LEMBERG <wl@gnu.org>
+
+ * texinputs/CJK.sty: Restore EOL character before loading `CJK.cfg'.
+
+2001-05-18 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/wadalab/DNP.doc: Document installation for pdfTeX.
+ * contrib/wadalab/makefont: Updated to normalize font matrix of
+ PS fonts.
+
+2001-04-24 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub: Updated to
+ latest version from gnu.org.
+
+2001-04-21 Werner LEMBERG <wl@gnu.org>
+
+ * examples/muletest.tex: Remove Thai support so that this file can
+ really be run with Mule 2.3.
+ Update comment.
+ * example/CJKbabel.tex, example/rubytest.tex: Update comment.
+
+ * utils/lisp/emacs-20.3/cjk-enc.el (cjk-format-spec-table): Fix
+ Thai.
+ * texinput/mule/MULEenc.sty (\mule@char): Don't use delimiter.
+ * texinput/SJIS/sjisdnp.enc: Update this file also to the changes
+ introduced 2001-03-15.
+
+2001-04-17 Werner LEMBERG <wl@gnu.org>
+
+ * examples/*.tex: Added local variables for Emacs to specify
+ encoding.
+ * doc/history.txt: Emphasize the need of local variables for the
+ encoding if `cjk-enc.el' is used.
+
+2001-04-02 Werner LEMBERG <wl@gnu.org>
+
+ * utils/lisp/emacs-20.3/cjk-enc.el: Fix documentation to follow
+ Elisp documentation conventions.
+
+2001-04-01 Werner LEMBERG <wl@gnu.org>
+
+ Make UTF8 encoding work in TOC.
+
+ * texinput/CJK.sty (\CJK@namedef): New macro.
+ * texinput/UTF8/UTF8.bdg: Use it.
+
+2001-03-28 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/mule/MULEenc.sty: Use \textnumero instead of \CYRNo
+ (found by Vladimir Volovich).
+
+2001-03-18 Werner LEMBERG <wl@gnu.org>
+
+ * utils/lisp/cjkspace.el, INSTALL: Fix documentation.
+
+2001-03-15 Werner LEMBERG <wl@gnu.org>
+
+ A major change: Preprocessed and non-preprocessed mode can be used
+ simultaneously! For example, you can now use include a file encoded
+ in UTF-8 in another file encoded in Big5.
+
+ To achieve this, ^^7f will always start a command in preprocessed
+ mode, even for CJK macros.
+
+ * texinput/CJK.sty: Require MULEenc.sty.
+ Remove ^^7f handling.
+ Remove preprocessed versions of \CJK@XX, \CJK@XXX, and \CJK@XXXX.
+ (\CJKcaption): Always include .cpx files.
+
+ * texinput/CJK.enc (\CJK@disableMakeUppercase): New macro.
+ (\CJK@shiftError): New macro.
+ (\CJK@unicodeError): New macro.
+ (\CJK@makeEnvironment): Don't handle \MakeUppercase.
+ (\CJK@*@enc): Always use `true' branch in \CJKpreproc conditionals.
+
+ * texinput/mule/MULEenc.sty (\mule@@@arg, \mule@def): Use \string.
+ (\mule@@def): New function to set up macros for leading bytes in the
+ range ^^81-^^fe.
+ * texinput/extended.enc (\CJK@extendedEncoding),
+ texinput/Bg5/Bg5.enc (\CJK@Bg5Encoding), texinput/SJIS/SJIS.enc
+ (\CJK@SJISEncoding): Use \CJK@disableMakeUppercase.
+ * texinput/pmCbig.enc (\CJK@pmCbigEncoding), texinput/pmCsmall.enc
+ (\CJK@pmCsmallEncoding), texinput/standard.enc
+ (\CJK@standardEncoding): Add \relax.
+ * texinput/CNS/EUC-TW.enc (\CJK@EUC-TWEncoding),
+ texinput/JIS/EUC-JP.enc (\CJK@EUC-JPEncoding): Use \CJK@shiftError
+ for single shifts. Add \relax for all other macros.
+ * texinput/UTF8/UTF8.enc (\CJK@UTF8Encoding): Use \CJK@unicodeError
+ for three-byte sequences. Add \relax for all other macros.
+
+ * texinput/*/*.cpx: Updated to new preprocessing scheme.
+
+ * utils/*conv/*conv.w: Updated to new preprocessing scheme.
+ * utils/*conv/*conv.c: Regenerated.
+
+ * utils/lisp/emacs-20.3/cjk-enc.el (cjk-format-spec-table): Updated
+ to new preprocessing scheme.
+ (cjk-encode): Fix file header insertion strings.
+ * utils/lisp/mule-2.3/cjk-enc.el (cjk-enc-table): Updated to new
+ preprocessing scheme.
+ (cjk-encode): Fix file header insertion strings.
+
+ * doc/*: Updated and revised.
+
+2001-03-13 Werner LEMBERG <wl@gnu.org>
+
+ Implement \CJKinput.
+
+ * mule/MULEenc.sty (\CJKinput): New macro.
+ (\CJKinclude): Fix error message.
+
+ * utils/lisp/emacs-20.3/cjk-enc.el (cjk-write-all-files): Update
+ docstring.
+ (tex-input-regexp): New test for \CJKinput.
+ (do-batch-cjk-write-file): Fix typo.
+
+ * texinput/thai/thaicjk.ldf: Fix typo.
+
+2001-02-21 Werner LEMBERG <wl@gnu.org>
+
+ * doc/INSTALL: Minor improvements.
+
+2001-02-13 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/config.{guess,sub}: Updated (from ftp.gnu.org).
+
+2000-12-17 Werner LEMBERG <wl@gnu.org>
+
+ * utils/SJISconv/sjisconv.w: Fix typo ff -> 7f.
+ * utils/CEFconv/cef5conv.w, utils/CEFconv/cefconv.w: Ditto.
+
+ * utils/*conv/*conv.w: \XXXpreproc will now contain the version of
+ the conversion program.
+ * utils/*conv/*conv.c: Updated.
+
+ * doc/history.txt: Updated.
+
+ * all files: Version number changed to 4.4.0.
+
+2000-12-03 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/configure.in: Fix kpathsea checking message.
+ * utils/hbf2gf/configure: Updated.
+
+2000-12-02 Werner LEMBERG <wl@gnu.org>
+
+ * doc/cjk-enc.doc: Clarify usage of cjk-coding.
+ * doc/INSTALL: Add hints how to use kpsewhich to check
+ configuration.
+
+2000-12-01 Werner LEMBERG <wl@gnu.org>
+
+ * doc/INSTALL: Fix documentation of --with-kpathsea-include.
+ * doc/cjk-enc.doc: Fix typo.
+
+2000-09-21 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/{CJK.sty, CJKulem.sty, pinyin.sty, ruby.sty}: Replacing
+ some \ifdim with \ifnum.
+
+2000-09-20 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKulem.sty: Fixed two nasty bugs (spotted by Sim Ing
+ <sim@ubs-aptsocap.org>): No underlining for \CJKglue and no \CJKglue
+ before and after \uline.
+
+2000-08-28 Werner LEMBERG <wl@gnu.org>
+
+ * utils/thaifont/texmf/dvips/config/config.{norasi,dbtt}: New files.
+ * doc/thaifont.doc: Added info about PS font configuration.
+
+2000-08-24 Werner LEMBERG <wl@gnu.org>
+
+ * utils/lisp/emacs-20.3/thai-word.el (thai-update-word-table): Add
+ documentation string.
+
+2000-08-24 HANDA Ken'ichi <handa@etl.go.jp>
+
+ * utils/lisp/emacs-20.3/thai-word.el (thai-update-word-table): New
+ function.
+ (thai-find-word-ends): Fix loop.
+
+2000-08-23 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/thai/thaicjk.ldf: Remove warning about nonexistent
+ hyphenation patterns.
+
+2000-08-20 Werner LEMBERG <wl@gnu.org>
+
+ Another big sigh. Wrong glyph names for Norasi's Thai digits.
+ Additionally, all ligature rules no longer use `>' to make kerning
+ possible.
+
+ * utils/thaifont/texmf/dvips/base/norasi.enc: Fixed.
+ * utils/thaifont/tools/{thai.enc,thailigs.vpl}: Updated.
+ * utils/thaifont/texmf/fonts/{tfm,vf}/public/{dbtt,norasi}/*:
+ Regenerated.
+
+2000-08-19 Werner LEMBERG <wl@gnu.org>
+
+ * examples/thai.tex: New file.
+ * doc/history.txt: Updated.
+
+ * examples/CJKbabel.tex: Doc fixes.
+
+2000-08-17 Werner LEMBERG <wl@gnu.org>
+
+ * doc/cjk-enc.el, doc/thaifont.doc: Give better URL for thailatex
+ package.
+
+2000-08-15 Werner LEMBERG <wl@gnu.org>
+
+ Sigh, another forgotten Thai ligature rule.
+
+ * utils/thaifont/tools/{thai.enc,thailigs.vpl}: Updated.
+ * utils/thaifont/texmf/fonts/{tfm,vf}/public/{dbtt,norasi}/*:
+ Regenerated.
+
+2000-08-15 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/thai/c90{cmr,cmss.cmtt}.fd: Make font substitution
+ silent.
+
+ * utils/thaifont/texmf/dvips/base/norasi.enc: Fixing typo.
+ * utils/thaifont/texmf/fonts/{tfm,vf}/public/norasi/*: Updated.
+
+2000-08-13 Werner LEMBERG <wl@gnu.org>
+
+ Improved support for Thai.
+
+ * doc/thaifont.doc: New file.
+
+ * utils/thaifont/*: Metrics and support files for Thai fonts.
+
+ * texinput/thai/c90{nrsr,dbss}.fd: New font definition files for
+ dbtt and norasi font families.
+ * texinput/thai/c90{cmr,cmss,cmtt}.fd: Font alias files.
+ * texinput/thai/thaicjk.ldf: New file for thai support in Babel.
+ * texinput/thai/thai.sty: Removed.
+
+ * utils/lisp/emacs20.3/cjk-enc.el: Redesigned Thai support by
+ HANDA Ken'ichi <handa@etl.go.jp>.
+ Will now run under XEmacs also (with help of Martin Buchholz
+ <martin@xemacs.org>). No Thai support yet due to limitations in
+ current XEmacs version (21.2).
+ (cjk-write-all-files): New optional argument to force the processing
+ of all files.
+ (do-batch-cjk-write-file): New function.
+ (batch-cjk-write-file): Use do-batch-cjk-write-file.
+ (batch-force-cjk-write-file): New function. Uses
+ do-batch-cjk-write-file also.
+ * utils/lisp/mule-2.3/cjk-enc.el: Rename write-cjk-file to
+ cjk-write-file for consistency.
+ * utils/lisp/emacs20.3/thai-word.el: New file written by HANDA
+ Ken'ichi for Thai word breaking support. Replaces thaiconv.
+ * utils/thaiconv: Removed.
+
+ * utils/lisp/emacs20/cjk-enc.el: Removed. No longer supported.
+
+ * texinput/mule/MULEenc.sty: Adapted to new cjk-enc.el version.
+ Make it robust for CJKulem.sty.
+
+ * examples/CJKbabel.tex: Use CJKulem.sty and thaicjk module for
+ Babel.
+ * examples/muletest.tex: Remove \if... \fi clause for Thai.
+
+ * doc/history.txt, doc/INSTALL: Updated.
+
+2000-08-12 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJKulem.sty: New file which provides CJK support for
+ ulem.sty.
+ * doc/history.txt, doc/CJK.doc: Updated.
+
+2000-08-09 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/configure.in: Replaced --with-kpathsea-dir with
+ --with-kpathsea-lib and --with-kpathsea-include.
+ * utils/hbf2gf/configure, doc/history.txt, doc/INSTALL,
+ doc/hbf2gf.doc: Updated.
+
+ * texinput/CJK.sty, texinput/mule/MULEenc.sty: New command
+ \CJKverbatim which disables \Thaiglue and \CJKglue in verbatim
+ environments if the `verbatim' package is loaded.
+ * doc/history.txt, doc/CJK.doc, doc/commands.doc: Updated.
+
+2000-07-30 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub: Updated to
+ latest version from ftp.gnu.org.
+
+2000-07-27 Werner LEMBERG <wl@gnu.org>
+
+ * utils/thaiconv/thaiconv.c: Improve comment.
+
+ * *.fd: Set \hyphenchar to -1 for all CJK fonts.
+
+2000-06-23 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub: Updated to
+ latest version from ftp.gnu.org.
+
+ * texinput/CJK.enc: Removed redefinition of C42 and C49.
+
+2000-05-03 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty: Specifying an optional argument to the `CJK'
+ size function will no longer produce a warning message for each
+ subfont.
+
+ * contrib/wadalab/*.fd, doc/CJK.doc, doc/fonts.doc: Wadalab PS fonts
+ now use `CJK' size functions instead of `DNP' ones.
+
+ * doc/history.txt: Updated.
+
+2000-05-02 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/*/*.cpx: Replace incorrect 0xFF with 0x7F.
+
+2000-04-18 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty, texinput/pinyin.sty, texinput/ruby.sty:
+ Balancing the small kern control values, e.g. using
+ `\kern -1sp\kern 1sp' instead of `\kern 1sp' only.
+
+ Replacing kern value of 3sp with 5sp to avoid clash with ulem.sty.
+
+2000-04-01 Werner LEMBERG <wl@gnu.org>
+
+ Version 4.3.0 released
+ ======================
+
+ This version exists on the Tex Live CD 5 only; a lot of files have
+ been adapted to the special needs of the CD's texmf tree -- these
+ changes are not in the CVS tree.
+
+2000-03-15 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/wadalab/wadalab.map: Renamed from Wadalab.map
+ * contrib/wadalab/DNP.doc: Updated accordingly.
+
+ * utils/hbf2gf/cfg/*: Updated -- if possible, the foundry is used
+ as the target directory instead of the encoding, e.g.
+ `tfm/ntu/b5ka12'.
+
+2000-03-14 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/SJIS/SJISdnp.{chr,enc}: New files to support SJIS
+ encoding with DNP fontencoding.
+ * texinput/CJK.enc: Add SJISdnp.
+ Add forgotten punctuation pattern macro to KSHL encoding.
+ * doc/history.txt, doc/CJK.doc, doc/command.doc: Update.
+
+2000-03-13 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty: Fixing definition of ^^7f to do nothing if
+ written to the TOC file.
+
+2000-03-12 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/KS/HLaTeX/pshan.sty: Fix typo.
+
+ Call \mj to activate default family correctly.
+
+ * contrib/wadalab/makefont: Add echo commands.
+ * contrib/wadalab/DNP.doc: Updated. Add info about gsftopk.
+
+2000-03-03 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/README: New file.
+ * utils/hbf2gf/hbf2gf.1, doc/hbf2gf.doc: Small improvements.
+
+ * README: Removed `romaji environment' from TODO section. According
+ to HANDA Ken'ichi <handa@etl.go.jp> it is impossible to provide
+ hyphenation patterns for transcribed Japanese without semantic
+ analysis.
+
+2000-03-02 Werner LEMBERG <wl@gnu.org>
+
+ * README, doc/INSTALL: Slight improvements.
+
+ * utils/hbf2gf/Makefile.in, utils/hbf2gf/configure.in: Fix incorrect
+ test for NO_STRDUP. Thanks to <Andries.Brouwer@cwi.nl>.
+
+2000-02-06 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/CJK.sty, texinput/mule/MULEenc.sty,
+ utils/lisp/*/cjk-enc.el, utils/*conv/*conv.[cw], history.txt,
+ CJK.doc, cjk-enc.doc: Use 0x7F both as the multiplex character and
+ as a delimiter -- apparently no package uses this character...
+ This solves all problems with \uppercase and \lowercase.
+
+ * utils/hbf2gf/cfg/j2so12.cfg: Added `min_char' parameter to get
+ correct offsets (thanks to Martin Minich
+ <minich5@kepler.fmph.uniba.sk> for finding this bug).
+
+2000-01-26 Werner LEMBERG <wl@gnu.org>
+
+ * doc/cjk-enc.doc, doc/history.txt, examples/CJKbabel.tex,
+ examples/muletest.tex, texinput/mule/MULEenc.sty,
+ utils/lisp/*/cjk-enc.el: Change X5 to T5.
+
+2000-01-20 Werner LEMBERG <wl@gnu.org>
+
+ * examples/muletest.tex: Greek added; updated to X5 encoding.
+ * examples/CJKbabel.tex: Greek added; updated to X5 encoding.
+
+ * texinput/mule/MULEenc.sty: Use \AtBeginDocument for \mule@<accent>
+ definitions.
+
+2000-01-14 Werner LEMBERG <wl@gnu.org>
+
+ * doc/cjk-enc.doc: Added info about file variables to specify
+ document encoding.
+
+2000-01-03 Ching-Mo CHANG <chingmo@mail.onweb.com.tw>
+
+ * utils/lisp/emacs-20.3/cjk-enc.el (cjk-write-all-files): Always
+ returned nul for include and bib file names due to incorrect
+ pattern matching.
+
+1999-12-18 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/configure.in: Removed `-pedantic' flag which causes
+ problems with newer gcc versions.
+
+1999-11-19 Werner LEMBERG <wl@gnu.org>
+
+ * examples/muletest.tex, examples/CJKbabel.tex: Fixing a typo.
+
+1999-11-07 Werner LEMBERG <wl@gnu.org>
+
+ * doc/CEF.doc: Minor fixes.
+
+ * doc/CJK.doc: Updated; minor fixes.
+
+1999-11-06 Werner LEMBERG <wl@gnu.org>
+
+ * doc/cjk-enc.doc, doc/commands.doc, doc/fonts.doc: Minor fixes.
+
+ * doc/vertical.doc, doc/history.txt: Updated.
+
+1999-11-05 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/mule/MULEenc.sty: Added \CJKinclude{<file>} and
+ \CJKbibliography{<file>}. These functions act identically to
+ \include resp. \bibliography but load <file>.cjk
+ resp. <file>-cjk.bib.
+
+ * utils/lisp/emacs-20.3/cjk-enc.el: Using `cjk' throughout as the
+ prefix to variable and function names. This causes a renaming of
+ virtually all functions. Some other local variables were renamed
+ also for consistency.
+
+ Changing ET5 to X5 encoding for Vietnamese.
+
+ (decompose-char): Removed. Not needed at all.
+
+ (cjk-tex-in-comment): New function. Similar to AUC TeX's
+ TeX-in-comment function; has been added to be independent from AUC
+ TeX.
+
+ (cjk-write-all-files): New function. It checks for \CJKinclude
+ and \CJKbibliography commands in the master file and converts the
+ referenced files accordingly if necessary. Intended as a hook to
+ AUC TeX to make multiple files work as expected.
+
+1999-11-02 Werner LEMBERG <wl@gnu.org>
+
+ * doc/cjk-enc.doc: Small improvement in explanation of usage with
+ AUC TeX.
+
+1999-10-24 Werner LEMBERG <wl@gnu.org>
+
+ * utils/lisp/emacs-20.3/cjk-enc.el (get-cjk-name): New function.
+
+ (file-write-cjk-file, batch-write-cjk-file): New functions which
+ do the same as write-cjk-file but operate on a given file (resp. a
+ suite of files and directories given on the command line).
+
+ (write-cjk-file): Will now properly ask for a file name if the
+ current buffer is not visiting a file.
+
+ * doc/cjk-enc.doc: Expanded TeX-translate-location-hook to cover
+ CJK BibTeX input files also.
+
+ TeX-run-CJK-LaTeX now checks whether it must call write-cjk-file
+ at all (emacs > 20.3 only).
+
+1999-10-07 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/mule/MULEenc.sty: Removed \textendash wrapper macro.
+
+ * utils/lisp/{emacs-20.3,emacs-20,mule-2.3}/cjk-enc.el: Added
+ iso-8859-9 (Greek) support (mapped to LGR encoding as used in the
+ Babel package).
+
+ Fixed character `SOFT-HYPHEN' in iso-8859-x encodings (using `\-'
+ instead of \textendash).
+
+ * README, doc/cjk-enc.doc, doc/history.txt: Updated.
+
+ * doc/CJK.doc: Fixed a typo.
+
+ * texinput/CJK.enc, texinput/CJK.sty, texinput/*/{*.cap,*.cpx}:
+ Replaced `\ifx\foo \undefined' with `\@ifundefined{}{}' to fix the
+ case that a not-defined macro has been tested with \@ifundefined
+ before. In this case, it is no longer undefined but identical to
+ \relax.
+
+ * texinput/pmC.chr: Fixed punctuation macros for pmC.
+
+1999-10-02 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/pinyin.sty: The method with appending `\-' to all
+ syllables fails (stupid I am :-), so here a solution which really
+ works. It uses a small kern (4sp, similar to the ruby and CJK
+ packages) to tell the following pinyin syllable that a
+ discretionary has to be inserted.
+
+1999-10-01 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/mule/MULEenc.sty: \lccode and \uccode of ^^ff must not
+ be modified, otherwise hyphenation patterns containing \ss will
+ fail (which happens e.g. in German).
+
+1999-09-28 Werner LEMBERG <wl@gnu.org>
+
+ * doc/history.txt: Updated.
+
+ * utils/pyhyphen/pyhyph.tex, utils/pyhyphen/pytest.tex,
+ utils/pyhyphen/pinyin.ldf, doc/pyhpyhen.doc: Hyphenation patterns
+ for unaccented pinyin syllables to be used with the Babel package.
+
+ * utils/pyhyphen/pinyin.c, utils/pyhpyhen/pinyin.tr: Utility files
+ for creating pinyin hyphenation patterns.
+
+1999-09-27 Werner LEMBERG <wl@gnu.org>
+
+ * doc/history.txt: Updated.
+
+1999-09-21 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/pinyin.sty: Adding hyphenation points at the end of all
+ syllables.
+
+1999-09-18 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/pinyin.sty: Making accent commands like \py@a robust.
+
+ Added option `useCMmacron' (for LaTeX only) to use a macron accent
+ from the CM fonts in case the used font doesn't have it
+ (e.g. some versions of virtual files for Palatino).
+
+1999-08-26 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/hbf2gf.1: Added some documentation how to find out
+ the expanded value of a kpathsea variable (like $MISCFONT).
+
+1999-08-07 Werner LEMBERG <wl@gnu.org>
+
+ * utils/thaiconv/thaiconv.c (adj): Fixed invalid array index in
+ case of marks without base characters.
+
+1999-07-07 Werner LEMBERG <wl@gnu.org>
+
+ * texinput/Bg5/Bg5.chr,
+ texinput/extended.chr: Fixed a typo \CJK@temp->\CJK@gtemp
+
+1999-06-30 Werner LEMBERG <wl@gnu.org>
+
+ * utils/lisp/emacs-20/cjk-enc.el,
+ utils/lisp/emacs-20.3/cjk-enc.el,
+ utils/lisp/mule-2.3: Fixed code for 0x80 multiplex character.
+
+1999-06-22 Werner LEMBERG <wl@gnu.org>
+
+ * doc/TDS.doc: Completely revised.
+
+1999-06-10 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/configure.in: Removed `-ansi' flag which can cause
+ problems with the kpathsea library (which is not compiled with
+ -ansi).
+
+1999-06-07 Werner LEMBERG <wl@gnu.org>
+
+ * utils/hbf2gf/hbf2gf.1: Added documentation about MiKTeX.
+
+ * utils/hbf2gf/hbf2gf.w: Added support for MiKTeX file search
+ library.
+
+ * texinput/CEF/*.fd: Removed -- these files were erroneously
+ included into the CVS repository.
+
+1999-06-04 Werner LEMBERG <wl@gnu.org>
+
+ * *.fd files: minor documentation addition regarding font
+ encoding.
+
+ * all files: Changed date/version to 4.3.0.
+
+1999-06-02 Werner LEMBERG <wl@gnu.org>
+
+ * README: Added info about http and ftp home sites and how to
+ access the CVS repository.
+
+1999-06-01 Werner LEMBERG <wl@gnu.org>
+
+ * README: Added info about CVS mailing list.
+
+1999-05-29 Werner LEMBERG <wl@gnu.org>
+
+ * README: Added mailing list.
+
+ * doc/INSTALL: Small correction.
+
+ * README: Small additions.
+
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
+ Copyright (C) 1999, 2001-2012
+ Werner Lemberg <wl@gnu.org>
+
+ This file is part of the CJK package for using Asian logographs
+ (Chinese/Japanese/Korean) with LaTeX2e.
+
+ 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, 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 GNU Emacs; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
diff --git a/language/chinese/CJK/cjk-4.8.5/MANIFEST b/language/chinese/CJK/cjk-4.8.5/MANIFEST
new file mode 100644
index 0000000000..bea2d544c7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/MANIFEST
@@ -0,0 +1,466 @@
+Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+
+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 in doc/COPYING; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+
+This license applies to all files of the CJK package, unless otherwise
+stipulated in the source file.
+
+
+The CJK package contains the following files:
+
+ ChangeLog
+ MANIFEST
+ Makefile
+ README
+ TODO
+ contrib/wadalab/DNP.sfd
+ contrib/wadalab/c42goth.fd
+ contrib/wadalab/c42goth.fdx
+ contrib/wadalab/c42maru.fd
+ contrib/wadalab/c42maru.fdx
+ contrib/wadalab/c42min.fd
+ contrib/wadalab/c42min.fdx
+ contrib/wadalab/c52maru.fd
+ contrib/wadalab/c52maru.fdx
+ contrib/wadalab/c52min.fd
+ contrib/wadalab/c52min.fdx
+ contrib/wadalab/c70goth.fd
+ contrib/wadalab/c70goth.fdx
+ contrib/wadalab/c70maru.fd
+ contrib/wadalab/c70maru.fdx
+ contrib/wadalab/c70min.fd
+ contrib/wadalab/c70min.fdx
+ contrib/wadalab/fixwada
+ contrib/wadalab/fixwada2.pl
+ contrib/wadalab/makefont
+ contrib/wadalab/makeuniwada.pl
+ contrib/wadalab/wadalab.map
+ contrib/wadalab/wadalab.txt
+ doc/CEF.txt
+ doc/CJK.txt
+ doc/CJKnumb.txt
+ doc/CJKspace.txt
+ doc/CJKutf8.txt
+ doc/COPYING
+ doc/INSTALL
+ doc/TDS.txt
+ doc/chinese/README
+ doc/chinese/READMEb5.tex
+ doc/chinese/READMEgb.tex
+ doc/chinese/emTeXb5.txt
+ doc/chinese/teTeXb5.txt
+ doc/cjk-enc.txt
+ doc/commands.txt
+ doc/dvidrv.txt
+ doc/fdxfiles.txt
+ doc/fonts.txt
+ doc/hbf2gf.txt
+ doc/history.2_5
+ doc/history.txt
+ doc/japanese/README
+ doc/japanese/ascii.txt
+ doc/japanese/japanese.jis
+ doc/japanese/japanese.txt
+ doc/japanese/jp-fonts.txt
+ doc/japanese/jp-tex.txt
+ doc/japanese/preview.txt
+ doc/japanese/shibuaki.txt
+ doc/pdfhowto/HOWTO.txt
+ doc/pdfhowto/examples/bkai.map
+ doc/pdfhowto/examples/cid-x.map
+ doc/pdfhowto/examples/cwtb.map
+ doc/pdfhowto/examples/dvipdfmx.cfg
+ doc/pdfhowto/examples/gen-map.pl
+ doc/pdfhowto/examples/map.list
+ doc/pdfhowto/examples/texinput/Bg5/c00cwtb.fd
+ doc/pdfhowto/examples/texinput/Bg5/c00tmpl.fd
+ doc/pdfhowto/examples/texinput/GB/c10tmpl.fd
+ doc/pdfhowto/examples/texinput/JIS/c40tmpl.fd
+ doc/pdfhowto/examples/texinput/SJIS/c49tmpl.fd
+ doc/pdfhowto/examples/updmap.my
+ doc/pdfhowto/examples/wcl.sfd
+ doc/pinyin.txt
+ doc/pyhyphen.txt
+ doc/reftex.txt
+ doc/ruby.txt
+ doc/thaifont.txt
+ doc/vertical.txt
+ examples/Big5.tex
+ examples/Big5vert.tex
+ examples/CEF_test.tex
+ examples/CJKbabel.tex
+ examples/CJKfntef.tex
+ examples/CJKmixed.tex
+ examples/CJKspace.tex
+ examples/CJKutf8.tex
+ examples/GB.tex
+ examples/JIS.tex
+ examples/KS.tex
+ examples/README
+ examples/SJIS.tex
+ examples/UTF8.tex
+ examples/muletest.tex
+ examples/py_test.tex
+ examples/rubytest.tex
+ examples/thai.tex
+ examples/thai_utf8.tex
+ texinput/Bg5/Bg5.cap
+ texinput/Bg5/Bg5.chr
+ texinput/Bg5/Bg5.cpx
+ texinput/Bg5/Bg5.enc
+ texinput/Bg5/HK.enc
+ texinput/Bg5/c00bkai.fd
+ texinput/Bg5/c00bkai.fdx
+ texinput/Bg5/c00bsmi.fd
+ texinput/Bg5/c00bsmi.fdx
+ texinput/Bg5/c00bsmir.fd
+ texinput/Bg5/c00bsmir.fdx
+ texinput/Bg5/c00cns.fd
+ texinput/Bg5/c00fs.fd
+ texinput/Bg5/c00kai.fd
+ texinput/Bg5/c00kair.fd
+ texinput/Bg5/c00kair.fdx
+ texinput/Bg5/c00song.fd
+ texinput/Bg5/c01song.fd
+ texinput/Bg5/c05song.fd
+ texinput/Bg5/c09song.fd
+ texinput/CEF/c80song.fd
+ texinput/CEF/c81song.fd
+ texinput/CJK.enc
+ texinput/CJK.sty
+ texinput/CJKfntef.sty
+ texinput/CJKnumb.sty
+ texinput/CJKspace.sty
+ texinput/CJKulem.sty
+ texinput/CJKutf8.sty
+ texinput/CJKvert.sty
+ texinput/CNS/EUC-TW.bdg
+ texinput/CNS/EUC-TW.chr
+ texinput/CNS/EUC-TW.enc
+ texinput/CNS/c31song.fd
+ texinput/CNS/c32song.fd
+ texinput/CNS/c33song.fd
+ texinput/CNS/c34song.fd
+ texinput/CNS/c35song.fd
+ texinput/CNS/c36song.fd
+ texinput/CNS/c37song.fd
+ texinput/GB/GB.cap
+ texinput/GB/GB.cpx
+ texinput/GB/c10fs.fd
+ texinput/GB/c10gbsn.fd
+ texinput/GB/c10gbsn.fdx
+ texinput/GB/c10gkai.fd
+ texinput/GB/c10gkai.fdx
+ texinput/GB/c10song.fd
+ texinput/GB/c11song.fd
+ texinput/GB/c19song.fd
+ texinput/GB/c20song.fd
+ texinput/GB/c21song.fd
+ texinput/JIS/EUC-JP.bdg
+ texinput/JIS/EUC-JP.chr
+ texinput/JIS/EUC-JP.enc
+ texinput/JIS/EUC-JPdnp.enc
+ texinput/JIS/JIS.cap
+ texinput/JIS/JIS.cpx
+ texinput/JIS/JISdnp.enc
+ texinput/JIS/c40song.fd
+ texinput/JIS/c41song.fd
+ texinput/JIS/c42song.fd
+ texinput/JIS/c43song.fd
+ texinput/JIS/c50song.fd
+ texinput/KS/HLaTeX/HLaTeX.chr
+ texinput/KS/HLaTeX/KSHL.enc
+ texinput/KS/HLaTeX/c63bm.fd
+ texinput/KS/HLaTeX/c63dn.fd
+ texinput/KS/HLaTeX/c63gr.fd
+ texinput/KS/HLaTeX/c63gs.fd
+ texinput/KS/HLaTeX/c63gt.fd
+ texinput/KS/HLaTeX/c63jgt.fd
+ texinput/KS/HLaTeX/c63jmj.fd
+ texinput/KS/HLaTeX/c63jnv.fd
+ texinput/KS/HLaTeX/c63jsr.fd
+ texinput/KS/HLaTeX/c63mj.fd
+ texinput/KS/HLaTeX/c63pg.fd
+ texinput/KS/HLaTeX/c63pga.fd
+ texinput/KS/HLaTeX/c63ph.fd
+ texinput/KS/HLaTeX/c63pn.fd
+ texinput/KS/HLaTeX/c63sh.fd
+ texinput/KS/HLaTeX/c63tz.fd
+ texinput/KS/HLaTeX/c63vd.fd
+ texinput/KS/HLaTeX/c63yt.fd
+ texinput/KS/HLaTeX/c64bm.fd
+ texinput/KS/HLaTeX/c64dn.fd
+ texinput/KS/HLaTeX/c64gr.fd
+ texinput/KS/HLaTeX/c64gs.fd
+ texinput/KS/HLaTeX/c64gt.fd
+ texinput/KS/HLaTeX/c64jgt.fd
+ texinput/KS/HLaTeX/c64jmj.fd
+ texinput/KS/HLaTeX/c64jnv.fd
+ texinput/KS/HLaTeX/c64jsr.fd
+ texinput/KS/HLaTeX/c64mj.fd
+ texinput/KS/HLaTeX/c64pg.fd
+ texinput/KS/HLaTeX/c64pga.fd
+ texinput/KS/HLaTeX/c64ph.fd
+ texinput/KS/HLaTeX/c64pn.fd
+ texinput/KS/HLaTeX/c64sh.fd
+ texinput/KS/HLaTeX/c64tz.fd
+ texinput/KS/HLaTeX/c64vd.fd
+ texinput/KS/HLaTeX/c64yt.fd
+ texinput/KS/HLaTeX/c65bm.fd
+ texinput/KS/HLaTeX/c65dn.fd
+ texinput/KS/HLaTeX/c65gr.fd
+ texinput/KS/HLaTeX/c65gs.fd
+ texinput/KS/HLaTeX/c65gt.fd
+ texinput/KS/HLaTeX/c65jgt.fd
+ texinput/KS/HLaTeX/c65jmj.fd
+ texinput/KS/HLaTeX/c65jnv.fd
+ texinput/KS/HLaTeX/c65jsr.fd
+ texinput/KS/HLaTeX/c65mj.fd
+ texinput/KS/HLaTeX/c65pg.fd
+ texinput/KS/HLaTeX/c65pga.fd
+ texinput/KS/HLaTeX/c65ph.fd
+ texinput/KS/HLaTeX/c65pn.fd
+ texinput/KS/HLaTeX/c65sh.fd
+ texinput/KS/HLaTeX/c65tz.fd
+ texinput/KS/HLaTeX/c65vd.fd
+ texinput/KS/HLaTeX/c65yt.fd
+ texinput/KS/HLaTeX/pshan.sty
+ texinput/KS/KS.chr
+ texinput/KS/KS.enc
+ texinput/KS/c60dr.fd
+ texinput/KS/c60gr.fd
+ texinput/KS/c60gs.fd
+ texinput/KS/c60gt.fd
+ texinput/KS/c60hgt.fd
+ texinput/KS/c60hmj.fd
+ texinput/KS/c60hol.fd
+ texinput/KS/c60hpg.fd
+ texinput/KS/c60mj.fd
+ texinput/KS/c61dr.fd
+ texinput/KS/c61gr.fd
+ texinput/KS/c61gs.fd
+ texinput/KS/c61gt.fd
+ texinput/KS/c61hgt.fd
+ texinput/KS/c61hmj.fd
+ texinput/KS/c61hol.fd
+ texinput/KS/c61hpg.fd
+ texinput/KS/c61mj.fd
+ texinput/KS/c62song.fd
+ texinput/KS/hangul.cap
+ texinput/KS/hangul.cpx
+ texinput/KS/hangul2.cap
+ texinput/KS/hangul2.cpx
+ texinput/KS/hanja.cap
+ texinput/KS/hanja.cpx
+ texinput/SJIS/SJIS.bdg
+ texinput/SJIS/SJIS.cap
+ texinput/SJIS/SJIS.chr
+ texinput/SJIS/SJIS.cpx
+ texinput/SJIS/SJIS.enc
+ texinput/SJIS/SJISdnp.chr
+ texinput/SJIS/SJISdnp.enc
+ texinput/SJIS/c49song.fd
+ texinput/UTF8/UTF8.bdg
+ texinput/UTF8/UTF8.chr
+ texinput/UTF8/UTF8.enc
+ texinput/UTF8/c70bkai.fd
+ texinput/UTF8/c70bkai.fdx
+ texinput/UTF8/c70bsmi.fd
+ texinput/UTF8/c70bsmi.fdx
+ texinput/UTF8/c70gbsn.fd
+ texinput/UTF8/c70gbsn.fdx
+ texinput/UTF8/c70gkai.fd
+ texinput/UTF8/c70gkai.fdx
+ texinput/UTF8/c70mj.fd
+ texinput/UTF8/c70mj.fdx
+ texinput/UTF8/c70song.fd
+ texinput/UTF8/ja.cpx
+ texinput/UTF8/ko-Hang2.cpx
+ texinput/UTF8/ko-Hang.cpx
+ texinput/UTF8/ko-Hani.cpx
+ texinput/UTF8/zh-Hans.cpx
+ texinput/UTF8/zh-Hant.cpx
+ texinput/extended.chr
+ texinput/extended.enc
+ texinput/mule/MULEenc.sty
+ texinput/pinyin.sty
+ texinput/pmC.chr
+ texinput/pmCbig.enc
+ texinput/pmCsmall.enc
+ texinput/ruby.sty
+ texinput/standard.bdg
+ texinput/standard.chr
+ texinput/standard.enc
+ texinput/thai/c90cmr.fd
+ texinput/thai/c90cmss.fd
+ texinput/thai/c90cmtt.fd
+ texinput/thai/c90enc.def
+ texinput/thai/c90gar.fd
+ texinput/thai/c90nrsr.fd
+ texinput/thai/thaicjk.ldf
+ texlive/README
+ texlive/bin-cjkutils.pl
+ texlive/c63mj.fd
+ texlive/c64mj.fd
+ texlive/c65mj.fd
+ texlive/c90.pl
+ texlive/cjk-build.pl
+ texlive/cjk.pl
+ texlive/dnp.pl
+ texlive/garuda-c90.pl
+ texlive/norasi-c90.pl
+ utils/Bg5conv/bg5conv.1
+ utils/Bg5conv/bg5conv.c
+ utils/Bg5conv/bg5conv.w
+ utils/Bg5conv/bg5latex
+ utils/Bg5conv/bg5latex.bat
+ utils/Bg5conv/bg5latex.cmd
+ utils/Bg5conv/bg5pdflatex
+ utils/CEFconv/cef5conv.1
+ utils/CEFconv/cef5conv.c
+ utils/CEFconv/cef5conv.w
+ utils/CEFconv/cef5latex
+ utils/CEFconv/cef5ltx.bat
+ utils/CEFconv/cef5ltx.cmd
+ utils/CEFconv/cef5pdflatex
+ utils/CEFconv/cefconv.1
+ utils/CEFconv/cefconv.c
+ utils/CEFconv/cefconv.w
+ utils/CEFconv/ceflatex
+ utils/CEFconv/ceflatex.bat
+ utils/CEFconv/ceflatex.cmd
+ utils/CEFconv/cefpdflatex
+ utils/CEFconv/cefsconv.1
+ utils/CEFconv/cefsconv.c
+ utils/CEFconv/cefsconv.w
+ utils/CEFconv/cefslatex
+ utils/CEFconv/cefsltx.bat
+ utils/CEFconv/cefsltx.cmd
+ utils/CEFconv/cefspdflatex
+ utils/SJISconv/sjisconv.1
+ utils/SJISconv/sjisconv.c
+ utils/SJISconv/sjisconv.w
+ utils/SJISconv/sjislatex
+ utils/SJISconv/sjisltx.bat
+ utils/SJISconv/sjisltx.cmd
+ utils/SJISconv/sjispdflatex
+ utils/cjklatex/cjklatex.c
+ utils/extconv/bg5+latex
+ utils/extconv/bg5+pdflatex
+ utils/extconv/bg5pltx.bat
+ utils/extconv/bg5pltx.cmd
+ utils/extconv/extconv.1
+ utils/extconv/extconv.c
+ utils/extconv/extconv.w
+ utils/extconv/gbklatex
+ utils/extconv/gbklatex.bat
+ utils/extconv/gbklatex.cmd
+ utils/extconv/gbkpdflatex
+ utils/f_name.bat
+ utils/hbf2gf/Makefile.gnu
+ utils/hbf2gf/Makefile.in
+ utils/hbf2gf/README
+ utils/hbf2gf/c-auto.h
+ utils/hbf2gf/cfg/README
+ utils/hbf2gf/cfg/b5ka12.cfg
+ utils/hbf2gf/cfg/b5kr12.cfg
+ utils/hbf2gf/cfg/b5so12.cfg
+ utils/hbf2gf/cfg/c1so12.cfg
+ utils/hbf2gf/cfg/c2so12.cfg
+ utils/hbf2gf/cfg/c3so12.cfg
+ utils/hbf2gf/cfg/c4so12.cfg
+ utils/hbf2gf/cfg/c5so12.cfg
+ utils/hbf2gf/cfg/c6so12.cfg
+ utils/hbf2gf/cfg/c7so12.cfg
+ utils/hbf2gf/cfg/csso12.cfg
+ utils/hbf2gf/cfg/gsfs14.cfg
+ utils/hbf2gf/cfg/j2so12.cfg
+ utils/hbf2gf/cfg/jsso12.cfg
+ utils/hbf2gf/cfg/ksso17.cfg
+ utils/hbf2gf/config.guess
+ utils/hbf2gf/config.sub
+ utils/hbf2gf/configure
+ utils/hbf2gf/configure.ac
+ utils/hbf2gf/dvidrv.btm
+ utils/hbf2gf/emdir.c
+ utils/hbf2gf/emdir.h
+ utils/hbf2gf/emtexdir.c
+ utils/hbf2gf/emtexdir.h
+ utils/hbf2gf/hbf.c
+ utils/hbf2gf/hbf.h
+ utils/hbf2gf/hbf2gf.1
+ utils/hbf2gf/hbf2gf.c
+ utils/hbf2gf/hbf2gf.def
+ utils/hbf2gf/hbf2gf.w
+ utils/hbf2gf/install-sh
+ utils/hbf2gf/mkinstalldirs
+ utils/hbf2gf/scripts/teTeX-0.4/MakeTeXPK.diff
+ utils/hbf2gf/scripts/teTeX-0.4/MakeTeXTFM.diff
+ utils/hbf2gf/scripts/web2c-6.1/MakeTeXPK.diff
+ utils/hbf2gf/scripts/web2c-6.1/README
+ utils/hbf2gf/scripts/web2c-7.0/MakeTeXPK.diff
+ utils/hbf2gf/scripts/web2c-7.0/MakeTeXTFM.diff
+ utils/hbf2gf/scripts/web2c-7.1/MakeTeXPK.diff
+ utils/hbf2gf/scripts/web2c-7.1/MakeTeXTFM.diff
+ utils/hbf2gf/scripts/web2c-7.2/mktexpk.diff
+ utils/hbf2gf/scripts/web2c-7.2/mktextfm.diff
+ utils/lisp/cjkspace.el
+ utils/lisp/cjktilde.el
+ utils/lisp/emacs/cjk-enc.el
+ utils/lisp/emacs/thai-word.el
+ utils/lisp/mule-2.3/cjk-enc.el
+ utils/pyhyphen/GNUmakefile
+ utils/pyhyphen/hyph-zh-latn-pinyin.in
+ utils/pyhyphen/make-patterns.sh
+ utils/pyhyphen/pinyin.c
+ utils/pyhyphen/pinyin.ldf
+ utils/pyhyphen/pinyin.tr
+ utils/pyhyphen/pytest.tex
+ utils/pyhyphen/pytestutf8.tex
+ utils/subfonts/clonevf.pl
+ utils/subfonts/hlatex2agl.pl
+ utils/subfonts/makefdx.pl
+ utils/subfonts/sfd2uni.pl
+ utils/subfonts/subfonts.pe
+ utils/subfonts/uni2sfd.pl
+ utils/subfonts/vertical.pe
+ utils/subfonts/vertref.pe
+ utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90
+ utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90
+ utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc
+ utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map
+ utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map
+ utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfm
+ utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfm
+ utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfm
+ utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfm
+ utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfm
+ utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfm
+ utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftni8z.tfm
+ utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfm
+ utils/thaifont/tools/INSTALL
+ utils/thaifont/tools/c90.etx
+ utils/thaifont/tools/c90.mtx
+ utils/thaifont/tools/dbtt-old/config.dbtt-old
+ utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx
+ utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx
+ utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex
+ utils/thaifont/tools/dbtt-old/dbtt-old.fontinst
+ utils/thaifont/tools/dbtt-old/dbtt-old.map
+ utils/thaifont/tools/garuda-c90.fontinst
+ utils/thaifont/tools/norasi-c90.fontinst
+
+---End of MANIFEST---
diff --git a/language/chinese/CJK/cjk-4.8.5/Makefile b/language/chinese/CJK/cjk-4.8.5/Makefile
new file mode 100644
index 0000000000..bb2d1e0753
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/Makefile
@@ -0,0 +1,216 @@
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+# You need GNU make to run this Makefile.
+#
+# Some issues:
+#
+# o This Makefile is intended to build the distribution tarballs only,
+# not to compile binaries.
+#
+# o Binaries of the CJK utility programs (and the standard tex stuff,
+# including dvipdfmx) must work.
+#
+# o GNU extensions of various utility programs are used.
+#
+# o emacs 22 (or newer) and the `cweave' program from the `c2cweb'
+# package, renamed to `cweavex', are needed.
+#
+# o The TeXLive version of some font definition files are used (in the
+# `texlive' subdirectory).
+
+version=4.8.5
+
+distdir=cjk-$(version)
+abs-distdir=$(shell pwd)/$(distdir)
+
+DISTDIRS=$(shell find . -type d | grep -v .git | grep -v $(distdir))
+
+# expected: subdirs `dvi' and `cjk'
+CJK2DVI=\
+ (cd dvi; \
+ TEXINPUTS=$(abs-distdir)/{texlive,texinput//,contrib/wadalab,utils/pyhyphen}: \
+ TFMFONTS=$(abs-distdir)/utils/thaifont/texmf/fonts/tfm//: \
+ texi2dvi -l latex ../cjk/$@.cjk; \
+ rm -f $@.aux $@.log $@.toc)
+
+# LATEX2DVI srcdir targetdir
+# expected: targetdir/dvi
+LATEX2DVI=\
+ cp $(1)/$@.tex $(2)/dvi; \
+ (cd $(2)/dvi; \
+ TEXINPUTS=$(abs-distdir)/{texlive,texinput//,contrib/wadalab,utils/pyhyphen}: \
+ TFMFONTS=$(abs-distdir)/utils/thaifont/texmf/fonts/tfm//: \
+ texi2dvi -l latex $@.tex; \
+ rm -f $@.tex $@.aux $@.log $@.toc)
+
+# DVI2PDF paper-format
+# expected: subdir `pdf' and `dvi'
+DVI2PDF=\
+ dvipdfmx -v -p $(1) -o pdf/$@.pdf dvi/$@.dvi
+
+
+# CONVERT converter srcdir targetdir [paper-format]
+CONVERT=\
+ cd $(distdir); \
+ $(1) < $(2)/$@.tex > $(3)/cjk/$@.cjk; \
+ cd $(3); \
+ $(CJK2DVI); \
+ $(if $(4),$(call DVI2PDF,$(4)),$(call DVI2PDF,letter))
+
+# MULE srcdir targetdir [paper-format]
+MULE=\
+ cd $(distdir); \
+ emacs --batch \
+ --load utils/lisp/emacs/cjk-enc.el \
+ --funcall batch-cjk-write-file \
+ $(1)/$@.tex; \
+ mv $(1)/$@.cjk $(2)/cjk; \
+ cd $(2); \
+ $(CJK2DVI); \
+ $(if $(3),$(call DVI2PDF,$(3)),$(call DVI2PDF,letter))
+
+# LATEX srcdir targetdir [paper-format]
+LATEX=\
+ cd $(distdir); \
+ $(call LATEX2DVI,$(1),$(2)); \
+ cd $(2); \
+ $(if $(3),$(call DVI2PDF,$(3)),$(call DVI2PDF,letter))
+
+
+DISTTARGETS=\
+ READMEb5 \
+ READMEgb \
+ Big5 \
+ Big5vert \
+ CEF_test \
+ CJKbabel \
+ CJKfntef \
+ CJKutf8 \
+ CJKspace \
+ CJKmixed \
+ GB \
+ JIS \
+ KS \
+ SJIS \
+ UTF8 \
+ muletest \
+ pytest \
+ py_test \
+ rubytest \
+ thai \
+ thai_utf8 \
+ c90
+
+
+all:
+ @echo
+ @echo " Say \`make dist' to build the tarballs."
+ @echo
+
+
+READMEb5:
+ $(call CONVERT,bg5conv,doc/chinese,doc,a4)
+READMEgb:
+ $(call LATEX,doc/chinese,doc)
+Big5 Big5vert:
+ $(call CONVERT,bg5conv,examples,examples)
+CEF_test:
+ $(call CONVERT,cefconv,examples,examples)
+SJIS:
+ $(call CONVERT,sjisconv,examples,examples)
+CJKbabel muletest rubytest thai thai_utf8:
+ $(call MULE,examples,examples)
+GB JIS KS UTF8 py_test CJKfntef CJKutf8 CJKspace CJKmixed:
+ $(call LATEX,examples,examples)
+pytest:
+ $(call LATEX,utils/pyhyphen,examples)
+c90:
+ (cd $(abs-distdir)/utils/thaifont/tools; \
+ ln -s c90.etx c90.tex)
+ $(call LATEX,utils/thaifont/tools,doc)
+
+
+dist: distsrc predistdoc distdoc
+
+distsrc:
+ -rm -rf $(distdir)
+ rm -f $(distdir).tar.gz
+ rm -f $(distdir)-doc.tar.gz
+ mkdir $(distdir)
+ srcdir=`pwd`; \
+ for d in $(DISTDIRS); do \
+ mkdir -p $(distdir)/$$d; \
+ (cd $(distdir)/$$d; \
+ f=`find $$srcdir/$$d -maxdepth 1 -type f`; \
+ test -z "$$f" || ln -s $$f . || true); \
+ done
+ for f in `find $(abs-distdir)/utils -name '*.w'`; do \
+ ctangle $$f - `echo $$f | sed s/w$$/c/`; \
+ done
+ tar -H ustar -chf - $(distdir) | gzip -9 -c > $(distdir).tar.gz
+
+predistdoc:
+ mkdir -p $(distdir)/doc/{cjk,dvi,pdf}
+ mkdir -p $(distdir)/examples/{cjk,dvi,pdf}
+ mkdir -p $(distdir)/doc/man/{dvi,html,pdf,txt}
+ echo "This directory contains files which are \`preprocessed' with" \
+ > $(distdir)/doc/cjk/README
+ echo "cjk-enc.el, bg5conv, etc." \
+ >> $(distdir)/doc/cjk/README
+ echo \
+ >> $(distdir)/doc/cjk/README
+ echo "You can feed them directly into LaTeX." \
+ >> $(distdir)/doc/cjk/README
+
+distdoc: $(DISTTARGETS) manpages cweb
+ for f in `find $(distdir) -type l`; do \
+ rm $$f; \
+ done
+ for f in `find $(distdir) -name '*.c'`; do \
+ rm $$f; \
+ done
+ -for d in `find $(distdir) -depth -type d`; do \
+ rmdir --ignore-fail-on-non-empty $$d; \
+ done
+ tar -H ustar -chf - $(distdir) | gzip -9 -c > $(distdir)-doc.tar.gz
+ rm -rf $(distdir)
+
+manpages:
+ for f in `find utils -type f -name '*.1'`; do \
+ groff -ww -Tdvi -dpaper=letter -P-pletter -mec -man -rS11 $$f > \
+ $(abs-distdir)/doc/man/dvi/`basename $$f .1`.dvi; \
+ groff -ww -Tps -dpaper=letter -P-pletter -man -rS11 $$f | \
+ ps2pdf - $(abs-distdir)/doc/man/pdf/`basename $$f .1`.pdf; \
+ groff -ww -Tlatin1 -man -P-bcu $$f > \
+ $(abs-distdir)/doc/man/txt/`basename $$f .1`.txt; \
+ groff -ww -Thtml -man $$f > \
+ $(abs-distdir)/doc/man/html/`basename $$f .1`.html; \
+ done
+
+cweb:
+ for f in `find utils -type f -name '*.w'`; do \
+ cp $$f $(abs-distdir)/doc/dvi; \
+ (cd $(abs-distdir)/doc/dvi; \
+ F=`basename $$f .w`; \
+ cweavex +a $$F.w; \
+ tex $$F; \
+ rm -rf $$F.idx $$F.log $$F.scn $$F.tex $$F.toc $$F.w; \
+ dvipdfmx -v -p letter -o ../pdf/$$F.pdf $$F); \
+ done
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/README b/language/chinese/CJK/cjk-4.8.5/README
new file mode 100644
index 0000000000..17f44a66d9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/README
@@ -0,0 +1,36 @@
+Welcome to CJK version 4.8.5 (16-Oct-2021), a LaTeX2e macro package which
+enables the use of CJK scripts (Chinese/Japanese/Korean) in various
+encodings, written by Werner Lemberg <wl@gnu.org>.
+
+A mailing list exists at cjk-list@nongnu.org; to subscribe, send a mail
+with the subject `subscribe' (without the quotes) to
+cjk-list-request@nongnu.org. A web interface can be found at
+
+ https://lists.nongnu.org/mailman/listinfo/cjk-list
+
+If you are interested in the process of development you may observe
+
+ http://git.savannah.gnu.org/gitweb/?p=cjk.git;a=summary
+
+to see the commitments to the git repository of the CJK package, and which
+also provides snapshots.
+
+The home site of the CJK package is
+
+ http://www.nongnu.org/cjk
+
+Additionally, the latest non-development version can be found on all CTAN
+hosts and its mirrors in the directory <CTAN>/language/chinese.
+
+
+The package comes in two parts:
+
+ cjk-4.8.5.tar.gz: The source files. Needed for all platforms.
+ cjk-4.8.5-doc.tar.gz: Preformatted documentation files: DVI, PS,
+ output from cjk-enc.el, etc.
+
+Note that on CTAN and its mirrors, the `src' archive is unpacked; you must
+thus get all files and subdirectories from language/chinese/CJK/.
+
+
+---End of README---
diff --git a/language/chinese/CJK/cjk-4.8.5/TODO b/language/chinese/CJK/cjk-4.8.5/TODO
new file mode 100644
index 0000000000..208aaf855f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/TODO
@@ -0,0 +1,6 @@
+READMEs in Korean.
+
+More support for Omega.
+
+
+---End of TODO---
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/DNP.sfd b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/DNP.sfd
new file mode 100644
index 0000000000..cd27942265
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/DNP.sfd
@@ -0,0 +1,42 @@
+# DNP.sfd
+#
+# subfont numbers for JIS character set in DNP font encoding to be used
+# with the CJK package for LaTeX.
+
+sy 1: 0xA1A1_0xA1FE 101: 0xA2A1_0xA2FE
+roma 33: 0xA3A1_0xA3FE
+hira 1: 0xA4A1_0xA4FE
+kata 1: 0xA5A1_0xA5FE
+greek 1: 0xA6A1_0xA6FE
+russian 1: 0xA7A1_0xA7FE
+keisen 1: 0xA8A1_0xA8FE
+
+ka 0xB0A1_0xB0FE 0xB1A1_0xB1FE 0xB2A1_0xB2E4
+kb 0xB2E5_0xB2FE 0xB3A1_0xB3FE 0xB4A1_0xB4FE 0xB5A1_0xB5CA
+kc 0xB5CB_0xB5FE 0xB6A1_0xB6FE 0xB7A1_0xB7FE 0xB8A1_0xB8B0
+kd 0xB8B1_0xB8FE 0xB9A1_0xB9FE 0xBAA1_0xBAF4
+ke 0xBAF5_0xBAFE 0xBBA1_0xBBFE 0xBCA1_0xBCFE 0xBDA1_0xBDDA
+kf 0xBDDB_0xBDFE 0xBEA1_0xBEFE 0xBFA1_0xBFFE 0xC0A1_0xC0C0
+kg 0xC0C1_0xC0FE 0xC1A1_0xC1FE 0xC2A1_0xC2FE 0xC3A1_0xC3A6
+kh 0xC3A7_0xC3FE 0xC4A1_0xC4FE 0xC5A1_0xC5EA
+ki 0xC5EB_0xC5FE 0xC6A1_0xC6FE 0xC7A1_0xC7FE 0xC8A1_0xC8D0
+kj 0xC8D1_0xC8FE 0xC9A1_0xC9FE 0xCAA1_0xCAFE 0xCBA1_0xCBB6
+kk 0xCBB7_0xCBFE 0xCCA1_0xCCFE 0xCDA1_0xCDFA
+kl 0xCDFB_0xCDFE 0xCEA1_0xCEFE 0xCFA1_0xCFFE
+
+km 0xD0A1_0xD0FE 0xD1A1_0xD1FE 0xD2A1_0xD2E4
+kn 0xD2E5_0xD2FE 0xD3A1_0xD3FE 0xD4A1_0xD4FE 0xD5A1_0xD5CA
+ko 0xD5CB_0xD5FE 0xD6A1_0xD6FE 0xD7A1_0xD7FE 0xD8A1_0xD8B0
+kp 0xD8B1_0xD8FE 0xD9A1_0xD9FE 0xDAA1_0xDAF4
+kq 0xDAF5_0xDAFE 0xDBA1_0xDBFE 0xDCA1_0xDCFE 0xDDA1_0xDDDA
+kr 0xDDDB_0xDDFE 0xDEA1_0xDEFE 0xDFA1_0xDFFE 0xE0A1_0xE0C0
+ks 0xE0C1_0xE0FE 0xE1A1_0xE1FE 0xE2A1_0xE2FE 0xE3A1_0xE3A6
+kt 0xE3A7_0xE3FE 0xE4A1_0xE4FE 0xE5A1_0xE5EA
+ku 0xE5EB_0xE5FE 0xE6A1_0xE6FE 0xE7A1_0xE7FE 0xE8A1_0xE8D0
+kv 0xE8D1_0xE8FE 0xE9A1_0xE9FE 0xEAA1_0xEAFE 0xEBA1_0xEBB6
+kw 0xEBB7_0xEBFE 0xECA1_0xECFE 0xEDA1_0xEDFA
+kx 0xEDFB_0xEDFE 0xEEA1_0xEEFE 0xEFA1_0xEFFE 0xF0A1_0xF0E0
+ky 0xF0E1_0xF0FE 0xF1A1_0xF1FE 0xF2A1_0xF2FE 0xF3A1_0xF3C6
+kz 0xF3C7_0xF3FE 0xF4A1_0xF4FE
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42goth.fd b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42goth.fd
new file mode 100644
index 0000000000..cc73302057
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42goth.fd
@@ -0,0 +1,22 @@
+% This is the file c42goth.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c42goth.fd}[\filedate\space\fileversion]
+
+% Japanese characters in JIS encoding scheme using Wadalab fonts:
+% wadalab-gothic-0-13
+
+\DeclareFontFamily{C42}{goth}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C42}{goth}{m}{n}
+ { <-> CJK * dgj}{\CJKnormal}
+\DeclareFontShape{C42}{goth}{bx}{n}
+ { <-> CJKb * dgj}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42goth.fdx b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42goth.fdx
new file mode 100644
index 0000000000..0d90d5d318
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42goth.fdx
@@ -0,0 +1,66 @@
+% This is the file c42goth.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c42goth.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{rotate}{}
+\CJKvdef{offset}{.5em}
+
+\CJKvdef{m/n/sy/2}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{2}\hss}}
+\CJKvdef{m/n/sy/3}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{3}\hss}}
+\CJKvdef{m/n/sy/4}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{4}\hss}}
+\CJKvdef{m/n/sy/5}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{5}\hss}}
+\CJKvdef{m/n/sy/28}{\CJKsymbolsimple{28}}
+\CJKvdef{m/n/sy/33}{\CJKsymbolsimple{33}}
+\CJKvdef{m/n/sy/36}{\CJKsymbolsimple{36}}
+\CJKvdef{m/n/sy/37}{\CJKsymbolsimple{37}}
+\CJKvdef{m/n/sy/42}{\CJKsymbolsimple{42}}
+\CJKvdef{m/n/sy/43}{\CJKsymbolsimple{43}}
+\CJKvdef{m/n/sy/44}{\CJKsymbolsimple{44}}
+\CJKvdef{m/n/sy/45}{\CJKsymbolsimple{45}}
+\CJKvdef{m/n/sy/46}{\CJKsymbolsimple{46}}
+\CJKvdef{m/n/sy/47}{\CJKsymbolsimple{47}}
+\CJKvdef{m/n/sy/48}{\CJKsymbolsimple{48}}
+\CJKvdef{m/n/sy/49}{\CJKsymbolsimple{49}}
+\CJKvdef{m/n/sy/50}{\CJKsymbolsimple{50}}
+\CJKvdef{m/n/sy/51}{\CJKsymbolsimple{51}}
+\CJKvdef{m/n/sy/52}{\CJKsymbolsimple{52}}
+\CJKvdef{m/n/sy/53}{\CJKsymbolsimple{53}}
+\CJKvdef{m/n/sy/54}{\CJKsymbolsimple{54}}
+\CJKvdef{m/n/sy/55}{\CJKsymbolsimple{55}}
+\CJKvdef{m/n/sy/56}{\CJKsymbolsimple{56}}
+\CJKvdef{m/n/sy/57}{\CJKsymbolsimple{57}}
+
+\CJKvlet{bx/n/sy/2}{m/n/sy/2}
+\CJKvlet{bx/n/sy/3}{m/n/sy/3}
+\CJKvlet{bx/n/sy/4}{m/n/sy/4}
+\CJKvlet{bx/n/sy/5}{m/n/sy/5}
+\CJKvlet{bx/n/sy/28}{m/n/sy/28}
+\CJKvlet{bx/n/sy/33}{m/n/sy/33}
+\CJKvlet{bx/n/sy/36}{m/n/sy/36}
+\CJKvlet{bx/n/sy/37}{m/n/sy/37}
+\CJKvlet{bx/n/sy/42}{m/n/sy/42}
+\CJKvlet{bx/n/sy/43}{m/n/sy/43}
+\CJKvlet{bx/n/sy/44}{m/n/sy/44}
+\CJKvlet{bx/n/sy/45}{m/n/sy/45}
+\CJKvlet{bx/n/sy/46}{m/n/sy/46}
+\CJKvlet{bx/n/sy/47}{m/n/sy/47}
+\CJKvlet{bx/n/sy/48}{m/n/sy/48}
+\CJKvlet{bx/n/sy/49}{m/n/sy/49}
+\CJKvlet{bx/n/sy/50}{m/n/sy/50}
+\CJKvlet{bx/n/sy/51}{m/n/sy/51}
+\CJKvlet{bx/n/sy/52}{m/n/sy/52}
+\CJKvlet{bx/n/sy/53}{m/n/sy/53}
+\CJKvlet{bx/n/sy/54}{m/n/sy/54}
+\CJKvlet{bx/n/sy/55}{m/n/sy/55}
+\CJKvlet{bx/n/sy/56}{m/n/sy/56}
+\CJKvlet{bx/n/sy/57}{m/n/sy/57}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42maru.fd b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42maru.fd
new file mode 100644
index 0000000000..ba987c1f67
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42maru.fd
@@ -0,0 +1,23 @@
+% This is the file c42maru.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c42maru.fd}[\filedate\space\fileversion]
+
+
+% Japanese characters in JIS encoding scheme using Wadalab fonts:
+% wadalab-maru-0-8
+
+\DeclareFontFamily{C42}{maru}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C42}{maru}{m}{n}
+ { <-> CJK * mrj}{\CJKnormal}
+\DeclareFontShape{C42}{maru}{bx}{n}
+ { <-> CJKb * mrj}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42maru.fdx b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42maru.fdx
new file mode 100644
index 0000000000..b5ce14177b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42maru.fdx
@@ -0,0 +1,66 @@
+% This is the file c42maru.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c42maru.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{rotate}{}
+\CJKvdef{offset}{.5em}
+
+\CJKvdef{m/n/sy/2}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{2}\hss}}
+\CJKvdef{m/n/sy/3}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{3}\hss}}
+\CJKvdef{m/n/sy/4}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{4}\hss}}
+\CJKvdef{m/n/sy/5}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{5}\hss}}
+\CJKvdef{m/n/sy/28}{\CJKsymbolsimple{28}}
+\CJKvdef{m/n/sy/33}{\CJKsymbolsimple{33}}
+\CJKvdef{m/n/sy/36}{\CJKsymbolsimple{36}}
+\CJKvdef{m/n/sy/37}{\CJKsymbolsimple{37}}
+\CJKvdef{m/n/sy/42}{\CJKsymbolsimple{42}}
+\CJKvdef{m/n/sy/43}{\CJKsymbolsimple{43}}
+\CJKvdef{m/n/sy/44}{\CJKsymbolsimple{44}}
+\CJKvdef{m/n/sy/45}{\CJKsymbolsimple{45}}
+\CJKvdef{m/n/sy/46}{\CJKsymbolsimple{46}}
+\CJKvdef{m/n/sy/47}{\CJKsymbolsimple{47}}
+\CJKvdef{m/n/sy/48}{\CJKsymbolsimple{48}}
+\CJKvdef{m/n/sy/49}{\CJKsymbolsimple{49}}
+\CJKvdef{m/n/sy/50}{\CJKsymbolsimple{50}}
+\CJKvdef{m/n/sy/51}{\CJKsymbolsimple{51}}
+\CJKvdef{m/n/sy/52}{\CJKsymbolsimple{52}}
+\CJKvdef{m/n/sy/53}{\CJKsymbolsimple{53}}
+\CJKvdef{m/n/sy/54}{\CJKsymbolsimple{54}}
+\CJKvdef{m/n/sy/55}{\CJKsymbolsimple{55}}
+\CJKvdef{m/n/sy/56}{\CJKsymbolsimple{56}}
+\CJKvdef{m/n/sy/57}{\CJKsymbolsimple{57}}
+
+\CJKvlet{bx/n/sy/2}{m/n/sy/2}
+\CJKvlet{bx/n/sy/3}{m/n/sy/3}
+\CJKvlet{bx/n/sy/4}{m/n/sy/4}
+\CJKvlet{bx/n/sy/5}{m/n/sy/5}
+\CJKvlet{bx/n/sy/28}{m/n/sy/28}
+\CJKvlet{bx/n/sy/33}{m/n/sy/33}
+\CJKvlet{bx/n/sy/36}{m/n/sy/36}
+\CJKvlet{bx/n/sy/37}{m/n/sy/37}
+\CJKvlet{bx/n/sy/42}{m/n/sy/42}
+\CJKvlet{bx/n/sy/43}{m/n/sy/43}
+\CJKvlet{bx/n/sy/44}{m/n/sy/44}
+\CJKvlet{bx/n/sy/45}{m/n/sy/45}
+\CJKvlet{bx/n/sy/46}{m/n/sy/46}
+\CJKvlet{bx/n/sy/47}{m/n/sy/47}
+\CJKvlet{bx/n/sy/48}{m/n/sy/48}
+\CJKvlet{bx/n/sy/49}{m/n/sy/49}
+\CJKvlet{bx/n/sy/50}{m/n/sy/50}
+\CJKvlet{bx/n/sy/51}{m/n/sy/51}
+\CJKvlet{bx/n/sy/52}{m/n/sy/52}
+\CJKvlet{bx/n/sy/53}{m/n/sy/53}
+\CJKvlet{bx/n/sy/54}{m/n/sy/54}
+\CJKvlet{bx/n/sy/55}{m/n/sy/55}
+\CJKvlet{bx/n/sy/56}{m/n/sy/56}
+\CJKvlet{bx/n/sy/57}{m/n/sy/57}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42min.fd b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42min.fd
new file mode 100644
index 0000000000..3ef9cdee49
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42min.fd
@@ -0,0 +1,26 @@
+% This is the file c42min.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c42min.fd}[\filedate\space\fileversion]
+
+
+% Japanese characters in JIS encoding scheme using Wadalab fonts:
+% wadalab-mincho-0-8 (`light' series)
+% wadalab-mincho-0-12 (`normal' series)
+
+\DeclareFontFamily{C42}{min}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C42}{min}{l}{n}
+ { <-> CJK * mcj}{}
+\DeclareFontShape{C42}{min}{m}{n}
+ { <-> CJK * dmj}{\CJKnormal}
+\DeclareFontShape{C42}{min}{bx}{n}
+ { <-> CJKb * dmj}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42min.fdx b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42min.fdx
new file mode 100644
index 0000000000..1c519596de
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c42min.fdx
@@ -0,0 +1,91 @@
+% This is the file c42min.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c42min.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{rotate}{}
+\CJKvdef{offset}{.5em}
+
+\CJKvdef{m/n/sy/2}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{2}\hss}}
+\CJKvdef{m/n/sy/3}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{3}\hss}}
+\CJKvdef{m/n/sy/4}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{4}\hss}}
+\CJKvdef{m/n/sy/5}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{5}\hss}}
+\CJKvdef{m/n/sy/28}{\CJKsymbolsimple{28}}
+\CJKvdef{m/n/sy/33}{\CJKsymbolsimple{33}}
+\CJKvdef{m/n/sy/36}{\CJKsymbolsimple{36}}
+\CJKvdef{m/n/sy/37}{\CJKsymbolsimple{37}}
+\CJKvdef{m/n/sy/42}{\CJKsymbolsimple{42}}
+\CJKvdef{m/n/sy/43}{\CJKsymbolsimple{43}}
+\CJKvdef{m/n/sy/44}{\CJKsymbolsimple{44}}
+\CJKvdef{m/n/sy/45}{\CJKsymbolsimple{45}}
+\CJKvdef{m/n/sy/46}{\CJKsymbolsimple{46}}
+\CJKvdef{m/n/sy/47}{\CJKsymbolsimple{47}}
+\CJKvdef{m/n/sy/48}{\CJKsymbolsimple{48}}
+\CJKvdef{m/n/sy/49}{\CJKsymbolsimple{49}}
+\CJKvdef{m/n/sy/50}{\CJKsymbolsimple{50}}
+\CJKvdef{m/n/sy/51}{\CJKsymbolsimple{51}}
+\CJKvdef{m/n/sy/52}{\CJKsymbolsimple{52}}
+\CJKvdef{m/n/sy/53}{\CJKsymbolsimple{53}}
+\CJKvdef{m/n/sy/54}{\CJKsymbolsimple{54}}
+\CJKvdef{m/n/sy/55}{\CJKsymbolsimple{55}}
+\CJKvdef{m/n/sy/56}{\CJKsymbolsimple{56}}
+\CJKvdef{m/n/sy/57}{\CJKsymbolsimple{57}}
+
+\CJKvlet{bx/n/sy/2}{m/n/sy/2}
+\CJKvlet{bx/n/sy/3}{m/n/sy/3}
+\CJKvlet{bx/n/sy/4}{m/n/sy/4}
+\CJKvlet{bx/n/sy/5}{m/n/sy/5}
+\CJKvlet{bx/n/sy/28}{m/n/sy/28}
+\CJKvlet{bx/n/sy/33}{m/n/sy/33}
+\CJKvlet{bx/n/sy/36}{m/n/sy/36}
+\CJKvlet{bx/n/sy/37}{m/n/sy/37}
+\CJKvlet{bx/n/sy/42}{m/n/sy/42}
+\CJKvlet{bx/n/sy/43}{m/n/sy/43}
+\CJKvlet{bx/n/sy/44}{m/n/sy/44}
+\CJKvlet{bx/n/sy/45}{m/n/sy/45}
+\CJKvlet{bx/n/sy/46}{m/n/sy/46}
+\CJKvlet{bx/n/sy/47}{m/n/sy/47}
+\CJKvlet{bx/n/sy/48}{m/n/sy/48}
+\CJKvlet{bx/n/sy/49}{m/n/sy/49}
+\CJKvlet{bx/n/sy/50}{m/n/sy/50}
+\CJKvlet{bx/n/sy/51}{m/n/sy/51}
+\CJKvlet{bx/n/sy/52}{m/n/sy/52}
+\CJKvlet{bx/n/sy/53}{m/n/sy/53}
+\CJKvlet{bx/n/sy/54}{m/n/sy/54}
+\CJKvlet{bx/n/sy/55}{m/n/sy/55}
+\CJKvlet{bx/n/sy/56}{m/n/sy/56}
+\CJKvlet{bx/n/sy/57}{m/n/sy/57}
+
+\CJKvlet{l/n/sy/2}{m/n/sy/2}
+\CJKvlet{l/n/sy/3}{m/n/sy/3}
+\CJKvlet{l/n/sy/4}{m/n/sy/4}
+\CJKvlet{l/n/sy/5}{m/n/sy/5}
+\CJKvlet{l/n/sy/28}{m/n/sy/28}
+\CJKvlet{l/n/sy/33}{m/n/sy/33}
+\CJKvlet{l/n/sy/36}{m/n/sy/36}
+\CJKvlet{l/n/sy/37}{m/n/sy/37}
+\CJKvlet{l/n/sy/42}{m/n/sy/42}
+\CJKvlet{l/n/sy/43}{m/n/sy/43}
+\CJKvlet{l/n/sy/44}{m/n/sy/44}
+\CJKvlet{l/n/sy/45}{m/n/sy/45}
+\CJKvlet{l/n/sy/46}{m/n/sy/46}
+\CJKvlet{l/n/sy/47}{m/n/sy/47}
+\CJKvlet{l/n/sy/48}{m/n/sy/48}
+\CJKvlet{l/n/sy/49}{m/n/sy/49}
+\CJKvlet{l/n/sy/50}{m/n/sy/50}
+\CJKvlet{l/n/sy/51}{m/n/sy/51}
+\CJKvlet{l/n/sy/52}{m/n/sy/52}
+\CJKvlet{l/n/sy/53}{m/n/sy/53}
+\CJKvlet{l/n/sy/54}{m/n/sy/54}
+\CJKvlet{l/n/sy/55}{m/n/sy/55}
+\CJKvlet{l/n/sy/56}{m/n/sy/56}
+\CJKvlet{l/n/sy/57}{m/n/sy/57}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52maru.fd b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52maru.fd
new file mode 100644
index 0000000000..d9bbfe5fc2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52maru.fd
@@ -0,0 +1,23 @@
+% This is the file c52maru.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c52maru.fd}[\filedate\space\fileversion]
+
+
+% Japanese characters in JIS2 encoding scheme using Wadalab fonts:
+% wadalab-maru-1-8
+
+\DeclareFontFamily{C52}{maru}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C52}{maru}{m}{n}
+ { <-> CJK * mr2j}{\CJKnormal}
+\DeclareFontShape{C52}{maru}{bx}{n}
+ { <-> CJKb * mr2j}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52maru.fdx b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52maru.fdx
new file mode 100644
index 0000000000..10a6796aa3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52maru.fdx
@@ -0,0 +1,16 @@
+% This is the file c52maru.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c52maru.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{rotate}{}
+\CJKvdef{offset}{.5em}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52min.fd b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52min.fd
new file mode 100644
index 0000000000..eaa908f4f5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52min.fd
@@ -0,0 +1,23 @@
+% This is the file c52min.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c52min.fd}[\filedate\space\fileversion]
+
+
+% Japanese characters in JIS2 encoding scheme using Wadalab fonts:
+% wadalab-mincho-1-8
+
+\DeclareFontFamily{C52}{min}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C52}{min}{m}{n}
+ { <-> CJK * mc2j}{\CJKnormal}
+\DeclareFontShape{C52}{min}{bx}{n}
+ { <-> CJKb * mc2j}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52min.fdx b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52min.fdx
new file mode 100644
index 0000000000..8a92df0175
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c52min.fdx
@@ -0,0 +1,16 @@
+% This is the file c52min.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c52min.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{rotate}{}
+\CJKvdef{offset}{.5em}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70goth.fd b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70goth.fd
new file mode 100644
index 0000000000..91b307381d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70goth.fd
@@ -0,0 +1,25 @@
+% This is the file c70goth.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70goth.fd}[\filedate\space\fileversion]
+
+
+% character set: Unicode U+0080 - U+FFFD
+% font encoding: Unicode
+%
+% udgj is Wadalab gothic-0-13.
+
+\DeclareFontFamily{C70}{goth}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C70}{goth}{m}{n}
+ { <-> CJK * udgj}{\CJKnormal}
+\DeclareFontShape{C70}{goth}{bx}{n}
+ { <-> CJKb * udgj}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70goth.fdx b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70goth.fdx
new file mode 100644
index 0000000000..5ba61060d5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70goth.fdx
@@ -0,0 +1,137 @@
+% This is the file c70goth.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Gernot Hassenpflug <gernot@nict.go.jp>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70goth.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{rotate}{}
+\CJKvdef{offset}{.5em}
+
+\CJKvdef{m/n/00/163}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{163}\hss}}
+\CJKvdef{m/n/00/167}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{167}\hss}}
+
+\CJKvdef{m/n/20/24}{\CJKsymbolsimple{24}}
+\CJKvdef{m/n/20/25}{\CJKsymbolsimple{25}}
+\CJKvdef{m/n/20/28}{\CJKsymbolsimple{28}}
+\CJKvdef{m/n/20/29}{\CJKsymbolsimple{29}}
+\CJKvdef{m/n/20/37}{\CJKsymbolsimple{37}}
+\CJKvdef{m/n/20/38}{\CJKsymbolsimple{38}}
+
+\CJKvdef{m/n/30/1}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{1}\hss}}
+\CJKvdef{m/n/30/2}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{2}\hss}}
+\CJKvdef{m/n/30/8}{\CJKsymbolsimple{8}}
+\CJKvdef{m/n/30/9}{\CJKsymbolsimple{9}}
+\CJKvdef{m/n/30/10}{\CJKsymbolsimple{10}}
+\CJKvdef{m/n/30/11}{\CJKsymbolsimple{11}}
+\CJKvdef{m/n/30/12}{\CJKsymbolsimple{12}}
+\CJKvdef{m/n/30/13}{\CJKsymbolsimple{13}}
+\CJKvdef{m/n/30/14}{\CJKsymbolsimple{14}}
+\CJKvdef{m/n/30/15}{\CJKsymbolsimple{15}}
+\CJKvdef{m/n/30/16}{\CJKsymbolsimple{16}}
+\CJKvdef{m/n/30/17}{\CJKsymbolsimple{17}}
+\CJKvdef{m/n/30/20}{\CJKsymbolsimple{20}}
+\CJKvdef{m/n/30/21}{\CJKsymbolsimple{21}}
+\CJKvdef{m/n/30/28}{\CJKsymbolsimple{28}}
+\CJKvdef{m/n/30/252}{\CJKsymbolsimple{252}}
+
+\CJKvdef{m/n/ff/8}{\CJKsymbolsimple{8}}
+\CJKvdef{m/n/ff/9}{\CJKsymbolsimple{9}}
+\CJKvdef{m/n/ff/12}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{12}\hss}}
+\CJKvdef{m/n/ff/14}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{14}\hss}}
+\CJKvdef{m/n/ff/59}{\CJKsymbolsimple{59}}
+\CJKvdef{m/n/ff/61}{\CJKsymbolsimple{61}}
+\CJKvdef{m/n/ff/91}{\CJKsymbolsimple{91}}
+\CJKvdef{m/n/ff/93}{\CJKsymbolsimple{93}}
+
+% Reposition small kana letters for vertical typesetting.
+
+\CJKvdef{m/n/30/65}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{65}\hss}}
+\CJKvdef{m/n/30/67}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{67}\hss}}
+\CJKvdef{m/n/30/69}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{69}\hss}}
+\CJKvdef{m/n/30/71}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{71}\hss}}
+\CJKvdef{m/n/30/73}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{73}\hss}}
+\CJKvdef{m/n/30/99}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{99}\hss}}
+\CJKvdef{m/n/30/131}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{131}\hss}}
+\CJKvdef{m/n/30/133}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{133}\hss}}
+\CJKvdef{m/n/30/135}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{135}\hss}}
+\CJKvdef{m/n/30/142}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{142}\hss}}
+
+\CJKvdef{m/n/30/161}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{161}\hss}}
+\CJKvdef{m/n/30/163}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{163}\hss}}
+\CJKvdef{m/n/30/165}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{165}\hss}}
+\CJKvdef{m/n/30/167}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{167}\hss}}
+\CJKvdef{m/n/30/169}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{169}\hss}}
+\CJKvdef{m/n/30/195}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{195}\hss}}
+\CJKvdef{m/n/30/227}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{227}\hss}}
+\CJKvdef{m/n/30/229}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{229}\hss}}
+\CJKvdef{m/n/30/231}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{231}\hss}}
+\CJKvdef{m/n/30/238}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{238}\hss}}
+\CJKvdef{m/n/30/245}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{245}\hss}}
+\CJKvdef{m/n/30/246}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{246}\hss}}
+
+
+\CJKvlet{bx/n/00/163}{m/n/00/163}
+\CJKvlet{bx/n/00/167}{m/n/00/167}
+
+\CJKvlet{bx/n/20/24}{m/n/20/24}
+\CJKvlet{bx/n/20/25}{m/n/20/25}
+\CJKvlet{bx/n/20/28}{m/n/20/28}
+\CJKvlet{bx/n/20/29}{m/n/20/29}
+\CJKvlet{bx/n/20/37}{m/n/20/37}
+\CJKvlet{bx/n/20/38}{m/n/20/38}
+
+\CJKvlet{bx/n/30/1}{m/n/30/1}
+\CJKvlet{bx/n/30/2}{m/n/30/2}
+\CJKvlet{bx/n/30/8}{m/n/30/8}
+\CJKvlet{bx/n/30/9}{m/n/30/9}
+\CJKvlet{bx/n/30/10}{m/n/30/10}
+\CJKvlet{bx/n/30/11}{m/n/30/11}
+\CJKvlet{bx/n/30/12}{m/n/30/12}
+\CJKvlet{bx/n/30/13}{m/n/30/13}
+\CJKvlet{bx/n/30/14}{m/n/30/14}
+\CJKvlet{bx/n/30/15}{m/n/30/15}
+\CJKvlet{bx/n/30/16}{m/n/30/16}
+\CJKvlet{bx/n/30/17}{m/n/30/17}
+\CJKvlet{bx/n/30/20}{m/n/30/20}
+\CJKvlet{bx/n/30/21}{m/n/30/21}
+\CJKvlet{bx/n/30/28}{m/n/30/28}
+\CJKvlet{bx/n/30/65}{m/n/30/65}
+\CJKvlet{bx/n/30/67}{m/n/30/67}
+\CJKvlet{bx/n/30/69}{m/n/30/69}
+\CJKvlet{bx/n/30/71}{m/n/30/71}
+\CJKvlet{bx/n/30/73}{m/n/30/73}
+\CJKvlet{bx/n/30/99}{m/n/30/99}
+\CJKvlet{bx/n/30/131}{m/n/30/131}
+\CJKvlet{bx/n/30/133}{m/n/30/133}
+\CJKvlet{bx/n/30/135}{m/n/30/135}
+\CJKvlet{bx/n/30/142}{m/n/30/142}
+\CJKvlet{bx/n/30/161}{m/n/30/161}
+\CJKvlet{bx/n/30/163}{m/n/30/163}
+\CJKvlet{bx/n/30/165}{m/n/30/165}
+\CJKvlet{bx/n/30/167}{m/n/30/167}
+\CJKvlet{bx/n/30/169}{m/n/30/169}
+\CJKvlet{bx/n/30/195}{m/n/30/195}
+\CJKvlet{bx/n/30/227}{m/n/30/227}
+\CJKvlet{bx/n/30/229}{m/n/30/229}
+\CJKvlet{bx/n/30/231}{m/n/30/231}
+\CJKvlet{bx/n/30/238}{m/n/30/238}
+\CJKvlet{bx/n/30/245}{m/n/30/245}
+\CJKvlet{bx/n/30/246}{m/n/30/246}
+\CJKvlet{bx/n/30/252}{m/n/30/252}
+
+\CJKvlet{bx/n/ff/8}{m/n/ff/8}
+\CJKvlet{bx/n/ff/9}{m/n/ff/9}
+\CJKvlet{bx/n/ff/12}{m/n/ff/12}
+\CJKvlet{bx/n/ff/14}{m/n/ff/14}
+\CJKvlet{bx/n/ff/59}{m/n/ff/59}
+\CJKvlet{bx/n/ff/61}{m/n/ff/61}
+\CJKvlet{bx/n/ff/91}{m/n/ff/91}
+\CJKvlet{bx/n/ff/93}{m/n/ff/93}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70maru.fd b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70maru.fd
new file mode 100644
index 0000000000..9419907643
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70maru.fd
@@ -0,0 +1,25 @@
+% This is the file c70maru.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70maru.fd}[\filedate\space\fileversion]
+
+
+% character set: Unicode U+0080 - U+FFFD
+% font encoding: Unicode
+%
+% umrj is Wadalab maru-0-8 combined with maru-1-8.
+
+\DeclareFontFamily{C70}{maru}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C70}{maru}{m}{n}
+ { <-> CJK * umrj}{\CJKnormal}
+\DeclareFontShape{C70}{maru}{bx}{n}
+ { <-> CJKb * umrj}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70maru.fdx b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70maru.fdx
new file mode 100644
index 0000000000..b2840a42a0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70maru.fdx
@@ -0,0 +1,137 @@
+% This is the file c70maru.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Gernot Hassenpflug <gernot@nict.go.jp>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70maru.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{rotate}{}
+\CJKvdef{offset}{.5em}
+
+\CJKvdef{m/n/00/163}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{163}\hss}}
+\CJKvdef{m/n/00/167}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{167}\hss}}
+
+\CJKvdef{m/n/20/24}{\CJKsymbolsimple{24}}
+\CJKvdef{m/n/20/25}{\CJKsymbolsimple{25}}
+\CJKvdef{m/n/20/28}{\CJKsymbolsimple{28}}
+\CJKvdef{m/n/20/29}{\CJKsymbolsimple{29}}
+\CJKvdef{m/n/20/37}{\CJKsymbolsimple{37}}
+\CJKvdef{m/n/20/38}{\CJKsymbolsimple{38}}
+
+\CJKvdef{m/n/30/1}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{1}\hss}}
+\CJKvdef{m/n/30/2}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{2}\hss}}
+\CJKvdef{m/n/30/8}{\CJKsymbolsimple{8}}
+\CJKvdef{m/n/30/9}{\CJKsymbolsimple{9}}
+\CJKvdef{m/n/30/10}{\CJKsymbolsimple{10}}
+\CJKvdef{m/n/30/11}{\CJKsymbolsimple{11}}
+\CJKvdef{m/n/30/12}{\CJKsymbolsimple{12}}
+\CJKvdef{m/n/30/13}{\CJKsymbolsimple{13}}
+\CJKvdef{m/n/30/14}{\CJKsymbolsimple{14}}
+\CJKvdef{m/n/30/15}{\CJKsymbolsimple{15}}
+\CJKvdef{m/n/30/16}{\CJKsymbolsimple{16}}
+\CJKvdef{m/n/30/17}{\CJKsymbolsimple{17}}
+\CJKvdef{m/n/30/20}{\CJKsymbolsimple{20}}
+\CJKvdef{m/n/30/21}{\CJKsymbolsimple{21}}
+\CJKvdef{m/n/30/28}{\CJKsymbolsimple{28}}
+\CJKvdef{m/n/30/252}{\CJKsymbolsimple{252}}
+
+\CJKvdef{m/n/ff/8}{\CJKsymbolsimple{8}}
+\CJKvdef{m/n/ff/9}{\CJKsymbolsimple{9}}
+\CJKvdef{m/n/ff/12}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{12}\hss}}
+\CJKvdef{m/n/ff/14}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{14}\hss}}
+\CJKvdef{m/n/ff/59}{\CJKsymbolsimple{59}}
+\CJKvdef{m/n/ff/61}{\CJKsymbolsimple{61}}
+\CJKvdef{m/n/ff/91}{\CJKsymbolsimple{91}}
+\CJKvdef{m/n/ff/93}{\CJKsymbolsimple{93}}
+
+% Reposition small kana letters for vertical typesetting.
+
+\CJKvdef{m/n/30/65}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{65}\hss}}
+\CJKvdef{m/n/30/67}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{67}\hss}}
+\CJKvdef{m/n/30/69}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{69}\hss}}
+\CJKvdef{m/n/30/71}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{71}\hss}}
+\CJKvdef{m/n/30/73}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{73}\hss}}
+\CJKvdef{m/n/30/99}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{99}\hss}}
+\CJKvdef{m/n/30/131}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{131}\hss}}
+\CJKvdef{m/n/30/133}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{133}\hss}}
+\CJKvdef{m/n/30/135}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{135}\hss}}
+\CJKvdef{m/n/30/142}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{142}\hss}}
+
+\CJKvdef{m/n/30/161}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{161}\hss}}
+\CJKvdef{m/n/30/163}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{163}\hss}}
+\CJKvdef{m/n/30/165}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{165}\hss}}
+\CJKvdef{m/n/30/167}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{167}\hss}}
+\CJKvdef{m/n/30/169}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{169}\hss}}
+\CJKvdef{m/n/30/195}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{195}\hss}}
+\CJKvdef{m/n/30/227}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{227}\hss}}
+\CJKvdef{m/n/30/229}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{229}\hss}}
+\CJKvdef{m/n/30/231}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{231}\hss}}
+\CJKvdef{m/n/30/238}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{238}\hss}}
+\CJKvdef{m/n/30/245}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{245}\hss}}
+\CJKvdef{m/n/30/246}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{246}\hss}}
+
+
+\CJKvlet{bx/n/00/163}{m/n/00/163}
+\CJKvlet{bx/n/00/167}{m/n/00/167}
+
+\CJKvlet{bx/n/20/24}{m/n/20/24}
+\CJKvlet{bx/n/20/25}{m/n/20/25}
+\CJKvlet{bx/n/20/28}{m/n/20/28}
+\CJKvlet{bx/n/20/29}{m/n/20/29}
+\CJKvlet{bx/n/20/37}{m/n/20/37}
+\CJKvlet{bx/n/20/38}{m/n/20/38}
+
+\CJKvlet{bx/n/30/1}{m/n/30/1}
+\CJKvlet{bx/n/30/2}{m/n/30/2}
+\CJKvlet{bx/n/30/8}{m/n/30/8}
+\CJKvlet{bx/n/30/9}{m/n/30/9}
+\CJKvlet{bx/n/30/10}{m/n/30/10}
+\CJKvlet{bx/n/30/11}{m/n/30/11}
+\CJKvlet{bx/n/30/12}{m/n/30/12}
+\CJKvlet{bx/n/30/13}{m/n/30/13}
+\CJKvlet{bx/n/30/14}{m/n/30/14}
+\CJKvlet{bx/n/30/15}{m/n/30/15}
+\CJKvlet{bx/n/30/16}{m/n/30/16}
+\CJKvlet{bx/n/30/17}{m/n/30/17}
+\CJKvlet{bx/n/30/20}{m/n/30/20}
+\CJKvlet{bx/n/30/21}{m/n/30/21}
+\CJKvlet{bx/n/30/28}{m/n/30/28}
+\CJKvlet{bx/n/30/65}{m/n/30/65}
+\CJKvlet{bx/n/30/67}{m/n/30/67}
+\CJKvlet{bx/n/30/69}{m/n/30/69}
+\CJKvlet{bx/n/30/71}{m/n/30/71}
+\CJKvlet{bx/n/30/73}{m/n/30/73}
+\CJKvlet{bx/n/30/99}{m/n/30/99}
+\CJKvlet{bx/n/30/131}{m/n/30/131}
+\CJKvlet{bx/n/30/133}{m/n/30/133}
+\CJKvlet{bx/n/30/135}{m/n/30/135}
+\CJKvlet{bx/n/30/142}{m/n/30/142}
+\CJKvlet{bx/n/30/161}{m/n/30/161}
+\CJKvlet{bx/n/30/163}{m/n/30/163}
+\CJKvlet{bx/n/30/165}{m/n/30/165}
+\CJKvlet{bx/n/30/167}{m/n/30/167}
+\CJKvlet{bx/n/30/169}{m/n/30/169}
+\CJKvlet{bx/n/30/195}{m/n/30/195}
+\CJKvlet{bx/n/30/227}{m/n/30/227}
+\CJKvlet{bx/n/30/229}{m/n/30/229}
+\CJKvlet{bx/n/30/231}{m/n/30/231}
+\CJKvlet{bx/n/30/238}{m/n/30/238}
+\CJKvlet{bx/n/30/245}{m/n/30/245}
+\CJKvlet{bx/n/30/246}{m/n/30/246}
+\CJKvlet{bx/n/30/252}{m/n/30/252}
+
+\CJKvlet{bx/n/ff/8}{m/n/ff/8}
+\CJKvlet{bx/n/ff/9}{m/n/ff/9}
+\CJKvlet{bx/n/ff/12}{m/n/ff/12}
+\CJKvlet{bx/n/ff/14}{m/n/ff/14}
+\CJKvlet{bx/n/ff/59}{m/n/ff/59}
+\CJKvlet{bx/n/ff/61}{m/n/ff/61}
+\CJKvlet{bx/n/ff/91}{m/n/ff/91}
+\CJKvlet{bx/n/ff/93}{m/n/ff/93}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70min.fd b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70min.fd
new file mode 100644
index 0000000000..19b11619dc
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70min.fd
@@ -0,0 +1,28 @@
+% This is the file c70min.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70min.fd}[\filedate\space\fileversion]
+
+
+% character set: Unicode U+0080 - U+FFFD
+% font encoding: Unicode
+%
+% udmj is Wadalab mincho-0-12 combined with mincho-1-8.
+% umcj is Wadalab mincho-0-8 combined with mincho-1-8.
+
+\DeclareFontFamily{C70}{min}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C70}{min}{l}{n}
+ { <-> CJK * umcj}{}
+\DeclareFontShape{C70}{min}{m}{n}
+ { <-> CJK * udmj}{\CJKnormal}
+\DeclareFontShape{C70}{min}{bx}{n}
+ { <-> CJKb * udmj}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70min.fdx b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70min.fdx
new file mode 100644
index 0000000000..8305091587
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/c70min.fdx
@@ -0,0 +1,203 @@
+% This is the file c70min.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Gernot Hassenpflug <gernot@nict.go.jp>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70min.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{rotate}{}
+\CJKvdef{offset}{.5em}
+
+\CJKvdef{m/n/00/163}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{163}\hss}}
+\CJKvdef{m/n/00/167}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{167}\hss}}
+
+\CJKvdef{m/n/20/24}{\CJKsymbolsimple{24}}
+\CJKvdef{m/n/20/25}{\CJKsymbolsimple{25}}
+\CJKvdef{m/n/20/28}{\CJKsymbolsimple{28}}
+\CJKvdef{m/n/20/29}{\CJKsymbolsimple{29}}
+\CJKvdef{m/n/20/37}{\CJKsymbolsimple{37}}
+\CJKvdef{m/n/20/38}{\CJKsymbolsimple{38}}
+
+\CJKvdef{m/n/30/1}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{1}\hss}}
+\CJKvdef{m/n/30/2}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{2}\hss}}
+\CJKvdef{m/n/30/8}{\CJKsymbolsimple{8}}
+\CJKvdef{m/n/30/9}{\CJKsymbolsimple{9}}
+\CJKvdef{m/n/30/10}{\CJKsymbolsimple{10}}
+\CJKvdef{m/n/30/11}{\CJKsymbolsimple{11}}
+\CJKvdef{m/n/30/12}{\CJKsymbolsimple{12}}
+\CJKvdef{m/n/30/13}{\CJKsymbolsimple{13}}
+\CJKvdef{m/n/30/14}{\CJKsymbolsimple{14}}
+\CJKvdef{m/n/30/15}{\CJKsymbolsimple{15}}
+\CJKvdef{m/n/30/16}{\CJKsymbolsimple{16}}
+\CJKvdef{m/n/30/17}{\CJKsymbolsimple{17}}
+\CJKvdef{m/n/30/20}{\CJKsymbolsimple{20}}
+\CJKvdef{m/n/30/21}{\CJKsymbolsimple{21}}
+\CJKvdef{m/n/30/28}{\CJKsymbolsimple{28}}
+\CJKvdef{m/n/30/252}{\CJKsymbolsimple{252}}
+
+\CJKvdef{m/n/ff/8}{\CJKsymbolsimple{8}}
+\CJKvdef{m/n/ff/9}{\CJKsymbolsimple{9}}
+\CJKvdef{m/n/ff/12}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{12}\hss}}
+\CJKvdef{m/n/ff/14}{\raise .55em \hbox to 1em {\kern -.6em \CJKsymbol{14}\hss}}
+\CJKvdef{m/n/ff/59}{\CJKsymbolsimple{59}}
+\CJKvdef{m/n/ff/61}{\CJKsymbolsimple{61}}
+\CJKvdef{m/n/ff/91}{\CJKsymbolsimple{91}}
+\CJKvdef{m/n/ff/93}{\CJKsymbolsimple{93}}
+
+% Reposition small kana letters for vertical typesetting.
+
+\CJKvdef{m/n/30/65}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{65}\hss}}
+\CJKvdef{m/n/30/67}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{67}\hss}}
+\CJKvdef{m/n/30/69}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{69}\hss}}
+\CJKvdef{m/n/30/71}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{71}\hss}}
+\CJKvdef{m/n/30/73}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{73}\hss}}
+\CJKvdef{m/n/30/99}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{99}\hss}}
+\CJKvdef{m/n/30/131}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{131}\hss}}
+\CJKvdef{m/n/30/133}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{133}\hss}}
+\CJKvdef{m/n/30/135}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{135}\hss}}
+\CJKvdef{m/n/30/142}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{142}\hss}}
+
+\CJKvdef{m/n/30/161}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{161}\hss}}
+\CJKvdef{m/n/30/163}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{163}\hss}}
+\CJKvdef{m/n/30/165}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{165}\hss}}
+\CJKvdef{m/n/30/167}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{167}\hss}}
+\CJKvdef{m/n/30/169}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{169}\hss}}
+\CJKvdef{m/n/30/195}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{195}\hss}}
+\CJKvdef{m/n/30/227}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{227}\hss}}
+\CJKvdef{m/n/30/229}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{229}\hss}}
+\CJKvdef{m/n/30/231}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{231}\hss}}
+\CJKvdef{m/n/30/238}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{238}\hss}}
+\CJKvdef{m/n/30/245}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{245}\hss}}
+\CJKvdef{m/n/30/246}{\raise .2em \hbox to 1em {\kern -.2em \CJKsymbol{246}\hss}}
+
+
+\CJKvlet{bx/n/00/163}{m/n/00/163}
+\CJKvlet{bx/n/00/167}{m/n/00/167}
+
+\CJKvlet{bx/n/20/24}{m/n/20/24}
+\CJKvlet{bx/n/20/25}{m/n/20/25}
+\CJKvlet{bx/n/20/28}{m/n/20/28}
+\CJKvlet{bx/n/20/29}{m/n/20/29}
+\CJKvlet{bx/n/20/37}{m/n/20/37}
+\CJKvlet{bx/n/20/38}{m/n/20/38}
+
+\CJKvlet{bx/n/30/1}{m/n/30/1}
+\CJKvlet{bx/n/30/2}{m/n/30/2}
+\CJKvlet{bx/n/30/8}{m/n/30/8}
+\CJKvlet{bx/n/30/9}{m/n/30/9}
+\CJKvlet{bx/n/30/10}{m/n/30/10}
+\CJKvlet{bx/n/30/11}{m/n/30/11}
+\CJKvlet{bx/n/30/12}{m/n/30/12}
+\CJKvlet{bx/n/30/13}{m/n/30/13}
+\CJKvlet{bx/n/30/14}{m/n/30/14}
+\CJKvlet{bx/n/30/15}{m/n/30/15}
+\CJKvlet{bx/n/30/16}{m/n/30/16}
+\CJKvlet{bx/n/30/17}{m/n/30/17}
+\CJKvlet{bx/n/30/20}{m/n/30/20}
+\CJKvlet{bx/n/30/21}{m/n/30/21}
+\CJKvlet{bx/n/30/28}{m/n/30/28}
+\CJKvlet{bx/n/30/65}{m/n/30/65}
+\CJKvlet{bx/n/30/67}{m/n/30/67}
+\CJKvlet{bx/n/30/69}{m/n/30/69}
+\CJKvlet{bx/n/30/71}{m/n/30/71}
+\CJKvlet{bx/n/30/73}{m/n/30/73}
+\CJKvlet{bx/n/30/99}{m/n/30/99}
+\CJKvlet{bx/n/30/131}{m/n/30/131}
+\CJKvlet{bx/n/30/133}{m/n/30/133}
+\CJKvlet{bx/n/30/135}{m/n/30/135}
+\CJKvlet{bx/n/30/142}{m/n/30/142}
+\CJKvlet{bx/n/30/161}{m/n/30/161}
+\CJKvlet{bx/n/30/163}{m/n/30/163}
+\CJKvlet{bx/n/30/165}{m/n/30/165}
+\CJKvlet{bx/n/30/167}{m/n/30/167}
+\CJKvlet{bx/n/30/169}{m/n/30/169}
+\CJKvlet{bx/n/30/195}{m/n/30/195}
+\CJKvlet{bx/n/30/227}{m/n/30/227}
+\CJKvlet{bx/n/30/229}{m/n/30/229}
+\CJKvlet{bx/n/30/231}{m/n/30/231}
+\CJKvlet{bx/n/30/238}{m/n/30/238}
+\CJKvlet{bx/n/30/245}{m/n/30/245}
+\CJKvlet{bx/n/30/246}{m/n/30/246}
+\CJKvlet{bx/n/30/252}{m/n/30/252}
+
+\CJKvlet{bx/n/ff/8}{m/n/ff/8}
+\CJKvlet{bx/n/ff/9}{m/n/ff/9}
+\CJKvlet{bx/n/ff/12}{m/n/ff/12}
+\CJKvlet{bx/n/ff/14}{m/n/ff/14}
+\CJKvlet{bx/n/ff/59}{m/n/ff/59}
+\CJKvlet{bx/n/ff/61}{m/n/ff/61}
+\CJKvlet{bx/n/ff/91}{m/n/ff/91}
+\CJKvlet{bx/n/ff/93}{m/n/ff/93}
+
+
+\CJKvlet{l/n/00/163}{m/n/00/163}
+\CJKvlet{l/n/00/167}{m/n/00/167}
+
+\CJKvlet{l/n/20/24}{m/n/20/24}
+\CJKvlet{l/n/20/25}{m/n/20/25}
+\CJKvlet{l/n/20/28}{m/n/20/28}
+\CJKvlet{l/n/20/29}{m/n/20/29}
+\CJKvlet{l/n/20/37}{m/n/20/37}
+\CJKvlet{l/n/20/38}{m/n/20/38}
+
+\CJKvlet{l/n/30/1}{m/n/30/1}
+\CJKvlet{l/n/30/2}{m/n/30/2}
+\CJKvlet{l/n/30/8}{m/n/30/8}
+\CJKvlet{l/n/30/9}{m/n/30/9}
+\CJKvlet{l/n/30/10}{m/n/30/10}
+\CJKvlet{l/n/30/11}{m/n/30/11}
+\CJKvlet{l/n/30/12}{m/n/30/12}
+\CJKvlet{l/n/30/13}{m/n/30/13}
+\CJKvlet{l/n/30/14}{m/n/30/14}
+\CJKvlet{l/n/30/15}{m/n/30/15}
+\CJKvlet{l/n/30/16}{m/n/30/16}
+\CJKvlet{l/n/30/17}{m/n/30/17}
+\CJKvlet{l/n/30/20}{m/n/30/20}
+\CJKvlet{l/n/30/21}{m/n/30/21}
+\CJKvlet{l/n/30/28}{m/n/30/28}
+\CJKvlet{l/n/30/65}{m/n/30/65}
+\CJKvlet{l/n/30/67}{m/n/30/67}
+\CJKvlet{l/n/30/69}{m/n/30/69}
+\CJKvlet{l/n/30/71}{m/n/30/71}
+\CJKvlet{l/n/30/73}{m/n/30/73}
+\CJKvlet{l/n/30/99}{m/n/30/99}
+\CJKvlet{l/n/30/131}{m/n/30/131}
+\CJKvlet{l/n/30/133}{m/n/30/133}
+\CJKvlet{l/n/30/135}{m/n/30/135}
+\CJKvlet{l/n/30/142}{m/n/30/142}
+\CJKvlet{l/n/30/161}{m/n/30/161}
+\CJKvlet{l/n/30/163}{m/n/30/163}
+\CJKvlet{l/n/30/165}{m/n/30/165}
+\CJKvlet{l/n/30/167}{m/n/30/167}
+\CJKvlet{l/n/30/169}{m/n/30/169}
+\CJKvlet{l/n/30/195}{m/n/30/195}
+\CJKvlet{l/n/30/227}{m/n/30/227}
+\CJKvlet{l/n/30/229}{m/n/30/229}
+\CJKvlet{l/n/30/231}{m/n/30/231}
+\CJKvlet{l/n/30/238}{m/n/30/238}
+\CJKvlet{l/n/30/245}{m/n/30/245}
+\CJKvlet{l/n/30/246}{m/n/30/246}
+\CJKvlet{l/n/30/252}{m/n/30/252}
+
+\CJKvlet{l/n/ff/8}{m/n/ff/8}
+\CJKvlet{l/n/ff/9}{m/n/ff/9}
+\CJKvlet{l/n/ff/12}{m/n/ff/12}
+\CJKvlet{l/n/ff/14}{m/n/ff/14}
+\CJKvlet{l/n/ff/59}{m/n/ff/59}
+\CJKvlet{l/n/ff/61}{m/n/ff/61}
+\CJKvlet{l/n/ff/91}{m/n/ff/91}
+\CJKvlet{l/n/ff/93}{m/n/ff/93}
+
+% Move down small katalana `tsu' in horizontal mode. It sits too high and
+% is possibly confusable with the large `tsu'.
+
+\CJKhdef{m/n/30/195}{\raise -.05em \hbox to 1em {\kern 0em \CJKsymbol{195}\hss}}
+\CJKhlet{bx/n/30/195}{m/n/30/195}
+\CJKhlet{l/n/30/195}{m/n/30/195}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/fixwada b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/fixwada
new file mode 100644
index 0000000000..8f37b5bc9e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/fixwada
@@ -0,0 +1,81 @@
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+# This script fixes the Wadalab fonts which have been created with the
+# `makefont' script of the CJK package version 4.5.1 or earlier.
+#
+# It converts all PFB files in the current directory.
+
+
+for i in *.pfb; do
+ echo $i
+ mv $i $i.old
+ cat $i.old | \
+ t1disasm | \
+ awk '
+ {
+ sub(/001\.001/, "001.002")
+
+ if (/%%Creation/) {
+ print "%%CreationDate: 2003-Feb-07"
+ next
+ }
+
+ if (/0 -160 rmoveto/ && last_is_hsbw) {
+ last_is_hsbw = 0
+ next
+ }
+
+ if (/hsbw/) {
+ last_is_hsbw = 1
+ waiting_for_Xmoveto = 1
+ }
+ else
+ last_is_hsbw = 0
+
+ if (waiting_for_Xmoveto) {
+ if (/rmoveto/) {
+ printf "\t%d %d rmoveto\n", $1, $2 - 160
+ waiting_for_Xmoveto = 0
+ next
+ }
+ else if (/vmoveto/) {
+ printf "\t%d vmoveto\n", $1 - 160
+ waiting_for_Xmoveto = 0
+ next
+ }
+ else if (/hmoveto/) {
+ printf "\t%d %d rmoveto\n", $1, -160
+ waiting_for_Xmoveto = 0
+ next
+ }
+ }
+
+ if (/moveto/)
+ print "\tclosepath"
+
+ if (/hstem/) {
+ printf "\t%d %d hstem\n", $1 - 160, $2
+ next
+ }
+
+ print
+ }
+ ' | \
+ t1asm > $i
+ rm $i.old
+done
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/fixwada2.pl b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/fixwada2.pl
new file mode 100644
index 0000000000..af2477c306
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/fixwada2.pl
@@ -0,0 +1,242 @@
+#! /usr/bin/perl -w
+#
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+# This script fixes the Wadalab fonts which have been created with the
+# `makefont' script version 1.0 (from CJK 4.8.5), or which have been updated
+# with the `fixwada' script.
+#
+# . Make all glyph names compliant to the Adobe Glyph List (AGL) to
+# get proper ToUnicode mappings in PDF documents.
+#
+# . Fix the encoding vector in the PFBs to contain only glyphs which
+# actually have an outline.
+#
+# . Update the version number and creation date.
+#
+# . Fix a typo in the original fonts (`UniqueId' -> `UniqueID').
+#
+# The files `JIS0208.TXT' and `JIS0212.TXT' from the `OBSOLETE' directory in
+# the `MAPPINGS' tree on ftp.unicode.org are necessary for running this
+# script. It also reads the file `DNP.sfd' which gives the relationship
+# between JIS X 0208 (and JIS X 0212) in EUC encoding and wadalab's DNP font
+# encoding. Finally, the programs `t1asm' and `t1disasm' must be available
+# (and in the path).
+#
+# Call the script as
+#
+# perl fixwada2.pl wadalab_namestem [JIS0208|JIS0212]
+#
+# Example:
+#
+# perl fixwada2.pl dmj JIS0208
+#
+# `fixwada2' reads all PFB and AFM files from the given wadalab font
+# family and replaces them with new versions.
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+if ($#ARGV != 1) {
+ die("usage: $prog wadalab_namestem [JIS0208|JIS0212]\n");
+}
+
+my $namestem = $ARGV[0];
+my $encoding = $ARGV[1];
+my $encfile;
+my $doshift;
+
+
+if ("\U$encoding" eq "JIS0208") {
+ $encfile = "JIS0208.TXT";
+ $doshift = 1;
+}
+elsif ("\U$encoding" eq "JIS0212") {
+ $encfile = "JIS0212.TXT";
+ $doshift = 0;
+}
+else {
+ die("$prog: unknown encoding\n");
+}
+
+
+# Read `DNP.sfd'.
+
+my %sfd;
+my @subfonts;
+
+print("Reading \`DNP.sfd'...\n");
+
+open(DNP, "DNP.sfd")
+|| die("$prog: can't open \`DNP.sfd': $!\n");
+
+# This loop doesn't handle the complete syntax of SFD files yet.
+while (<DNP>) {
+ chop;
+ my @field = split(" ");
+ next if ($#field < 0);
+ next if ($field[0] =~ /^#/);
+
+ my $suffix = $field[0];
+ push(@subfonts, $suffix);
+
+ shift(@field);
+ my $index = 0;
+
+ while (@field) {
+ if ($field[0] =~ /(.*):$/) {
+ $index = $1;
+ }
+ elsif ($field[0] =~ /(0x[0-9A-Fa-f]+)_(0x[0-9A-Fa-f]+)/) {
+ foreach my $i (hex($1) .. hex($2)) {
+ $sfd{$suffix . "c" . sprintf("%02X", $index)} = $i;
+ $index++;
+ }
+ }
+ shift(@field);
+ }
+}
+
+
+# Read encoding file.
+
+print("Reading \`$encfile'...\n");
+
+my %jisx;
+
+open(JISX, $encfile)
+|| die("$prog: can't open \`$encfile': $!\n");
+
+while (<JISX>) {
+ chop;
+ my @field = split(" ");
+ next if ($#field < 0);
+ next if ($field[0] =~ /^#/);
+
+ if ($doshift) {
+ shift(@field);
+ }
+
+ my $unicode = $field[1];
+ $unicode =~ s/0x//;
+ my $value = hex($field[0]) + 0x8080;
+ $jisx{$value} = $unicode;
+}
+
+
+# Process AFM files.
+
+foreach my $afm (@subfonts) {
+ my $filename = "$namestem$afm.afm";
+ print("Processing \`$filename'...\n");
+
+ if (!-f $filename) {
+ print("$prog: \`$filename' doesn't exist\n");
+ next;
+ }
+
+ rename($filename, "$filename.old");
+
+ open(INFILE, "$filename.old")
+ || die("$prog: can't open \`$filename.old': $!\n");
+ open(OUTFILE, ">", "$filename")
+ || die("$prog: can't open \`$filename': $!\n");
+
+ while (<INFILE>) {
+ # Replace the `cXX' entries with correct `uniXXXX' glyph names.
+ s/ N (.*?) ;/ N uni$jisx{$sfd{$afm . $1}} ;/;
+
+ # Update version number.
+ s/001\.001/001.004/;
+
+ print(OUTFILE $_);
+ }
+
+ close(INFILE);
+ close(OUTFILE);
+
+ unlink("$filename.old");
+}
+
+
+# Process PFB files.
+
+foreach my $pfb (@subfonts) {
+ my $arg;
+ my $filename = "$namestem$pfb.pfb";
+ print("Processing \`$filename'...\n");
+
+ if (!-f $filename) {
+ print("$prog: \`$filename' doesn't exist\n");
+ next;
+ }
+
+ rename($filename, "$filename.old");
+
+ $arg = "t1disasm < $filename.old > $filename.disasm.old";
+ system("$arg") == 0
+ || die("$prog: calling \`$arg' failed: $?");
+
+ open(INFILE, "$filename.disasm.old")
+ || die("$prog: can't open \`$filename.disasm.old': $!\n");
+ open(OUTFILE, ">", "$filename.disasm")
+ || die("$prog: can't open \`$filename.disasm': $!\n");
+
+ while (<INFILE>) {
+ # Replace the `cXX' entries with correct `uniXXXX' glyph names
+ # (or `.notdef' if there isn't one).
+ if (m@/(c.*?) @) {
+ my $replacement;
+ if (defined ($sfd{$pfb . $1})
+ && defined ($jisx{$sfd{$pfb . $1}})) {
+ $replacement = "uni$jisx{$sfd{$pfb . $1}}";
+ }
+ else {
+ $replacement = ".notdef";
+ }
+ s@/(c.*?) @/$replacement @;
+ }
+
+ # Fix a typo in original fonts.
+ s/UniqueId/UniqueID/;
+
+ # Update version number.
+ s/001\.002/001.004/;
+
+ # Update creation date.
+ s/2003-Feb-07/2005-Jul-29/;
+
+ print(OUTFILE $_);
+ }
+
+ close(INFILE);
+ close(OUTFILE);
+
+ $arg = "t1asm < $filename.disasm > $filename";
+ system("$arg") == 0
+ || die("$prog: calling \`$arg' failed: $?");
+
+ unlink("$filename.disasm.old", "$filename.disasm");
+ unlink("$filename.old");
+}
+
+print("Done.\n");
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/makefont b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/makefont
new file mode 100644
index 0000000000..98b20cd541
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/makefont
@@ -0,0 +1,108 @@
+#!/bin/sh
+#
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+# Version 1.0
+#
+# This script transforms Wadalab PFA and AFM files created by the
+# wftodm program into PFB and TFM files. All files in the current
+# directory and its subdirectories are converted.
+#
+# Additionally, it normalizes the font matrix so that the subfonts work
+# with pdfTeX; for convenience, it also inserts `closepath' commands to
+# end subpaths in glyphs.
+#
+# Note that an older version of this script (without a version number) has
+# some flaws; you should either regenerate all Wadalab subfonts or use the
+# `fixwada' script to fix PFB fonts which have already been created with
+# this older version.
+#
+# The programs t1asm, t1disasm, and afm2tfm must be in the path.
+
+for f in `find . -name '*.pfa' -print`; do
+ echo processing $f
+ name=`basename $f .pfa`
+ t1disasm < $name.pfa > $name.old
+
+ cat $name.old | \
+ awk '
+ {
+ sub(/001\.001/, "001.002")
+ sub(/\[.001 0 0 .001 0 -0.16\]/, "[.001 0 0 .001 0 0]")
+ sub(/\[0 0 1000 1000\]/, "[0 -160 1000 840]")
+
+ if (/%%Creation/) {
+ print "%%CreationDate: 2003-Feb-07"
+ next
+ }
+
+ if (/hsbw/)
+ waiting_for_Xmoveto = 1
+
+ if (waiting_for_Xmoveto) {
+ if (/rmoveto/) {
+ printf "\t%d %d rmoveto\n", $1, $2 - 160
+ waiting_for_Xmoveto = 0
+ next
+ }
+ if (/vmoveto/) {
+ printf "\t%d vmoveto\n", $1 - 160
+ waiting_for_Xmoveto = 0
+ next
+ }
+ if (/hmoveto/) {
+ printf "\t%d %d rmoveto\n", $1, -160
+ waiting_for_Xmoveto = 0
+ next
+ }
+ }
+
+ if (/moveto/)
+ print "\tclosepath"
+
+ if (/hstem/) {
+ printf "\t%d %d hstem\n", $1 - 160, $2
+ next
+ }
+
+ print
+ }
+ ' > $name.asm
+ rm $name.old
+
+ t1asm < $name.asm > $name.pfb
+ rm $name.asm
+done
+
+for f in `find . -name '*.afm' -print`; do
+ echo processing $f
+ name=`basename $f .afm`
+ mv $name.afm $name.old
+
+ cat $name.old | \
+ sed -e "
+ s/FontBBox 0 0 1000 1000/FontBBox 0 -160 1000 840/
+ s/B 0 0 1000 1000/B 0 -160 1000 840/
+ " > $name.afm
+
+ rm $name.old
+
+ afm2tfm $name.afm &> /dev/null
+done
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/makeuniwada.pl b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/makeuniwada.pl
new file mode 100644
index 0000000000..826ea3d3cb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/makeuniwada.pl
@@ -0,0 +1,333 @@
+#! /usr/bin/perl -w
+#
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+# This script creates virtual subfonts in Unicode encoding for Wadalab
+# subfonts. It can merge a JIS X 0208 and JIS X 0212 family into a single
+# set of Unicode subfonts.
+#
+# As prerequisites, it needs the files `JIS0208.TXT' and `JIS0212.TXT' from
+# the `OBSOLETE' directory in the `MAPPINGS' tree on ftp.unicode.org. It
+# also needs the file `DNP.sfd' which gives the relationship between JIS X
+# 0208 (and JIS X 0212) in EUC encoding and wadalab's DNP font encoding.
+# The program `vptovf' must be available (and in the path).
+#
+# Call the script as
+#
+# perl makeuniwada.pl namestem1 [namestem2] uni_namestem
+#
+# `namestem1' is the font in JIS X 0208 encoding. The optional `namestem2'
+# argument is the font in JIS X 0212, and `uni_namestem' holds the prefix
+# for the Unicode subfonts. `makeuniwada.pl' reads all AFM files from the
+# given wadalab font families.
+#
+# Example:
+#
+# perl makeuniwada.pl dmj mc2j udmj
+#
+# This call mixes the mincho-0-12 (dmj) with mincho-1-8 (mc2j) families.
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+if ($#ARGV < 1 || $#ARGV > 2) {
+ die("usage: $prog namestem1 [namestem2] uni_namestem\n");
+}
+
+my $namestem1;
+my $namestem2;
+my $two_encodings = 0;
+my @args = @ARGV;
+
+$namestem1 = $ARGV[0];
+if ($#ARGV == 2) {
+ $namestem2 = $ARGV[1];
+ $two_encodings = 1;
+ shift;
+}
+my $uninamestem = $ARGV[1];
+
+
+# Read `DNP.sfd'.
+
+my %sfd;
+my @subfonts;
+
+read_sfdfile("DNP.sfd", \%sfd, \@subfonts);
+
+
+# Read encoding files.
+#
+# The files `JIS0208.TXT' and `JIS0212.TXT' are from the `OBSOLETE'
+# directory in the `MAPPINGS' tree on ftp.unicode.org.
+
+my %jisx0208;
+my %jisx0212;
+
+read_encfile("JIS0208.TXT", \%jisx0208, 1);
+if ($two_encodings) {
+ read_encfile("JIS0212.TXT", \%jisx0212, 0);
+}
+
+
+# Read AFM files.
+
+my @unicode;
+
+foreach my $sub (@subfonts) {
+ my $afmname = "$namestem1$sub.afm";
+
+ if (-f $afmname) {
+ read_afmfile($afmname, \@unicode, \%sfd, \%jisx0208, $sub);
+ }
+}
+if ($two_encodings) {
+ foreach my $sub (@subfonts) {
+ my $afmname = "$namestem2$sub.afm";
+
+ if (-f $afmname) {
+ read_afmfile($afmname, \@unicode, \%sfd, \%jisx0212, $sub);
+ }
+ }
+}
+
+
+# Write VPL files.
+
+my $index = 0;
+foreach my $i (0 .. 255) {
+ my @entries;
+
+ foreach my $j (0 .. 255) {
+ if (defined ($unicode[$index])) {
+ push(@entries, "$j $unicode[$index]");
+ }
+ $index++;
+ }
+
+ if ($#entries >= 0) {
+ write_vplfile($uninamestem . sprintf("%02x.vpl", $i), \@entries);
+ }
+}
+
+
+# Generate VF and TFM files, then remove the VPL files.
+
+my @vplfiles = glob("$uninamestem*.vpl");
+foreach my $vplfile (@vplfiles) {
+ print("Processing \`$vplfile'...\n");
+ my $arg = "vptovf $vplfile";
+ system($arg) == 0
+ || die("$prog: calling \`$arg' failed: $?");;
+ print("Removing \`$vplfile'...\n");
+ unlink($vplfile);
+}
+
+
+# Read an SFD file.
+#
+# $1: Name of the SFD file.
+# $2: Reference to the target hash file, mapping from the subfont index
+# to the character code. The format of the hash key is the
+# concatenation of the subfont suffix, a space, and the index.
+# $3: Reference to a target array which holds the subfont suffixes.
+
+sub read_sfdfile {
+ my ($sfdfile, $sfdhash, $sfdarray) = @_;
+
+ print("Reading subfont definition file \`$sfdfile'...\n");
+
+ open(SFD, $sfdfile)
+ || die("$prog: can't open \`$sfdfile': $!\n");
+
+ # This loop doesn't handle the complete syntax of SFD files yet.
+ while (<SFD>) {
+ chop;
+ my @field = split(" ");
+ next if ($#field < 0);
+ next if ($field[0] =~ /^#/);
+
+ my $suffix = $field[0];
+ push(@{$sfdarray}, $suffix);
+
+ shift(@field);
+ my $index = 0;
+
+ while (@field) {
+ if ($field[0] =~ /(.*):$/) {
+ $index = $1;
+ }
+ elsif ($field[0] =~ /(0x[0-9A-Fa-f]+)_(0x[0-9A-Fa-f]+)/) {
+ foreach my $i (hex($1) .. hex($2)) {
+ $sfdhash->{"$suffix $index"} = $i;
+ $index++;
+ }
+ }
+ shift(@field);
+ }
+ }
+ close(SFD);
+}
+
+
+# Read encoding file.
+#
+# $1: Name of the encoding file.
+# $2: Reference to the target hash file, mapping from the charset
+# to Unicode.
+# $3: Set to 1 if the needed mapping data is not in field 1 and 2, but in
+# field 2 and 3.
+
+sub read_encfile {
+ my ($encfile, $enchash, $doshift) = @_;
+
+ print("Reading encoding file \`$encfile'...\n");
+
+ open(ENC, $encfile)
+ || die("$prog: can't open \`$encfile': $!\n");
+
+ while (<ENC>) {
+ chop;
+ my @field = split(" ");
+ next if ($#field < 0);
+ next if ($field[0] =~ /^#/);
+
+ if ($doshift) {
+ shift(@field);
+ }
+
+ my $unicode = $field[1];
+ $unicode =~ s/0x//;
+ my $value = hex($field[0]) + 0x8080;
+ $enchash->{$value} = hex($unicode);
+ }
+ close(ENC);
+}
+
+
+# Read AFM file.
+#
+# $1: Name of the AFM file.
+# $2: Reference to the target array which maps from Unicode to the string
+# "<subfont name> <subfont index> <width> <height> <depth>".
+# $3: Reference to the SFD hash (as extracted by `read_sfdfile').
+# $4: Reference to the encoding hash (as extracted by `read_encfile').
+# $5: Suffix.
+
+sub read_afmfile {
+ my ($afmfile, $unicarray, $sfdhash, $enchash, $suffix) = @_;
+
+ print("Reading metric file \`$afmfile'...\n");
+
+ open(AFM, $afmfile)
+ || die("$prog: can't open \`$afmfile': $!\n");
+
+ $afmfile =~ s/\.[^.]*$//;
+ while (<AFM>) {
+ if (/^C (\d+) ;/) {
+ my $key = "$suffix $1";
+ my $value = $sfdhash->{$key};
+ my $unicvalue = $enchash->{$value};
+ my $s = "$afmfile $1";
+
+ # Add advance width.
+ / WX (.*?) ;/;
+ $s .= " $1";
+
+ # Add glyph height and depth.
+ / B .*? (.*?) .*? (.*?) ;/;
+ $s .= " $1 $2";
+
+ $unicarray->[$unicvalue] = $s;
+ }
+ }
+ close(AFM);
+}
+
+
+# Write VPL file.
+#
+# $1: Name of the VPL file.
+# $2: Reference to list which holds the font entries. An entry has the
+# form `<idx> <subfont> <subfont_idx> <adv_width> <height> <depth>'.
+
+sub write_vplfile {
+ my ($vplfile, $glypharray) = @_;
+
+ my %subfonts;
+ my $subcount = 0;
+
+ foreach my $entry (@{$glypharray}) {
+ my @field = split(" ", $entry);
+ my $subfont = $field[1];
+ if (!defined ($subfonts{$subfont})) {
+ $subfonts{$subfont} = $subcount;
+ $subcount++;
+ }
+ }
+
+ print("Writing virtual property list file \`$vplfile'...\n");
+
+ open(VPL, ">", $vplfile)
+ || die("$prog: can't open \`$vplfile': $!\n");
+ my $oldfh = select(VPL);
+
+ print("(VTITLE Created by \`$prog " . join(" ", @args) . "')\n");
+ print("(FAMILY TEX-\U$uninamestem\E)\n");
+ print("(CODINGSCHEME DNPUNICODE)\n");
+ print("(FONTDIMEN\n");
+ print(" (SPACE R 0.5)\n");
+ print(" (XHEIGHT R 0.4)\n");
+ print(" (QUAD R 1)\n");
+ print(" )\n");
+
+ foreach my $subfont
+ (sort { $subfonts{$a} <=> $subfonts{$b} } keys %subfonts) {
+ print("(MAPFONT D $subfonts{$subfont}\n");
+ print(" (FONTNAME $subfont)\n");
+ print(" )\n");
+ }
+
+ foreach my $entry (@{$glypharray}) {
+ my @field = split(" ", $entry);
+ my $index = $field[0];
+ my $subnumber = $subfonts{$field[1]};
+ my $subindex = $field[2];
+ my $adv_width = $field[3] / 1000.0;
+ my $depth = $field[4] / -1000.0;
+ my $height = $field[5] / 1000.0;
+
+ print("(CHARACTER D $index\n");
+ print(" (CHARWD R $adv_width)\n");
+ print(" (CHARHT R $height)\n");
+ print(" (CHARDP R $depth)\n");
+ print(" (MAP\n");
+ print(" (SELECTFONT D $subnumber)\n");
+ print(" (SETCHAR D $subindex)\n");
+ print(" )\n");
+ print(" )\n");
+ }
+
+ close(VPL);
+ select($oldfh);
+}
+
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/wadalab.map b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/wadalab.map
new file mode 100644
index 0000000000..dd008d525f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/wadalab.map
@@ -0,0 +1,187 @@
+
+% Wadalab Japanese fonts
+
+dgjgreek dgjgreek <dgjgreek.pfb
+dgjhira dgjhira <dgjhira.pfb
+dgjkata dgjkata <dgjkata.pfb
+dgjkeisen dgjkeisen <dgjkeisen.pfb
+dgjroma dgjroma <dgjroma.pfb
+dgjrussian dgjrussian <dgjrussian.pfb
+dgjsy dgjsy <dgjsy.pfb
+dgjka dgjka <dgjka.pfb
+dgjkb dgjkb <dgjkb.pfb
+dgjkc dgjkc <dgjkc.pfb
+dgjkd dgjkd <dgjkd.pfb
+dgjke dgjke <dgjke.pfb
+dgjkf dgjkf <dgjkf.pfb
+dgjkg dgjkg <dgjkg.pfb
+dgjkh dgjkh <dgjkh.pfb
+dgjki dgjki <dgjki.pfb
+dgjkj dgjkj <dgjkj.pfb
+dgjkk dgjkk <dgjkk.pfb
+dgjkl dgjkl <dgjkl.pfb
+dgjkm dgjkm <dgjkm.pfb
+dgjkn dgjkn <dgjkn.pfb
+dgjko dgjko <dgjko.pfb
+dgjkp dgjkp <dgjkp.pfb
+dgjkq dgjkq <dgjkq.pfb
+dgjkr dgjkr <dgjkr.pfb
+dgjks dgjks <dgjks.pfb
+dgjkt dgjkt <dgjkt.pfb
+dgjku dgjku <dgjku.pfb
+dgjkv dgjkv <dgjkv.pfb
+dgjkw dgjkw <dgjkw.pfb
+dgjkx dgjkx <dgjkx.pfb
+dgjky dgjky <dgjky.pfb
+dgjkz dgjkz <dgjkz.pfb
+
+dmjgreek dmjgreek <dmjgreek.pfb
+dmjhira dmjhira <dmjhira.pfb
+dmjkata dmjkata <dmjkata.pfb
+dmjkeisen dmjkeisen <dmjkeisen.pfb
+dmjroma dmjroma <dmjroma.pfb
+dmjrussian dmjrussian <dmjrussian.pfb
+dmjsy dmjsy <dmjsy.pfb
+dmjka dmjka <dmjka.pfb
+dmjkb dmjkb <dmjkb.pfb
+dmjkc dmjkc <dmjkc.pfb
+dmjkd dmjkd <dmjkd.pfb
+dmjke dmjke <dmjke.pfb
+dmjkf dmjkf <dmjkf.pfb
+dmjkg dmjkg <dmjkg.pfb
+dmjkh dmjkh <dmjkh.pfb
+dmjki dmjki <dmjki.pfb
+dmjkj dmjkj <dmjkj.pfb
+dmjkk dmjkk <dmjkk.pfb
+dmjkl dmjkl <dmjkl.pfb
+dmjkm dmjkm <dmjkm.pfb
+dmjkn dmjkn <dmjkn.pfb
+dmjko dmjko <dmjko.pfb
+dmjkp dmjkp <dmjkp.pfb
+dmjkq dmjkq <dmjkq.pfb
+dmjkr dmjkr <dmjkr.pfb
+dmjks dmjks <dmjks.pfb
+dmjkt dmjkt <dmjkt.pfb
+dmjku dmjku <dmjku.pfb
+dmjkv dmjkv <dmjkv.pfb
+dmjkw dmjkw <dmjkw.pfb
+dmjkx dmjkx <dmjkx.pfb
+dmjky dmjky <dmjky.pfb
+dmjkz dmjkz <dmjkz.pfb
+
+mcjgreek mcjgreek <mcjgreek.pfb
+mcjhira mcjhira <mcjhira.pfb
+mcjkata mcjkata <mcjkata.pfb
+mcjkeisen mcjkeisen <mcjkeisen.pfb
+mcjroma mcjroma <mcjroma.pfb
+mcjrussian mcjrussian <mcjrussian.pfb
+mcjsy mcjsy <mcjsy.pfb
+mcjka mcjka <mcjka.pfb
+mcjkb mcjkb <mcjkb.pfb
+mcjkc mcjkc <mcjkc.pfb
+mcjkd mcjkd <mcjkd.pfb
+mcjke mcjke <mcjke.pfb
+mcjkf mcjkf <mcjkf.pfb
+mcjkg mcjkg <mcjkg.pfb
+mcjkh mcjkh <mcjkh.pfb
+mcjki mcjki <mcjki.pfb
+mcjkj mcjkj <mcjkj.pfb
+mcjkk mcjkk <mcjkk.pfb
+mcjkl mcjkl <mcjkl.pfb
+mcjkm mcjkm <mcjkm.pfb
+mcjkn mcjkn <mcjkn.pfb
+mcjko mcjko <mcjko.pfb
+mcjkp mcjkp <mcjkp.pfb
+mcjkq mcjkq <mcjkq.pfb
+mcjkr mcjkr <mcjkr.pfb
+mcjks mcjks <mcjks.pfb
+mcjkt mcjkt <mcjkt.pfb
+mcjku mcjku <mcjku.pfb
+mcjkv mcjkv <mcjkv.pfb
+mcjkw mcjkw <mcjkw.pfb
+mcjkx mcjkx <mcjkx.pfb
+mcjky mcjky <mcjky.pfb
+mcjkz mcjkz <mcjkz.pfb
+
+mrjgreek mrjgreek <mrjgreek.pfb
+mrjhira mrjhira <mrjhira.pfb
+mrjkata mrjkata <mrjkata.pfb
+mrjkeisen mrjkeisen <mrjkeisen.pfb
+mrjroma mrjroma <mrjroma.pfb
+mrjrussian mrjrussian <mrjrussian.pfb
+mrjsy mrjsy <mrjsy.pfb
+mrjka mrjka <mrjka.pfb
+mrjkb mrjkb <mrjkb.pfb
+mrjkc mrjkc <mrjkc.pfb
+mrjkd mrjkd <mrjkd.pfb
+mrjke mrjke <mrjke.pfb
+mrjkf mrjkf <mrjkf.pfb
+mrjkg mrjkg <mrjkg.pfb
+mrjkh mrjkh <mrjkh.pfb
+mrjki mrjki <mrjki.pfb
+mrjkj mrjkj <mrjkj.pfb
+mrjkk mrjkk <mrjkk.pfb
+mrjkl mrjkl <mrjkl.pfb
+mrjkm mrjkm <mrjkm.pfb
+mrjkn mrjkn <mrjkn.pfb
+mrjko mrjko <mrjko.pfb
+mrjkp mrjkp <mrjkp.pfb
+mrjkq mrjkq <mrjkq.pfb
+mrjkr mrjkr <mrjkr.pfb
+mrjks mrjks <mrjks.pfb
+mrjkt mrjkt <mrjkt.pfb
+mrjku mrjku <mrjku.pfb
+mrjkv mrjkv <mrjkv.pfb
+mrjkw mrjkw <mrjkw.pfb
+mrjkx mrjkx <mrjkx.pfb
+mrjky mrjky <mrjky.pfb
+mrjkz mrjkz <mrjkz.pfb
+
+mc2jka mc2jka <mc2jka.pfb
+mc2jkb mc2jkb <mc2jkb.pfb
+mc2jkc mc2jkc <mc2jkc.pfb
+mc2jkd mc2jkd <mc2jkd.pfb
+mc2jke mc2jke <mc2jke.pfb
+mc2jkf mc2jkf <mc2jkf.pfb
+mc2jkg mc2jkg <mc2jkg.pfb
+mc2jkh mc2jkh <mc2jkh.pfb
+mc2jki mc2jki <mc2jki.pfb
+mc2jkj mc2jkj <mc2jkj.pfb
+mc2jkk mc2jkk <mc2jkk.pfb
+mc2jkl mc2jkl <mc2jkl.pfb
+mc2jkm mc2jkm <mc2jkm.pfb
+mc2jkn mc2jkn <mc2jkn.pfb
+mc2jko mc2jko <mc2jko.pfb
+mc2jkp mc2jkp <mc2jkp.pfb
+mc2jkq mc2jkq <mc2jkq.pfb
+mc2jkr mc2jkr <mc2jkr.pfb
+mc2jks mc2jks <mc2jks.pfb
+mc2jkt mc2jkt <mc2jkt.pfb
+mc2jku mc2jku <mc2jku.pfb
+mc2jkv mc2jkv <mc2jkv.pfb
+mc2jkw mc2jkw <mc2jkw.pfb
+
+mr2jka mr2jka <mr2jka.pfb
+mr2jkb mr2jkb <mr2jkb.pfb
+mr2jkc mr2jkc <mr2jkc.pfb
+mr2jkd mr2jkd <mr2jkd.pfb
+mr2jke mr2jke <mr2jke.pfb
+mr2jkf mr2jkf <mr2jkf.pfb
+mr2jkg mr2jkg <mr2jkg.pfb
+mr2jkh mr2jkh <mr2jkh.pfb
+mr2jki mr2jki <mr2jki.pfb
+mr2jkj mr2jkj <mr2jkj.pfb
+mr2jkk mr2jkk <mr2jkk.pfb
+mr2jkl mr2jkl <mr2jkl.pfb
+mr2jkm mr2jkm <mr2jkm.pfb
+mr2jkn mr2jkn <mr2jkn.pfb
+mr2jko mr2jko <mr2jko.pfb
+mr2jkp mr2jkp <mr2jkp.pfb
+mr2jkq mr2jkq <mr2jkq.pfb
+mr2jkr mr2jkr <mr2jkr.pfb
+mr2jks mr2jks <mr2jks.pfb
+mr2jkt mr2jkt <mr2jkt.pfb
+mr2jku mr2jku <mr2jku.pfb
+mr2jkv mr2jkv <mr2jkv.pfb
+mr2jkw mr2jkw <mr2jkw.pfb
+
diff --git a/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/wadalab.txt b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/wadalab.txt
new file mode 100644
index 0000000000..0a99fa084b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/contrib/wadalab/wadalab.txt
@@ -0,0 +1,384 @@
+This file describes how to set up the CJK package with Wadalab postscript
+fonts for Japanese under Unix-like operating systems using distributions
+based on web2c (teTeX, TeXLive, etc.).
+
+The printer does not need to have resident Japanese fonts.
+
+
+By Hin-Tak Leung <htl10@users.sourceforge.net>, September 1997.
+
+Revised November 1998.
+
+Last revised by Werner Lemberg, July 2006.
+
+===================
+
+
+Summary steps
+-------------
+
+ 1. Download the CJK package and install it.
+
+ 2. Download and install the Wadalab font bundles for the CJK package from
+ CTAN.
+
+ 3a. Update `<TEXMF>/dvips/psfont.map', or update your `~/.dvipsrc' file.
+ Use the updmap script if possible.
+
+ 3b. Alternatively, create a `config.wadalab' file.
+
+ 3c. For pdfTeX, update `pdftex.map' (normally handled already by the updmap
+ script). Omit this step for recent teTeX and TeXLive versions.
+
+ 3d. For dvipdfmx (and dvipdfm), update `dvipdfm.map' (normally handled
+ already by the updmap script). Omit this step for recent teTeX and
+ TeXLive versions.
+
+ 4. Run mktexlsr.
+
+ 5. Test it!
+
+
+Details of each step
+--------------------
+
+1. The following files are essential and must be in your $TEXINPUTS path.
+
+ CJK/texinput/:
+ CJK.enc CJK.sty CJKnumb.sty
+ CJKulem.sty ruby.sty standard.bdg
+ standard.chr standard.enc
+
+ CJK/texinput/JIS/:
+ JIS.cap JIS.cpx JISdnp.enc
+ c42song.fd EUC-JP.bdg EUC-JP.chr
+ EUC-JP.enc
+
+ CJK/texinput/UTF8/:
+ UTF8.bdg UTF8.chr UTF8.enc
+ c70song.fd
+
+ [Even if you don't use `c42song.fd' and `c70song.fd' these two files
+ should be here to avoid a strange LaTeX error message if a font shape is
+ missing.]
+
+ [The EUC-JP files support real EUC-JP with single shift to access
+ JIS X 0212.]
+
+ And one or more of the following files:
+
+ file name Description
+ ------------------------------------------------------------------------
+ c42goth.fd Gothic JIS X 0208 (level 1,2 kanji), DNP font encoding
+ c42maru.fd Maru
+ c42min.fd Mincho
+
+ c52maru.fd Maru JIS X 0212 (level 3 kanji), DNP font encoding
+ c52min.fd Mincho
+
+ c70goth.fd Gothic JIS X 0208, Unicode font encoding
+
+ c70maru.fd Maru JIS X 0208 + 0212, Unicode font encoding
+ c70min.fd Mincho
+
+ And finally, `wadalab.map'.
+
+ Also keep `CJK/examples/JIS.tex' for testing. The rest of the CJK files
+ are not essential for this setup. Usage is documented in
+ `CJK/examples/JIS.tex' but reading `CJK/doc/CJK.txt' and
+ `CJK/doc/ruby.txt' is recommended.
+
+ For pseudo vertical typesetting you need the `*.fdx' files accompaning
+ the above `*.fd' files, together with the `CJKvert.sty' file.
+
+ For using Unicode as the input encoding you should use `CJKutf8.sty'.
+
+2. The CJK sub font packages of the Wadalab fonts can be found on CTAN in
+ the directory `fonts/wadalab'. The real TeX font names consist of the
+ concatenation of the family name with the subfont suffix. Examples:
+ `dgjkeisen', `mrjkj', `umcj5d'.
+
+ file name TeX font family
+ DNP Unicode
+ ---------------------------------------------
+ gothic-0-13.tar.gz dgj udgj
+ maru-0-8.tar.gz mrj umrj
+ maru-1-8.tar.gz mr2j
+ mincho-0-12.tar.gz dmj udmj [*]
+ mincho-0-8.tar.gz mcj umcj
+ mincho-1-8.tar.gz mc2j
+
+ [*] The `udmj' family uses mc2j for glyphs Level 3 Kanji. It doesn't
+ really fit (mc2j is too thin), but it is still better than having
+ no Level 3 Kanji at all.
+
+ Installation should be straightforward since the directories in the
+ font bundles already follow the TDS standard.
+
+3a. Append `wadalab.map' to `<TEXMF>/dvips/config/psfont.map; or, for
+ non-root users, create a `~/.dvipsrc' file containing this single line:
+
+=========================================================================
+p +/my-home/where_I_want_it/wadalab.map
+=========================================================================
+
+ (or add this line to your `~/.dvipsrc' if it already exists) and set
+ $DVIPSFONTS to the location of the `*.pfb' files.
+
+ teTeX and TeXLive users should do the following instead of the above:
+
+ a) Copy `wadalab.map' into the `<TEXMF>/fonts/map/dvips/wadalab'
+ directory. If you are non-root, create a private TEXMF tree in your
+ home directory, and copy the file to a similar location in your
+ private tree.
+
+ Users of older versions of teTeX and TeXLive should use the
+ directory `<TEXMF>/dvips/config' instead.
+
+ b) Add the following line to <TEXMF>/web2c/updmap.cfg:
+
+=========================================================================
+Map wadalab.map
+=========================================================================
+
+ and call the updmap script to regenerate all program specific map
+ files. If you are non-root, copy `updmap.cfg' from the main TEXMF
+ tree to a similar location in your private tree and modify it there.
+
+ Users of older version of teTeX and TeXLive should add `wadalab.map'
+ to the `extra_modules' variable directly in the updmap script.
+
+3b. Another solution is to just copy wadalab.map to the location in
+ step 3a. After creating a file `config.wadalab', containing a single line
+
+=========================================================================
+p +wadalab.map
+=========================================================================
+
+ you can use the `-P wadalab' switch while calling dvips.
+
+ The preferred location of `config.wadalab' is `<TEXMF>/dvips/wadalab' for
+ recent teTeX and TeXLive versions, and `<TEXMF>/dvips/config' otherwise.
+
+3c. [This step is optional and should be omitted for recent teTeX and
+ TeXLive versions.]
+
+ Append `wadalab.map' to `<TEXMF>/dvips/config/pdftex.map' so that pdfTeX
+ can use the Wadalab fonts. The updmap script does this automatically.
+
+3d. [This step is optional and should be omitted for recent teTeX and
+ TeXLive versions.]
+
+ Append `wadalab.map' to <TEXMF>/dvipdfm/config/dvipdfm.map so that
+ dvipdfmx (and dvipdfm) can use the Wadalab fonts. The updmap script does
+ this automatically.
+
+
+4. Run mktexlsr to make your TeX system actually find your font data files.
+
+
+5. Edit CJK/examples/JIS.tex and replace `\begin{CJK*}{JIS}{song}' by
+ `\begin{CJK*}[dnp]{JIS}{xxx}'; `xxx' can be `min' (for mincho), `goth'
+ (for gothic), or `maru'. To see the mincho-0-8 font (which is in `light'
+ series), insert
+
+ \fontseries{l}
+ \selectfont
+
+ in the CJK environment. All fonts use the poor-man's bold mechanism of
+ the CJK package.
+
+ Then do the sequence
+
+ latex JIS.tex
+ dvips JIS.dvi -j -o JIS.ps
+
+ or
+
+ dvips JIS.dvi -j -P wadalab -o JIS.ps
+
+ if you haven't modified `psfonts.map'. The `-j' switch activates partial
+ font downloading (which usually is the default).
+
+ At this stage running ghostview on `JIS.ps' should display it on screen.
+ Send `JIS.ps' to a postscript printer or run ghostscript for
+ non-postscript printers as you wish; and there you have your first
+ printed Japanese document. Enjoy!
+
+ Note: The level 3 Kanji fonts are generated in a DNP-like encoding also.
+ A single level 3 Kanji character can be most easily input with
+
+ \CJKchar[JIS2]{<first-byte>}{<second-byte>} ,
+
+ provided that you have said
+
+ \CJKfontenc{JIS2}{dnp}
+ \CJKencfamily{JIS2}{xxx}
+
+ in the preamble of your document to activate dnp font encoding for
+ the JIS2 encoding in font shape `xxx' (which can be either `maru'
+ or `min').
+
+ In case you use Emacs or Mule together with cjk-enc.el (of the CJK
+ package), JIS X 0212 characters can be displayed directly; they
+ will be automatically converted into appropriate CJK macros.
+
+
+How the Wadalab fonts have been created
+---------------------------------------
+
+This section contains a description of the conversion process which
+transforms the raw Wadalab PS files into subfonts usable by the CJK package.
+
+1. The Wadalab PS files are available from the original host
+
+ ftp://ftp.ipl.t.u-tokyo.ac.jp/Font/
+
+ Alternative locations are CTAN hosts like ftp.dante.de or ftp.tug.org and
+ its mirrors:
+
+ ftp://ftp.dante.de/pub/tex/support/ghostscript/3rdparty
+ /fonts/kanji/Font
+
+ Obtain the following files (if you download the files from CTAN, the
+ final extension is `.gz' instead of `.Z'):
+
+ wadalab-sym.7.tar.Z (symbols + Greek letters, necessary)
+
+ wadalab-mincho-0-12.8.tar.Z (JIS X 0208 level 1,2 kanji)
+ wadalab-gothic-0-13.5.tar.Z
+ wadalab-mincho-0-8.4.tar.Z
+ wadalab-maru-0-8.4.tar.Z
+
+ wadalab-maru-1-8.tar.Z (JIS X 0212 level 3 kanji)
+ wadalab-mincho-1-8.tar.Z
+
+ tools/wftodm.c (conversion program, c.f. step 2)
+
+ Unpack the font archives in a temporary directory; you should get
+ subdirectories called `wadalab-sym', `wadalab-mincho-0-12', etc.
+
+ Note: DO NOT read the misleading `readme.ghostscript' document which
+ accompanies the fonts.
+
+
+2. Patch `wftodm.c' with the following to enable partial font downloading.
+ You can simply say
+
+ patch < wadalab.txt
+
+ to do that.
+
+=========================================================================
+--- wftodm-orig2.c Tue Sep 23 22:45:32 1997
++++ wftodm.c Sun Jul 30 08:56:43 2006
+@@ -1,6 +1,8 @@
+ #include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
+ #include <sys/types.h>
+-#include <sys/time.h>
++#include <time.h>
+ char *charstrs[34][256];
+ int charlens[34][256];
+ char *version_str="001.001";
+@@ -157,6 +159,7 @@
+ output_afm(i);
+ }
+ }
++return 0;
+ }
+ output_afm(file)
+ {
+@@ -209,14 +212,13 @@
+ fprintf(ofp,"/UnderlineThickness 0 def\n");
+ fprintf(ofp,"end readonly def\n");
+ fprintf(ofp,"/FontName /%s def\n",fontname);
+- fprintf(ofp,"/DmEncoding [\n");
++ fprintf(ofp,"/Encoding 256 array\n");
++ fprintf(ofp,"0 1 255 {1 index exch /.notdef put} for\n");
+ for(i=0;i<16;i++){
+ for(j=0;j<16;j++)
+- fprintf(ofp," /c%02X",i*16+j);
+- putc('\n',ofp);
++ fprintf(ofp,"dup %d /c%02X put\n",i*16+j,i*16+j);
+ }
+- fprintf(ofp,"] readonly def\n");
+- fprintf(ofp,"/Encoding DmEncoding def\n");
++ fprintf(ofp,"readonly def\n");
+ fprintf(ofp,"/PaintType 0 def\n");
+ fprintf(ofp,"/FontType 1 def\n");
+ fprintf(ofp,"/FontMatrix [.001 0 0 .001 0 -0.16] readonly def\n");
+=========================================================================
+
+ After compilation with
+
+ cc -O -o wftodm wftodm.c
+
+ use it as follows:
+
+ wftodm -FontBase dg wadalab-sym/jis*.ps wadalab-gothic-0-13/goth-*.ps
+ wftodm -FontBase dm wadalab-sym/jis*.ps wadalab-mincho-0-12/min-*.ps
+ wftodm -FontBase mc wadalab-sym/jis*.ps wadalab-mincho-0-8/min-*.ps
+ wftodm -FontBase mr wadalab-sym/jis*.ps wadalab-maru-0-8/maru-*.ps
+ wftodm -FontBase mc2 wadalab-mincho-1-8/min*.ps
+ wftodm -FontBase mr2 wadalab-maru-1-8/maru*.ps
+
+ [Note: The order of the PS files on the command line doesn't matter.]
+
+ You should then get a whole set of {dg,dm,mc,mr}j[*].{afm,pfa} files in
+ your current directory, with [*]={greek,keisen,roma,russian,sy} coming
+ from sym-dir, and [*]={hira,kata,ka-kz} from the Kanji fonts.
+ {mc2,mr2}j[*].{afm,pfa} with [*]={ka-kw} are JIS X 0212 level 3 Kanji
+ font files.
+
+ Note: `wftodm.c' has been updated in Oct 97; previous versions will fail.
+
+
+3. Run the `makefont' script. It first normalizes the font matrix (to make
+ the subfonts work with pdfTeX), then it calls afm2tfm on each of the afm
+ files, and run t1disasm/t1asm (which are part of the t1utils package) on
+ each of the PFA files to convert them to PFB files which are much
+ smaller.
+
+
+4. Run the `fixwada2.pl' script to correct the glyph names. This needs the
+ perl program and the files `DNP.sfd' (from the CJK package),
+ `JIS0208.TXT', and `JIS0212.TXT' (from ftp.unicode.org, in the `OBSOLETE'
+ directory).
+
+ perl fixwada2.pl dgj jis0208
+ perl fixwada2.pl mrj jis0208
+ perl fixwada2.pl mr2j jis0212
+ perl fixwada2.pl dmj jis0208
+ perl fixwada2.pl mcj jis0208
+ perl fixwada2.pl mc2j jis0212
+
+
+5. Run the `makeuniwada.pl' script -- it needs the same auxiliary files
+ as `fixwada2.pl' -- to create virtual fonts for Unicode input encoding.
+
+ perl makeuniwada.pl dgj udgj
+ perl makeuniwada.pl mrj mr2j umrj
+ perl makeuniwada.pl dmj mc2j udmj
+ perl makeuniwada.pl mcj mc2j umcj
+
+
+Thanks
+------
+
+ Werner Lemberg <wl@gnu.org> for creating CJK and comments to this help
+ document.
+
+and
+
+ Joshua Redstone <redstone@cs.washington.edu> for contribution to non-root
+ setups.
+
+Also check out the following variables: $TEXFORMATS, $TEXINPUTS, $TEXFONTS,
+$DVIPSFONTS.
+
+
+Please send any suggestions or comments to LEUNG Hin-Tak <htl10@cam.ac.uk>.
+
+---End of wadalab.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/CEF.txt b/language/chinese/CJK/cjk-4.8.5/doc/CEF.txt
new file mode 100644
index 0000000000..0cc2bccfd5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/CEF.txt
@@ -0,0 +1,86 @@
+This is the file CEF.txt of the CJK macro package ver. 4.8.5 (16-Oct-2021).
+
+The Chinese Encoding Framework (CEF)
+------------------------------------
+
+Christian Wittern (http://www.kanji.zinbun.kyoto-u.ac.jp/~wittern/),
+developed CEF, the Chinese Encoding Framework. It is a method to embed CJK
+characters in seldom used encodings (which usually no editor provides) in
+ordinary text (which may be of any encoding). This is done by using SGML
+(Standardized Generalized Markup Language) macros of the form
+
+ &xx-yyzz;
+
+To input these characters Wittern wrote KanjiBase for Windows, essentially a
+character data base search engine written in Visual Basic. This application
+is rather obsolete today.
+
+
+`xx' in the SGML macro can have the following values:
+
+ C0 Big 5 encoded characters
+ C1 characters from CNS plane 1
+ ...
+ C7 characters from CNS plane 7
+ CX characters from a reserved encoding defined by IRIZ
+ CY private encoding
+ U Unicode characters
+
+`yy' and `zz' are the first and second byte in hexadecimal notation.
+For C0-C7, CX, and CY the 7bit notation must be used (GL).
+
+Examples:
+
+ &C0-A4CD;
+ &C4-275F;
+ &U-DCFF;
+
+
+TeX can't process these macros directly. They must be converted with one of
+the following preprocessors:
+
+ cefconv standard converter (also for use with cjk-enc.el)
+ cef5conv also converts Big 5 characters to preprocessed form
+ cefsconv also converts SJIS characters to preprocessed form
+
+ceflatex.bat is a simple batch file for DOS to show how to use the converter
+(cef5ltx.bat and cefsltx.bat are its siblings---for Unix, the scripts are
+called ceflatex, cef5latex, and cefslatex, respectively).
+
+Say
+
+ ceflatex mytext[.tex]
+
+to get mytext.tex processed. All CEF macros must be inside of a CJK (or
+CJK*) environment.
+
+To input CEF characters without preprocessing you can use the \CJKchar
+macro. Here an example:
+
+ \CJKchar[CNS4]{"27}{"5F}
+
+Note: The OS/2 script files ceflatex.cmd, etc., need REXX which you probably
+ have to install first.
+
+
+Availability
+------------
+
+The file
+
+ http://iriz.hanazono.ac.jp/pdf/eb4/x-level_kanjibase_codes.pdf
+
+contains a list of X level CJK characters defined by IRIZ. It isn't very
+useful because the document is a just a scan of some pages of the magazine
+`The Electronic Bodhidharma', published by the International Research
+Institute for Zen Buddhism (IRIZ) at the Hanazono University in Kyoto, Japan
+(iriz.hanazono.ac.jp). Note that this institute still publishes many
+Buddhist documents using CEF (there it is called `KanjiBase').
+
+More data about CEF and KanjiBase can be found at Christian Wittern's old
+home page
+
+ http://www.chibs.edu.tw/~chris/gwdg/home.htm
+
+
+---End of CEF.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/CJK.txt b/language/chinese/CJK/cjk-4.8.5/doc/CJK.txt
new file mode 100644
index 0000000000..fe1660bbc8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/CJK.txt
@@ -0,0 +1,1273 @@
+
+This is the LaTeX2e style package CJK Version 4.8.5 (16-Oct-2021)
+=================================================================
+
+It is freely distributable under the GNU Public License.
+
+
+ **************************************************
+ * *
+ * You need LaTeX 2e version 2001/06/01 or newer! *
+ * *
+ **************************************************
+
+
+Usage
+-----
+
+Use CJK.sty as a package, e.g.,
+
+ \documentclass{article}
+ \usepackage[<option>]{CJK} .
+
+See section `Caveats' below for the available options. Normally, you don't
+need them.
+
+Two new environments,
+
+ \begin{CJK}[<fontencoding>]{<encoding>}{<family>}
+ ...
+ \end{CJK}
+
+and
+
+ \begin{CJK*}[<fontencoding>]{<encoding>}{<family>}
+ ...
+ \end{CJK*}
+
+are defined. The parameters have the following meaning:
+
+ <encoding> These character sets and encodings are currently
+ implemented in CJK.enc:
+
+ Bg5 (For traditional Chinese. Mainly used in Taiwan.
+ Character set: Big 5.
+ Encoding: Big 5 without UDA2 and UDA3.)
+ Bg5+ (For traditional Chinese. Obsolete.
+ Character set: Big 5+.
+ Encoding: GBK.)
+
+ HK (For traditional Chinese. Used in Hong Kong.
+ Character set: Big 5 + HKSCS-2004.
+ Encoding: Full Big 5.)
+
+ GB (For simplified Chinese. Mainly used in
+ PR China. Also called `EUC-CN'.
+ Character set: GB 2312-1980.
+ Encoding: EUC.)
+ GBt (For traditional Chinese. Rarely used in
+ PR China.
+ Character set: GB/T 12345-1990.
+ Encoding: EUC.)
+ GBK (For Chinese. An extension of GB 2312.
+ Character set: GBK.
+ Encoding: GBK.)
+
+ JIS (For Japanese.
+ Character set: JIS X 0208:1997.
+ Encoding: EUC.)
+ JIS2 (Japanese supplementary character set,
+ Character set: JIS X 0212-1990.
+ Encoding: EUC.)
+ SJIS (For Japanese. Used mainly on PCs. Also known
+ as `MS Kanji'.
+ Character sets:
+ 1-byte characters from JIS X 0201-1997
+ (half-width katakana),
+ 2-byte characters from JIS X 0208:1997.
+ Encoding: SJIS.)
+
+ KS (For Korean. Also called `EUC-KR'.
+ Character set: KS X 1001:1992 = KS C 5601-1992.
+ Encoding: EUC.)
+
+ UTF8 (Unicode Transformation format 8, also called
+ `UTF-2' or `FSS-UTF'.
+ Character set: Unicode.
+ Encoding: UTF-8.)
+
+ CNS1 (Chinese National Standard Plane 1,
+ Character set: CNS 11643-1992 plane 1.
+ Encoding: EUC.)
+ CNS2
+ ...
+ CNS7 (Character set: CNS 11643-1992 plane 2 - 7.
+ Encoding: EUC.)
+
+ CEFX (reserved CEF character set for IRIZ.
+ Encoding: EUC.)
+ CEFY (private CEF character set.
+ Encoding: EUC.)
+
+ Note: The value `HK' can be also used for complete Big 5
+ support which needs user-defined areas 2 and 3
+ (UDA2 and UDA3), located in the ranges
+ 0x8E40-0xA0FE and 0x8140-0x8DFE, respectively.
+
+ For details on HKSCS-2004 see
+
+ http://www.info.gov.hk/digital21/eng
+ /hkscs/download/e_sect3_2004.pdf
+
+
+ These encodings (except Big 5, Big 5+, HK, GBK, SJIS, and
+ UTF-8) are simplified EUC (Extended Unix Code) character
+ sets without single shifts. The used character set slot
+ G1 stands for two-byte encodings with byte values taken
+ from the GR (Graphic Right) character range 0xA1-0xFE
+ (as defined in ISO 2022).
+
+ Note that CNS1 and CNS2 contain almost the same
+ characters in the same order as Big 5 (but in EUC).
+
+ For CEF and CNS character sets see CEF.txt also.
+
+ Big 5+ and GBK have exactly the same encoding layout
+ (but their origins differ).
+
+ Additionally, the following encodings *with* single
+ shifts are implemented, using some of the above defined
+ character sets:
+
+ EUC-JP (for Japanese.
+ Character sets:
+ Half-width katakana (from JIS X 0201-1997),
+ JIS X 0208:1997,
+ JIS X 0212-1992.)
+
+ EUC-TW (for traditional Chinese.
+ Character sets:
+ CNS 11643-1992 planes 1-7.)
+
+ EUC-JP, EUC-TW, and UTF-8 encodings can't be used in
+ preprocessed mode (see below) because it makes no sense.
+ (To be more precise, UTF-8 sequences with more than two
+ bytes can't be used.)
+
+
+ If you use this parameter it is the same as you would
+ have used \CJKenc: Writing e.g.,
+
+ \begin{CJK}{Bg5}{...}
+ ...
+
+ is identical to
+
+ \begin{CJK}{}{...}
+ \CJKenc{Bg5}
+ ...
+
+ Note: A `character set' is an ordered collection of
+ glyphs. The order of the glyphs is just for
+ defining purposes and for reference.
+
+ An `encoding' is an ordering scheme to access a
+ character set. LaTeX 2e also uses the term `input
+ encoding'.
+
+ A character set can have many encodings
+ (cf. JIS X 0208 -> EUC, SJIS).
+
+ An encoding can be used for many character sets
+ (cf. EUC -> KS X 1001, GB 2312, etc.).
+
+ Sometimes, the character set has the same name
+ as the encoding (Big 5, Big 5+, GBK).
+
+ For more details I suggest to read the document
+ cjk.inf from Ken Lunde; it is available from
+
+ ftp://ftp.ora.com/pub/examples/cjkvinfo/
+ doc/cjk.inf
+
+ A really thorough reference is his latest book
+ `CJKV Information Processing' (O'Reilly).
+
+ Throughout this CJK documentation, `encoding'
+ refers to the valid encoding/character set
+ combinations defined just above.
+
+ <fontencoding> These font encodings are currently defined: `' (empty;
+ the default), `pmC' (available for Bg5, GB, GBt, JIS,
+ and KS), `dnp' (for JIS and SJIS), `wn' (for JIS), and
+ `HL' (for KS).
+
+ `Font encoding' means the order of characters in the
+ subfonts itselves. A change of the font encoding neither
+ alters the meaning of a CJK character nor changes the
+ character code in the selected encoding.
+
+ The font encoding `pmC' is defined for compatibility
+ with the pmC package (which is obsolete). It is not
+ encouraged to use this font encoding because of wasting
+ subfonts. If possible, convert your original CJK bitmap
+ fonts with hbf2gf (see hbf2gf.txt) or other tools to CJK
+ encodings.
+
+ `dnp' implements the character order of the Dai Nippon
+ Printing fonts and is only available for JIS and SJIS
+ encoding. `wn' (only available for JIS) is the font
+ encoding for watanabe jfonts. There exists a linking
+ package which maps the watanabe jfonts onto the dnp
+ naming scheme (thus you can use the real dnp fonts for
+ printing and the mapped jfonts for previewing). See the
+ documentation files in the `japanese' subdirectory for
+ further details.
+
+ `HL' allows the use of the new HLaTeX fonts (starting
+ with version 1.0); note that the definition of fonts is
+ rather different compared to HLaTeX. See the section
+ `Korean input' below for a detailed description.
+
+ You can change the font encoding per encoding with the
+ command \CJKfontenc; the first parameter is the
+ encoding, the second the font encoding.
+
+ <family> It is impossible to know in advance what fonts are
+ available at your site; look at the example FD (font
+ definition) files how to create or modify appropriate FD
+ files suiting your needs. See fonts.txt also for further
+ hints.
+
+ If this parameter is empty, the default value given in
+ CJK.enc is selected: `song' for all encodings except KS
+ (which defaults to `mj'). If you use this parameter it
+ is the same as you would have used \CJKfamily; all
+ encodings then use this family:
+
+ \begin{CJK}{...}{song}
+ ...
+
+ is identical to
+
+ \begin{CJK}{...}{}
+ \CJKfamily{song}
+ ...
+
+ You can change the families per encoding (and font
+ encoding) with the command \CJKencfamily; the first
+ parameter is the encoding, the second the family, the
+ optional argument is the font encoding. This overrides
+ the default value.
+
+ Note that \CJKfamily or a non-empty `family' parameter
+ of the CJK environment overrides any \CJKencfamily
+ commands. Say `\CJKfamily{}' to enable \CJKencfamily
+ again.
+
+
+ The CJK* environment swallows unprotected spaces and newlines after a
+ CJK character (the usual habit for Chinese and Japanese text), whereas
+ CJK does not (for European and Korean text). You can switch between
+ these two `modes' with \CJKspace (CJK* -> CJK) and \CJKnospace (CJK ->
+ CJK*).
+
+ If you use cjk-enc.el, you don't need to specify a CJK environment. This
+ is done automatically. See cjk-enc.txt for details.
+
+
+This is a typical example:
+
+ \begin{CJK*}{GB}{kai}
+ ...
+ Chinese simplified text in GB encoding
+ ...
+ \end{CJK*}
+
+
+How it works
+------------
+
+Asian logographs can't be represented completely with one byte per
+character. (At least) two bytes are needed, and the most common encoding
+schemes (UTF-8, GB, Big 5, JIS, KS, etc.) have a certain range for the first
+byte (usually 0xA1-0xFE or a part of it) which signals that this and the
+next byte represent an Asian logograph. This means almost all plain ASCII
+characters (characters between 0x00 and 0x7E) are left undisturbed, and the
+remaining character codes (0x80-0xFF) are assigned to a CJK encoding,
+creating a multiple-byte encoding with 1-byte and 2-byte characters (and
+even 3-byte and 4-byte characters for UTF-8).
+
+The character 0x7F is reserved also for the CJK package. See the section
+`Preprocessors' below.
+
+Encodings like EUC-TW access additional character sets using escape
+characters (0x8E and 0x8F) which signals that the next character comes
+from another character set (which is `shifted' to the GR range); up to
+four bytes are needed for a single character. Example:
+
+ 0x8E 0xA3 0xB7 0xCE
+
+ 0x8E is a single shift escape character; 0xA3 selects CNS plane 3, and
+ 0xB7CE is the character code (in GR representation) in this plane.
+
+CJK.sty makes the character codes 0x7F and 0x81-0xFE active inside of the
+CJK environment and assigns macros to the active characters which then
+select the proper font and character. The real mechanism is a bit more
+complex to assure robustness (it was borrowed and modified from LaTeX 2e's
+inputenc.sty) and correct handling of punctuation characters.
+
+* emTeX users: you must activate 8bit input and output while creating the
+* LaTeX2e format file! Do this by using the switches -o and -8 (additional
+* to the iniTeX switch -i).
+*
+* Example:
+*
+* tex386 -i -o -8 latex.ltx
+
+
+Some internals
+--------------
+
+Internally three levels (bindings, encodings, character macro sets) are
+defined:
+
+ active characters
+ |
+ +--------------> bindings (standard, SJIS, UTF8)
+ |
+ active character macros
+ |
+ +--------------> encodings (GB, Big 5, ...) +
+ | font encodings (none, dnp, wn, pmC, HL)
+ |
+ subfont selecting macros
+ |
+ +--------------> character macro sets (standard, Big 5, ...)
+ |
+ character selecting macros
+
+User-selectable are only the encoding and the font encoding (as explained
+above); the other levels are selected by the CJK package.
+
+These levels correspond to the following internal macros:
+
+ \CJK@xxxxBinding (`xxxx.bdg' files):
+ Possible values for `xxxx' are: standard, SJIS, UTF8, EUC-JP, and
+ EUC-TW.
+
+ \CJK@xxxxEncoding (`xxxx.enc' files):
+ Possible values for `xxxx' are: standard, extended, Bg5, SJIS, KS, UTF8,
+ pmCsmall, pmCbig, JISdnp, SJISdnp, KSHL, EUC-JP, and EUC-TW.
+
+ \CJK@xxxxChr (`xxxx.chr' files):
+ Possible values for `xxxx' are: standard, Bg5, KS, SJIS, UTF8, pmC,
+ HLaTeX, EUC-JP, and EUC-TW.
+
+In preprocessed mode (see below), no bindings are used.
+
+
+And now a more detailed description of the various encodings. Please note
+that you should never access these macros directly.
+
+ \CJK@standardEncoding is used for EUC encodings with the first and second
+ byte in the range 0xA1-0xFE (GB, GBt, JIS, JIS2, CNS, CEF).
+
+ \CJK@extendedEncoding is used for Big 5+ and GBK encodings. The first byte
+ is in the range 0x81-0xFE, the second byte in the range 0x40-0xFE (with a
+ gap at 0x7F).
+
+ \CJK@Bg5Encoding is used for Big 5 encoding with the first byte in the
+ range 0xA1-0xFE and the second byte in the range 0x40-0xFE (with a gap
+ from 0x7F-0xA0).
+
+ \CJK@SJISEncoding is used for SJIS encoding; one-byte characters are in
+ the range 0xA1-0xDF, two-byte characters have the first byte in the ranges
+ 0x81-0x9F and 0xE0-0xEF, the second byte runs from 0x40 to 0xFC except
+ 0x7F. Since SJIS only squeezes the JIS X 0208 character set into a new
+ scheme without changing the ordering, fonts produced by hbf2gf or ttf2pk
+ look the same for EUC and SJIS encoding except one-byte SJIS characters.
+ For more details see below the section `SJIS encoding'.
+
+ \CJK@KSEncoding is used for the KS X 1001 character set in EUC encoding.
+ Two sets of subfonts are defined, one for Hangul syllables and elements,
+ and a second for Hanja. For more details see below the section `Korean
+ input'.
+
+ \CJK@UTF8Encoding is used for Unicode in UTF-8 encoding. The first byte is
+ in the range 0xC0-0xDF for two-byte values, 0xE0-0xEF for three-byte
+ values, and 0xF0-0xF4 for four-byte values. The other byte(s) are in the
+ range 0x80-0xBF. Note that CJK expects two hexadecimal digits as a running
+ number in the font name (as defined in UTF8.enc) instead of two decimal
+ digits for subfonts covering characters up to U+FFFF. Subfonts for Unicode
+ values greater than 0xFFFF use four hexadecimal digits in the font name.
+ Select the option `unicode yes' in the hbf2gf config file if you use
+ hbf2gf to transform bitmap fonts in HBF format to PK fonts as used by
+ CJK.sty . Three commands (\CJKCJKchar, \CJKhangulchar, and \CJKlatinchar)
+ control the handling of intercharacter glue: \CJKCJKchar (the default)
+ selects CJK style (using \CJKglue), \CJKhangulchar selects hangul style
+ (using \CJKtolerance), and \CJKlatinchar selects none of them. This
+ encoding does not work in preprocessed mode.
+
+ \CJK@pmCsmallEncoding and \CJK@pmCbigEncoding can be activated with
+ \pmCsmall (this is the default) and \pmCbig inside the CJK environment.
+ Note that the original pmC fonts have two character sizes per font (the
+ bigger ones with an offset of -128); Bg5pmC encoded fonts cannot contain
+ big characters. The names of the fonts in the FD files reflect the
+ modifications added by Marc Leisher <mleisher@nmsu.edu> to the original
+ poor man's Chinese (pmC) package written by Thomas Ridgeway
+ <ridgeway@blackbox.hacc.washington.edu>.
+
+ \CJK@JISdnpEncoding is the JIS X 0208 character set in EUC encoding with
+ dnp fonts. The main difference (besides the offsets) is the composition of
+ real font names; a dnp font name consists of name stem + subfont name +
+ designsize: an example is dmjkata10. Note that the wadalab PS fonts omit
+ the designsize part in the font names, thus it is sufficient (and even
+ better) to use the `CJK' size functions in FD files instead of the `DNP'
+ ones. \CJK@JISwnEncoding is similar to JISdnp encoding but uses Watanabe
+ jfonts; \CJK@SJISdnpEncoding maps SJIS onto dnp encoded fonts.
+
+ \CJK@KSHLEncoding finally uses the new fonts of the HLaTeX package for
+ Korean; three internal encodings are necessary to represent it. See the
+ next section for details.
+
+ \CJK@EUC-TWEncoding and \CJK@EUC-JPEncoding are quite similar to
+ \CJK@standardEncoding but implement single shift access additionally. They
+ can't be used in preprocessed mode.
+
+
+Korean input
+------------
+
+There is already a package which handles Hangul and Hanja (but no other
+CJK character sets): HLaTeX.
+
+To use KS encoding, say
+
+ \begin{CJK}{KS}{}
+ ...
+ \end{CJK} .
+
+These font switches are available inside the environment:
+
+ hangul fonts from former hlatex (in the han font packages):
+
+ * \mj MyoungJo (default)
+ \gt Gothic
+ \gs BootGulssi
+ \gr Graphic
+ \dr Dinaru
+
+ hangul fonts from former jhtex (in the han1 font packages):
+
+ * \hgt Hangul Gothic
+ * \hmj Hangul MyoungJo (MunHwaBu fonts)
+ * \hpg Hangul Pilgi
+ \hol Hangul Outline (MyoungJo)
+
+
+If a font is marked with a star, real bold series are available. All other
+bold fonts are defined using poor man's boldface (see below the section
+`Poor man's boldface').
+
+See the file INSTALL how to get these fonts. Both `han' and `han1' packages
+contain bitmap fonts only (in PK format).
+
+Note that the font switches are abbreviations for \CJKencfamily and not for
+\CJKfamily.
+
+
+For characters with the first byte in the ranges 0xA1-0xAF (except 0xA4) and
+0xC9-0xFD (graphic characters, hanja, archaic hangul, etc.) fonts with the
+encoding C60 are used. C61 is assigned to hangul fonts (for hangul elements
+with the first byte 0xA4 and hangul characters in the range 0xB0-0xC8). This
+enables the use of many hangul fonts and perhaps only one or two different
+hanja fonts. If you want to use C60 encoding for hangul characters also say
+\CJKhanja. The opposite command is \CJKhangul (of course this works only if
+you have hangul characters in the C60 font).
+
+Archaic hangul elements (KS X 1001 0xA4D5-0xA4FE) and the character
+KS X 1001 0xA4D4 are only accessible if \CJKhanja is active.
+
+You should convert your KS X 1001 hanja fonts using hbf2gf (or ttf2pk) as
+described above.
+
+
+To use HLaTeX fonts, say
+
+ \begin{CJK}[HL]{KS}{}
+ ...
+ \end{CJK} .
+
+All HLaTeX fonts are PS fonts; these font switches are available inside the
+environment (as defined in HLaTeX 1.0; this differs from older versions):
+
+ \bm Bom
+ * \dn Dinaru
+ * \gr Graphic
+ + \gs Gungseo
+ + * \gt Gothic
+ \jgt Jamo Gothic
+ \jmj Jamo Myoungjo
+ \jnv Jamo Novel
+ \jsr Jamo Sora
+ + * \mj Myoungjo
+ * \pg Pilgi
+ \pga Pilgia
+ \ph Pen Heulim
+ \pn Pen
+ + \sh Shinmun Myoungjo
+ + \tz Typewriter
+ \vd Vada
+ \yt Yetgul
+
+If a font is marked with an asterisk, real bold series are available. All
+other fonts are defined using poor man's boldface (see below). Only fonts
+marked with a plus sign are available for hanja too; the other font families
+are mapped to these six hanja families. For backwards compatibility, \ol and
+\sm are defined also; both are now equivalent to \mj.
+
+UN Koaung-Hi <koaunghi@kornet.net>, the author of HLaTeX, defines three
+groups of fonts: hangul, hanja, and symbols. The CJK package needs three
+internal encodings (C63 for hanja, C64 for symbols, and C65 for hangul) to
+represent the font encoding scheme of HLaTeX.
+
+HLaTeX options:
+
+The option `hardbold' has been integrated into the FD files---I consider the
+fact whether you have bold series available or not as a fundamental local
+font setup decision which should be coded into the FD files and not into the
+document. As a consequence you have to change your FD files to emulate the
+`softbold' option with CJK's poor man's boldface. Example:
+
+ \DeclareFontShape{C63}{gt}{bx}{n}{<-> CJK * wgtb}{}
+
+should be changed to
+
+ \DeclareFontShape{C63}{gt}{bx}{n}{<-> CJKb * wgt}{\CJKbold} .
+
+and similar font definitions too.
+
+[Well, it is not really necessary to modify the FD files to emulate the
+ `softbold' option: just insert the appropriate \DeclareFontShape and/or
+ \DeclareFontFamily commands in the preamble of your document.]
+
+Finally a warning: Please bear in mind that CJK does not emulate the
+behaviour of HLaTeX, it only supports its fonts.
+
+
+Big 5 encoding
+--------------
+
+See below the section `Preprocessors' for the preferred input method using
+bg5conv.
+
+The characters `\', `{', and `}' are used as second bytes in the Big 5
+encoding. This collides with TeX. If you write Big 5 text mixed with other
+encodings (and you don't want/can't use Mule, Emacs or bg5conv), you should
+use the Bg5text environment which changes the category codes of these
+characters. The command prefix is now the forward slash `/', and the
+grouping characters are `(' and `)', respectively.
+
+An example:
+
+ \begin{CJK}{Bg5}{song}
+ \begin{Bg5text}
+ ...
+ /begin(center)
+ ...
+ /end(center)
+ ...
+ /end(Bg5text)
+ \end{CJK}
+
+To get the `/', `(', and `)' characters, write `//', `/(', and `/)' inside
+the Bg5text environment.
+
+This environment is ugly, and some commands like \newcommand don't work in
+it. Starting with CJK version 3.0 it is also possible to use different
+encodings in preprocessed mode, thus this environment is almost obsolete.
+
+Instead of using the Bg5text environment you can protect the offending
+second bytes with a backslash, i.e., `\{', `\}', `\\' (using a non-Chinese
+editor). This doesn't increase the readability of the Chinese text, but for
+short texts it is perhaps more comfortable. Alas, it doesn't work in page
+header commands because the macros `\{', etc., are not expanded.
+
+Be careful not to use any commands inside the Bg5text environment which
+write something into an external file (commands like \chapter, etc.).
+
+If it is not possible to avoid Big 5 character codes with `\', `{', or `}'
+outside of the Bg5text environment (e.g., having Big 5 text in a \chapter or
+\section command), you can replace them with the \CJKchar macro manually:
+
+ \section{This is a problematic Big 5 character: \CJKchar{169}{92}}
+
+The parameters are the first and second byte of the Big 5 character code.
+You can also use hexadecimal or octal notation. See commands.txt for a full
+description of \CJKchar.
+
+An environment `HKtext' similar to `Bg5text' is defined for the `HK'
+encoding; the same restrictions as explained above hold.
+
+
+SJIS encoding
+-------------
+
+See below the section `Preprocessors' for the preferred input method using
+sjisconv.
+
+Shift-JIS encoding is widely used on PCs for Japanese. A special feature is
+the simultaneous use of one-byte and two-byte encoded characters which arose
+because of backwards compatibility. The two-byte encoded character set is
+completely identical to the JIS X 0208 character set, even the ordering is
+the same. Thus there is no need for special two-byte SJIS FD files; the font
+definition files for JIS X 0208 are used.
+
+The situation is different for one-byte SJIS characters, the so called
+`half-width' Katakana (encoding C49) from JIS X 0201. Usually you should use
+full-width Katakana fonts too to get a typographically correct output. The
+exception is a typewriter font which should really have only the half width
+of normal Kanji or Katakana to represent screen snapshots or similar things.
+The use of C49 encoding can be controlled with the \CJKhwkatakana and
+\CJKnohwkatakana macros (see commands.txt for more information).
+
+Fonts in C49 encoding scheme must have the character glyphs at the code
+points 0xA1-0xDF.
+
+An environment `SJIStext' similar to `Bg5text' is defined; the same
+restrictions as explained in the previous section hold.
+
+
+Big 5+ and GBK encodings
+------------------------
+
+See below the section `Preprocessors' for the preferred input method using
+extconv.
+
+These relatively new encodings are used in some older MS Windows versions in
+Taiwan (Big 5+) and Mainland China (GBK). Both encodings implement the whole
+CJK character repertory of Unicode in the Basic Multilingual Plane
+(U+4E00-U+9FFF, approx. 21000 characters) and a few other characters but
+still try to be backwards compatible. All code points of Big 5 are identical
+to the code points in Big 5+, and the same holds for GB 2312-1980 and GBK.
+Note that the default CJK font encodings for Big 5+ and Big 5 are *not*
+compatible. The same is true for GBK and GB2312.
+
+Two new environments, `Bg5+text' and `GBKtext' similar to `Bg5text' are
+defined also; the same restrictions as above hold.
+
+
+CJK captions
+------------
+
+To use the supplied caption files you need the koma-script package. The main
+reason why I choose these style files instead of the standard classes is the
+fact that the author of koma-script is willing to support CJK. On the other
+hand, the philosophy of the LaTeX 2e maintainers is not to add new features
+to the standard classes.
+
+The koma-script style files are maintained by Markus Kohm
+(Markus.Kohm@gmx.de); they are available at the CTAN hosts.
+
+
+If you say \CJKcaption{<caption>} inside of a CJK environment, the file
+<caption>.cpx is loaded (.cpx is a preprocessed version of .cap)
+
+Example:
+
+ \documentclass{scrartcl}% this is a KOMA-script class
+ \usepackage{CJK}
+
+ \begin{document}
+ \begin{CJK*}{GB}{kai}
+ \CJKcaption{GB}% loading GB.cpx
+
+ \chapter{blablabla}% is formatted in Chinese
+
+ ...
+
+ \end{CJK*}
+ \end{document}
+
+
+Note that for Korean three caption files are available: hanja.cap for
+captions using hanja (this corresponds to HLaTeX's `hanja' option) and
+two caption files (hangul.cap and hangul2.cap) using hangul.
+
+For GBK encoding use the GB.cap file. Similarly, use Big5.cap for Big 5+
+encoding.
+
+In case you want to edit a CAP file, you must create its corresponding
+CPX file too. After editing, preprocess the file with
+
+ bg5conv < xxx.cap > xxx.cpx
+
+(for caption files in SJIS encoding use sjisconv instead), then change
+the file name identification strings in the CPX file accordingly.
+
+In UTF-8 encoding, the following caption files are available.
+
+ ja Japanese
+ ko-Hang Korean using Hangul
+ ko-Hang2 another version using Hangul
+ ko-Hani Korean using Hanja
+ zh-Hans Chinese simplified
+ zh-Hant Chinese traditional
+
+Since those files are identical to its encoding-specific counterparts,
+only CPX versions are provided.
+
+
+Underlining and other font effects
+----------------------------------
+
+Full support for Donald Arseneau's ulem.sty package (beginning with version
+2000-05-26) is available by using CJKulem.sty (which loads ulem.sty
+automatically). No changes to ulem's interface.
+
+Even more font effects specific to CJK scripts can be found in CJKfntef.sty;
+usage examples can be found in the file CJKfntef.tex .
+
+A word of caution: Don't use \CJKfamily{...} or similar commands within the
+argument to \uline and friends.
+
+
+Poor man's boldface
+-------------------
+
+Most CJK fonts available in the public domain do not have bold series. To
+emulate boldface by printing the character three times with slight
+horizontal offsets some special features are used:
+
+ CJK uses \CJKsymbol internally instead of \symbol to access CJK
+ characters (after the correct font has been selected). This macro
+ honours the \ifCJK@bold@ flag; if set it emulates boldface. The default
+ value of the horizontal offset is 0.015em; to change it you should
+ redefine \CJKboldshift, the macro which holds this shift.
+
+ \ifCJK@bold@ can be set and unset globally with the commands \CJKbold
+ and \CJKnormal. These commands are intended to be used with
+ \DeclareFontShape as follows:
+
+ \DeclareFontShape{C00}{CNS}{m}{n}{<-> CJK * csso12}{}
+ \DeclareFontShape{C00}{CNS}{bx}{n}{<-> CJKb * csso12}{\CJKbold}
+
+ It should be never necessary to use \CJKnormal since \selectfont has
+ been modified to always reset \ifCJK@bold@ and to call the
+ loading-settings (i.e., the sixth parameter) of \DeclareFontShape if
+ a CJK size function is in use.
+
+ Additionally, new size functions (CJKb, sCJKb, CJKfixedb, sCJKfixedb,
+ and others; see fonts.txt for details) have been introduced which are
+ completely identical to its counterparts without the final `b'. The only
+ reason to use them is, as shown in the above example, to make the fifth
+ parameter of \DeclareFontShape for bold series different from the one
+ for medium series (LaTeX 2e uses this parameter as a macro name to
+ execute loading-settings, thus they must not be equal).
+
+
+Embedding non-CJK words into CJK text
+-------------------------------------
+
+To enable line breaking you should separate non-CJK words and CJK characters
+with horizontal space. But the ordinary space dimensions inserted by TeX
+based on the current non-CJK font often looks bad because the surrounding
+CJK characters are printed almost side by side (the non-stretched value of
+\CJKglue is 0pt). Especially in extreme cases which happen in underfull
+\hbox commands the default space distorts the CJK text too much.
+
+If you say \CJKtilde, the active `~' character doesn't produce an
+unbreakable space; instead, the following definition is used:
+
+ \def~{\hspace{0.25em plus 0.125em minus 0.08em}} .
+
+This defines a space which has a normal width of a quarter (CJK) space. See
+the file japanese/shibuaki.txt for some further details.
+
+Here an example:
+
+ ThisIsChineseText~test~ThisIsChineseText
+
+ ^^^^^^
+
+Simply use tilde characters instead of spaces at the border between CJK and
+non-CJK characters.
+
+In BibTeX entries, you have to use `{~}' instead of `~'.
+
+The original definition of `~' is available as \nbs (non-breakable space, a
+shorthand for the LaTeX command \nobreakspace). To return to the standard
+`~' macro definition say \standardtilde.
+
+Note that the opposite is not true: To embed CJK words into non-CJK text an
+ordinary space is optimal.
+
+If you use Mule or Emacs 20 please consider the use of cjktilde.el in
+utils/lisp. This small package defines a minor mode (cjk-tilde-mode) which
+exchanges the space key with the tilde key. It is convenient to bind this
+mode to a key, e.g., C-insert.
+
+For AUC TeX you can also use cjkspace.el which is similar (but not
+identical) to cjktilde.el .
+
+
+Preprocessors
+-------------
+
+Using the `XXXtext' environments like `Bg5text' is a mess. Thus three
+preprocessors are provided to overcome the restrictions of the XXXtext
+environments: bg5conv and sjisconv Big 5 and SJIS encoding, and extconv for
+GBK and Big 5+ encoding characters. Compile them with
+
+ cc -O -s -o bg5conv bg5conv.c
+ cc -O -s -o sjisconv sjisconv.c
+ cc -O -s -o extconv extconv.c
+
+and move the binaries to a location in your path, e.g., /usr/local/bin in
+a Unix system. [`cc' is the C compiler.]
+
+See the batch files bg5latex[.bat], etc., for examples how to use them.
+
+Each Big 5, Big 5+, or GBK character (and each two-byte encoded SJIS
+character) `XY' is converted into the form `^^7fX^^7fZZZ^^7f'; ZZZ is the
+decimal equivalent of Y, and ^^7f is a character with the hex value 0x7F.
+The use of bg5conv/sjisconv/extconv is completely transparent; no changes to
+your documents are necessary.
+
+It is possible to mix preprocessed and non-preprocessed data; simply use
+\CJKenc to change the encoding; you can use \CJKinput and \CJKinclude to
+load preprocessed data (see commands.txt for a detailed description).
+
+If you use traditional Chinese characters within Mule or Emacs 20, it is not
+necessary to call bg5conv after the use of *cjk-coding* output encoding (but
+it is necessary if you write out the file in Big 5 encoding).
+
+Note 1: The OS/2 script files bg5latex.cmd, etc., need REXX which you
+ probably have to install first.
+
+Note 2: With extconv, you can also preprocess encodings like GB or SJIS.
+ This has the advantage that such data is robust against any changes
+ of the uc/lccodes in the range 0xA1-0xFE. Only three encodings can't
+ be preprocessed: UTF8, EUC-TW, and EUC-JP.
+
+
+Customization
+-------------
+
+In case you want to add encodings, font encodings, and related things, or if
+you must change or customize some CJK settings, you should use a
+configuration file called `CJK.cfg' which is loaded (if it exists) by
+CJK.sty just before the final \endinput command.
+
+
+Caveats
+-------
+
+ o You can of course use CJK environments inside of a CJK environment,
+ but it is possible that you must increase the so called `save size'
+ of TeX (with emTeX you can adjust this with -ms=...; web2c users
+ can control it with the `save_size' parameter in texmf.cnf).
+
+ The CJK package has optional arguments which control the scope of
+ CJK environments:
+
+ lowercase If you want to use \lowercase with encodings
+ inside CJK environments. You need less save size
+ using the `encapsulated' option if `lowercase'
+ is not set. You must use bg5conv (sjisconv) or
+ cjk-enc.el to use Big 5 (SJIS) characters with
+ this option.
+
+ Use this with caution! All \lccode values in the
+ range 0x80-0xFF are set to zero, thus disabling
+ TeX's hyphenation mechanism for words which
+ contain characters of this range in the *input
+ encoding* (e.g., Latin-1 encoded words with
+ accents). This is due to an unfortunate mangling
+ of the input and output encoding mechanism in
+ TeX itself.
+
+ global \lccode (if `lowercase' set), \uccode, \catcode
+ and the activation of the characters 0x81-0xFE
+ are globally modified (\lccode and \uccode reset
+ to 0). This is the most economical mode
+ concerning save size, but you can't have CJK
+ environments inside of CJK environments or other
+ environments which manipulate the character
+ range 0x81-0xFE.
+
+ All CJK font selection commands are globally too!
+
+ Packages which change some of the above values
+ only once (e.g., in the preamble) also don't
+ work after the first use of a CJK environment.
+
+ cjk-enc.el automatically selects this option.
+
+ local \lccode (if `lowercase' set) and \uccode
+ together with bindings are modified globally.
+ This is the default. You can stack CJK
+ environments.
+
+ active If activated, bindings are local additionally.
+ You need this option if you want to mix
+ preprocessed text with non-preprocessed text in
+ nested CJK environments. This can happen if you
+ merge texts in various encodings.
+
+ encapsulated If you want to access e.g., T1 fonts directly
+ (i.e., without the macros defined in t1enc.def)
+ or if you want to use a non-CJK LaTeX 2e input
+ encoding outside of the CJK environment (e.g.,
+ `latin1' for Western European, `latin2' for
+ Eastern European), you must use this option.
+ This also ensures that \uppercase and \lowercase
+ (together with \MakeUppercase and
+ \MakeLowercase) work correctly. All values
+ mentioned above are local, so you can stack
+ environments. This option probably causes an
+ overflow of the save size.
+
+ Note: All macro packages which access T1 fonts
+ with the macros defined in t1enc.def work in CJK
+ environments! E.g., the command `"s' of
+ german.sty works with \MakeUppercase too.
+
+
+ Say
+
+ \usepackage[<option>]{CJK}
+
+ to activate <option>.
+
+ o There is another way to overcome the problem of stacked
+ environments. CJK implements four CJK attribute switches: \CJKenc,
+ \CJKfontenc, \CJKencfamily, and \CJKfamily; see commands.txt for a
+ detailed description. If you need two different encodings/families
+ at the same output line, you must use these macros.
+
+ An example for \CJKfamily:
+
+ \begin{CJK}{GB}{song}
+ ... Text in GB song ... \CJKenc{GBt}
+ ... Text in GBt song ... \CJKfamily{kai}
+ ... Text in GBt kai ...
+ \end{CJK}
+
+ An example for \CJKencfamily:
+
+ \CJKencfamily{Bg5}{fs}% fangsong
+ \CJKencfamily{GB}{kai}
+
+ \begin{CJK*}{}{}
+ \CJKenc{Bg5} ... Text in Big 5 fangsong ...
+ \CJKenc{GB} ... Text in GB kai ...
+ \end{CJK*}
+
+ Contrary to \begin{CJK}{...}{...} it is not necessary to start a new
+ line in your TeX document file after \CJKenc.
+
+ o A similar command to \CJKchar is \Unicode{<byte1>}{<byte2>} to
+ access Unicode characters (real Unicode values, not UTF-8 encoded
+ Unicode) directly; the parameters are the first (high) and second
+ (low) byte of the Unicode. \Unicode works only in UTF-8 encoding; in
+ all other encodings you must use \CJKchar[UTF8]{<byte1>}{<byte2>}
+ instead.
+
+ For Unicode characters greater than U+FFFF, put the first two bytes
+ into the first argument, and the third byte into the second
+ argument. Examples are \Unicode{"25E}{"9A} and
+ \CJKchar[UTF8]{"25E}{"9A} to represent U+25E9A.
+
+ o CJK disables \MakeUppercase (preserving the command as
+ \CJKuppercase) if you select Big 5 or SJIS encoding without using
+ bg5conv or sjisconv. This usually affects the headers of the LaTeX
+ 2e standard classes only.
+
+ o Because CJK.sty and MULEenc.sty insert glue between CJK (and Thai)
+ characters, it is possible to get unwanted line breaks in verbatim
+ environments if lines are too long. To avoid this, use the command
+ \CJKverbatim in combination with the `verbatim' package. It installs
+ a hook which disables \CJKglue and \Thaiglue in verbatim
+ environments.
+
+
+Possible errors
+---------------
+
+ o If you write Chinese (or Japanese) text, don't forget to suppress
+ the linefeed character with a trailing `%' in the CJK environment,
+ otherwise you get unwanted spaces in the output. On the other side,
+ say `\ ' or something similar inside the CJK* environment to get a
+ space after a CJK character.
+
+ o To suppress a line break before a CJK character, say \CJKkern. This
+ command prevents the insertion of \CJKglue before the CJK character.
+
+ You may wonder about the strange name: a small kern (2 sp) between
+ two CJK characters signals that the first one is a punctuation
+ character.
+
+ o If you get the error message: `\CJK... undefined' or other `...
+ undefined ...' messages and you can't find an error, try inserting
+ \newpage, \clearpage, or \cleardoublepage (the latter for two-column
+ printing) before saying \end{CJK} or \end{CJK*}. This can happen if
+ LaTeX 2e writes headers, footers, or index entries (both \index and
+ \printindex) of a page containing CJK characters after closing the
+ CJK environment.
+
+ In case of footnotes with CJK characters which are split across
+ pages, you have to close the CJK environment on the page on which
+ the particular footnote ends (probably preceded by a \newpage
+ command).
+
+ A similar error message from CJKutf8.sty (with the same solution) is
+
+ Package inputenc Error:
+ Unicode char \u 8: XXX not set up for use with LaTeX
+
+ o A similar message to the one mentioned in the last item can be
+ caused by using the \EveryShipout command from everyshi.sty; here
+ the reason is exactly the opposite, namely the possible use of a
+ non-CJK font within an implicit CJK environment. For example, if
+ you have
+
+ \EveryShipout{
+ \fontfamily{phv}%
+ \selectfont
+ ...
+ }
+
+ it can happen that LaTeX tries to use family `phv' for a `CXX'
+ encoding. The solution is to specify the encoding in \EveryShipout
+ also:
+
+ \EveryShipout{
+ \fontfamily{phv}%
+ \fontencoding{T1}%
+ \selectfont
+ ...
+ }
+
+ o Some file editors insert a Byte Order Mark (BOM, U+FEFF) even if
+ they emit UTF-8. This sequence consists of the three bytes 0xEF
+ 0xBB 0xBF, always to be found at the very beginning of a file,
+ and which should be ignored.
+
+ Unfortunately, there is no way to handle them automatically in the
+ CJK package so that they don't produce output or warnings (or even
+ error messages) -- it would be necessary to add a hack to the LaTeX
+ kernel itself. In other words, these three bytes must be removed
+ before LaTeX is called.
+
+ o If you get overfull \hbox'es caused by CJK characters, try to
+ increase \CJKglue. It defines the glue between CJK characters; the
+ default definition is
+
+ \newcommand{\CJKglue}{\hskip 0pt plus 0.08\baselineskip} .
+
+ \CJKglue is inserted by CJK.sty between CJK characters (except
+ punctuation characters as defined in the punctuation tables; see
+ CJK.enc for the lists). You should separate non-CJK text from CJK
+ characters with spaces to enable hyphenation, or you write
+ \CJKtilde and then use `~' instead of spaces to embed non-CJK text
+ into CJK characters.
+
+ o If you get overfull \hbox'es caused by Hangul syllables, try to
+ increase \CJKtolerance. The default definition is
+
+ \newcommand{\CJKtolerance}{400} .
+
+ Alternatively, try to increase \emergencystretch (which is a TeX
+ primitive), setting it to a reasonable value.
+
+ o The default definition of \CJKglue can cause problems with CJK
+ characters within a `tabular' environment since the environment sets
+ \baselineskip to zero, effectively disabling inter-character glue.
+ If you need stretching (for example by using \makebox with the `s'
+ position argument), you must redefine \CJKglue, before entering the
+ `tabular' environment, to something like this:
+
+ \def\CJKglue{\hskip 0pt plus 1pt}
+
+ o It is not possible to start a new encoding inside of a verbatim
+ environment which has not been loaded before (CJK.sty emits an
+ \input ... command which causes the encoding file to be printed
+ verbatim instead of being executed). In this case, write a proper
+ \CJKenc{...} command before opening the verbatim environment.
+
+ Example:
+
+ \CJKenc{JIS} % this loads standard.enc and standard.chr
+
+ \begin{verbatim}
+ ...
+ first time JIS characters appear
+ ...
+ \end{verbatim}
+
+
+ cjk-enc.el does this automatically for you.
+
+ o If you get an error message which looks like this:
+
+
+ ! Undefined control sequence.
+ try@size@range ...extract@rangefontinfo font@info
+ <-*>@nil <@nnil
+
+
+ then you are using an unknown family for a CJK encoding.
+
+ Reason: If you declare an NFSS font encoding in the standard way the
+ corresponding FD file for the default font is loaded. For the CJK
+ package this would be almost 30 files which is inacceptable. To
+ avoid this overhead NFSS is faked with some rudimentary definitions
+ just enough to pass the NFSS tests. Of course this has a
+ disadvantage: An unknown CJK family causes the above error instead
+ of switching to the fallback family usually defined with
+ \DeclareFontSubstitution. Nevertheless, replacing an undefined
+ series or shape works correctly.
+
+ The CJK package's default family value is `song' for all encodings
+ except KS; to avoid the error just described in cases you start an
+ environment with an empty family parameter the files `XXXsong.fd'
+ for all encodings `XXX' (except for KS) are already provided.
+
+ o It is neither possible to use a CJK character in a \cite command of
+ standard LaTeX, nor is it possible to use the `alpha' citation
+ style. This is a limitation of LaTeX and not of the CJK package.
+
+ o Sometimes it is necessary to define or redefine a command or
+ environment globally in the preamble, using CJK characters. Example:
+
+ \newtheorem{Them}{some Chinese characters}[section]
+
+ This won't work directly because of the Chinese characters,
+ producing an error. The next idea is to use a CJK environment in the
+ preamble:
+
+ \begin{CJK}{...}{...}
+ \newtheorem{Them}{some Chinese characters}}[section]
+ \end{CJK}
+
+ Don't be surprised that this also fails! Most commands like
+ \newtheorem expand to \def which define a macro locally only;
+ consequently, the just defined command is undefined again after
+ leaving the CJK environment.
+
+ The correct solution is to use a globally defined macro:
+
+ \begin{CJK}{...}{...}
+ \gdef\ChineseTheorem{some Chinese characters}
+ \end{CJK}
+
+ \newtheorem{Them}{\ChineseTheorem}[section]
+
+ In case you still have problems caused by premature expansion, add
+ \protect, e.g.
+
+ \newcites{Them}{\protect\ChineseTheorem}
+
+ o The \makelabels command of letter.sty needs special treatment if you
+ have an address with CJK characters because it uses the
+ \AtEndDocument hook to write out its data. Since \AtEndDocument is
+ called by \end{document} after all environments have been closed
+ already, a CJK environment must be explicitly inserted into the AUX
+ file. Example:
+
+ \documentclass{letter}
+
+ \usepackage{CJK}
+
+ \makeatletter
+ \AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@mainaux{\string\begin{CJK*}{...}{...}}%
+ \fi}
+ \makelabels
+ \AtEndDocument{%
+ \if@filesw
+ \immediate\write\@mainaux{\string\end{CJK*}}%
+ \fi}
+ \makeatother
+
+
+ \begin{CJK*}{...}{...}
+ \address{An address\\
+ with some CJK characters}
+ \signature{...}
+ \end{CJK*}
+
+
+ \begin{document}
+
+ \begin{CJK*}{...}{...}
+
+ \begin{letter}{Another address\\
+ with some CJK characters}
+ \opening{...}
+
+ Your letter text
+
+ \closing{...}
+ \end{letter}
+
+ \end{CJK*}
+
+ \end{document}
+
+ o A similar solution is needed if you use \bibliography and your
+ bibliographic database contains author names with CJK characters.
+
+ \makeatletter
+ \AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@mainaux{\string\begin{CJK*}{...}{...}}%
+ \immediate\write\@mainaux{\string\makeatletter}%
+ \fi}
+ \AtEndDocument{%
+ \if@filesw
+ \immediate\write\@mainaux{\string\end{CJK*}}%
+ \fi}
+ \makeatother
+
+ o The `beamer' class, if used with the CJKutf8 package, should open
+ and close the document's `CJK' environment with the \AtBeginDocument
+ and \AtEndDocument hooks, respectively:
+
+ \AtBeginDocument{%
+ \begin{CJK*}{UTF8}{...}}
+ \AtEndDocument{%
+ \end{CJK*}}
+
+ o If you get strange error messages while using the hyperref package,
+ add the `CJKbookmarks' option:
+
+ \usepackage[CJKbookmarks]{hyperref}
+
+ o Some versions of fourier.sty cause the following error message:
+
+ ! Undefined control sequence.
+ \<->futr8t ->\SetFourierSpace
+
+ A simple solution is to insert the line
+
+ \providecommand{\SetFourierSpace}{}
+
+ right before loading fourier.sty .
+
+ o Combining the `slovak', `esperanto', or `kurmanji' option of Babel
+ (tested 2010/01/04) with the CJK package fails as soon as you try to
+ open a CJK environment. This error is a Babel bug not related to
+ CJK: After loading one of these language modules, the ^^xx notation
+ fails due to an incorrect \catcode value of the `^' character (even
+ outside of those language environments).
+
+ A workaround is to insert the line
+
+ \catcode`\^ 7\relax
+
+ right before a starting a CJK environment.
+
+
+Author
+------
+
+Werner Lemberg <wl@gnu.org>
+
+Please report any errors or suggestions to cjk-list@nongnu.org.
+
+
+---End of CJK.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/CJKnumb.txt b/language/chinese/CJK/cjk-4.8.5/doc/CJKnumb.txt
new file mode 100644
index 0000000000..16723f8bc0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/CJKnumb.txt
@@ -0,0 +1,25 @@
+This is the file CJKnumb.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+CJKnumb.sty
+------------
+
+This package provides commands to typeset CJK representations of
+numbers (within a CJK or CJK* environment).
+
+ \CJKnumber{number}
+ Convert `number' to a full CJK representation.
+
+ \CJKdigits{arg}
+ \CJKdigits*{arg}
+ Handle `arg' as a string of digits and convert each of them into the
+ corresponding CJK digit. The starred version uses the traditional glyph
+ for digit zero; the unstarred version uses the CJK circle glyph.
+
+Usage:
+
+ \usepackage{CJK}
+ \usepackage{CJKnumb}
+
+
+---End of CJKnumb.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/CJKspace.txt b/language/chinese/CJK/cjk-4.8.5/doc/CJKspace.txt
new file mode 100644
index 0000000000..87d2a7e621
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/CJKspace.txt
@@ -0,0 +1,22 @@
+This is the file CJKspace.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+CJKspace.sty
+------------
+
+This package provides a modified `CJK*' environment which suppresses spaces
+between CJK characters only. Its main usage are documents written in
+English with frequent insertions of CJK words or phrases and modern Chinese
+documents which do the opposite.
+
+Note that this package is not optimal for Japanese since typographic
+conventions mandate the use of shibuaki spaces (see `japanese/shibuaki.txt'
+for more details); this can't be handled automatically with traditional TeX.
+
+Usage:
+
+ \usepackage{CJK}
+ \usepackage{CJKspace}
+
+
+---End of CJKspace.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/CJKutf8.txt b/language/chinese/CJK/cjk-4.8.5/doc/CJKutf8.txt
new file mode 100644
index 0000000000..c0c6f2c8f4
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/CJKutf8.txt
@@ -0,0 +1,40 @@
+This is the file CJKutf8.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+CJKutf8.sty
+-----------
+
+This package merges base LaTeX's and CJK's UTF-8 support. If a Unicode
+character (within a CJK environment) corresponds to a glyph from the
+selected LaTeX font encoding, use it, otherwise it is taken from the
+selected CJK unicode font.
+
+Usage:
+
+ \usepackage[<font encoding>]{CJKutf8}
+
+ The <font encoding> value is directly passed to the `fontenc' package.
+ Besides `fontenc', CJKutf8.sty also loads the CJK package with the
+ `encapsulated' option so that you can use UTF-8 outside of the CJK
+ environment also.
+
+ Note that only font encodings with a corresponding DFU file actually
+ have Unicode definitions (for example, `t1enc.dfu').
+
+ Only use UTF-8 encoding for the CJK environment! Other encodings
+ don't give an error but might replace some CJK characters with glyphs
+ from the selected LaTeX encoding.
+
+If pdftex is used, ToUnicode cmaps are automatically generated (for C70
+encoding); use it in combination with Vladimir Volovich's `cmap' package.
+
+If CJKutf8.sty is used together with the `unicode' option of the hyperref
+package, pdftex automatically produces correct Unicode bookmarks.
+
+Both ToUnicode cmaps and Unicode bookmarks support characters greater than
+U+FFFF.
+
+Please read section `Possible errors' in CJK.txt regarding the Byte Order
+Mark (BOM) -- this should always be removed.
+
+---End of CJKutf8.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/COPYING b/language/chinese/CJK/cjk-4.8.5/doc/COPYING
new file mode 100644
index 0000000000..b2fe7b6af3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin St, 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 Library 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 St, 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 Library General
+Public License instead of this License.
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/INSTALL b/language/chinese/CJK/cjk-4.8.5/doc/INSTALL
new file mode 100644
index 0000000000..396187f01e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/INSTALL
@@ -0,0 +1,686 @@
+This is the file INSTALL of the CJK macro package ver. 4.8.5 (16-Oct-2021).
+
+Installation Guide
+==================
+
+It is probably a good idea to get a packaged version of CJK---be warned that
+installing CJK is *not* trivial.
+
+The easiest solution is to use the TeX Live CD which is distributed among
+members of TeX user groups worldwide. It comes with a ready-to-run CJK setup
+together with basic CJK fonts (in outline format if freely available) for
+almost all encodings. To get a recent snapshot, try the SVN archive. See
+
+ http://www.tug.org/texlive/svn/
+
+for more details.
+
+. Using web sites like http://rpmseek.com you can find and download CJK
+ packages for most GNU/Linux distributions like SuSE or Debian.
+
+. For FreeBSD try this:
+
+ http://www.freebsd.org/ports/chinese.html
+
+. MikTeX also provides packages for CJK.
+
+
+Here a check list for the impatient (experienced) user which tries to show
+whether you've done all steps to install the CJK package and fonts. It is
+assumed that you want to install both ttf2pk and hbf2gf.
+
+Detailed explanations can be found below.
+
+
+--- begin checklist ---------------------------------------------------------
+
+. Have you installed a LaTeX 2e version newer or equal to 2001/06/01? The
+ version of LaTeX is given in each log file produced by LaTeX. For using
+ CJKutf8.sty you even need version 2003/12/01.
+
+. Have you removed an older version of CJK? If not, do it now but don't
+ forget to save your FD and other files which you have changed! Don't
+ forget also to remove the ttf2pk and hbf2gf binaries.
+
+. Can the texinput tree of the CJK package be found by your TeX
+ implementation? Have you activated subdirectory searching?
+
+. Have you downloaded the needed font packages (either ps, hbf or ttf)? See
+ also contrib/wadalab/DNP.txt for the Japanese Wadalab fonts. Have you
+ moved the TFM files into your TFM-tree (or updated TFMINPUTS accordingly)?
+ Ditto for VF files if needed.
+
+. Have you installed ttf2pk and ttf2tfm from the FreeType 1 package (only
+ needed for TrueType fonts)? Note that FreeType 2 won't work.
+
+. Have you run ttf2tfm to create the proper TFM files from your TrueType
+ fonts? This won't be done automatically via mktextfm or MakeTeXTFM!
+
+. Have you updated the ttfonts.map file for ttf2pk? Have you updated the
+ various hbf2gf config files? Have you copied them to the right places?
+ Don't forget to install ttf2pk's SFD and other data files which define the
+ various CJK subfonts and encodings.
+
+. Have you modified and installed the script files for automatic font
+ generation (not necessary for teTeX 1.0 or newer)?
+
+. If you want Thai support, have you followed the instructions given in
+ thaifont.txt?
+
+
+web2c/teTeX users:
+
+. Do you have a C compiler and a make program available for compilation? GNU
+ gcc and GNU make are recommended.
+
+. Have you updated special.map?
+
+. Have you used the options --with-kpathsea-include=... and
+ --with-kpathsea-lib=... while calling the configure script of hbf2gf
+ (or ttf2pk)? Otherwise no file searching library is used which yields
+ surprising results... Note: Don't use `/usr/include/kpathsea', for
+ example, but `/usr/include' as an argument to --with-kpathsea-include.
+
+. To check whether kpathsea correctly finds HBF files and configuration
+ files for hbf2gf, say:
+
+ kpsewhich -progname=hbf2gf -format='misc fonts' <your_font>.hbf
+ kpsewhich -progname=hbf2gf -format='other text files' <your_file>.cfg
+
+ The same for TrueType fonts and the ttf2pk config file:
+
+ kpsewhich -progname=ttf2pk <your_font>.ttf
+ kpsewhich -progname=ttf2pk -format='other text files' ttfonts.map
+
+ [Recent kpathsea versions (like 3.5.5) which come with the new teTeX or
+ TeXLive distributions have a new variable `TEXFONTMAPS' for map files;
+ you should use this test
+
+ kpsewhich -progname=ttf2pk -format=map ttfonts.map
+
+ instead of the last one.]
+
+. Have you compiled the various *conv utility programs (like bg5conv)? Have
+ you installed them together with the caller scripts (like bg5latex) in
+ your path? FOR BIG 5 ENCODING YOU SHOULD ALWAYS USE bg5latex or
+ bg5pdflatex (except if you use cjk-enc.el). FOR SJIS ENCODING YOU SHOULD
+ ALWAYS USE sjislatex or sjispdflatex.
+
+. Have you updated and controlled the texmf.cnf configuration file or set
+ the various environment variables? (TEXINPUTS, TFMFONTS, PKFONTS,
+ MISCFONTS, TTFONTS, probably TTF2PKINPUTS, TTF2TFMINPUTS, HBF2GFINPUTS)
+
+. ttf2pk and hbf2gf should be in the same directory where your TeX binaries
+ like `texconfig' or `gftopk' are (or you must set TEXMFCNF and probably
+ TEXMF in the environment). Soft links won't work!
+
+. Finally, have you run texhash (or mktexlsr) after finishing all other
+ things?
+
+
+emTeX users:
+
+. Have you created a LaTeX format file which allows plain 8bit input and
+ output without using any TeX Code Page (tcp)?
+
+. Have you installed 4DOS (4OS2 or Take Command) for running the file
+ dvidrv.btm?
+
+. Have you configured dvidrv.btm?
+
+. Have you installed the various *conv utility programs (like bg5conv)?
+ together with the caller scripts (like bg5latex.bat)? FOR BIG 5 ENCODING
+ YOU SHOULD ALWAYS USE bg5latex.bat . FOR SJIS ENCODING YOU SHOULD ALWAYS
+ USE sjisltx.bat .
+
+. Have you created and installed TFM files for fonts not in a CJK font
+ package?
+
+. Check whether you have updated all needed environment variables (TEXINPUT,
+ TEXTFM, TTFONTS, TTFCFG, HBFONTS, HBFCFG) and your dvidrv configuration
+ file or files (+font-files, +virtual-fonts).
+
+
+In case of errors, verify the list step by step. Detailed information for
+each step can be found in the documentation files of CJK. Under web2c or
+teTeX, you can set the KPATHSEA_DEBUG environment variable to -1, then all
+debugging info is shown and sent to stderr; it is *highly* recommended that
+you read the kpathsea.info files. Under emTeX, read the various
+documentation files, especially dvidrv.doc and tex.doc, and check the log
+file of your dvi driver.
+
+For hbf2gf, read hbf2gf.txt and its manual page (hbf2gf.1 or a formatted
+version of it). Similarly, more info on ttf2tfm and ttf2pk can be found in
+ttf2pk.doc and the manual pages ttf2pk.1 and ttf2tfm.1 (or a formatted
+version).
+
+--- end checklist -----------------------------------------------------------
+
+
+
+Unix (web2c and teTeX)
+----------------------
+
+. If you can become root, rename the `texinput' directory tree of CJK into
+ `CJK' or something else and add it to your (local) web2c texinput tree
+ (for example, /usr/local/share/texmf.local/tex/latex/CJK).
+
+. If you can't become root, modify the TEXINPUTS environment variable
+ instead so that it includes the CJK directory; use a command similar to
+
+ setenv TEXINPUTS :<your CJK directory>//
+
+ to let TeX search the standard directories and your CJK tree, e.g.,
+
+ setenv TEXINPUTS :/home/joe_user/CJK/4_3.0/texinput//
+
+ (Note the leading double colon to append a path, and the double slash to
+ activate subdirectory searching---for details see the kpathsea info
+ files.)
+
+ [Recent teTeX and TeXLive versions automatically search a TEXMF tree in
+ your home directory called `texmf'.]
+
+ See contrib/wadalab/DNP.txt for the Japanese Wadalab fonts.
+
+. Edit the FD files of the encodings you want to use to specify the fonts
+ you have. An explanation of the additional size commands CJK provides can
+ be found in fonts.txt .
+
+ Note: Most FD example files from the CJK package are set up for PS fonts
+ from the TeXLive distribution.
+
+ If you use the CJK font packages (see below) no changes are needed.
+
+. [In case you plan to use only outline fonts (PFB, TTF) you can omit the
+ installation of hbf2gf and HBF fonts.]
+
+ If necessary, create TFM (and PK) files from CJK bitmaps with hbf2gf
+ (found in utils/hbf2gf). This program comes with a configure script; say
+ `./configure --help' in the utils/hbf2gf directory for configuration
+ options. You need a compiled kpathsea library and its header files; in
+ most cases you say
+
+ ./configure --prefix=/usr/local/TeX \
+ --with-kpathsea-include=<INCLUDEDIR> \
+ --with-kpathsea-lib=<LIBDIR>
+ make
+ make install
+
+ for a normal compilation and installation. Replace `/usr/local/TeX' with a
+ path to your TeX distribution, and <DIR> with the directory one level
+ higher than the library and the include files themselves. Example:
+ libkpathsea.a is in /usr/local/TeX/lib/i686-linux, kpathsea.h is in
+ /usr/local/TeX/include/kpathsea; then <LIBDIR> should be
+ `/usr/local/TeX/TeX/lib/i686-linux', and <INCLUDEDIR> should be
+ `/usr/local/TeX/include' (and not `/usr/local/TeX/include/kpathsea).
+
+ See hbf2gf.txt, the man page (hbf2gf.1), and the documentation of the
+ source file (hbf2gf.dvi) for further details. Usually it is sufficient to
+ let hbf2gf create a complete set of TFM files; PK fonts are then created
+ on demand.
+
+ Older kpathsea versions need a patched MakeTeXPK or mktexpk script; you
+ should apply the proper patch(es) from utils/hbf2gf/scripts. No changes to
+ the script files are necessary for teTeX 1.0 and newer.
+
+ The CJK font packages already contain TFM (and VF) files arranged for the
+ (new) TDS directory structure; add it directly to your TEXMF tree.
+
+. Free Chinese TrueType fonts (for both simplified and traditional Chinese)
+ with a license similar to the GPL can be found on
+
+ ftp://ftp.gnu.org/gnu/nongnu
+
+ and its mirrors worldwide. You might also search websites of companies
+ offering WWW browser; they often come with CJK language packs which
+ contain CJK TrueType fonts.
+
+ Please note that many CJK TrueType fonts only have a Unicode mapping
+ table. You should use the SFD files from the ttf2pk package starting with
+ the letter `U' (e.g., UKS.sfd) which maps Unicode fonts to language
+ specific encoded subfonts as needed by the CJK package.
+
+ The ttf2pk package found in the contrib/ttf2pk directory of
+
+ ftp://ftp.freetype.org/pub/
+ freetype/unstable/freetype1-contrib-current.tar.gz
+
+ contains the two programs ttf2tfm and ttf2pk for converting TrueType fonts
+ into TFM and PK fonts, respectively. By the way, this package is not
+ restricted to CJK TrueType fonts; it works with other TrueType fonts too.
+ Read the manual pages and the documentation for further information. For
+ compilation you also need the FreeType 1 package:
+
+ ftp://ftp.freetype.org/pub/freetype/unstable/freetype-current.tar.gz
+
+. The font editor `fontforge' (available from http://fontforge.sf.net) is
+ capable of generating Type 1 subfonts as needed by CJK from other formats
+ like TTF, OTF or CID (using the subfont definition files from ttf2pk).
+ Such subfonts should be usable by virtually all platforms.
+
+ (Funnnily, fontforge uses the `.sfd' extension also for saving font files
+ it creates.)
+
+ Although fontforge needs the X Window System, it can be compiled without a
+ graphical interface, using a scripting language to control font
+ conversion. The directory `utils/subfonts' of the CJK package contains
+ useful scripts for manipulating subfonts.
+
+. It is recommended to add all CJK fonts which are converted to the PK font
+ format (either with hbf2gf or ttf2pk) to the file special.map: Assuming
+ that your PK fonts should be generated in
+
+ $TEXMF/fonts/pk/modeless/gb2312/gsfs14/
+
+ the proper entries would be
+
+ gsfs1401 gb2312 gsfs14
+ gsfs1402 gs2312 gsfs14
+ ...
+
+. Compile the small preprocessors in the utils subdirectories with
+
+ cc -O -s -o bg5conv bg5conv.c
+ cc -O -s -o sjisconv sjisconv.c
+ cc -O -s -o cefconv cefconv.c
+ cc -O -s -o cef5conv cef5conv.c
+ cc -O -s -o cefsconv cefsconv.c
+ cc -O -s -o extconv extconv.c
+
+ and move them into TeX's bin directory (together with the shell scripts)
+ or modify the PATH environment variable appropriately. (`cc' can be any C
+ compiler.)
+
+ The script files `...latex' make the use of these programs transparent.
+
+. Move the man pages into your man1 directory tree.
+
+. If you want to use Mule, emacs, or XEmacs together with the CJK package,
+ you should install cjk-enc.el (in utils/lisp). See cjk-enc.txt for
+ documentation. Choose the correct cjk-enc.el version---note that the Mule
+ version has limited capabilities compared to the Emacs version.
+
+ Move cjk-enc.el to a place which is searched by Mule (e.g.,
+ /usr/local/lib/mule/site-lisp) and put the following line into your emacs
+ file:
+
+ (load-library "cjk-enc")
+
+ The default directory for emacs is /usr/local/share/emacs/site-lisp.
+
+ Note that you don't need cjk-enc.el in case you are editing UTF-8 encoded
+ files only.
+
+. If you mainly write Chinese or Japanese with Emacs or Mule, consider the
+ use of cjktilde.el (in utils/lisp). This file contains a minor mode which
+ exchanges the tilde key with the space key. See the documentation of
+ \CJKtilde in CJK.txt for the reasons to use `~' in most cases instead of
+ a space character.
+
+ To install, move cjktilde.el to a place which is searched by Emacs or Mule
+ (e.g., /usr/local/share/emacs/site-lisp) and put the following line into
+ your .emacs file:
+
+ (load-library "cjktilde")
+
+ To toggle the CJK tilde mode say
+
+ M-x cjk-tilde-mode
+
+ You can then assign cjk-tilde-mode to a key, e.g., shift-insert.
+
+. If you use AUCTeX you can try cjkspace.el instead of cjktilde.el; it works
+ in a similar (but not identical) way and is special to LaTeX buffers. Move
+ the file to the local lisp directory and put the following lines into your
+ .emacs file:
+
+ (autoload 'CJK-insert-space "cjkspace"
+ "Insert tildes appropriately in CJK document." t)
+ (defun my-LaTeX-mode-hook ()
+ "My personal key definitions for LaTeX mode."
+ (define-key LaTeX-mode-map " " 'CJK-insert-space))
+ (add-hook 'LaTeX-mode-hook 'my-LaTeX-mode-hook)
+
+ Please read the documentation in the file cjkspace.el .
+
+. For Thai support please follow the instructions given in `thaifont.txt'.
+
+
+DOS and OS/2 (emTeX)
+--------------------
+
+web2c has been ported to MS-DOS. If you use this (which I recommend), follow
+the instructions above.
+
+. Note that some Unix specific shell scripts and other files have names
+ longer than 8 characters. You don't need them. Some of the TeX input files
+ have lower and uppercase characters in its filenames, but none of the
+ filenames collide under DOS.
+
+. Move the `texinput' directory tree to a place where TeX scans for input
+ files (and rename it to `cjk' or something else). Note that its
+ subdirectories are specific to encoding schemes. emTeX allows for
+ recursively scanned search paths, thus retaining the directory tree is
+ possible.
+
+ Example:
+
+ CJK files: c:\emtex\texinput\cjk\...
+ environment: set emtexdir=c:\emtex
+ set texinput=%emtexdir%\texinput!!
+
+ See contrib/wadalab/DNP.txt for the Japanese Wadalab fonts.
+
+. [In case you plan to use only outline fonts (PFB, TTF) you can omit
+ this step.]
+
+ Compile hbf2gf. You need GNU make and either the emx (DOS and OS/2) or
+ the djgpp (DOS and Windows) compiler.
+
+ Say `make -f Makefile.gnu' to see the possible options; more info can be
+ found in hbf2gf.txt .
+
+. Compile the utility programs.
+
+ cc -O -s -o bg5conv bg5conv.c
+ cc -O -s -o sjisconv sjisconv.c
+ cc -O -s -o cefconv cefconv.c
+ cc -O -s -o cef5conv cef5conv.c
+ cc -O -s -o cefsconv cefsconv.c
+ cc -O -s -o extconv extconv.c
+
+. Move the various BAT files (for DOS) and/or the CMD REXX scripts (for
+ OS/2) into a directory in the path (e.g., c:\emtex\bin).
+
+. Edit the FD files of your encoding(s) to specify the fonts you have. An
+ explanation of the additional size commands CJK provides can be found in
+ fonts.txt .
+
+ Note: Most FD example files from the CJK package are set up for PS fonts
+ from the TeXLive distribution.
+
+ If you use the CJK font packages (see below) no changes are needed.
+
+. [In case you plan to use only outline fonts (PFB, TTF) you can omit this
+ step.]
+
+ If necessary, create TFM (and PK) files from CJK bitmaps with hbf2gf
+ (found in utils\hbf2gf). See hbf2gf.txt and the documentation of the
+ source file (hbf2gf.dvi) for explanation. Usually it is sufficient to let
+ hbf2gf create a complete set of TFM files; PK fonts are then created on
+ demand (this is done with the dvidrv.btm shell script of the CJK package).
+
+ You need 4DOS or 4OS/2 (these are shareware replacements for command.com)
+ to run dvidrv.btm.
+
+ dvidrv.btm should also work with Take Command/16, Take Command/32, or Take
+ Command for OS/2.
+
+ The CJK font packages already contain TFM (and VF) files (arranged for the
+ (new) TDS directory structure; unpack the font packages in the root
+ directory with
+
+ gzip -d CJK_font_archive.tgz
+ tar xvf CJK_font_archive.tar
+
+ Rearrange the directory structure as suggested below (to make the file
+ search mechanism of emTeX faster) and modify the appropriate environment
+ variables to include the additional directories. The same holds for the
+ CJK bitmap fonts, its HBF header files and the hbf2gf configuration files.
+
+ [Note: Binaries for the gzip and tar archive programs can be found on CTAN
+ in the `utils' subdirectory.]
+
+ Example:
+
+ jfs56.tar.gz (should be ftp'ed as jfs56.tgz if you work under DOS
+ since two dots are not allowed)
+
+ suggested final directory structure (after unpacking and rearranging):
+
+ c:\texmf\fonts\tfm\gsfs1401.tfm ...
+ c:\texmf\hbf2gf\gsfs14.cfg
+ c:\texmf\fonts\hbf\gb2312\jfs56\jfs56.a ...
+ [ c:\texmf\fonts\pk\modeless\XXXdpi\gsfs1401.pk ... ]
+
+ Add these lines to the end of autoexec.bat:
+
+ set texmfdir=c:\texmf
+ set cjkpk=%texmfdir%\fonts\pk
+ set textfm=%textfm%;%texmfdir%\fonts\tfm
+
+ Under OS/2, add similar lines (but with expanded pathnames) to the end
+ of config.sys:
+
+ set texmfdir=c:\texmf
+ set cjkpk=c:\texmf\fonts\pk
+ set textfm=<your old textfm path>;c:\texmf\fonts\tfm
+
+ Changes in gsfs14.cfg:
+
+ pk_directory $texmfdir\fonts\pk\modeless\432dpi\
+ tfm_directory $texmfdir\fonts\tfm\
+
+ Changes in dvidrv.btm:
+
+ set pkdir=%texmfdir%\fonts\pk
+ set ttfcfg=%texmfdir%\ttf2pk
+ set hbfcfg=%texmfdir%\hbf2gf
+
+ set pre_dpi=
+ set post_dpi=dpi
+
+ Changes in a dvi driver configuration file (.cnf) for emTeX:
+
+ +font-files:{<your old pk path>,$texmfdir:fonts\modeless}\@Rrdpi\@f.pk
+
+. Free Chinese TrueType fonts (for both simplified and traditiional Chinese)
+ with a license similar to the GPL can be found on
+ ftp://ftp.gnu.org/gnu/nongnu and its mirrors worldwide. You might also
+ search websites of companies offering WWW browser; they often come with
+ CJK language packs which contain CJK TrueType fonts.
+
+ Please note that many CJK TrueType fonts only have a Unicode mapping
+ table. You should use the SFD files from the ttf2pk package starting with
+ the letter `U' (e.g., UKS.sfd) which maps Unicode fonts to language
+ specific encoded subfonts as needed by the CJK package.
+
+ The ttf2pk package can be found in the contrib/ttf2pk directory of
+
+ ftp://ftp.freetype.org/
+ freetype/unstable/freetype1-contrib-current.tar.gz
+
+ contains the two programs ttf2tfm and ttf2pk for converting TrueType fonts
+ into TFM and PK fonts, respectively. By the way, this package is not
+ restricted to CJK TrueType fonts; it works with other TrueType fonts too.
+ Read the manual pages and the documentation for further information. For
+ compilation you also need the FreeType 1 package:
+
+ ftp://ftp.freetype.org/pub/freetype/unstable/freetype-current.tar.gz
+
+. The font editor `fontforge' (available from http://fontforge.sf.net) is
+ capable to generate Type 1 subfonts as needed by CJK from other formats
+ like TTF, OTF or CID (using the subfont definition files from ttf2pk).
+ Such subfonts should be usable by virtually all platforms.
+
+ (Funnnily, fontforge uses the `.sfd' extension also for saving font files
+ it creates.)
+
+ Although fontforge needs the X Window System, it can be compiled without a
+ graphical interface, using a scripting language to control font
+ conversion. The directory `utils/subfonts' of the CJK package contains
+ useful scripts for manipulating subfonts.
+
+. You find the some standard Hangul PK fonts for 300dpi (cx) and 600dpi
+ (ljfour) resolution in the following archives:
+
+ han.300.tar.gz
+ han1.300.tar.gz
+ han.600.tar.gz
+ han1.600.tar.gz
+ han.tfmvf.tar.gz
+ han1.tfmvf.tar.gz
+
+ It is necessary to rearrange not only the directory structure but the
+ names of the dpi directories too: The TeX directory standards specifies
+ `dpiXXX', but emTeX provides by default `XXXdpi'.
+
+ The final locations of the packages' files should be
+
+ c:\texmf\fonts\tfm\
+ c:\texmf\fonts\vf\
+ c:\texmf\fonts\pk\{cx,ljfour}\XXXdpi\
+
+ Additionally to the above example you should add this to the end of
+ autoexec.bat:
+
+ set cjkvf=%texmfdir%\fonts\vf
+
+ or config.sys for OS/2:
+
+ set cjkvf=c:\texmf\fonts\vf
+
+ Assuming that you use the 300dpi Hangul PK fonts (for a cx printer) you
+ should do the following changes in your dvi driver configuration file
+ (suffix `.cnf') for emTeX (still continuing the above example):
+
+ +font-files:{<your old pk path>,$texmfdir:fonts\{modeless,cx}}\@Rrdpi\@f.pk
+ +virtual-fonts:{<your old vf path>,$texmfdir:fonts}\@f.vf
+
+. For Thai support please follow the instructions given in `thaifont.txt'.
+
+
+Other systems
+-------------
+
+Recent versions of CJK have only been tested with web2c; nevertheless, it
+should run on other systems too:
+
+ The font editor `fontforge' (available from http://fontforge.sf.net) is
+ capable to generate Type 1 subfonts as needed by CJK from other formats
+ like TTF, OTF or CID (using the subfont definition files from ttf2pk).
+ Such subfonts should be usable by virtually all platforms.
+
+ (Funnnily, fontforge uses the `.sfd' extension also for saving font files
+ it creates.)
+
+ Although fontforge needs the X Window System, it can be compiled without a
+ graphical interface, using a scripting language to control font
+ conversion. The directory `utils/subfonts' of the CJK package contains
+ useful scripts for manipulating subfonts.
+
+ If no outline fonts are available and you have to use HBF fonts, try to
+ compile hbf2gf. Since it is written in ANSI C it should be fairly portable
+ (if patches are needed please send them to the author; most likely you
+ have to modify the file operating routines). If this fails it is necessary
+ to build the various PK fonts on a different machine. It has been reported
+ that older GNU compilers on the NeXT have difficulties with `%i'
+ formatting parameters in the HBF API (hbf.c): replace all occurrences of
+ `%i' with `%d'.
+
+ If there exists an equivalent to mktexpk (or dvidrv.btm), try to modify it
+ similar to CJK's changes so that CJK fonts can be created on the fly. If
+ this fails you can only use precompiled sets of CJK fonts (this is, using
+ PK fonts generated on another platform).
+
+ The rest should be rather trivial for the experienced user; again, please
+ write the author if you have successfully installed the package and send a
+ report how to install.
+
+
+How to get CJK and related software
+-----------------------------------
+
+. You find CJK and software related to TeX at the CTAN hosts (Comprehensive
+ TeX Archive Network). These completely identical ftp servers (concerning
+ TeX software) are
+
+ ftp.dante.de DANTE (Deutsche Anwendervereinigung fuer TeX)
+ Hamburg (Germany)
+ ftp.tex.ac.uk Cambridge University
+ Cambridge (England)
+ ctan.tug.org TUG (TeX Users Group)
+ Massachusetts (USA)
+
+ You should use the nearest one, or even better, a local mirror of a CTAN
+ host: The file `CTAN.sites' on CTAN contains a list.
+
+ On CTAN, the CJK package itself is unpacked. To receive the complete
+ package, go to the parent directory of CJK and say
+
+ get CJK.zip
+
+ or
+
+ get CJK.tar.gz
+
+ whatever is appropriate for your system.
+
+ The CJK directory and all its subdirectories are sent to you in compressed
+ form. Be aware that not all mirrors of CTAN sites support compression of
+ directories.
+
+. The documentation bundle of the CJK package is not unpackaged; download it
+ as
+
+ get cjk-4.8.5-doc.tar.gz
+
+ or
+
+ get cjk-4.8.5-doc.tar.gz cjkdoc.tgz
+
+ whatever is appropriate for your system. It contains precompiled versions
+ (in DVI, PDF, text format) of all documentation and example files.
+
+. PostScript font packages with subfonts which can be directly used by the
+ CJK package are already available on CTAN:
+
+ traditional Chinese:
+ fonts/arphic/bkai00mp-<version>.tar.gz
+ fonts/arphic/bsmi00lp-<version>.tar.gz
+
+ simplified Chinese:
+ fonts/arphic/gbsn00lp-<version>.tar.gz
+ fonts/arphic/gkai00mp-<version>.tar.gz
+
+ Japanese:
+ fonts/wadalab/gothic-0-13-<version>.tar.gz
+ fonts/wadalab/maru-0-8-<version>.tar.gz
+ fonts/wadalab/maru-1-8-<version>.tar.gz
+ fonts/wadalab/mincho-0-12-<version>.tar.gz
+ fonts/wadalab/mincho-0-8-<version>.tar.gz
+ fonts/wadalab/mincho-1-8-<version>.tar.gz
+
+ Korean:
+ fonts/korean/HLaTeX/uhc-bom.tar.gz
+ fonts/korean/HLaTeX/uhc-dinaru.tar.gz
+ fonts/korean/HLaTeX/uhc-fonts.tar.gz
+ fonts/korean/HLaTeX/uhc-gothic.tar.gz
+ fonts/korean/HLaTeX/uhc-graphic.tar.gz
+ fonts/korean/HLaTeX/uhc-gungseo.tar.gz
+ fonts/korean/HLaTeX/uhc-jamo.tar.gz
+ fonts/korean/HLaTeX/uhc-myoungjo.tar.gz
+ fonts/korean/HLaTeX/uhc-pen.tar.gz
+ fonts/korean/HLaTeX/uhc-pilgi.tar.gz
+ fonts/korean/HLaTeX/uhc-pilgia.tar.gz
+ fonts/korean/HLaTeX/uhc-shinmun.tar.gz
+ fonts/korean/HLaTeX/uhc-taza.tar.gz
+ fonts/korean/HLaTeX/uhc-vada.tar.gz
+ fonts/korean/HLaTeX/uhc-yetgul.tar.gz
+
+ You should consult the documentation and the font samplers of those
+ packages (if available) for more informations.
+
+. Mule 2.3 can be downloaded from this Japanese host:
+
+ ftp://ftp.m17n.org/pub/mule/mule-2.3.tar.gz
+
+ [Note: You need Mule 2.3 only for right-to-left scripts like Arabic or
+ Hebrew which aren't yet supported in emacs. Otherwise, I strongly
+ recommend to get FSF emacs 22 or newer, or XEmacs 21.1 or newer which is
+ available from ftp.gnu.org (USA) and ftp.xemacs.org, respectively, and
+ its many mirrors.]
+
+
+---End of INSTALL---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/TDS.txt b/language/chinese/CJK/cjk-4.8.5/doc/TDS.txt
new file mode 100644
index 0000000000..2473659bc8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/TDS.txt
@@ -0,0 +1,172 @@
+This is the file TDS.txt of the CJK macro package ver. 4.8.5 (16-Oct-2021).
+
+The TeX Directory Structure (TDS)
+---------------------------------
+
+A working group of the American TeX Users Group (TUG) has developed the TDS
+standard (available from the CTAN hosts in tex-archive/tds). That document
+describes a default directory structure where and how to store the many
+different files needed for a complete TeX system.
+
+The following describes the recommended default directories used in the CJK
+package for its files; $TEXMF stands for the place where the texmf directory
+resides (a possibly better place for distributions based on web2c is
+$TEXMFLOCAL; see texmf.cnf of your TeX package for details):
+
+We follow TDS 1.1 and the setup of TeXLive 2005; this corresponds to
+kpathsea 3.5.5. Some of the variables don't exist in older kpathsea
+implementations---please read the man page of ttf2tfm for more information
+on the old locations.
+
+
+CJK TeX files (you should move the whole `texinput' tree of the CJK package
+ to this place):
+
+ $TEXMF/tex/latex/CJK/<CJK subdirs>/<CJK TeX files>
+
+ example:
+ /usr/local/web2c-7.0/texmf/tex/latex/CJK/Bg5/Bg5.cap
+
+ affected variable: $TEXINPUTS
+
+
+TrueType fonts:
+
+ $TEXMF/fonts/truetype/<supplier>/<truetype font>
+
+ example:
+ /usr/local/teTeX/texmf/fonts/truetype/arphic/gbsn00lp.ttf
+
+ affected variable: $TTFONTS
+
+ You should append proper entries for all subfonts to special.map to make
+ web2c's name parsing algorithm happy (otherwise it can happen that the
+ created PK and TFM files are placed into rather strangely named
+ directories).
+
+ Example lines to append for the above font:
+
+ gbsnlp01 arphic gbsnlp
+ gbsnlp02 arphic gbsnlp
+ ...
+
+
+HBF fonts:
+
+ $TEXMF/fonts/misc/hbf/<supplier>/<hbf name stem>/<hbf files>
+
+ [If no supplier is given, you should use `public' instead.]
+
+ example:
+ /usr/local/share/texmf/fonts/misc/hbf/public/kanji48/kanji48.{bin,hbf}
+
+ affected variable: $MISCFONTS
+
+ You should append proper entries for all subfonts to special.map to make
+ web2c's name parsing algorithm happy (otherwise it can happen that the
+ created PK and TFM files are placed into rather strangely named
+ directories).
+
+ Example lines to append for the above font:
+
+ kanji4801 public kanji48
+ kanji4802 public kanji48
+ ...
+
+
+ttf2pk configuration and replacement files (ttf2pk.cfg and *.rpl):
+
+ $TEXMF/ttf2pk
+
+ example:
+ /usr/local/texmf/ttf2pk/ttf2pk.cfg
+
+ affected variable: $TTF2PKINPUTS
+
+
+ttf2pk map files (*.map):
+
+ $TEXMF/fonts/map/ttf2pk
+
+ example:
+ /usr/local/texmf/fonts/map/ttf2pk/config/ttfonts.map
+
+ affected variable: $TEXFONTMAPS
+
+
+ttf2pk encoding files (*.enc):
+
+ $TEXMF/fonts/enc/ttf2pk
+
+ example:
+ /usr/local/texmf.local/fonts/enc/ttf2pk/base/T1-WGL4.enc
+
+ affected variable: $ENCFONTS
+
+ [Note that this location is normally found by ttf2tfm also since the
+ `ttf2pk' path component doesn't appear explicitly in web2c's $ENCFONTS
+ value. Instead, it starts subdirectory searching one level higher.]
+
+
+ttf2pk subfont definition files (*.sfd):
+
+ $TEXMF/fonts/sfd
+
+ example:
+ /home/sx0005/texmf/fonts/sfd/Bg5.sfd
+
+ affected variable: $SFDFONTS
+
+
+hbf2gf configuration files:
+
+ $TEXMF/hbf2gf/<config files>
+
+ example:
+ /dos/texmf/hbf2gf/gsfs14.cfg
+
+ affected variable: $HBF2GFINPUTS
+
+
+TFM files (<supplier> and <name stem> as specified in special.map):
+
+ $TEXMF/fonts/tfm/<supplier>/<name stem>/<tfm file>
+
+ example:
+ /usr/local/teTeX/texmf/fonts/tfm/arphic/gbsnlp/gbsnlp23.tfm
+
+ affected variable: $TFMFONTS
+
+
+PK files (<supplier> and <name stem> as specified in special.map)
+
+ $TEXMF/fonts/pk/modeless/<supplier>/<name stem>/<pk file>
+
+ example:
+ /usr/local/share/texmf/fonts/pk/modeless/uw/uwcxmf/uwcxmf23.3252pk
+
+ affected variable: $PKFONTS
+
+[There are further possibilities how to store PK files:
+
+ 1. instead of <name>.<dpi>pk you can use dpi<dpi>/<name>.pk
+
+ example:
+ /texmf/fonts/pk/modeless/public/b5ka12/dpi600/b5ka1217.pk
+
+ 2. teTeX additionally allows you to omit either <supplier> or <name stem>
+ or both (for PK, TFM, and MF files)
+
+ example:
+ /texmf/fonts/pk/modeless/b5ka12/dpi600/b5ka1217.pk
+
+
+ The first option is necessary on operating systems like DOS which only
+ allow 8.3 filenames. The second option enables you to use the `!' feature
+ of the emTeX subdirectory searching algorithm (only one level) instead of
+ `!!' (search all subdirectory levels) together with its template mechanism
+ to make emTeX much faster in finding PK files. Now teTeX and emTeX could
+ share one common texmf tree.]
+
+
+---End of TDS.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/chinese/README b/language/chinese/CJK/cjk-4.8.5/doc/chinese/README
new file mode 100644
index 0000000000..90f621fd40
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/chinese/README
@@ -0,0 +1,7 @@
+The file emTeXb5.txt describes version 4.1.0 .
+
+The file teTeXb5.txt describes version 4.2.0 .
+
+The file READMEb5.tex describes version 4.1.0 .
+
+The file READMEgb.tex describes version 4.1.3 .
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/chinese/READMEb5.tex b/language/chinese/CJK/cjk-4.8.5/doc/chinese/READMEb5.tex
new file mode 100644
index 0000000000..ac1fff7b50
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/chinese/READMEb5.tex
@@ -0,0 +1,1150 @@
+%%% The file READMEb5.tex . This file is part of LaTeX2e CJK package.
+%%%
+%%% Note that this document is a very first version. Therefore, lots
+%%% of installation steps and issues are still left blank. Please be
+%%% patient and wait for the next new release. I'm sorry for any
+%%% inconveniences. I also deeply expect that everyone who is
+%%% interested in this topic gives me suggestions and corrections in
+%%% any respects. Thanks in advance.
+%%%
+%%% Revision 1.5 1996/11/22 10:49:00 d791013
+%%% * modify some context presentations.
+%%%
+%%% Revision 1.4 1996/10/23 03:59:40 d791013
+%%% Revision control by CVS.
+%%%
+%%% Revision 1.3 1996/07/27 11:19:20 d791013
+%%% 1. In compliance with CJK version 4.0.0
+%%% 2. Fill up some unfinished sections in previous versions of this
+%%% file.
+%%% 3. Add more usages for MULE and AUCTeX.
+%%%
+
+\documentclass[12pt,a4paper]{article}
+\usepackage{array,CJK}
+\RequirePackage{shortvrb}
+\MakeShortVerb{\|}
+
+% enlarge text width and height (for saving number of pages)
+\addtolength{\textwidth}{1in}
+\addtolength{\oddsidemargin}{-.5in}
+\addtolength{\textheight}{1in}
+\addtolength{\topmargin}{-.5in}
+
+\begin{document}
+\begin{CJK*}{Bg5}{bsmi}
+\CJKtilde
+
+% local commands
+\newcommand{\ntutocjk}{~\textsf{ntu2cjk}~}
+\newcommand{\ttftopk}{~\textsf{ttf2pk}~}
+\newcommand{\hookstroke}{\raisebox{2pt}{\scriptsize $\surd$}}
+\newcommand{\crossmark}{$\times$}
+\newcommand{\bigfive}{~\textrm{Big-5}~½X}
+\renewcommand{\figurename}{¹Ï~}
+\renewcommand{\tablename}{ªí~}
+
+%% end of header
+
+\title{\bigfive¤¤¤å¨t²Î¤Uªº~CJK \LaTeXe~±Æª©¨t²Î\\
+ (For CJK version 4.1.0)}
+\author{
+ §õ§g¦t\thanks{The author of the \textsf{ntu2cjk} package.
+ \textsf{E-mail:} d791013@ce.ntu.edu.tw}\ (Chun-Yu Lee) \and
+ Werner Lemberg\thanks{The author of the \LaTeXe\ CJK package.
+ \textsf{E-mail:} wl@gnu.org}}
+\date{20 Nov. 1996}
+\maketitle
+
+\tableofcontents
+
+\section{²¤¶}
+\label{sec:introduction}
+
+¥»¤å¥D­n°w¹ï¤º®e¥H\bigfive¬°¥Dªº¤¤¤å¤å¥ó¡]·íµM¥ç¥i¥]§t¥~¤å¤Î¹Ï§Îµ¥¡^¡A
+±ý¨Ï¥Î~\LaTeXe~¤Î~CJK~¨t²Î¶i¦æ±Æª©¦C¦L¡A¨ä©Ò»Ýªº°ò¥»­n¨D»P¦w¸Ë¨BÆJµ¥¡A
+°µ¤@²­nªº¤¶²Ð¡C¨ä½d³òÁö¤£¯à²[»\­n½s¦n¤@½g¡]©Î¤@¥»¡^¹Ï¤å¨Ã­Zªº¤å³¹©Ò»Ý
+¤§¥DÃD¡A¦ý¤]¨¬°÷À³¥I¤@¯ë©Êªº¤å¥ó\footnote{¥»¤å±N·|¦b¤é«áºCºC¦a­×¥¿»P¸É
+ ¥R¬ÛÃö¥DÃD¡A¥H¥[±j¨äµ²ºc¤Î¤º®e¡C¦P®É¤]´Á«ÝŪªÌ¯à´£¨ÑÄ_¶Qªº·N¨£¡A¥H¬°
+ ¤U¤@¦¸¥Xª©¤§°Ñ¦Ò¡C}¡C
+
+¥»¤åªº¤º®e¥H°t¦X~CJK 4.x.x~¨t²Îªº³]©w¬°¥D¡C­×§ï¥»¤å¤§¦P®É¡ACJK~ªºª©¥»
+¬O~4.1.0¡C
+
+\subsection{¾\Ū«ü¤Þ}
+\label{sec:reading-guides}
+
+¤U­±¬O²³æªº¾\Ū«ü¤Þ¡G
+\begin{itemize}
+\item ¥ý½T©w§A±ý¦w¸Ëªº~CJK~ª©¥»¬O§_¬O¥»¤å©Ò´y­zªº¡A­Y¤£¦P¡A½Ð¨ú±o»P¥»
+ ¤å¬Û®eªº~CJK~ª©¥»¡A©Î¨ú±o³Ì·sªº~CJK~ª©¥»¡A¨Ã¾\Ū¨ä©Ò¥]§tªº¥»¤å¥óÀɮסC
+\item ­Y¦]ª©¥»¤§¤£¦P¡A±z¥ç¥i¥H~CJK~¤å¥ó¤¤ªº~INSTALL~¬°¥D¡A¦õ¥H¦r«¬¦w¸Ë
+ ¨t²Î¡]\textsf{ntu2cjk}~©Î~\textsf{ttf2pk}¡^¤¤¬ÛÃöªº»¡©ú¤å¥ó¡A¦AÂsÄý
+ ¥»¤å¤º®e§@¬°°ÑÊ÷©Ê½è¡A¾A·í¦a¦w¸Ë¾ã­Ó¤¤¤å±Æª©¨t²Î¡C
+\item ­Y±z´¿¸g¦w¸Ë¹L~CJK¡A±z¥iª½±µ°Ñ¦Ò²Ä~\ref{sec:steps}~¸`¡§¦w¸Ë¨BÆJ¡¨¡C
+\item ­Y¦b±zªº¨t²Î¤¤¡A©|¥¼¦w¸Ë¦³¤¤¤å~TFM¡BPK¡B©Î~PFB~µ¥ÀɮסA¥i°Ñ¦Ò²Ä~
+ \ref{sec:install-fonts}~¸`¡§¦r«¬¦w¸Ë¡¨¡C
+\item ­Y±zı±o¤W­zªº¦w¸Ë¨BÆJ¤£°÷¨ãÅé¡A½Ð°Ñ¦Ò²Ä~\ref{sec:my-settings}~
+ ¸`¡§§Úªº¨Ò¤l¡¨¡C
+\item ­Y·Qª¾¹D¦p¦ó¨ú±o¬ÛÃöÀɮסA½Ð°Ñ¦Òªþ¿ý~\ref{sec:getting-files}¡§ÀÉ
+ ®×¨ú±o¡¨¡C
+\item ­Y·Q¹ï¥»¤å©Ò¨Ï¥Î¤§¦rµü¦³©ÒºÃ´b¡A½Ð°Ñ¦Òªþ¿ý~\ref{sec:terms}¡§¦Wµü
+ ¸ÑÄÀ¡¨¡C
+\end{itemize}
+
+ª`·N¡G¥»¤å¤º®e¦b¦r«¬ªº¦w¸Ë¤è­±¡A¹ï©ó\ttftopkªº¤¶²Ð¸û¤Ö\footnote{¦]¥»¤å
+ ªº¥D­n§@ªÌ¥u¦³¨Ï¥Î\ntutocjk¨Ó¦w¸Ë¦r«¬¡A¹ï¤@¨Ç\ttftopk·sªº§ïÅܤw¤£¼ô±x¡C}
+ŪªÌ¥i¦Û~CJK~ªº¤å¥ó®M¥ó¤¤¦³Ãö¤¤¤åªº»¡©úÀÉ~|NTeXb5.doc|~¡]»P¥»Àɮ׸m©ó¦P
+¤@¥Ø¿ý¤¤¡^±o¨ì¸Ô²Óªº¸Ñ»¡¡C
+
+¥t¥~¥»¤å¦b¹ï©ó~em\TeX~Àô¹Ò¤Uªº¦w¸Ë¸Ñ»¡¡A¤]¥u¬O½Ķ¦Û~CJK~¤å¥ó¤¤ªº~
+|INSTALL|~³o­ÓÀÉ¡A¥»¤å§@ªÌ¨Ã¥¼¹ê§@¹L¡C
+
+\subsection{¶i¤@¨Bªº¸ê°T¨Ó·½}
+\label{sec:further-information}
+
+\begin{itemize}
+\item ¤åÄm~\cite{latex2nd}~¬°°ò¥»¤â¥U¡C
+\item ¤åÄm~\cite{latex-companion:1993}~¥i¬°¶i¶¥¤â¥U¡C
+\item °Ñ¦Ò~Newsgroup |comp.text.tex|~ªº~FAQ¡C
+\item ¦³Ãö~\TeX/\LaTeX~±`°Ýªº°ÝÃD¡A¥i°ÑÊ÷¤åÄm~\cite{tex-faq:1.9c}¡]ª©¥»
+ µy¡^¡C
+\end{itemize}
+
+\section{¨t²Î»Ý¨D}
+\label{sec:requirements}
+
+\subsection{µwÅéÀô¹Ò}
+\label{sec:hardware-requirements}
+
+\TeX/\LaTeX~¨t²Î¥Ø«e´X¥Gµ´¤j³¡¤Àªº§@·~¨t²Î¬Ò¦³¤ä´©¡C¦b~RAM~ªº»Ý¨D¤W«h
+µø±ý½s±ÆÀɮתº¤j¤p¡A¤p«h¼Æ¤Q¸U¦ì¤¸¡A¤j«h¼Æ¦Ê¸U¦ì¤¸¡CÁöµM~\TeX/\LaTeX~
+¨t²Î¦b~286~¥H«eªº¾÷¾¹´N¯à¶]¡]¨S°O¿ùªº¸Ü¡^¡A¦ý³Ì¦nÁÙ¬O¦³~8MB~¥H¤Wªº°O¾Ð
+Åé¡A¥HÀ³¥I¤¤¤å¦r¤§©Ò»Ý¡C¦Ü©óµwºÐªÅ¶¡¡A¦b¤¤¤å¦r«¬ªº¨Ï¥Î»Ý¤U¡A³Ì¦n¯à¦³~
+150MB~ªºªÅ¶¡¡]\TeX~¨t²Î¬ù~30MB¡A8~ºØ~NTU~¥þ¯u¦r«¬¤Î¨äÂà´«¦r«¬¡APS~¤Î~
+PK~¦r«¬µ¥¡A¬ù~80MB¡^¡C
+
+\subsection{³nÅé»Ý¨D}
+\label{sec:software-requirement}
+
+\begin{itemize}
+\item ¹ï~\LaTeX~¨t²Î¦³·§¬Aªº»{ÃÑ»P¹ï¦¹¨t²Î¨ã°ò¥»¾Þ§@ªº¯à¤O¡C³Ì¦n§A¦³¤å
+ Äm~\cite{latex2nd,latex-companion:1993}~³o¨â¥»®Ñ¦b¤âÃä¡C
+\item \LaTeXe~ªº°õ¦æÀô¹Ò¡C¥]¬A~\TeX/\LaTeX~ªº¬ÛÃöÀô¹Ò¡C
+\item \LaTeXe\ CJK~¨t²Î¡C
+\item ­Y·Q¦w¸Ë~PS~¦r«¬\footnotemark\addtocounter{footnote}{-1}¡A±z»Ý­n
+ \begin{enumerate}
+ \item \textsf{ntu2cjk}~¨t²Î¡C
+ \item NTU TrueType~¦r«¬¡C
+ \item gcc~½sĶ¾¹¤Î¬ÛÃöÀô¹Ò¡BGNU make¡C
+ \item GhostScript(3.12~¥H¤Wªºª©¥»)¡C
+ \item |afm2tfm|¡C
+ \item ¸ÑÀ£ÁYµ{¦¡¡G |arj|¡B|gzip|¡B|tar|¡C
+ \item ­Y·Q±q~PS~¦r«¬«Ø¥ß~PK~¦r«¬¡A«h»Ý~|ps2pk|~©Î~|gsftopk|¡C
+ \end{enumerate}
+\item ­Y±ý¦w¸Ë~PK~¦r«¬\footnote{´N¤¤¤å¤å¥óªº±Æª©¡B¹wÄý¤Î¦C¦L©Ò»Ýªº¦r«¬
+ ¦Ó¨¥¡A¥i¥H³æ¿W¥u¦s¦b¦³~PK~¦r«¬©Î~PS~¦r«¬¡F¦ý´N¤è«K©Ê»P¥iÄâ©Ê¦Ó¨¥¡A
+ µ§ªÌ«Øij¡A¥H°ÊºAªº¤è¦¡²£¥Í~PK~¦r«¬¨Ã«O¦³§¹¾ã¡]©Î±`¥Î¤Î°ÊºA¡^ªº~PS~
+ ¦r«¬¡A¬O¸û¨Îªº²Õ¦X¡C}¡A°Ñ¦Ò²Ä~\ref{sec:install-pk-fonts}~¸`¤§´y­z¡C
+\item ¿é¥X¡G|dvips|¡B|dvi2xx|¡B¤Î¨ä¥L~dvi~®æ¦¡ªºÂà´«µ{¦¡»P¨ä¤U´åªºÂà´«
+ µ{¦¡¡C
+\end{itemize}
+
+
+\section{¦w¸Ë¨BÆJ}
+\label{sec:steps}
+
+¥»¸`±N¥D­nªº¦w¸Ë¬yµ{¡A±ø¦C¦p¤U¡A¦U¶µ¤¤¸Ô²Óªº¦w¸Ë«ü¤Þ¡A±N¦b¥H«áªº¦U¸`¤¤
+ÄÄ­z¡G
+\begin{enumerate}
+\item ­Y¬O~\TeX/\LaTeX~¨t²Î¤v¦w¸Ë¦n¡A½Ð¸õ¤U¤@¨B¡C§_«h®Ú¾Ú¦Û¤v¨Ï¥Îªº§@
+ ·~¨t²Î¡A¨M©wÀ³¨Ï¥Î¦óºØ~\TeX~¨t²Î¡A¨Ã°Ñ¦Ò¨t²Î»Ý¨D¡]²Ä~
+ \ref{sec:requirements}~¸`¡^¡BÀɮרú±o¡]ªþ¿ý~\ref{sec:getting-files}¡^
+ ¤Î¨ä¥L©óªþ¿ý¤¤¦U¸`¤§¸ê®Æ¡A¨ú±o¬ÛÃöÀɮסA¨Ã«ö©Ò¨ú±o¸ê®Æ¤¤ªº«ü¥Ü¦w¸Ë¡C
+ ­Y¨ú±oªº¨t²Î¨S¦³~\LaTeXe~¨t²Î¡A©Î¬O±z·Q§ó·s¦Ü¸ûªñªºª©¥»¡A«h¥i¥t¥~¦Û~
+ CTAN~¨ú±o¡A¦b¤w¦w¸Ë¦nªº~\TeX~Àô¹Ò¤¤¬[¤W~\LaTeXe¡C
+\item ½T©w~\LaTeXe~¤v¦w¸Ë§´·í¡C¥i¥H¤@~\LaTeXe~®æ¦¡¥B¤º®e¬°­^¤åªºÀÉ®×
+ ¡]¦p~|sample.|\linebreak[1]|tex|¡^¡A±q°õ¦æ~|latex|~½sĶ¡A¥H~|xdvi|~
+ ©Î~|dviscr|¡B|dvisvga|~µ¥µ¥¡^¹wµø¡B¨ì~|dvips|~©Î~|dvilj|~Âন¦Lªí®æ
+ ¦¡¡]PostScript~©Î~PCL~µ¥®æ¦¡¡^¨Ã¦L¥X¡A¥H§PÂ_¬O§_¦w¸Ë¥¿½T¡C
+\item ¦w¸Ë~CJK~¤¤¤å~\LaTeXe~¨t²Î¡]°Ñ¦Ò²Ä~\ref{sec:install-CJK}~¸`¡^¡C
+\item ¿ï¾Ü¦w¸Ë~PK~©Î~PS~¦r«¬©Î¤GªÌ¬Ò¦w¸Ë¡]°Ñ¦Ò²Ä~
+ \ref{sec:install-pk-fonts}~¸`©Î²Ä~\ref{sec:install-ps-fonts}~¸`¡^¡C
+\item ¥H~CJK~¨t²Î¤¤©Ò´£¨Ñ¤§¤¤¤å~\LaTeXe~ÀÉ¡A|READMEb5.tex|¡A°µ´ú¸Õ¡]°Ñ
+ ¦Ò²Ä~\ref{sec:my-settings}~¸`¡^¡C
+\item ­Y¦³°ÝÃD¡A½Ð°Ñ¦Ò²Ä~\ref{sec:trouble-shooting}~¸`¡§°ÝÃD¸Ñ¨M¡¨¡C
+\end{enumerate}
+
+
+\section{¦w¸Ë~CJK~¤¤¤å~\LaTeXe~¨t²Î}
+\label{sec:install-CJK}
+
+½Ð°w¹ï±z©Ò¨Ï¥Î§@·~¨t²Î¡A°Ñ¦Ò¤U­±¹ïÀ³ªº¤p¸`¡C
+
+\subsection{¦b~UNIX~¨t²Î¤U~(web2c)}
+\label{sec:install-under-unix}
+
+\begin{enumerate}
+\item §ä­Ó¾A·íªº¥Ø¿ý±N¨ú¦^ªº~CJK~À£ÁYÀɸѶ}¡C¨Ò¦p±z±N¨ä¸Ñ¶}¦Ü~
+ |/tmp/CJK|¡C
+\item ¦pªG±z¯à¥H¨t²ÎºÞ²zªÌªº¨­¥÷¡]root¡^¦w¸Ë¡A«h¥i±N¸ÑÀ£«áªº~CJK~¥Ø¿ý
+ ¤¤~|texinput|~¥Ø¿ý¤Uªº©Ò¦³Àɮס]«O«ù­ì¥Ø¿ýµ²ºc¡^²¾¦Ü~\TeX~¨t²Î¯à§ä¨ì
+ ªº¦a¤è¡]³q±`¬O~
+ |${TEXMF}/|\linebreak[1]|tex/|\linebreak[1]|latex/|\ldots¡A
+ |${TEXMF}|~¬O~web2c~ªº~home¡A¤@¯ë¬°~
+ |/usr/|\linebreak[1]|local/|\linebreak[1]|lib/|\linebreak[1]|texmf|¡^¡A
+ ¨Ã±N¦¹¥Ø¿ý¦W§ï¦¨~CJK~©Î¾A·íªº¦WºÙ¡C¦pªG±z¤£¬O¨Ï¥Î¸û·sª©ªº~\TeX~¡]¹³~
+ web2c¡A³o¨Ç~\TeX~¨t²Î¡A´£¨Ñ¤F»¼°j·j´M¤l¥Ø¿ýÀɮתº¯à¤O¡^¡A«h±N~
+ |texinput|~¥Ø¿ý¤Uªº©Ò¦³Àɮײ¾¦Ü~\TeX~¨t²Î¯à§ä¨ìªº¦a¤è¡C¨Ò¦p¡G
+ \begin{verbatim}
+ $ cd /usr/local/lib/texmf/tex/latex
+ $ mv CJK CJK.old
+ $ cd /tmp/CJK
+ $ cd 4_1.0
+ $ mv texinput /usr/local/lib/texmf/tex/latex/CJK
+ \end{verbatim}
+ ¦pªG±z¤£¯à¥H~root~ªºÅv­­¦w¸Ë¡A½Ð¥HÃþ¦ü©ó¤U­±ªº«ü¥Oµy§@­×§ï¡]¦pªG¨Ï¥Î~
+ |csh|¡^¡A¨Ã«Øij±N¤§¥[¤J~|.login|¡]¥Î©ó~|/bin/csh|¡^©Î~|.profile|¡]¥Î
+ ©ó~|/bin/sh|¡^¤¤¡A¨Ï±o~\TeX~¯à·j´M¨ì~CJK~¥Ø¿ý¡G
+ \begin{verbatim}
+ setenv TEXINPUTS: §Aªº CJK ¥Ø¿ý¦W//
+ \end{verbatim}
+ ª`·N¡A­Y±z©Ò¨Ï¥Îªº~\TeX~¨t²Î¤£¤ä´©¦h¼h¤l¥Ø¿ý·j´M¡A«h±N½T¤Áªº¥Ø¿ý¦WºÙ
+ ¸s¡A¥[¤J¦Ü~|TEXINPUTS|~ªºÀô¹ÒÅܼƤ¤¡F©ÎªÌ±N~|texinput|~¥Ø¿ý¤U¤Î~
+ |Bg5|~¥Ø¿ý¤Uªº©Ò¦³Àɮײ¾¦Ü¬Y­Ó¥Ø¿ý¤¤¡A¨Ãµø¦¹¥Ø¿ý¬°~CJK~¥Ø¿ý¡C
+
+ ¨Ò¦p¡]¥H~|sh|~«ü¥O¬°¨Ò¡^¡G
+ \begin{verbatim}
+ ¡]°²³]±z·Q±N CJK ªº texinput ¥Ø¿ý²¾¦Ü ~/CJK/texinput¡^
+ # cd ~/CJK ¡]¦Ü CJK ¤l¥Ø¿ý¡^
+ # mv texinput texinput.old ¡]¦pªG±z¦³Âªº texinput ¥Ø¿ý¡A¥ý³Æ¥÷¡^
+ # cd /tmp/CJK ¡]¦Ü¸Ñ¶} CJK ªº¦a¤è¡^
+ # cd 4_1.0 ¡]¦Ü¥Ø«eªºª©¥»¤U¡^
+ # mv texinput ~/CJK ¡]±N texinput ¤l¥Ø¿ý²¾¦Ü ~/CJK¡^
+ # TEXINPUTS=":~/CJK/texinput//" ¡]©w¸qÀô¹ÒÅܼơ^
+ # export TEXINPUTS ¡]³]¬°³q¥ÎªºÀô¹ÒÅܼơ^
+ \end{verbatim}
+\item °Ñ¦Ò²Ä~\ref{sec:install-fonts}~¸`¦r«¬¦w¸Ë¡A±N~|.tfm|~ÀÉ¡APK~¦r«¬
+ ©Î~PS~¦r«¬¦w¸Ë¦Ü¾A·íªº¥Ø¿ý¤U¡C
+\item °Ñ¦Ò²Ä~\ref{sec:install-.fd}~¸`¦w¸Ë~|.fd|~ÀÉ¡A©Î°Ñ¦Ò~|fonts.txt|¡A
+ ¨Ã®Ú¾Ú¦r«¬¦w¸Ëªºµ²ªG¡A³]©w¬ÛÃöªº~|.fd|~ÀÉ¡C¥H¥»¤å°w¹ïªº\bigfive¤¤¤å¦Ó
+ ¨¥¡A¥²¶·­×§ï~|c00kai.fd|¡]¦pªG±z±N·¢®Ñ¦r±Ú³]¬°~|kai|¡^¡B|c00fs.fd|
+ ¡]¦pªG±z¨Ï¥Î¥é§º¦r±Ú¨Ã©w¬°~|fs|¡^¡Kµ¥¬ÛÃöÀɮס]¥ç¥i°Ñ¦Ò\ttftopk©Î
+ \ntutocjk©Ò´£¨Ñªº½d¨Ò¡^¡C
+\item ¦b¸Ñ¶}ªº~CJK~¥Ø¿ý¤¤¡A¶i¤J~\texttt{utils/Bg5conv}~¥Ø¿ý¤¤¡A½sĶ~
+ |bg5conv.c|¡A¦p¡G
+ \begin{verbatim}
+ gcc -O -s -o bg5conv bg5conv.c
+ \end{verbatim}
+ ±N²£¥Íªº°õ¦æÀÉ~|bg5conv|~³s¦P~|bg5latex|~³o­ÓÀÉ¡A²¾¦Ü~\TeX~¨t²Î¤¤©ñ
+ ¸m°õ¦æÀɪº¥Ø¿ý¤¤¡]¦pªGÅv­­¨¬°÷¡^¡C©Î¸m©ó­Ó¤Hªº¥Ø¿ý¤¤¡A¨Ã½T©w¦¹¥Ø¿ý¦s
+ ¦b©óÀô¹ÒÅܼÆ~|PATH|~¤¤¡]©Î¦b~|PATH|~¤¤¼W¥[¤@°õ¦æ¸ô®|¡A«Øij±N¦¹¸ô®|ªº
+ ³]©w¥[¨ì~login~ªº±Ò©lÀɤ¤¡^¡C
+
+ ¨Ò¦p¡G
+ \begin{verbatim}
+ # cd /tmp/CJK/4_1.0
+ # cd utils/Bg5conv
+ # gcc -O -s -o bg5conv bg5conv.c
+ # mv bg5conv bg5latex ~/bin
+ # export PATH=$PATH:~/bin
+ \end{verbatim}
+ ª`·N¡A¦pªG±z¦³Âªº~|bg5conv|~°õ¦æÀÉ¡A½Ð°È¥²§ó·s¡A¦]~4.0~¥H¤Wªºª©¥»»P
+ ¸û¦­ªºª©¥»¤£¦P¡]¥H~``|^^FF|''~¬°¤À¬É¦r¤¸¦Ó¤£¬O~``|.|''¡^¡C
+
+\item ¶i¤J¤l¥Ø¿ý~|doc/chinese|~¤¤¡A´ú¸Õ±zªº³]©w¡G
+ \begin{verbatim}
+ # cd /tmp/CJK/4_1.0
+ # cd doc/chinese
+ # bg5latex READMEb5.tex
+ \end{verbatim}
+ ¬Ý¬O§_¯à¶¶§Q§¹¦¨½sö¡C
+\end{enumerate}
+
+\subsection{¦b~DOS~©Î~OS/2~¨t²Î¤U}
+\label{sec:install-under-dos}
+
+\begin{enumerate}
+\item §ä­Ó¾A·íªº¥Ø¿ý±N¨ú¦^ªº~CJK~À£ÁYÀɸѶ}¡C
+\item ±N~CJK~¨t²Î¤¤~|texinput|~¥Ø¿ý¤Uªº©Ò¦³Àɮס]«O«ù­ì¥Ø¿ýµ²ºc¡^²¾¦Ü~
+ \TeX~¨t²Î¯à§ä¨ìªº¦a¤è¡A¨Ã±N¦¹¥Ø¿ý¦W§ï¦¨~|CJK|~©Î¾A·íªº¦WºÙ¡C¦pªG±z¤£
+ ¬O¨Ï¥Î¸û·sª©ªº~\TeX¡]¹³~em\TeX¡A³o¨Ç~\TeX~¨t²Î¡A´£¨Ñ¤F»¼°j·j´M¤l¥Ø¿ý
+ Àɮתº¯à¤O¡^¡A«h±N~|texinput|~¥Ø¿ý¤U»P¤Î±z­n¨Ï¥Îªº¤º½X¥Ø¿ý¡]Bg5¡^¤U
+ ªº©Ò¦³Àɮײ¾¦Ü~\TeX~¯à§ä¨ìªº¦a¤è¡C
+
+ ¥H~em\TeX~¨t²Î¬°¨Ò¡A±N~CJK~ªº~|texinput|~¤¤ªºÀɮײ¾¦Ü~
+ |c:\emtex\|\linebreak[1]|texinput\|\linebreak[1]|CJK\|\ldots¡A¨Ã¥H
+ ¤U­±ªº«ü¥Oµy§@­×§ï¡A¥H¨Ï±o~\TeX~¯à·j´M¨ì~CJK~¥Ø¿ý¡G
+ \begin{verbatim}
+ set emtexdir=c:\emtex
+ set texinput=%emtexdir%\texinput!!
+ \end{verbatim}
+\item ¦b~CJK~¨t²Î¤¤ªº~|utils\|\linebreak[1]|Bg5conv|~¥Ø¿ý¤¤¡A±N~
+ |bg5conv.|\linebreak[0]|exe|~³s¦P~|bg5latex.|\linebreak[0]|bat|~²¾¦Ü~
+ \TeX~ªº°õ¦æ¸ô®|~(|PATH|)~¤¤ªº¬Y­Ó¥Ø¿ý¡]©Î¼W¥[¤@°õ¦æ¸ô®|¡^¡C
+\item °Ñ¦Ò~\ref{sec:install-fonts}~¦w¸Ë¦r«¬¤@¸`¡A±N~|.tfm|~ÀÉ¡APK~¦r«¬
+ ©Î~PS~¦r«¬¦w¸Ë¦Ü¾A·íªº¥Ø¿ý¤U¡C
+\item °Ñ¦Ò~\ref{sec:install-.fd}~¦w¸Ë~|.fd|~Àɤ@¸`¡A®Ú¾Ú¦r«¬¦w¸Ëªºµ²ªG¡A
+ ³]©w¬ÛÃöªº~|.fd|~ÀÉ¡C¡]¥i°Ñ¦Ò\ttftopk©Î\ntutocjk©Ò´£¨Ñªº½d¨Ò¡^¡C
+\end{enumerate}
+
+
+\section{¦r«¬¦w¸Ë}
+\label{sec:install-fonts}
+
+¥»¤å¶È¥H¥Ñ~True Type~¦r«¬²£¥Íªº~PK~¦r«¬©Î~PS~¦r«¬¬°»¡©ú¡C¦r«¬¤§¨ú±o°Ñ
+¦Òªþ¿ý~\ref{sec:getting-files}~¤§»¡©ú¡C
+
+PK~¦r«¬¡]©Î~PS~¦r«¬¡^³Ì¦n¦w¸Ë¦b·í§A­n¤É¯Å~\TeX/\LaTeX~¨t²Î®É¤£·|¼vÅTªº
+¦ì¸m\footnote{¨Æ¹ê¤W¡A³Ì¦n±N¨º¨Ç¥¿±`¦w¸Ë~\TeX/\LaTeX~¨t²Î¥H«á¡A§A¥²»Ý
+ ÃB¥~­×§ï©Î¦w¸ËªºÀɮפε{¦¡¡A³£©ñ¦b¥t¥~¸û¨p¦³ªº¥Ø¿ý¤¤¡AµM«á¦A¥H~link~
+ ªº¤è¦¡¸m©ñ©ó­ì¥»À³³Bªº¦ì¸m¡C¦b~DOS~¤U¡A¦r«¬ÀÉ¥H¥[¦bÀô¹ÒÅܼƪº¸ô®|¤¤
+ ¬°¥D¡A¨ä¥¦ªº«h¥H½Æ»sªº¤è¦¡¨ú¥N~link¡C}¡A¦]¬°¤@¥¹¦¹Ãþ¦r«¬²£¥Í«á¡A§Y¥i
+ªø®É´Áªº¨Ï¥Î¡F¥t¥~¡A¦pªG¨C¦¸­n¤É¯Å~CJK~¨t²Î©Î~\TeX/\LaTeX~¨t²Î®É¡A¤]¥i
+©ñ¤ß¤jÁxªº¤U¤â¡C
+
+\subsection{PK~¦r«¬}
+\label{sec:install-pk-fonts}
+
+\subsubsection{¦Û°Ê²£¥Í~PK~¦r«¬}
+[©|¥¼§¹¦¨¡A½Ð°Ñ¦Ò\ttftopk©Î\ntutocjkªº¦w¸Ë»¡©ú]
+
+\subsubsection{¹w¥ý²£¥Í~PK~¦r«¬}
+[©|¥¼§¹¦¨¡A½Ð°Ñ¦Ò\ttftopkªº¦w¸Ë»¡©ú]
+
+\subsubsection{¥Ñ~PS~¦r«¬²£¥Í~PK~¦r«¬}
+°Ñ¦Ò~\ref{sec:install-ps-fonts} PS~¦r«¬¤@¸`¡C
+
+\subsection{PS~¦r«¬}
+\label{sec:install-ps-fonts}
+
+¦¹³B©Ò«üªº~PS~¦r«¬¬°¤¤¤å~PostScript Type 1~¦r«¬¡A¦pªG¦A¥[¤W¤@­Ó©Î¤G­Ó
+ªº~PS~¦r«¬¡]¥H³o¨Ç¤¤¤å~Type 1~¦r«¬¬°°ò©³©Òºc¦¨ªº¦r«¬¡^¡A¥i²Õ¦¨~
+PostScript Type 0~ªº¦r«¬¡C¦ý~\TeX~¨t²Î¥Ø«e¤´µLªk¨ú¥Î~Type 0~ªº¦r¡A©Ò¥H
+¥»¤å¤]¤£·|´£¤Î¡C¥t¥~ª½±µ¨ú¥Î~TTF~¦r«¬¦b¥¼¨Ó¤]¥i¯à¹ê²{¡A¨Ò¦p~
+Ghostscript~¦b·sªºª©¥»¤¤¡]4.01¡^¤w¯à¨Ï¥Î~TTF~¦r«¬¡C
+
+¥H¦w¸Ë·¢®Ñ~PS~¦r«¬¬°¨Ò¡A²­z¨ä¬yµ{¦p¤U¡]¸Ô²Ó½Ð°Ñ¦Ò\ntutocjk¤¤ªº~
+|README|~ÀÉ¡^¡G
+\begin{enumerate}
+\item ¨C¦¸°w¹ï¤@­Ó¦r±Ú¡]font family¡A¦p·¢®Ñ¡^²£¥Í~|.tfm|~¤Î~|.pfb|~ÀÉ
+ ®×¡C
+\item ­×§ï¦r±Ú¬ÛÃöªº~makefile~ÀÉ¡A¦p­×§ï~|kai.mak|~ªº¤º®e¡]¥H¤U¥H·¢®Ñ
+ ¬°¨Ò¡^¡C
+\item ­Y±z¨Ï¥Î~UNIX~¨t²Î¡A¿é¤J¤U­±ªº«ü¥O
+ \begin{verbatim}
+ make unix FONTMAK=kai.mak
+ \end{verbatim}
+ ­Y±z¦b~DOS~¤U¡A½Ð¤U¡G
+ \begin{verbatim}
+ make dos FONTMAK=kai.mak
+ \end{verbatim}
+ ­Y¤@¤Á¶¶§Q¡AÀ³¦³~55~­Óªº~|.pfb|~ÀɮשM~55~­Ó¡]©Î~110~­Ó¡A¦pªG~
+ |EXTENDED_FONT|~¬O³]~|YES|¡^|.tfm|~ÀɮסA¥B~TFM~Àɮתº¤j¤p¡A¨C­Ó¬ù¬°~
+ 1.2kB~¥ª¥k¡C
+\item ¤U~|make install-fonts|~¦¹«ü¥O¡A¥i±N©Ò¦³²£¥Íªº¦r«¬¦w¸Ë¦Ü±z³]©w¦b~
+ |kai.mak|~Àɮפ¤©Ò«ü©wªº¥Ø¿ý¤¤¡C±z¥i¯à¤]»Ý­n¥H~|make install-maps|~
+ ³o­Ó«ü¥O¦w¸Ë~|Fontmap|~¤Î~|psfonts.map|~µ¥¡C
+\item ®Ú¾Ú¥H¤W©Ò©w¸q¦r«¬¬ÛÃöªº¦WºÙ¡A±z¥²¶·­×§ï~|c00kai.fd|~¨Ã²¾¦Ü~
+ \TeX~§ä±o¨ìªº¥Ø¿ý¡C©ÎªÌ­×§ï~|c00kai.fdx|¡A¦pªG~|EXTENDED_FONT|~¬O³]
+ ¬°~|YES|¡A²¾¦Ü¾A·í¥Ø¿ý«á¡A¥²¶·±N¨ä¦WºÙ§ï¬°~|c00kai.fd|¡C
+\end{enumerate}
+
+\subsubsection{¥Ñ~PS~¦r«¬²£¥Í~PK~¦r«¬}
+
+¥Ñ~PS~¦r«¬²£¥Í~PK~¦r«¬¡A³q±`±z»Ý­nÂÇ~|gsftopk|~©Î~|ps2pk|~¨Ó§¹¦¨¡C
+
+¦pªG¥H~|gsftopk|~²£¥Í~PK~¦r¡AÁٻݭn~|gs|¡]Ghostscript¡^ªº»²§U¡A¦]¦¹¦b
+±z®×¸Ë¦n~PS~¦r«¬«á¡A°O¦í­n±N¦r«¬©Ò¦bªº¥Ø¿ý¦W¡A¥[¨ì~|GS_LIB|~³o­ÓÀô¹ÒÅÜ
+¼Æ¤¤¡A©ÎªÌ±N¥Ñ\ntutocjk©Ò²£¥Í~|.pfb|~ÀÉ¡A¥H~symbolic link~ªº¤è¦¡¡A¥þ³¡~
+link~¨ì~|gs|~©Ò©w¸qªº¦r«¬¥Ø¿ý¤¤¡C
+
+¦pªG¥Î~|ps2pk|¡A±z»Ý­n~AFM~ÀÉ¡]¦b\ntutocjk»s³y~|.pfb|~Àɮתº¹Lµ{¤¤¡A·|
+²£¥Í~AFM~ÀÉ¡^¡C³Ì¦n¨ú±o³Ì·sªºª©¥»¡A¥H«Oµý¦bŪ¨ú~PS~¦r«¬»P~AFM~ÀɮɡA¤£
+­P²£¥Í°ÝÃD¡C
+
+¦b±z©Ò¨Ï¥Îªº~\TeX/\LaTeX~¨t²Î¤¤¡A¤j·§³£¦³~|MakeTeXPK|~³o­ÓÀÉ¡A¥¦ªº¥\¥Î
+§Y¬O¦b¨t²Îµo²{¬Y­Ó~PK~¦r«¬¤£¦s¦b®É¡A¦Û°Ê²£¥Í¤§¡C¦Ó¦¹Àɦü¥G¤£»Ý¯S§OªºÃB
+¥~³]©w¡A³£¦³¦Û°Ê¥Ñ~PS~Àɲ£¥Í~PK~¦r«¬ªº¥\¯à¡C·íµM«e´£¬O³o¨Ç~PS~¦r«¬¥²¶·
+¥X²{¦b~|psfonta.map|~¤¤¡A|MakeTeXPK|~¥Î¦¹Àɤ¤ªº¦r«¬§PÂ_¥¿­n²£¥Í¦r¬O§_
+¬°~PS~¦r«¬¡]¨ä¹ê³o»Ý­nµø±z©Ò¦w¸Ëªº¬ÛÃö¨t²Î¦Ó©w¡^¡C
+
+%\section{¤£¦P¹q¸£¥­»O¤U¤§ª`·N¨Æ¶µ}
+%\label{sec:platforms}
+
+%\subsection{DOS}
+%\label{sec:platform-dos}
+
+%\subsection{UNIX}
+%\label{sec:platform-unix}
+
+\subsection{¦w¸Ë~\texttt{.fd}~ÀÉ}
+\label{sec:install-.fd}
+
+·í§A­nªº¦r«¬¡]TFM~ÀɮסBPK~¦r«¬¡B©Î~PS~¦r«¬¡^«ö·Ó¤W­z´X¸`¤è¦¡¦w¸Ë§´·í
+«á¡A±z¤]¶·­n¾A·í¦a³]©w¬ÛÃöªº~|.fd|~ÀÉ¡C¥»¸`±N²­z¤§¡C
+
+\LaTeXe~ªº~\textsf{NFSS}~³W®æ¤¤¡A­n´y­z¤@ºØ¦r«¬¥]§t¦³¤U¦C°Ñ¼Æ¡G
+\begin{enumerate}
+\item Encoding¡G½s½X¤è¦¡¡A¦p~|T1|¡B|OT1|¡B|DC|~µ¥¡C|U|~ªí¥Ü~unknown¡C
+ CJK~¨t²Îªº½s½X¤è¦¡¡]°Ñ¦Ò~|fonts.txt|¡^¤@¬°¤å¥ó¤¶­±©Ò¥Î¡A¦p~|Bg5|¡B
+ |GB|¡B|Bg5pmC|~µ¥¡A¤@¬°~\textsf{NFSS}~©Ò¨Ï¥Î¡A¦p~|C00|¡B~|C10|¡B
+ |C01|~µ¥¡C¦¹³B¡A§Y©w¸q¦b~|.fd|~Àɤ¤ªº½s½X¤è¦¡»Ý¨Ï¥Î«áªÌ¡C¥H§^¤H©Ò¨Ï
+ ¥Îªº\bigfive¬°¨Ò¡A~|C00|~¬O¥²»Ý©w¸qªº¡C
+\item Family¡G¦r±Ú¡A¦p~|cm|¡B|cmss|¡B|cmtt|~µ¥¡ACJK~¨t²Î¦b¦w¸Ë\bigfiveªº
+ ¦r«¬»Ý¦Û¦æ©w¸q¡A¦ý»Ý²Å¦X~\textsf{NFSS}~ªº³W©w¡A§Y©w¸q¦r±Úªº¦r¼Æ¤£¥i
+ ¶W¹L¤­­Ó¦r¥À¡C±z¥i°Ñ¦Ò¥]§t¦b¸Ñ¶}Àɮפ¤ªº½d¨Ò¡A¦p~|c00kai.fd|¡CCJK~¨t
+ ²Î¥H·¢®Ñ¡B©úÅé¡B´Ð®Ñµ¥ªí¥Ü¦r±Ú¡C§^¤H¥i¥Î~|kai|¡B|song|¡B|ming|¡B|fs|¡B
+ |black|¡B|round|~µ¥µ¥ªí¥Ü\bigfiveªº¦r±Ú¡C
+\item Series¡G¦r¨t¦C¡]¾î¦Vªº¤Ø¤o¡^¡A¦p~|m| (medium)¡B|b| (bold)¡B|bx|
+ (extended bold)~µ¥¡ACJK~ªu¥Î¦¹³W®æ¡C
+\item Shape¡G¦r§Îª¬¡A¦p~|n|¡B|sl|¡B|ol|¡B|it|~µ¥¡CCJK~ªu¥Î¤§¡C
+\item Size¡G¦r¤j¤p¡]ÂI¼Æ¡^¡A¦p~|10|¡B|12|~µ¥
+\item |\baselineskip|¡G¬Û¾F¨â¦æªº°ò·Ç½u¶¡¶Z¡A¤j³¡¤À±¡ªp¥Î¤£¨ì¦¹°Ñ¼Æ¡C
+\end{enumerate}
+
+®Ú¾Ú¥H¤Wªº±Ô­z¡A¥H¤U²³æ¤¶²Ð¸ÓÀɪºµ²ºc»P»yªk¡A¥H~|c00kai.fd|¡]¦b~
+\texttt{texinput/Bg5}~¥Ø¿ý¤U¡^ÀÉ¥]§t¤T­Ó¥D­nªº«ü¥O¡G
+\begin{enumerate}
+\item |\ProvidesFile{c00kai.fd}{|{\em release-info}|}|¡G»¡©ú¥»ÀɦW¨ÃÁ×
+ §K­«½Æ¸ü¤J¡C
+\item |\DeclareFontFamily{C00}{kai}{}|¡G»¡©ú¦¹ÀÉ¥H~|C00|~ªº½s½X¥B´y­z~
+ |kai|~¦r±Ú¡C¨ä¤¤~|C00|~¬O~\textsf{NFSS} encoding¡C
+\item |\DeclareFontShape{C00}{kai}{m}{n}{<-> CJK * b5ka}{}|¡G¦¹©R¥Oªº
+ ²Ä¤­­Ó°Ñ¼Æ¸û½ÆÂø¡A¥i°Ñ¦Ò~|fonts.txt|~ªº»¡©ú¡C¨ä¤¤~|*|~¸¹¥kªº°Ñ¼Æ§Y¬O
+ ¤@²Õ¦r«¬ÀɦWªº¦r­º¡ACJK~¨t²Î·|¦b§ÀºÝ¥[¤W¤G¦ì¼Æ¦r¡A¦¨¬°¦r«¬¦WºÙ
+ ¡]sub-font name¡^¡A¤£½×¬O~|.tfm|~ÀÉ¡B|.pfb|~ÀÉ©Î~|pk|~ÀɬһݻP¦¹¦W¤@
+ ­P¡C|CJK|~«h¬O¦r«¬¤j¤p¨ç¼Æ¡]size function¡^¡ACJK~¨t²Î©w¸q¤F¼Æ­Ó¦¹Ãþ
+ ¨ç¼Æ¡A¦p¡G
+ \begin{verbatim}
+ CJK ¬Û·í©ó `' (empty) ·N«ü¨Ï¥Î¦rªº¤j¤p»P latex ½sĶªº¤@­P¡C
+ sCJK ¬Û·í©ó `s' ¦P¤W¡A¦ý¨ú¦r¦³»~®É¤£Äµ§i¡]silent¡^¡C
+ CJKfixed ¬Û·í©ó `fixed' ­Y»Ý¨Dªº¦r¤j¤p¦b©w¸qªº½d³ò¤º¡A¤@«ß
+ ¨Ï¥Î«ü©wªº¦r¡C
+ sCJKfixed ¬Û·í©ó `sfixed' ¦P¤W¡A¦ý keep silent¡C
+ CJKsub ¬Û·í©ó `sub' ¥H¥t¤@Ãþ¦r«¬´À¥N¡C
+ CJKssub ¬Û·í©ó `ssub' ¦P¤W¡A¦ý keep silent¡C
+ \end{verbatim}
+ ¦p¦¹¥i¥H«Ü¤è«Kªº¦P®É¨Ï¥ÎÂI°}¦r¤Î¦V¶q¦r¡C
+\end{enumerate}
+
+³Ì²³æªº¦w¸Ë¤è¦¡´N¬O¡A¦pªG§A¬O¥Î\ttftopk¨Ó²£¥Í¦r«¬¡A«h±N¨ä©Ò´£¨Ñªº~
+|c00?????.fd|~½Æ»s¨ì~\texttt{texinput/Bg5}~¤U¡F­Y¬O¥H\ntutocjk¬°¥D¡A¥ç
+¦P²z¬°¤§¡F¥H¦¹Ãþ±À¡C
+
+\subsection{¿é¥X¤¤¤å~\LaTeX~¤å¥ó»P¦r«¬ªºÃö«Y}
+\label{sec:portability}
+
+¦¹³B©Ò«üªº¿é¥X¥]¬A±q¿Ã¹õ¡BÀɮפίȱiµ¥¡Cªí~\ref{tab:soft-vs-fonts}~¬O
+¥»¤å©Ò´£¤Îªº¤@¨Ç³n¥X³nÅé»P¨ä©Ò¨Ï¥Î¦r«¬¶¡ªºÃö«Y¡]°£¤F¯S§O»¡©ú¥~¡A³nÅ餧
+ª©¥»¤j­P¬Ò¬°¥»¤å¼¶¼g®É³Ìªñªºª©¥»¡^¡C¥Ñ¦¹ªí¥iª¾¡APK~¦r¦b¹wµø®É¬O¤£¥i©Î
+¯Êªº¡A¦Ó~PS~¦r¦b¦C¦L¥]§t¦³~PostScript~Àɮס]|.eps|¡B|.ps|~µ¥¡^ªº¤å¥ó®É
+¥ç¥²»Ý¥Î¨ì¡C
+\begin{table}[htbp]
+ \begin{center}
+ \leavevmode
+
+ \begin{tabular}{|>{\ttfamily}c|c|c|c|} \hline
+ ¿é¥X³nÅé & ¥\¯à & CJK PK~¦r«¬
+ & CJK PS~¦r«¬ \\ \hline
+ xdvi & ¹wµø & \hookstroke
+ & \crossmark \\
+ & &
+ & ¡]¯à¦³¤@­Ó¹w³]¦r¡^ \\ \hline
+ dvisvga & ¹wµø & \hookstroke
+ & \crossmark \\ \hline
+ dvips & ¿é¥X¦ÜÀɮשΦLªí¾÷ & \hookstroke
+ & \hookstroke \\
+ ¡]5.60~ª©¥»¥H¤U¡^ & &
+ & ¡]¦ý¬°¥þ³¡¸ü¤J¡^ \\ \hline
+ dvihp & ¿é¥X¦ÜÀɮשΦLªí¾÷ & \hookstroke
+ & \crossmark \\ \hline
+ gs & ¹wµø¤Î¿é¥X & \crossmark
+ & \hookstroke \\ \hline
+ \end{tabular}
+
+ \caption{~\TeX~¬ÛÃö³nÅé»P¨Ï¥Î~CJK~¦r«¬¶¡¤§Ãö«Y¡C}
+ \label{tab:soft-vs-fonts}
+ \end{center}
+\end{table}
+
+­n²£»s¤@½g¹Ï¤å¨Ã­Zªº¤å³¹¡A¤×¨ä¬O¤¤¤å¤å³¹¡A¦r±Ú¡]font family¡^»P¨ä¤Ø¤o
+¤j¤p¡]font size¡^ªºÅܤƬO¤£¥i©Î¯Êªº¡C¹ï¿é¥X®É¥²¶·ªº~PK~»P~PS~¦r«¬¦Ó¨¥¡A
+­Y¦b¦¹ª¬ªp¤U¤ñ¸û¤GªÌªº®t§O¡A¦Lªíªº¤è«K©Ê¤]¥i»¡¬O¦U¦³¤d¬î¡F­Y¦bºÏºÐªÅ¶¡
+ªº¨Ï¥Î¤W¡A¥i¯à´N¦³©Ò®t²§¡C¦]¬°¦P¤@¦r±Ú¦ý¤£¦P¤j¤pªº¦r¡APK~¦r«¬¥²»Ý¨CºØ
+¨Ï¥Î¨ìªº¤Ø¤o¬Ò¸ü¤J¦Ü¨ä¿é¥XÀɤ¤¡A¦Ó~PS~¦r«¬¥u»Ý¤@¦¸¡C
+
+¥Ø«e¡A¤å³¹¤¤©Ò¦³¨Ï¥Î¨ìªº~PFB~¦r«¬¡A­Y­n²£¥Í¤º§t¦¡ªº~PS~ÀÉ®×
+¡]self-contained Postscript output¡^¡A|dvips|~·|¥þ³¡¸ü¤J¦Ü¨ä¿é¥X¤¤¡C¦Ó
+¤U¤@¦¸¥Xª©ªº~|dvips|~µ{¦¡¤¤¡A±N¥i¯à°w¹ï¨ä¿é¥XÀɤ¤ªº¦¹¶µ¯ÊÂI¦³©Ò§ï¶i¡F
+·N§Y·sªºª©¥»¥u·|¸ü¤J¦b¤å³¹¤¤¦³¨Ï¥Î¨ìªº¦r¨ä¦b~|.pfb|~Àɤ¤©Ò¹ïÀ³¤§©w¸qªº
+³¡¤À¡C¡]¦bµ§ªÌ´ú¸Õ~|dvips| 5.60~ª©®É¡A¼È®ÉµLªk¦¨¥\¦a¨Ï¥Î¤¤¤å~CJK PS~¦r
+«¬¡A¤£¹L¬Û«H§Ö¤F¡C¡^
+
+¥Ø«e¼È®É¥i¥Î~|fontload|~³o­Ó³nÅé¡A¹F¦¨³o­Ó¥\¯à¡C
+
+
+\section{§Úªº¨Ò¤l}
+\label{sec:my-settings}
+
+¥Ø«e§Ú¨Ï¥Îªº¬O~Linux~§@·~¨t²Î¡A\TeX/\LaTeX~«h¨Ï¥Î~te\TeX~Àô¹Ò¡A¬ÛÃöªº
+¥Ø¿ý¦p¤U¡G
+\begin{itemize}
+\item |/usr/local/lib/texmf| ¦s©ñ~\TeX/\LaTeX~¨t²Î¡C
+\item |/usr/local/lib/ghostscript| ¦s©ñ~Ghostscript¡C
+\item |/usr/local/lib/ntuttf| ¦s©ñ~NTU TrueType~¦r«¬¤Î¥Ñ\ntutocjk©Ò²£
+ ¥Íªº¬ÛÃö¦r«¬¡C
+\item |~/CJK/4_1.0| ¦s©ñ¸Ñ¶}ªº~CJK~¨t²Î¡C
+\end{itemize}
+
+§Ú¥H¥¿±`ªº¦w¸Ëµ{§Ç¡A±N~te\TeX~¦w¸Ë¦b~|/usr/local/lib/texmf|¡F¤§«á±N~
+CJK~¦b§Úªº~|$HOME/CJK|~¤U¸Ñ¶}¡ACJK~³nÅ餤©Ò¦³ªºÀɮ׫K²£¥Í¦b~|CJK|~¤l¥Ø
+¿ý¤¤\footnote{¤§©Ò¥H±N~CJK ¦w¸Ë¦b¦Û¤v­Ó¤Hªº¥Ø¿ý¤U¡A¬O¦]¬°~CJK~±`§ó·s¡A
+ ¤£¤è«K±`½Ð¨t²ÎºÞ²zªÌÀWÀW§ïÅܳ]©w¡C¦A¥[¤W¬°¤F¦Û¤vÀɮ׬y³q©Êªº¦Ò¼{¡A¦³
+ ¦Û¤v¤@¥÷~CJK~ªº³]©w¡A­Ó¤H»{¬°¡A¦Û¤vªº~CJK~¤å¥ó¤~·|¦³¸û°ªµ{«×ªº²¾´Ó©Ê¡C
+ ­Y§A¤S¬O¨t²Î¤¤­t³d~CJK~³nÅ骺¤H¡A¬Æ©Î¬O¾ã­Ó~\TeX/\LaTeX~ªººûÅ@ªÌ¡A¦b
+ ¦Û¤v¨p¤Hªº¥Ø¿ý¤UºÞ²z¨Ã©w´Á§ó·s~CJK¡A¬O­Ó¤£¿ùªº¤è¦¡}¡A¨Ò¦p¡G
+\begin{verbatim}
+ % cd
+ % gunzip CJK-4.1.0.src.tar.gz | tar xvf -
+\end{verbatim}
+¨Ã°µ¥H¤Uªº³B²z¡G
+\begin{enumerate}
+\item ¦b~|~/CJK|~¤U«Ø¥ß¤@²Å¸¹¦¡ªºÀɮ׳sµ²¡]symbolic link¡^¡A¦W¬°~
+ |texinput|~¥B³sµ²¦Ü¥Ø«e~CJK~ª©¥»¦W¤Uªº~|texinput| ¡A
+ \begin{verbatim}
+ % cd ~/CJK
+ % rm -f texinput
+ % ln -s 4_1.0/texinput texinput
+ \end{verbatim}
+\item ½sĶ¤@­Ó·sªº~|bg5conv|~°õ¦æÀÉ¡C
+ \begin{verbatim}
+ % cd ~/CJK/4_1.0/utils/Bg5conv
+ % gcc -O -o bg5conv bg5conv.c
+ % mv bg5conv bg5latex ~/bin
+ \end{verbatim}
+ ­Y¤£¥u¬O¦w¸Ëµ¹¦Û¤v¥Î¡A«h¥i¥H~|root|~ªº¨­¥÷~|cp|~¦Ü~|/usr/local/bin|~
+ ¥Ø¿ý¤U¡C
+\item ¦b§Úªº~|$HOME|~¥Ø¿ý¤U~|.cshrc|~Àɤ¤¡]¦]¬°§Ú¥Îªº¬O~tcsh¡^¡A¼W¥[¤@
+ ¦æ
+ \begin{verbatim}
+ setenv TEXINPUTS ":~/CJK/texinput//"
+ \end{verbatim}
+\item ²£¥Í~|.tfm|~ÀɤÎ~|.pfb|~¦r«¬¡C¦b¦¹§Ú«ö·Ó\ntutocjk¤¤¡A¤@¤@~
+ ``make''~¥X¬Û¹ïªº~|.pfb|~¦r«¬¡A¦@~8~²Õ¡A¨C²Õ~55~­Ó~ |.tfm|~¤Î~|.pfb|~
+ ÀÉ¡C§Ú±N³o¨ÇÀɮײ¾¦Ü~
+ \texttt{/usr/local/lib/\linebreak[1]ntuttf/\linebreak[1]type1/}~¤Î~
+ \texttt{/usr/local/lib/ntuttf/afm/}~¬ÛÃö©ó¨ä¦r±Úªº¥Ø¿ý¤U¡C¨Ã±N
+ ~|config.CJK|~¤Î~|CJK.map|~²¾¦Ü~|$TEXMF/dvips|~¤U¡C
+\item ³]©w~|.fd|~ÀÉ¡C¦]¬°§Ú¨Ï¥Îªº¬O¥H~PS~¦r«¬¬°¥Dªº~PFB¡]¥Ñ\ntutocjk²£
+ ¥Í¡^¤Î¥Ñ¨ä²£¥Íªº~PK~¦r«¬¡]¥Ñ~|gsftopk|~²£¥Í¡^¡A©Ò¥H§Úª½±µ±Ä¥Î
+ \ntutocjk©Ò´£¨Ñªº~|c00|*|.fd|~ÀÉ¡A¨S¦³§@¥ô¦ó§ó§ï¡]¦]¬°§Ú¦³³d¥ô¨Ï¥¦»P
+ §Úªº¤u§@Àô¹Ò¤@­P :-¡^¡C§Ú±N¨ä²¾¦Ü~|~/CJK/texinput/Bg5/|~¥Ø¿ý¤U¡C
+\end{enumerate}
+
+\subsection{«Ø¥ß¤å½Z}
+\label{sec:creating-tex}
+
+¤¤¤å~CJK \TeX~¤å½Z»P¤@¯ë~\TeX~¤å½Zªº¤£¦P¥D­n¦b©ó¡G
+\begin{itemize}
+\item ¦b©Ò¿×~\LaTeX~¤å¥óªº~preamble¡]|\documentclass|~¦Ü~
+ |\begin{document}|¡^°Ï°ì¤¤¡A¥²¶·¦³~|\usepackage{CJK}|~³o­Ó©R¥O¡A§Y¥²
+ ¶·¸ü¤J~|CJK.sty|¡C
+\item ¤¤¤å¦r¥²¶·¦b~|CJK|~©Î~|CJK*|~ªº¤¤¤åÀô¹Ò¤¤¡C§Y¡G
+ \begin{verbatim}
+ \begin{CJK*}{}{}
+ ¤¤¤å¬q¸¨¡B³¹¸`¡B¹Ï§Î¡Bªí®æ¡B°Ñ¦Ò¤åÄm¡B¡Kµ¥
+ ...
+ \newpage
+ \end{CJK*}
+ \end{verbatim}
+\item ­nÅÜ´«¦r«¬¥i¥Î~|\CJKfamily|~©R¥O¡A¦p~|\CJKfamily{fs}|~±N¥H¤Uªº¦r
+ «¬§ï¦¨¥é§º¦r¡]·íµM~|fs|~³o­Ó¦r§Î¦WºÙ¥²¶·©w¸q¦b~|c00fs.fd|~¤¤¡^¡C
+\end{itemize}
+
+§Úªº¥Îªk³£¬O¥H¤@­Ó¤¤¤åÀô¹Ò¥]¦í©Ò¦³ªº¤å³¹¤º®e¡A¦p¹Ï~
+\ref{fig:my-example}~©Ò¥Ü¡C
+
+\newsavebox{\myex}
+\begin{lrbox}{\myex}
+ \begin{minipage}{.9\textwidth}
+ \footnotesize
+ \begin{verbatim}
+ \documentclass[12pt]{article}
+ \usepackage{CJK}
+
+ \begin{document}
+ \begin{CJK*}{Bg5}{fs}
+ \CJKtilde
+
+ \section{²Ä¤@¸`}
+ \label{sec:section-1}
+ °Ñ¦Ò¹Ï~\ref{fig:apply-pk-and-ps-fonts}¡C
+
+ \begin{figure}[htbp]
+ \begin{center}
+ \leavevmode
+ \includegraphics{pkpsapps.eps}
+ \caption{|pk|~¦r«¬»P~|.pfb|~¦r«¬ªºÀ³¥Î¹ïÀ³¹Ï}
+ \label{fig:apply-pk-and-ps-fonts}
+ \end{center}
+ \end{figure}
+
+ \bibliographystyle{plain}
+ \bibliography{mybib}
+
+ \newpage %¨Ï¦³¥¿½Tªº¤¤¤å¿é¥X¡C
+ \end{CJK*}
+ \end{document}
+ \end{verbatim}
+ \end{minipage}
+\end{lrbox}
+
+\begin{figure}[htbp]
+ \begin{center}
+ \leavevmode
+ \fbox{\usebox{\myex}}
+ \caption{§Úªº~CJK~¤å¥ó½d¨Ò¡C}
+ \label{fig:my-example}
+ \end{center}
+\end{figure}
+
+\subsection{¥H~\LaTeXe\ CJK~½s±Æª©­±}
+\label{sec:clatexing}
+
+´N¦P¤@¯ëªº~\LaTeX~Àɤ@¼Ë¡A¦ý¥H~|bg5latex|~¨ú¥N~|latex|¡A¦p¡G
+\begin{verbatim}
+ % bg5latex mylatex.tex
+ ©ÎªÌ
+ % bg5latex mylatex
+\end{verbatim}
+
+\subsection{¹wÄý}
+\label{sec:preview}
+
+¤j³¡¤À±¡ªp¤U§Ú¥H~|xdvi|~¹wÄý~|.dvi|~ÀÉ¡]¦b~Emacs~©Î~Mule~¤¤­Y¨Ï¥Î~
+AUC\TeX~³o®M³nÅé¡A§ó¯àÅã¥X¨ä¬ð¥Xªº¦a¤è¡A¤×¨ä¬O¥u¹wÄý¤å³¹¤¤ªº¤@¶ô°Ï°ì¡A
+ÀH®É¥iÀ˵ø¸Ó°Ï°ìªº±Æª©±¡§Î¡^¡C
+
+¥t¥~¡A§Ú¤]·|µø±¡ªp¥Î¤£¦Pªº¹wµøµ{¦¡¡C¤ñ¦p¦b~Linux~ªº~virtual terminal
+mode~§Ú¥H~|dvisvga|~¹wµø¡C¦b¯Ê¥F~|pk|~¦r«¬©Î¨S¦³~|xdvi|~ªº¤Ö¼Æ±¡§Î¤U¡A
+§Ú¤]¥Î~|ghostview|~¹wµø¸g¥Ñ~|dvips|~²£¥Íªº~|.ps|~ÀɮסC
+
+\subsection{¦C¦L}
+\label{sec:printing}
+
+²£¥Í¤Î¦C¦L~|PostScript|~Àɮ׬O§Ú³Ì±`¥Îªº¤è¦¡¡A¦]¬°¦b§Úªº¤å³¹¤¤¡A¹Ï§Î¬O¤£
+¥i¤Öªº¸ê®Æ¡A¦Ó¥¦­Ì´X¥G³£¬O~|.eps|~ªº®æ¦¡¡]¥Ñ~|xfig|¡BAutoCAD¡B|GnuPlot|¡B
+|xv|¡B¡Kµ¥©Ò²£¥Í¡^¡C©Ò²£¥Íªº~|.ps|~ÀÉ¡A©ÎªÌ¬O¥Ñ~PostScript~¦Lªí¾÷¡A¥ç©Î
+ªÌ³z¹L~ Ghostscript~ªºÂà´«¡A¦Ó¿é¥X¨ì~Laserjet~©Î~Deskjet~¬Æ©Î¨ìÂI°}¦¡¦L
+ªí¾÷¥h¡C
+
+¤@¯ë¦Ó¨¥¡A¥H~|dvips cjk-doc|~·|²£¥Í¥i¦C¦Lªº¿é¥X¡A¦A¥H~|lpr cjk-doc.ps|~
+ªº¦Lªí«ü¥O¦C¦L§Y¥i¡C¦ý±z­Y¤£Ä@²£¥Í¤¤¤å~PK~¦r«¬¡A¥B±z¤£¬O¨Ï¥Î~PostScript~
+¦Lªí¾÷¡A¤S¥Î\ntutocjk¦w¸Ë~PS~¦r«¬¡A¤]°w¹ï~ Ghostscript~ªº³]©w¦w¸Ë¦n³o¨Ç
+¦r«¬¡A¦Ó¥B±zªº¦LªíÁͰʵ{¦¡¯à¥H~|gs|~¬°¥D¡]Linux¨t²Î¤W¦h¼Æ³£¥H¦¹¤è¦¡³]©w¡^¡A
+«h§A¥i¥Hª½±µ¥H~|lpr|~³o­Ó©R¥O¦C¦L~ |.ps|~ÀÉ¡]¬Æ¦Ü¬O~|.dvi|~ÀÉ¡^¡C¦p¡G
+\begin{verbatim}
+ % dvips -P CJK cjk-doc
+ % lpr cjk-doc.ps
+\end{verbatim}
+
+¥H~|dvihp|~²£¥Í¦C¦LÀɤ]¬O¤è¦¡¤§¤@¡A¨ä¿é¥X®æ¦¡¬°~PCL¡A©Î¬O~HP~¦Lªí¾÷ªº®æ
+¦¡¡C¦ý¦]µLªk³B²z¤å³¹¤¤¥]§tªº~PostScript~ÀɮסA©Ò¥H§Ú¨Ã¤£±`¥Î¡C
+
+·í­n²£¥Í¥iÄ⪺¦C¦LÀɮ׮榡¡]self-contained PostScript file¡^¡A§Ú·|¥H²£¥Í~
+Post\-Script~¡]|.ps|¡^ªº®æ¦¡¬°¥D¡C¦r«¬¨Ó·½¤§¤@¬O¥Ñ¹wµø«á¦Û°Ê²£¥Íªº~PK~
+¦r«¬§@¬°~ |dvips|~ªº¿é¤J¦r«¬¡C¦¹¤è¦¡¥i¥H¤U¦C©R¥O§¹¦¨¡G
+\begin{verbatim}
+ % dvips cjk_doc -o cjk-doc-contains-pk-fonts.ps
+\end{verbatim}
+¦¹®É~|psfonts.map|~¤¤»Ý¤£§t\ntutocjk©Ò²£¥Íªº¤¤¤å¦r«¬¡]CJK 4.0 ¥H¤Wªºª©¥»
+¤¤©Ò§tªº\ntutocjk¡A¹w³]¬°¦¹±¡§Î¡^¡A|dvips|~¤~·|¨ú¥Î¤¤¤å~PK~¦r¡A©Î¦pªG¤¤
+¤å~PK~¦r«¬¤£¦s¦bªº¸Ü¡A·|¦Û°Ê²£¥Í¤§¡C¦b¨Ï¥Î~|xdvi|~©Î¬ÛÃö³nÅé¹wµø®É¡A¦]¥H~
+PK~¦r«¬¬°¥D¡A¦b¦r«¬§ä¤£¨ìªº±¡ªp¤U¡A¥ç·|¦Û°Ê²£¥Í¤§¡C
+
+¥t¥~«h¬O¥O~|dvips|~¨ú¥Î¤¤¤å~PS~¦r¡A¦b«ö·Ó\ntutocjk¤¤»¡©ú¦w¸Ë«á¡A©Ò¦³ªº¤¤
+¤å~PS~¦rªº¹ïÀ³ÀÉ·|¦s¦b©ó~|CJK.map|~Àɤ¤¡C­Y­n¥H¦¹¤è¦¡²£¥Í¥iÄ⦡ªº~|.ps|~
+ÀÉ¡A¥²¶·¶i¤@¨B¦a¥H~|gs|~©Î~|fontload|~µ¥Ãþ¦üªº³nÅé¡A±N~PS~¦r«¬¸ü¤J¨ì¿é¥X
+ªºÀɮפ¤¡C­Y¥H~|fontload|~¦Ó¨¥¡A¦b~UNIX~¨t²Î¤U¡A¥i¥H¤U­±ªº«ü¥O¹F¦¨¡G
+\begin{verbatim}
+ % dvips -P CJK -o cjk-doc-no-ps-fonts-contained.ps cjk_doc.dvi
+ % fload cjk-doc-no-ps-fonts-contained.ps > cjk-doc-contains-ps-fonts.ps
+ % lpr cjk-doc-contains-ps-fonts.ps
+\end{verbatim}
+¦¹®É~|cjk-doc-contains-ps-fonts.ps|~©Î~|cjk-doc-contains-ps-fonts.ps|~´N
+¬O§¹¾ãªº~PS~ÀɮפF¡A¤]´N¬O»¡¡A±z¥i¥H¥á¨ì¥ô¦ó¤@¥x¤ä´©¦³¦C¦L~PostScript~ÀÉ
+®×ªº¦Lªí¾÷©Îµ{¦¡¤F¡C
+
+¥H¤W´N¬O§Ú­Ó¤H¹ï~CJK~¤¤¤å~\LaTeX~¨t²Îªº³]©w¡A¦³¤HÄ@·N´£¨Ñ¦Û¤vªº¦w¸Ë¸gÅç¶Ü¡S
+
+
+\section{°ÝÃD¸Ñ¨M}
+\label{sec:trouble-shooting}
+
+¦b¨Ï¥Î¹wÄýµ{¦¡ªº®É­Ô¡A¥i¯à·|¹J¨ìªº°ÝÃD»P¨ä¸Ñ¨Mªº¤è¦¡¦p¤U¡G
+\begin{itemize}
+\item PK~¦r«¬§ä¤£¨ì¡C
+\item ¤£·|¦Û°Ê²£¥Í~PK~¦r«¬¡C
+\end{itemize}
+
+[³\¦h°ÝÃD»P¨ä¸Ñ¨M¤è¦¡©|¥¼¾ã²z¯Ç¤J]
+
+
+%\section{¨ä¥L}
+%\label{sec:misc}
+
+
+\section{·PÁÂ}
+\label{sec:acknowledgements}
+
+\begin{itemize}
+\item ¦³³o»ò¦h¤H¡A°^Äm³\¦h¤ß¤O¡A§¹¦¨³\¦h¤è«K¥B¤º®eÂ×´Iªºµ{¦¡¡C
+\item ¦³§ó¦hªº¨Ï¥ÎªÌ¡A¨Ï¥Î³o¨Çµ{¦¡¡A¨Ï¥L­Ì§ó¤W¼h¼Ó¡C
+\item ³oºØ¯S§Oªº¬Û¤¬¼vÅT¡A¥Í¥Í¤£®§¦a´`ÀôµÛ¡A¤~´£¤É¤F§Ú­Ìªº¥Í¬¡¼h­±¡C
+\end{itemize}
+
+
+%\section{¥»¤å§@ªÌ}
+%\label{sec:the-author}
+
+%§õ§g¦t (Chun-Yu Lee)
+%d791013@ce.ntu.edu.tw ©Î \\
+%chunylee@ms1.hinet.net
+
+
+%\bibliography{READMEb5}
+%\bibliographystyle{plain}
+
+
+\begin{thebibliography}{1}
+
+\bibitem{latex-companion:1993}
+Michel Goossens, Frank Mittelbach, and Alexander Samarin.
+\newblock {\em The \LaTeX Companion}.
+\newblock Addison Wesley, 1993.
+
+\bibitem{tex-faq:1.9c}
+Bobby Bodenheimer.
+\newblock The new \TeX\ FAQ --- your 100 questions answered:
+ Version 1.9c, date 1994/12/06.
+\newblock 1994.
+
+\bibitem{latex2nd}
+Leslie Lamport.
+\newblock {\em \LaTeX\ --- A Document Preparation System --- User's
+ Guide and Reference Manual}.
+\newblock Addison Wesley, 2 edition, 1994.
+
+\end{thebibliography}
+
+
+\appendix
+\section{¦Wµü¸ÑÄÀ}
+\label{sec:terms}
+
+¤U¦C¦Wµü¬°¥»¤å¤¤©Ò¨Ï¥Î¡A¨Ã§½­­©ó¤U¦C·N«ä¡G
+
+\begin{description}
+\item[PK~¦r«¬:] PK fonts¡C¤@ºØÀ£ÁY¹LªºÂI°}¦r«¬®æ¦¡¡C¼sªx¨Ï¥Î¦b~
+ TeX/\LaTeX~»Ý­n¿é¥XÂI°}¦rªº¦a¤è¡C¦p¹wµø©Î¦C¦L¿é¥X¡C¦b¦¹°¾«ü¤¤¤å~CJK
+ PK~¦r«¬¡C
+\item[PS~¦r«¬:] PostScript Type 1 fonts¡CPostScript~¦r¦³¼ÆºØ«¬¦¡¡A¥»¤å
+ ·N«ü~Type 1~¦r«¬¡C¨ä¦³¨âºØ®æ¦¡¡GPFA (Printer Font Ascii)~¤Î~PFB
+ (Printer Font Binary)¡C¦b¦¹°¾«ü¤¤¤å~CJK PS~¦r«¬¡C
+\item[¥D¾÷¡B¤u§@¯¸:] A host computer, work station, etc¡Cªx«ü¬Y»O´£¨Ñ
+ ¸ê·½©ÎªA°Èªº¹q¸£¡C¦p~FTP~¯¸¡C
+\item[CTAN:] Comprehensive \TeX\ Archive Network¡C¥»¤å«ü¦¬¶°´X¥G©Ò¦³¦³
+ Ãö~TeX/\LaTeX~¨t²Î¤Î¤å¥óªº~FTP~¯¸¡C¥Ø«e¤wª¾ªº~CTAN~¸Ô¦C©óªþ¿ý~
+ \ref{sec:ctan-mirrors}¡C
+\item[IFCSS:] The CCIC (Chinese Community Information Center) of IFCSS
+ (Independent Federation of Chinese Students and Scholars)¡Cªþ¿ý~
+ \ref{sec:ifcss-mirrors}~¤¤¬O´X­Ó¦³¦Wªº~ifcss~¯¸¡C
+\item[AFM~ÀÉ®×:] Adobe Font Metrics¡C¦s¦³½s½X¤Î¦r½d³òµ¥¸ê®Æ¡C
+\item[TFM~ÀÉ®×:] \TeX\ Font Metrics¡C
+\item[|.fd|~ÀÉ®×:] ¦r«¬´y­zÀÉ~(font description files)¡C°O¿ý¬ÛÃö©ó¬Y¤@
+ ºØ¤º½X¡C
+\item[GS~©Î~GhostScript:] ±`¥Îªº~PostScript~»y¨¥¸ÑĶ¾¹¡]interpreter¡^
+ ¤§¤@¡C
+\item[|afm2tfm|:] ±N~AFM~Àɮ׮榡Âà´«¦¨~TFM~Àɮ׮榡ªºµ{¦¡¡C
+\item[¤@²Õ¦r«¬ÀÉ:] ¦pªG¬O¨Ï¥ÎÀ£ÁY¹Lªº¦r«¬¡A§Y¤£¬O¨Ï¥Î~pmC~¶}ÀYªº¦r±Ú¡A
+ ¦@¦³~55~­Ó¤l¦r«¬ÀÉ¡C¨Ò¦p¡G|b5ka01.pfb|¡B|b5ka02.pfb|¡B¡K¡B
+ |b5ka55.pfb|¡C
+\item[\textsf{NFSS}:] New Font Selection Scheme¡C¥Ñ~Frank Mittelbach~
+ ©M~Rainer Sch\"opf~©Ò´£¥Xªº¦r«¬¿ï¾Ü¨t²Î¡C
+\end{description}
+
+\section{Àɮרú±o}
+\label{sec:getting-files}
+
+\begin{description}
+\item[\LaTeXe~°õ¦æÀô¹Ò¡G] ¤@¯ë¬Ò¦³¦¨®Mªº¨t²Î¨Ñ¨Ï¥ÎªÌ²³æ¦w¸Ë¡A¦p¦b~DOS~
+ ¤Uªº~em\TeX¡F¦b~Linux~¤U¦³~N\TeX¡B~te\TeX~µ¥¡FUNIX~¤W«h¦p~web2c~ªºª©
+ ¥»µ¥¡C³o¨Ç³£´²¦b~CTAN~ªº¥Ø¿ý¤U¡CÄ´¦p~em\TeX~¦b~
+ |systems/|\linebreak[1]|msdos/|\linebreak[1]|emtex|~¤¤¡FN\TeX~¦b¡S¡S¡F
+ web2c~ªºª©¥»¦b¡S¡S¡C\LaTeXe~¨t²Î¥»¨­«h¦b~CTAN¡G
+ |macros/|\linebreak[1]|latex/|\linebreak[1]|base|~¤U¡C
+\item[\LaTeXe~CJK~¨t²Î¡G] CTAN: |language/chinese/CJK|~©Î~IFCSS host:
+ |tex/|\linebreak[1]|CJK.X_X.|\linebreak[1]|tar.gz|¡C
+\item[NTU TrueType~¦r«¬¡G] IFCSS host: |fonts/big5/ms-win|¡C±N·¢®Ñ¡B©ú
+ Åé¡B¥é§ºÅéµ¥³¡¤À¡]©Î¥þ³¡¡^ªº~ARJ~Àɨú¦^«á¡A°Ñ¦Ò»P³o¨Ç¦r«¬¦b¦P¤@¥Ø¿ý
+ ªº»¡©úÀÉ¡]©Î°Ñ¦Òªþ¦b\ntutocjk¤¤ªº~|README|~ÀÉ¡^¡A±N¨äÁ٭즨­Ó§O~TTF~
+ ¦r«¬¡C
+\item[\textsf{ntu2cjk, ttf2pk}:] ¦r«¬²£¥Íµ{¦¡¡C¥¦¥]§t¦b~¡§\LaTeXe\ CJK~
+ ¨t²Î¡¨¤¤¡C
+\item[GhostScript:] CTAN:
+ |support/|\linebreak[1]|ghostscript/|\linebreak[1]|aladdin|~©Î~
+ |support/|\linebreak[1]|ghostscript/|\linebreak[1]|gnu|¡C
+\item[|dvips|:] CTAN host: UNIX~ª©¦b~|dviware/dvips|¡FDOS~ª©¦b~
+ |systems/msdos/|\linebreak[1]|dviware/|\linebreak[1]|dvips/|%
+ \linebreak[1]|dvips558.pc|¡C
+\item[|afm2tfm|:] ¥]§t¦b~dvips~¨t²Î¤¤¡C
+\item[|ps2pk|:] CTAN: |fonts/utilities/ps2pk|¡A©Î¥]§t¦b¤@¯ë®M¸Ëªº~
+ \TeX/\LaTeX~¨t²Î¤¤¡C
+\item[|gsftopk|:] CTAN: |fonts/utilities/gsftopk|¡A©Î¥]§t¦b¤@¯ë®M¸Ëªº~
+ \TeX/\LaTeX~¨t²Î¤¤¡C
+\item[|dvi2|xx:] ¦p~|dvilj|¡B|dvidm|¡B¡K¡C¦b~CTAN: |dviware|~¥Ø¿ý¤U¡C
+\item[AUC\TeX:] CTAN: |support/auctex|~¥Ø¿ý¤¤ªº~
+ |auctex.tar.gz|\linebreak[1]¡]~unix~¡^©Î~|auctex.zip|~¡]dos¡^¡C
+\item[|fontload|:] CTAN: |fonts/utilities/fontload|¡C
+\item[Mule~ªº¤¤¤å¿é¤Jªk¡G] IFCSS: |mule/lisp/quail-b5|¡C
+\end{description}
+
+
+\section{¨ä¥L¬ÛÃöªº³nÅé»P¤u¨ã}
+\label{sec:other-stuffs}
+
+\subsection{¦b~Linux~¨t²Î¤Wªº\bigfive¤¤¤å¨t²Î¤Î¼ÒÀÀ²×ºÝ¾÷µ{¦¡}
+\label{sec:chinese-systems}
+
+\begin{itemize}
+\item chdrv
+\item yact
+\item CXterm
+\item xcin
+\end{itemize}
+
+\subsection{¤¤¤å½s¿è\ -- Mule}
+\label{sec:mule}
+
+¨Ï¥Î~Mule~¬°½s¿è¤¤¤å~\LaTeX~¤å¥óªº¤u¨ãªº¨Ï¥ÎªÌ¡A¥i±N¤U­±ªº³]©w¥[¦Ü~
+|$HOME/|\linebreak[1]|.emacs|~Àɤ¤¡G
+\begin{verbatim}
+ ;;; Chinese Big-5 environment
+ (set-primary-environment 'chinese)
+ (set-default-file-coding-system '*big5*)
+ (setq display-coding-system '*big5*)
+ (setq keyboard-coding-system '*big5*)
+ ;; input methods
+ (add-hook 'quail-package-alist '("tsangchi-b5" "quail/tsangchi-b5"))
+ (add-hook 'quail-package-alist '("quick-b5" "quail/quick-b5"))
+ ; the default input method
+ (setq-default quail-current-package
+ (assoc "tsangchi-b5" quail-package-alist))
+\end{verbatim}
+
+¤Á´«¤¤­^¤å¿é¤J¥i«ö~|C-]|¡A­n¿ï¾Ü¨ä¥Lªº¿é¤Jªk¥i«ö~|M-s|¡]|Alt-s|¡^¡C
+
+³]©w¿é¤Jªk®É¥i¿ï¾Ü¦Û¤v²ßºDªº¡C¦b~IFCSS Mule~ªº¥Ø¿ý¤¤¡]°Ñ¦Ò²Ä~
+\ref{sec:getting-files}~¸`¡^¦³¤@¨Ç¤¤¤å¿é¤Jªk¡A¨ä¤¤¥]¬A¦³¡G
+\begin{center}
+ \begin{tabular}{ll}\hline
+ ÀÉ®× & ¹ïÀ³¤§¿é¤Jªk \\\hline
+ cns-b5-input.tar.gz & ¤º§t~|tsangchi-b5.el|¡]­Ü¾e¡^¤Î \\
+ & |quick-b5.el|¡]²©ö¡^µ¥¿é¤Jªk \\
+ zozy.el.gz & ¹s³üª`­µ \\
+ cj.el.gz & ­Ü¾e \\
+ simplex.el.gz & ²©ö \\
+ punct-b5.el.gz & ¼ÐÂI²Å¸¹ \\
+ qj-b5.el.gz & ¥þ§Î \\
+ etzy.el.gz & ­Ê¤Ñª`­µ \\
+ boshiamy.el.gz & åF½¼¦Ì \\
+ array30.el.gz & ¦æ¦C~30 \\\hline
+ \end{tabular}
+\end{center}
+
+¥H¤W¬°¸û±`¨£ªº¿é¤Jªk¡C¸Ó¥Ø¿ý¤¤¥ç¥]§t¤U¦C¿é¤Jªk¡G
+\begin{center}
+ \begin{tabular}{ll} \hline
+ ÀÉ®× & ¹ïÀ³¤§¿é¤Jªk \\\hline
+ 4corner.el.gz & ¥|¨¤¸¹½X \\
+ ctlaub.el.gz & ¼B¿ü²»¦¡¸f­µ \\
+ ecdict.el.gz & ­^º~Ãã¨å \\
+ hs.el.gz & µØ¶H \\
+ hsu.el.gz & ³\¤óª`­µ \\
+ py-b5.el.gz & º~»y«÷­µ \\
+ roman.el.gz & ù°¨«÷­µ \\\hline
+ \end{tabular}
+\end{center}
+
+
+Áä¦nªº~\LaTeX~¤å¥óÀÉ¡A¥i°õ¦æ~|bg5latex|~½sĶ¡C¥ç¥i§Q¥Î~|cjk-enc.el|~³o­Ó~
+Emacs Lisp~ÀÉ¡A±N¤å¥ó¥ý¦æÂà´«¦¨~|.cjk|~ÀÉ¡A¦A¥H~|latex|~¶i¦æ½sĶ¡C§@ªk¬O
+¦b~|~/.emacs|~Àɮפ¤¥[¤J¤U¦C¼Æ¦æ¡]¨ä¤¤¨ç¼Æ~ |write-cjk-file|~½Ð°Ñ¦Ò~
+|cjk-enc.txt|~¡^¡G
+\begin{verbatim}
+ (load-library "cjk-enc")
+
+ (defun write-cjk-file ()
+ "Save current buffer and <buffername>.cjk in *cjk-coding*"
+ (interactive)
+ (setq coding file-coding-system)
+ (setq bufname (buffer-file-name))
+ (string-match "\\(.*\\)\\.[^/]*$" bufname)
+ (setq body (substring bufname 0 (match-end 1)))
+ (setq newbufname (concat body ".cjk"))
+ (message "Saving %s and %s" bufname newbufname)
+ (write-file newbufname *cjk-coding*)
+ (write-file bufname coding))
+\end{verbatim}
+¤§«á«K¥i¦b¨C¦¸­n°õ¦æ~|latex|~«e¡A¥Î~|M-x write-cjk-file|~©R¥O¥ý¦sÀÉ¡A
+µM«á¦A¥H~|latex|~½sö¥DÀɦW»P±zªº¤å¥ó¥DÀɦW¤@¼Ë¡A¦ý©µ¦ùÀɦW¬°~|.cjk|~
+ªºÀɮסC
+
+\subsection{\TeX/\LaTeX~ªº¦nÀ°¤â\ -- AUC\TeX}
+\label{sec:auctex}
+
+²©ö«ü¤Þ¡G
+\begin{enumerate}
+\item ·Ó²Ä~\ref{sec:mule}~¸`ªº¤è¦¡±N~Mule~³]©w§´·í¡C
+\item «ö·Ó~AUC\TeX~ªº¦w¸Ë«ü¥Ü¦w¸Ë¡C©Î«ö·Ó~AUC\TeX~ªº~default~¤è¦¡¦w¸Ë¡C
+ ¤U¦C¼Æ¶µ¥i°µ¥i¤£°µ¡C
+\item «Ø¥ß¤@­Ó~|bg5latex-batch|~ÀÉ¡A¤À§O¦p¤U¡G
+ \begin{verbatim}
+ #! /bin/sh
+ f=`echo $1 | sed -e 's|\(.*\)\.[^/]*$|\1|'`
+ bg5conv < $1 > $f.cjk
+ latex \\nonstopmode\\input{$f.cjk}
+ \end{verbatim}
+\item \label{CJK-C-cC-c}¦b~|.emacs|~¤¤¥[¤J¡G
+ \begin{verbatim}
+ (setq TeX-command-list
+ (append TeX-command-list
+ '(("CLaTeX" "bg5latex-batch %s " TeX-run-LaTeX nil t)
+ ("CLaTeX Interactive" "bg5latex %s " TeX-run-interactive nil t)
+ ("CPrint" "fload %f | lpr" TeX-run-command t nil)
+ )))
+ \end{verbatim}
+ «h¥i¦b°õ¦æ~|C-c C-c|~©Î~|C-c C-r|~®É¡A¦b­n¿é¤J~|LaTeX|~ªº®É¾÷¡A¿é¤J~
+ |CLaTeX|¡C
+\item ¦b~|.emacs|~¤¤¥[¤J¤U¦C¼Æ¦æ¡A¥H«K±zªº¤å¥ó¦b±Æª©®É¡]¥þ¤å«h°õ¦æ
+ ~|C-c C-c CLaTeX|~¡A°Ï°ì¥Î~|C-c C-r CLaTeX|¡^¡A­Y¦³¿ù»~¥i¥Î~|C-c `|~
+ ¬dÅç¿ù»~©Ò¦b¡A¨Ã¥i§ó¥¿¤§¡C
+ \begin{verbatim}
+ (add-hook 'TeX-translate-location-hook
+ '(lambda ()
+ (if (string-match "\\(.*\\)\.cjk$" file)
+ (setq file
+ (concat
+ (substring file
+ (match-beginning 1)
+ (match-end 1))
+ ".tex")))))
+ \end{verbatim}
+\item ©ÎªÌ±z¦Ò¼{¥Î~|cjk-enc.el|¡A«h¦b~|.emacs|~¤¤¥[¤J¤U¦C¼Æ¦æ¡G
+ \begin{verbatim}
+ (defun TeX-run-CJK-LaTeX (name command file)
+ "Create a process for NAME using COMMAND to format
+ FILE with CJK/LaTeX."
+ (write-cjk-file)
+ (TeX-run-LaTeX name command file))
+
+ (if (not (assoc "CJKLaTeX" TeX-command-list))
+ (setq TeX-command-list
+ (append TeX-command-list
+ '(("CJKLaTeX" "%l '\\nonstopmode\\input{%s.cjk}'"
+ TeX-run-CJK-LaTeX nil t)
+ ))))
+ \end{verbatim}
+ ¥u­n±N¤W­z¨Ï¥Î~|CLaTeX|~ªº®É¾÷¡A§ï¦¨¨Ï¥Î~|CJKLaTeX|~§Y¥i¡C¬d¿ù¦P¼Ë¥Î
+ ~|C-c `|~¡C
+
+ ¦ý­nª`·N¡A¨Ï¥Î~|CJKLaTeX|~®É¡A¤å¥ó¤¤½Ð¤£­n¨Ï¥Î~|\usepackage{CJK}|~©Î
+ Ãþ¦üªº©R¥O¡C
+\end{enumerate}
+
+ª`·N¡A¤W­z¨BÆJ¥u¾A¥Î³æ¤@~CJK \LaTeXe~¤å¥ó¡C
+
+% Not ready yet...
+%¦pªG¦b±zªº¤å¥ó¤¤¦³¥Î¨ì~|\include|~³o­Ó©R¥O¡A¦Ó±z¤´·Q¥Î¨ì~AUC\TeX~ªº¥\¯à¡A
+%¥i§@¦p¤Uªº¥Ø¿ý¦w±Æ¡G
+
+% ./ ==> ¥»¼h¥Ø¿ý¡A­ì©l¤å¥ó¤§©ñ¸m¥Ø¿ý¡C
+% ../ ==> ¤W¼h¥Ø¿ý¡A¸m©ñ¥Ñ~latex~«e¥Ñ~bg5conv~Âà´«¹Lªº~|.cjk|~ÀÉ¡]¦]¦¹
+% ­Y¦b¦¹¤W¼h¥Ø¿ý¤¤¦³­ì©l¤å¥ó¡A«h»Ý¯S§Oª`·N¡A¤£­n¨Ï¥Î»P¥»¼h¥Ø¿ý¤¤¦P¦Wªº
+% ¤å¥ó¡^¡C¥t¥~¥]§t¤@~|Makefile|~¡]°Ñ¦Ò¹Ï~
+% \ref{fig:makefile-for-multifile-latexing}~¤§¨Ò¤l¡^¡A¨ä¤º®e¥D­n¬°¦b¨C
+% ¦¸~latex~«e¡A§ó·s~|.cjk|~ÀÉ¡C
+
+% \begin{verbatim}
+% #! /bin/sh
+% make bg5conv
+% cd CJK
+% latex \\nonstopmode\\input{$1}
+% \end{verbatim}
+
+
+% \begin{lrbox}{\myex}
+% \begin{minipage}{.9\textwidth}
+% \footnotesize
+%\begin{verbatim}
+%TEXs = abstract.tex archi.tex codebase.tex conclude.tex details.tex \
+% dsgnbase.tex engtool.tex examples.tex introd.tex kb_lsp.tex \
+% pjfinal.tex prg_gi.tex prg_s2c.tex related.tex represnt.tex \
+% sscdcb.tex sscddb.tex sscdgi.tex sta2con.tex title_pg.tex
+%MISC = Makefile LaTeXsrc
+%RCSs = $(wildcard $(SRCDIR)/*,v)
+
+%SRCDIR = CJK
+
+%.PHONY: check_srcdir bg5conv default
+
+%.DEFAULT: .tex .sty .bib .dvi .ps .lj .toc .lof .lot
+
+%default:
+% @echo "There are the following targets:"
+% @echo " bg5conv : Big5 CJK LaTeX file converted to LaTeX file."
+
+%bg5conv: check_srcdir $(TEXs)
+
+%check_srcdir:
+% @if [ -f LaTeXsrc ]; then \
+% echo "Don't make at the LaTex source directory!"; \
+% echo "Copy the Makefile to upper directory and make there."; \
+% echo "e.g., cp Makefile ..; cd ..; make"; \
+% exit 1; \
+% fi
+% @if [ ! -d $(SRCDIR) ]; then \
+% echo "$(SRCDIR) not found!"; \
+% exit 1; \
+% fi
+
+%$(TEXs): %.tex : $(SRCDIR)/%.tex
+% bg5conv < $< > $@
+%\end{verbatim}
+% \end{minipage}
+% \end{lrbox}
+
+% \begin{figure}[htbp]
+% \begin{center}
+% \leavevmode
+% \framebox[.9\texwidth]{\myex}
+% \caption{À³¥I¦h­«~CJK~¤å¥óÀɪº~Makefile~½d¨Ò¡C}
+% \label{fig:makefile-for-multifile-latexing}
+% \end{center}
+% \end{figure}
+
+
+
+\section{CTAN¦b¦U¦aªºÀÉ®×°Ï}
+\label{sec:ctan-mirrors}
+(¥»¸`ºK¦Û~CTAN host~¤Wªº~README.mirrors)
+
+¬°´î¤Öºô¸ô¤Wªº­t²ü¡A«Øij©Ò¦³¨Ï¥Î~CTAN~¸ê·½ªººô¤Í¡A¯à¨Ï¥Î·í¦aªº©Î³Ìªñªº~
+CTAN host¡C
+
+¥Ø«e¤wª¾½Æ»s³¡¤À~CTAN~Àɮתº~FTP~¯¸:
+\begin{verbatim}
+ ftp.fcu.edu.tw (Taiwan) /pub2/tex
+ gate.sinica.edu.tw (Taiwan) /TeX
+ ftp.adfa.oz.au (Australia) /pub/tex/ctan
+ ftp.germany.eu.net (Deutschland) /pub/packages/TeX
+ ftp.uu.net (Virginia, USA) /pub/text-processing/TeX
+ nic.switch.ch (Switzerland) /mirror/tex
+ sunsite.dsi.unimi.it (Italia) /pub/TeX
+ sunsite.snu.ac.kr (Korea) /shortcut/CTAN
+\end{verbatim}
+
+¥Ø«e¤wª¾½Æ»s¥þ³¡~CTAN~Àɮתº~FTP~¯¸:
+\begin{verbatim}
+ dongpo.math.ncu.edu.tw (Taiwan) /tex-archive
+ ftp.ccu.edu.tw (Taiwan) /pub/tex
+ cis.utovrm.it (Italia) /TeX
+ ctan.unsw.edu.au (NSW, Australia) /tex-archive
+ ftp.center.osaka-u.ac.jp (Japan) /CTAN
+ ftp.cdrom.com (West coast, USA) /pub/tex/ctan
+ ftp.comp.hkbu.edu.hk (Hong Kong) /pub/TeX/CTAN
+ ftp.cs.rmit.edu.au (Australia) /tex-archive
+ ftp.cs.ruu.nl (The Netherlands) /pub/tex-archive
+ ftp.cstug.cz (The Czech Republic) /pub/tex/CTAN
+ ftp.duke.edu (North Carolina, USA) /tex-archive
+ ftp.ee.up.ac.za (South Africa) /tex-archive
+ ftp.funet.fi (Finland) /pub/TeX/CTAN
+ ftp.gwdg.de (Deutschland) /pub/dante
+ ftp.jussieu.fr (France) /pub4/TeX/CTAN
+ ftp.loria.fr (France) /pub/unix/tex/ctan
+ ftp.mpi-sb.mpg.de (Deutschland) /pub/tex/mirror/ftp.dante.de
+ ftp.nada.kth.se (Sweden) /pub/tex/ctan-mirror
+ ftp.rge.com (New York, USA) /pub/tex
+ ftp.riken.go.jp (Japan) /pub/tex-archive
+ ftp.tu-chemnitz.de (Deutschland) /pub/tex
+ ftp.uni-augsburg.de (Deutschland) /tex-archive
+ ftp.uni-bielefeld.de (Deutschland) /pub/tex
+ ftp.unina.it (Italia) /pub/TeX
+ ftp.uni-stuttgart.de (Deutschland) /tex-archive (/pub/tex)
+ ftp.univie.ac.at (\"Osterreich) /packages/tex
+ ftp.u-aizu.ac.jp (Japan) /pub/tex/CTAN
+ ftpserver.nus.sg (Singapore) /pub/zi/TeX
+ kadri.ut.ee (Estonia) /pub/tex
+ src.doc.ic.ac.uk (England) /packages/tex/uk-tex
+ sunsite.icm.edu.pl (Poland) /pub/CTAN
+ sunsite.queensu.ca (Canada) /pub/tex-archive
+ sunsite.unc.edu (North Carolina, USA) /pub/packages/TeX
+ wuarchive.wustl.edu (Missouri, USA) /packages/TeX
+\end{verbatim}
+
+¨â­Ó¥D­nªº~CTAN~¥D¾÷:
+\begin{verbatim}
+ ftp.dante.de (Deutschland)
+ -- anonymous ftp
+ /tex-archive (/pub/tex /pub/archive)
+ -- gopher on node gopher.dante.de
+ -- e-mail via ftpmail@dante.de
+ -- World Wide Web access on www.dante.de
+ -- Administrator: <ftpmaint@dante.de>
+
+ ftp.tex.ac.uk (England)
+ -- anonymous ftp
+ /tex-archive (/pub/tex /pub/archive)
+ -- gopher on node gopher.tex.ac.uk
+ -- NFS mountable from
+ nfs.tex.ac.uk:/public/ctan/tex-archive
+ -- World Wide Web access on www.tex.ac.uk
+ -- Administrator: <ctan-uk@tex.ac.uk>
+\end{verbatim}
+
+
+\section{IFCSS~¦b¦U¦aªº~FTP~¯¸}
+\label{sec:ifcss-mirrors}
+
+¥D­nªº~IFCSS~¯¸¡G \verb|ftp.ifcss.org:/pub/software|
+
+¨ä¥Lªº~FTP~¯¸:
+\begin{verbatim}
+Taiwan: ftp.edu.tw:/Chinese/ifcss/software [full]
+ ftp.ntu.edu.tw:/Chinese/ifcss/software [full]
+ iiiafs.iii.org.tw:/Chinese/ifcss/software [full]
+CHINA,
+ Beijing: info.bta.net.cn:/pub/software [partial]
+ Guangdong:
+ info.gz.gdpta.net.cn:/pub/mirror/chnsoftware [partial]
+ Shanghai: info.sta.net.cn:/pub/software [partial]
+HONG KONG,: ftp.cuhk.hk:/pub/chinese/ifcss/software [full]
+SINGAPORE,: ftp.technet.sg:/pub/chinese [full]
+USA,
+ California: cnd.org:/pub/software [full]
+ New Mexico: phaiakon.nmsu.edu:/pub/software [full]
+\end{verbatim}
+
+%% start of trailer
+\newpage
+\end{CJK*}
+
+\end{document}
+
+%% Local Variables:
+%% TeX-header-end: "%+ *[Ee]nd[ -]*[oO]f[ -]*[hH]eader"
+%% TeX-trailer-start: "%+ *[Ss]tart[ -]*[oO]f[ -]*[tT]railer"
+%% TeX-command-default: "CLaTeX"
+%% TeX-master: t
+%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/chinese/READMEgb.tex b/language/chinese/CJK/cjk-4.8.5/doc/chinese/READMEgb.tex
new file mode 100644
index 0000000000..3081e2896b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/chinese/READMEgb.tex
@@ -0,0 +1,92 @@
+% This is the file READMEgb.tex of the CJK package
+% for installing the CJK package for LaTeX 2e (in GB encoding).
+%
+% written by Fude Yao <yao@everest.micro.umass.edu}
+% Version 4.1.3 (20-Jun-1997)
+
+\documentclass[12pt]{report}
+
+\usepackage{CJK}
+
+\begin{document}
+
+\begin{CJK*}{GB}{gbsn}
+\CJKtilde
+
+\chapter*{CJK~°²×°ËµÃ÷Êé}
+
+¡¡¡¡±¾ÎÄÊÇ~Werner Lemberg~µÄ~CJK~µÄ°²×°ËµÃ÷Êé. Ôڴ˽ö¾Í×÷ÕßʹÓõÄ
+~Alpha-Linux~ƽ̨½øÐÐÌÖÂÛ, ²¢×ÅÖØÓÚ~teTeX-0.4p16~ÕâÒ»°æ±¾µÄ~\TeX
+
+\begin{enumerate}
+\item
+ ÓÃ~ftp~ÄäÃû´æÈ¡·½Ê½»ñµÃ~CJK£®ÀýÈç: \\
+ ftp ftp.tex.ac.uk (or ftp.dante.de) \\
+ anonymous \\
+ yao@everest.micro.umass.edu \\
+ bin \\
+ cd tex-archive/language/chinese \\
+ get CJK.tar.gz CJK-4.1.3.src.tar.gz (°´£ºËäÈ»¿´²»µ½~CJK.tar.gz,
+ µ«±¾ÃüÁîÈÔÓÐЧ£¬²Î¿´~CJK-4.1.3.src/README) \\
+ bye
+\item
+ ½«Ñ¹ËõÎļþ½âѹ£º\\
+ gzip -d CJK-4.1.3.src.tar.gz \\
+ tar xvf CJK-4.1.3.src.tar \\
+ cd CJK/4$_{-}$1.3
+\item
+ ½«~doc/teTeX~ÀïµÄÈ«²¿²¹¶¡Îļþ~*.diff~ÒÆÖÁ~\$TEXDIR/bin/alpha-linux \\
+ ÓÃ~patch~ÃüÁîÐÞ²¹£¬±ÈÈç: patch $<$ MakeTeXPK.diff \\
+ (ÆäÖÐ~special.map.diff~Ó¦ÒÆÖÁ~\$TEXMF/fontname~ÐÞ²¹) \\
+ ×¢ÒâÐÞ²¹ÊÇ·ñÈ«²¿³É¹¦ \\
+ (×¢£º\$TEXDIR=/usr/lib/texmf; \$TEXMF=/usr/lib/texmf/texmf)
+\item
+ ½«~CJK~ÖÐÈ«²¿ÎļþÒÆÖÁ~\$TEXMF/tex/latex/CJK (±£Áô¸Ã½á¹¹)
+\item
+ ½«~utils/ttf2pk~µÄÈ«²¿ÎļþÒÆÖÁ~\$TEXMF/ttf2pk£º \\
+ cd \$TEXMF/ttf2pk/src \\
+ make all OS=unix \\
+ ½«~utils/hbf2gf~µÄÈ«²¿ÎļþÒÆÖÁ~\$TEXMF/hbf2gf£º \\
+ cd \$/TEXMF/hbf2gf \\
+ make all OS=unix
+\item
+ cd utils/Bg5conv (CEFconv, SJISconv) \\
+ compile *conv.c, ±ÈÈ磺~gcc cefconv.c -o cefconv \\
+ ½«ËùµÃµÄ¶þ½øÖÆÎļþÁ¬Í¬~*latex~Ò»ÆðÒÆÖÁ~\$TEXDIR/bin/alpha-linux
+\item
+ ½«È«²¿¿ÉÖ´ÐÐÎļþÒƵ½~\$TEXDIR/bin/alpha-linux~ÖУ¬»ò½¨Á¢ÁªÏµ£¬±ÈÈç \\
+ ln -s \$TEXMF/ttf2pk/ttf2pk \$TEXDIR/bin/alpha-linux
+\item
+ ¼ì²é~\$TEXDIR/texmf.cnf~ÖÐ~\$HBF2GFDIR~Óë~\$TTF2PKDIR \\
+ ÊÇ·ñÕýÈ·
+\item
+ °²×°~CJK~×Ö¿â, truetype~»ò~hbf~¸ñʽµÄ¹ú±ê£¬´óÎ壬ÈÕÎÄ£¬³¯ÏÊÎÄ \\
+ ÔÚ~ftp.tex.ac.uk/tex-archive/fonts/CJK~ÀïÓи÷ÖÖ×ֿ⣬ÓÃÄäÃû´æÈ¡·½Ê½
+ È¡»Ø£¬×¢ÒâʹÓöþ½øÖÆ·½Ê½
+\item
+ ½âѹÎļþ \\
+ ½«×Ö¿â·ÅÔÚ~\$TEXMF/fonts/hbf(truetype)/chinese(japanese, korean) \\
+ Èç¹ûÊÇ~hbf~×ֿ⣬½«~*.cfg~ÒÆÖÁ~\$TEXMF/hbf2gf£» \\
+ Èç¹ûÊÇ~truetype~×ֿ⣬¼ì²é\$TEXMF/ttf2pk/ttf2pk.cfg~ÖÐÊÇ·ñÓиÃ×Ö¿âÃû
+ ×Ö
+\item
+ ÊÔÑéÑù±¾Îļþ£¬¼ì²éÉèÖÃÊÇ·ñÍêÕû£¬±ÈÈç~GB.tex£º \\
+ GB.tex~ÖÐÓõ½Ê²Ã´×ֿ⣺$\backslash$begin\{CJK*\}\{GB\}\{so\} \\
+ \$TEXMF/tex/latex/CJK~ÖÐÓÐ~c10so.fd~×Ö¿âÂð£¿ËüÉæ¼°ÄÄЩÃû×Ö£¿ \\
+ \$TEXMF/fontname/special.map~ÖÐÊÇ·ñÓиÃ×Ö¿âµÄÃû×Ö£¿ \\
+ \$TEXDIR/texmf.cnf~ÖÐ~\$HBF2GFDIR~Óë~\$TTF2PKDIR~ÕýÈ·Â𣿠\\
+ Èç¹ûÊÇ~hbf~×ֿ⣬\$TEXMF/hbf2gf~ÖÐÓиÃ×Ö¿âµÄ~cfg~ÎļþÂ𣿠\\
+ ¼ì²é~cfg~ÎļþµÄ·¾¶ÃûÊÇÊÇ·ñÕýÈ·£¿ \\
+ Èç¹ûÊÇ~truetype~×ֿ⣬\$TEXMF/ttf2p/ttf2pk.cfg~ÖÐÓиÃ×Ö¿âÃû×ÖÂ𣿠\\
+ ·¾¶ÃûÕýÈ·Âð£¿
+\item
+ ÔËÐÐ~texhash (ÿ´Î¸Ä¶¯Ö®ºó£¬¶¼ÒªÔËÐÐ~texhash)
+\item
+ latex examples/GB.tex, ¿´ÊÇ·ñÕý³££®ÔÚ~doc/~×ÓĿ¼ÖÐÓкܶà°ïÖúÎļþ£¬
+ Ó¦×ÐϸÔĶÁ
+\end{enumerate}
+
+\end{CJK*}
+\end{document}
+
+\EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/chinese/emTeXb5.txt b/language/chinese/CJK/cjk-4.8.5/doc/chinese/emTeXb5.txt
new file mode 100644
index 0000000000..b37c80aff3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/chinese/emTeXb5.txt
@@ -0,0 +1,357 @@
+From c300711@ms5.hinet.net Fri Feb 07 02:13:02 1997
+Newsgroups: tw.bbs.comp.tex
+Subject: emtex+cjk410(ttf2pk) on Msdos ¦w¸Ë¬ö.
+From: KUO Yi-Liang <c300711@ms5.hinet.net>
+Date: Thu, 06 Feb 1997 18:13:02 GMT
+
+¥»¤å¥Hemtex\doc\english\quick.eng¬°°ò¦:
+¸Õ¹Ï¦w¸Ëemtex+cjk4.1.0(ttf2pk) on MSDOS
+--------
+ÀÉ®×
+--------
+­º¥ý¦b mirror CTAN ªº ftp¯¸
+¨Ò¦p dongpo.math.ncu.edu.tw: /tex-archive/systems/msdos/emtex/¤U§ì
+*.zipÀÉ,
+-rw-rw-r-- 1 mattes server 160090 Aug 7 1995 bibtex4b.zip
+-rw-rw-r-- 1 mattes server 1148514 Apr 10 16:22 dvid16f1.zip
+-rw-rw-r-- 1 mattes server 824290 Apr 10 16:22 dvid16f2.zip
+-rw-rw-r-- 1 mattes server 94959 Aug 7 1995 dvisp10b.zip
+-rw-rw-r-- 1 mattes server 180206 May 24 14:17 emxrsx.zip
+-rw-rw-r-- 1 mattes server 127810 Sep 2 13:24 first.zip
+-rw-rw-r-- 1 mattes server 651946 Jun 26 1995 fontams.zip
+-rw-rw-r-- 1 mattes server 411129 Jun 26 1995 fontcm.zip
+-rw-rw-r-- 1 mattes server 1031835 Sep 2 13:24 fontdc.zip
+-rw-rw-r-- 1 mattes server 7080 Jun 26 1995 fontemsy.zip
+-rw-rw-r-- 1 mattes server 47495 Jun 26 1995 fontltx.zip
+-rw-rw-r-- 1 mattes server 110991 May 4 21:05 german.zip
+-rw-rw-r-- 1 mattes server 930861 Jun 21 14:59 l2base.zip
+-rw-rw-r-- 1 mattes server 409888 Jun 21 14:59 l2input.zip
+-rw-rw-r-- 1 mattes server 87336 Jun 26 1995 l2kurz.zip
+-rw-rw-r-- 1 mattes server 209194 Jun 21 14:59 l2tools.zip
+-rw-rw-r-- 1 mattes server 347068 Jun 26 1995 latex209.zip
+-rw-rw-r-- 1 mattes server 81115 Jun 26 1995 lkurz.zip
+-rw-rw-r-- 1 mattes server 83493 Jun 26 1995 makeindx.zip
+-rw-rw-r-- 1 mattes server 990552 Jun 21 14:59 mf4b.zip
+-rw-rw-r-- 1 mattes server 166052 Sep 19 1995 mfjob12c.zip
+-rw-rw-r-- 1 mattes server 227054 Jun 26 1995 mfware.zip
+-rw-rw-r-- 1 mattes server 39887 Jun 26 1995 pictex.zip
+-rw-rw-r-- 1 mattes server 113473 Jun 26 1995 pkedit.zip
+-rw-rw-r-- 1 mattes server 38705 Jun 26 1995 srcmkidx.zip
+-rw-rw-r-- 1 mattes server 88251 Jun 26 1995 srctcad.zip
+-rw-rw-r-- 1 mattes server 1173697 Jun 21 14:59 tex4b.zip
+-rw-rw-r-- 1 mattes server 131010 Jun 26 1995 texcad.zip
+-rw-rw-r-- 1 mattes server 260671 Sep 11 1995 texware.zip
+-rw-rw-r-- 1 mattes server 236301 Jun 26 1995 unz512.exe
+-rw-rw-r-- 1 mattes server 236134 Jun 26 1995 unz512x3.exe
+-rw-rw-r-- 1 mattes server 124738 Aug 23 1995 web.zip
+¤£¹L¥i¥H¥ý§ì³o´X­Ó(¥H¦w¸ËLaTeX2e¨Ó»¡)
+ first.zip......¤@¨Ç»¡©úÀÉ
+ emxrsx.zip.....Ãþ¦üdos extenderªºªF¦è(¯ÂÄÝ­Ó¤H²q´ú)
+ mfjob12c.zip...±N.mf(­^¤å¦r«¬ªºsourceÀÉ)Âà´«¦¨.pk©Ò»Ý­nªº¸ê®Æ
+ dvid16f1.zip...¦U¦¡ªºdvi driver-partI
+ dvid16f2.zip...¦U¦¡ªºdvi driver-partII
+ tex4b.zip......texªº¥D°õ¦æÀÉ
+ mf4b.zip.......³o...§Ú¤]¤£ª¾¹D, sorry
+ fontcm.zip.....cm¨t¦Cªº¦r«¬ÀÉ.mf
+ fontltx.zip....latex©Ò»Ýªº¦r«¬ÀÉ.mf
+ l2input.zip....latex©Ò»ÝªºtexinputÀÉ
+ l2tools.zip....ÃB¥~ªºtexinputÀÉ
+
+¸É¥R¤@ÂI:pkunzip³o­Ó¸ÑÀ£µ{¦¡¨S¦³ªº¤HÀ³¸Ó¤£¦h§a,¦pªG¨S¦³ªº¸Ü¥h§ì­Óunzip¦^¨Ó!
+-rw-rw-r-- 1 mattes server 236301 Jun 26 1995 unz512.exe
+-rw-rw-r-- 1 mattes server 236134 Jun 26 1995 unz512x3.exe
+¦ADOS ´£¥Ü²Å¸¹¤U(³o¬Oquick.eng ©Ò­z,­Ó¤H§Ú¨S¸Õ¹L)
+ unz512x3 unzip386.exe
+ ren unzip386.exe unzip.exe
+
+ÁÙ¦³¬Ý§A¥Î¨º¥xprinter
+´N§ì¨º¤@­Ó¦r«¬ÀÉ(¤£§ì¤]¥i¥H,­Ó¤H§Ú´N¬O¦Û¤v«Ø³y°_¨Óªº)
+ bj_base.fli Base fonts for the Canon BubbleJet (360 DPI)
+ dj_base.fli Base fonts for the HP DeskJet (300 DPI)
+ fax_base.fli Base fonts for Fax (204x196 DPI)
+ fx_base.fli Base fonts for 9-pin printers (240x216 DPI)
+ ito_base.fli Base fonts for the C.ITOH 8510A (160x144 DPI)
+ ljh_base.fli Base fonts for the HP LaserJet 4 (600 DPI)
+ lj_base.fli Base fonts for the HP LaserJet (300 DPI)
+ p6h_base.fli Base fonts for 24-pin printers (360 DPI)
+ p6l_base.fli Base fonts for 24-pin printers (180 DPI)
+ p6m_base.fli Base fonts for 24-pin printers (360x180 DPI)
+ qj_base.fli Base fonts for the HP QuietJet (192 DPI)
+ sty_base.fli Base fonts for the EPSON Stylus 800 (360 DPI)
+
+¦A¶i¨ì./dvips(©Î../dviware/dvips/dvips558.pc) ¤U§ì
+-rw-rw-r-- 1 ftpmaint server 27831 Nov 6 1995 dvips.doc
+-rw-rw-r-- 1 ftpmaint server 182491 Nov 6 1995 dvipsfnt.zip
+-rw-rw-r-- 1 ftpmaint server 421777 Nov 6 1995 dvipsini.zip
+-rw-rw-r-- 1 ftpmaint server 173767 Nov 6 1995 dvipssrc.zip
+..sourceÀÉ,À³¸Ó¤£¥Î§ì
+-----------
+ªì¨B³]©w
+-----------
+¥H­Ó¤H§Ú¦w¸Ë¦bD:ºÐ¬°¨Ò,¦Ó©Ò¦³ªº.zipÀÉÂ\¦bd:\emtex.zip\¤U
+ d:
+ cd d:\
+ pkunzip -d
+d:\emtex.zip\*.zip......¦p¦¹·|¨ÌÀ£ÁY«e­ì­q¥Ø¿ý¦ì¸m¸ÑÀ£Â\¦n
+
+¨Ã·Óquick.eng¤¤«Øij±Nd:\emtex\bin»Pd:\emx\bin¥[¤Jpath¤¤
+¨Ã©ó c:\autoexec.bat ¤¤ ¥[¤J:
+ set emtexdir=d:\emtex
+ set dvidrvfonts=d:\texfonts
+ set mfjobopt=/3
+ set tmp=c:\temp
+
+¦bc:\config.sys¤¤ files=xx¨ä¤¤xx»Ý¤j©ó20
+ÁÙ¦³±Nconfig.sys¤¤`BREAK=ON'¨º¦æ§R±¼
+µM«á­«¶}¾÷¨Ï autoexec.bat ³]©w·sªºpath
+
+¸É¥R¤@ÂI:­Ó¤H§Ú¨Ã«D¦p¤W©Ò­z,¦Ó¬O±Nemtex\bin\set_tex.bat ¥[¥HÂX¥R,
+ ±N¤W­±ªºpath,emtexdir,dvidrvfont,mfjobopt,tmp,...³o¨ÇÀô¹ÒÅܼÆ
+ ¥þ³£¥[¦bset_tex.bat¤F,¤Ï¥¿µy«áÁÙ¦³¥t¥~¤@¨ÇÀô¹ÒÅܼƭn³].
+-------------------------
+«Ø³ypk¦r«¬
+-------------------------
+¥H¤U±qinstall.eng¤¤ ¸`¿ý
+ ¦pªG§A©M§Ú¤@¼Ë¨S¦³§ì¤W­±xxx_base.fliªº¸Ü,½Ð§A¸ò§Ú³o¼Ë§@
+ ¨ì\emtex\mfjob\modes.mfj ¤¤
+ ±N 'def target=[............]'§ï¦¨§A©ñ¸m.pkªºtexfonts¥Ø¿ý
+ ¨Ò¦p §Úªº def target=[d:\texfonts];
+ °²³]¤w¸g±Nfontcm.zip »P fontltx.zip ®i¶}«á,
+ «h¦bdos ´£¥Ü²Å¸¹¤U°õ¦æ
+ mfjob base m=MODE
+ fli_base PREFIX RES c:\texfonts
+where MODE, PREFIX, and RES depend on the font set:
+
+MODE | PREFIX | RES | Font library | Description
+-----+--------+-----+--------------+-------------------------
+bj | bj | 360 | bj_base.fli | Canon BubbleJet (360 DPI)
+dj | dj | 300 | dj_base.fli | HP DeskJet (300 DPI)
+FAX | fax | 204 | fax_base.fli | Fax (204x196 DPI)
+fx | fx | 240 | fx_base.fli | 9-pin printers (240x216 DPI)
+ito | ito | 160 | ito_base.fli | C.ITOH 8510A (160x144 DPI)
+lj | lj | 300 | lj_base.fli | HP LaserJet (300 DPI)
+ljh | ljh | 600 | ljh_base.fli | HP LaserJet 4 (600 DPI)
+lqh | p6h | 360 | p6h_base.fli | 24-pin printers (360 DPI)
+lql | p6l | 180 | p6l_base.fli | 24-pin printers (180 DPI)
+lqm | p6m | 360 | p6m_base.fli | 24-pin printers (360x180 DPI)
+qj | qj | 192 | qj_base.fli | HP QuietJet (192 DPI)
+sty | sty | 360 | sty_base.fli | EPSON Stylus 800 (360 DPI)
+
+To let MFjob call mf386, use the /3 option. It is recommended to set
+this option in the MFJOBOPT environment variable:
+
+ set mfjobopt=/3
+
+ ¨Ò¦p§Ú¥Îªº epson stylus 200 «h
+ mfjob base m=sty
+ fli_base sty 360 d:\texfonts.........(¤U­±ªº³o¦æ§Ú¨S¦³§@¹L:()
+
+µM«á ¦p ¸`¿ý¦Ü quick.eng ªº ¤ù¬q,step by step
+---------------------------------------------------------------------
+6. Creating format files
+---------------------------------------------------------------------
+
+Type the following commands to create format files:
+
+ cd \emtex\btexfmts
+ makefmt 386 plain US <--- if you need PLAIN TeX
+ makefmt 386 latex2e US 8bit -b \emtex\bin\latex2e <---²£¥Í¤@­Ó
+latex2e.bat
+
+---------------------------------------------------------------------
+7. Creating base files
+---------------------------------------------------------------------
+
+Type the following commands to create the PLAIN base file:
+
+ cd \emtex\bmfbases
+ makebas 386 plain
+
+---------------------------------------------------------------------
+8. Testing the installation
+---------------------------------------------------------------------
+
+Type the following commands to typeset a sample document:
+
+ md \test
+ cd \test
+ latex2e sample2e <----´ú¸Õemtex\bin\latex2e.bat¥i¤£¥i¥H°Ê??
+
+8.1. Viewing the sample output under DOS
+----------------------------------------
+
+Type
+
+ v @XX sample2e
+---->¥H§Úªºepson stylus 200 ¬°¨Ò,«h¬OÁä¤J "v @sty sample2e"
+.....µM«á¤@°}®D­ù¼M°Õªº°T®§,¤j­P¤W¬O»¡¥¦¯Ê¤F¨Ç¦r«¬,­n¤£­n²{¡y§@¡z?
+
+The following message will be displayed:
+
+ Warning 1209: do you want to call MFjob to generate 1 missing
+font now?
+ Type Y, N, or ?:
+
+Reply `y'. If you have not installed fonts, computing the fonts for
+the sample will take a while.
+
+When the page shows up (white background), you can scale the output
+by
+typing `-'. To quit, type `q'.
+
+¦^µª'y'¤§«áÀ³¸Ó¥i¥H¬Ý¨ì¤F something output on screen
+¥i¥Hzoom in/zoom out ¥Î '+' / '-'
+----------------------------------------------------
+Ãö©óCJK 410§ìÀÉ-----¥Î¥H³]©wttf2pkªº³¡¥÷,¤£§tntu2cjk
+----------------------------------------------------
+¥ýarchie §ä CJK-4.1.0.bin.tar.gz
+ ¨Ã§ì¦^¨Ó CJK-4.1.0.rest.tar.gz
+ CJK-4.1.0.src.tar.gz--------?
+¸É¥R¤@ÂI:§Ú¬O±q¤U­±³o­Ó¦a¤è,±N¾ã­Ó¾ðª¬¤l¥Ø¿ýftp¦^¨Óªº,¥Îmodem­C,¦n²Ö:(
+ dongpo.math.ncu.edu.tw:/tex-archive/language/chinese/CJK/4_1.0
+ ÁöµM¬Ý¨ìCJK/4_1.0/readme¤¤©Ò¼gµÛ¦³CJK-4.1.0.src.tar.gz³o­ÓÀÉ®×
+ ¦ý¬O«oarchie¤£¨ì:(
+¸É¥R¤GÂI:¨Ï¥Î¦bmsdos¤U¨Ï¥Îcjk»Ý­n4dos/ndos,¦pªG¨S¦³½Ð¦Û¦æ³]ªk.
+ ¨ä¤¤4dos/ndos ¬O©R¥O¸ÑĶ¾¹,¨ú¥Nmsdosªºcommand.com¥Îªº
+------------------------
+¸Ñ¶}
+------------------------
+ ¸Ñ¶}ªºµ{§Ç¤j­P¤W¬O:
+ gzip386 -d xxx.tgz (©Îxxx.gz) ±o¨ì xxx.tar(©Îxxx.)
+ tar -xvf xxx.tar (©Î xxx.)
+ (ps:gzip386 ¸ÑÀ£®É,·|±N­ì¥ýªºÀÉ®×»\¨ì(rename?);
+ ....»Parj,pkunzip¤£¤Ó¤@¼Ë;¦pªG©È¾Þ§@¿ù»~,¥ýcopy¤@¥÷°_¨Ó)
+ µM«á±N¤T­Ócjk-4.1.0.bin.tar.gz ®i¶}
+ Åܦ¨¤@­Ó¾ðª¬¤l¥Ø¿ýcjk/4_1.0/.................?
+¸É¥R¤@ÂI:
+ ³o¨ÇÀɮ׬O.tar.gz,¸Ñ¶}¥¦­Ì»Ý­ndos ª©ªºgzip»Ptar
+ §Ú¬O¦b¥æ¤j¥Xªº¶³Æ[CD¤ù¤W§Ë¨ìªº,¤£­n°Ý§Úºô¸ô¤W¨º¸Ì¦³,sorry!
+---------------------------------
+­«·sÀɮפÀ°t¦ì¸m
+--------------------------------
+¥H¤U¬O§Úªº°t¸m,¥u¬O¥i¥H°õ¦æ,¨Ã«D³Ì¨Î³]©w
+bin/¤U ©Ò¦³ªºexe,bat,btm·h¨ìemtex/bin/
+¨Ò¦p
+BG5CONV.EXE
+BG5LATEX.BAT
+F_NAME.BAT
+INSTFONT.BTM
+MAKETEXP.BTM
+MAKETTFP.BTM
+TTF2PK.EXE
+util/f_name.bat ¤]·h¨ìemtex/bin
+texinput ¾ã­Ó¤l¥Ø¿ý ·h¨ìemtex/texinput/¤U ¨Ã§ï¦W¬°emtex/texinput/cjk
+texinputs/bg5 ¾ã­Ó¤l¥Ø¿ý ·h¨ìemtex/texinput/bg5
+----------------
+­×§ï¤@¨ÇÀɮ׳]©w
+----------------
+---------------------------------------
+emtex/texinput/bg5/ttf2pk/ttf2pk.cfg¤¤:
+ ntukai: -e Big5 $TEXMF/fonts/truetype/chinese/ntu_kai.ttf
+ ------ -------- -----------------------------------------
+ ^ ^ ^
+ | | |__§A¥Îªº.ttfÀɦW(§t¥þ³¡¸ô®|)
+ | | ¤£­nºÞ$texmf,ª½±µc:\cwin31\system\....ttf
+ | |__½s½X«¬ºA?
+ |__¦r§Î¦WºÙ,³Ì¦n¤£­n¶W¹L¤»­Ó¦r
+
+¥[¤J¼Æ¦æÃö©ó§Aªº¦r§ÎÀɪº±Ô­z,¥H¥þ¯u¦r®w¬°¨Ò:
+avkv: -e Big5 c:/cwin\cttf/avkv.ttf
+avbkv: -e Big5 c:/cwin/cttf/avbkv.ttf
+avmv: -e Big5 c:/cwin/cttf/avmmv.ttf
+avbmv: -e Big5 c:/cwin/cttf/avbmv.ttf
+-------------------------------------------
+
+emtex/texinput/bg5/c00kai.fd:
+ \DeclareFontShape{C00}{kai}{m}{n}{<-> CJK * avkv}{}
+ ^^^^
+ \DeclareFontShape{C00}{kai}{bx}{n}{<-> CJKb * avbkv}{\CJKbold}
+©Î¬O §A»Ý­n©úÅé¤Î²Ê©úÅé´N: ^^^^^
+emtex/texinput/bg5/c00ming.fd
+ \DeclareFontShape{C00}{ming}{m}{n}{<-> CJK * avmv}{}
+ ^^^^
+ \DeclareFontShape{C00}{ming}{bx}{n}{<-> CJKb * avbmv}{\CJKbold}
+ ^^^^^
+½b¸¹^^^^³B±N»Pttf2pk.cfg©Ò¥[¤Jªº¨º´X¦æ¬Û¹ïÀ³,¥H«K§ä¨ì¹ê»ÚªºTrueTypeFont
+--------------------------------------------
+
+emtex/data/dvipsªº¤l¥Ø¿ý¤U¥[¤J§A©Ò»Ýªº.cfg
+
+ ¥H§Úªºepson stylus 200¬°¨Ò«K¬O¤@­Ósty.cfg
+ ©ó¬O¨Ì¾Údj.cfg ¨Ã°Ñ¦Ò../sty.cnf »P ../dj.cnf
+ ¦Û¤vÙT¥X¤@­Ósty.cfg,(À³¸Ó¤£ºâÃø¤~¹ï)
+ ¨ä¤¤ ¦³¤@¦æ­ì¥ý¦bdj.cfg¤¤¬O
+ P $(DVIDRVFONTS)\pixel.dj\%ddpi\%f.%p;
+ §ï¦¨
+ P
+$(DVIDRVFONTS)\pixel.sty\%ddpi\%f.%p;$(DVIDRVFONTS)\pixel.cjk\%ddpi\%
+f.%p
+
+ ¥¦ªº·N«ä¤j·§¬O·|¦bd:\texfont\pixel.sty\???dpi\*.pk
+ »Pd:\texfont\pixel.cjk\???dpi\*.pk §ä©Ò»Ýªºpk¦r«¬ÀÉ
+
+ ¨Ã©óautoexec.bat ©Î¬O emtex\bin\set_tex.bat¤¤
+ ³]©w SET PRINTER=STY ¨Ï dvips16 ¤Î dvips32 °Ñ¦Ò¨Ï¥Î
+ ³]©w SET DVIPS_STDERR ¨Ïdvips ±N stderr ­«·s¾É¦V¿é¥X
+ ³]©w SET MAKETEXPK=MAKETEXP %%N %%D %%B %%M ¨Ïdvips¯àcall
+MakeTexPK?
+ SET EMXOPT=-P .........µ¹emx¥Îªº, I don't know
+ SET GS_LIB=.............³]©w§Aªºghostscript©Ò¦b
+ SET DVIDRVGRAPH=.........³]©w......I don't know
+-----------
+BTMÀɪº­×§ï
+-----------
+.btm¬O«ü4dos/ndos±M¥Îªº§å¦¸ÀÉ.
+
+¦b¦¹¥Ñ©ó­ì¥ýCJK410ªºpackageµ¹©w¤§btmÀɤ£¦X©ó§Ú¥Ø«e¨Ï¥Î¤¤¤§4dos/ndos,
+ ©ó¬Oªá¤F¦n¤jªº¤O®ð"§V¤O"ªº¶Ã§ï¤@³q,±z¤j·§¤â®ð¤£·|¹³§Ú¨º»òÁV,
+-----------------
+Instfont ¦w¸Ë¦r«¬
+-----------------
+Áä¤J Instfont xxx -e enc res [res2]
+¨ä¤¤xxx ¦r«¬¦WºÙ¦pntukai,avkv,avbkv,...
+ -e enc ¦p -e BIg5
+ res ¦p 360
+§Úªºepson stylus 200«h¬OÁä¤J:
+ instfont avkv -e Big5 360
+µM«á·|«Ø¦n55­Ó¦r§Î
+--------
+´ú¸Õ
+--------
+¦b"­ì¥ý"ªºcjk/4_1.0/example/¤U¦³­Óbig5.tex
+ ¥i¥HÁä¤J
+ bg5latex big5.tex
+ ±Nbig5.tex ½sĶ¦¨ big5.dvi,µM«áÁä¤J
+ dvips16 big5
+ ·|Åã¥Ü¤@¨Ç°T®§,»¡¬O¯Ê¤F¤@¨Ç¦r«¬(.pkÀÉ?),
+ ­n²{¦b«Ø³y,¤§«á"À³¸Ó"´N¥i¥H±o¨ìbig5.ps,¥i¥H¥ÎGhostScript¨Ó¬Ý
+ ¤]¥i¥H v @xx big5 ±q¿Ã¹õ¤W¬Ý¨ìoutputs
+¥t¥~¦bcjk/4_1.0/doc/chinese/big5/¤U¦³¤@­Óreadmeb5.tex¤]¥i¥H¥Î¨Ó´ú¸Õ
+ ¦ý¬O­n¥ý¦w¸Ël2tools.zip:
+ ¥ýpkunzip -d l2tools.zip ±N·|§âÀɮ׸Ѧb
+emtex\dist....\tool\.........¤U
+ ¦A¸õ¨ìemtex\dist..\tool\...¤U Áä¤J:
+ latex2e xxxx.ins(´N¬O¨º­Ó°ß¤@ªº.ins)
+ §¹¦¨«á´N§â¤µ¤Ñ¦b³o¥Ø¿ý¤U·s²£¥ÍªºÀÉ¥þ·h¨ìemtex\texinput\latex2e\
+ ¦pªG§Aªº«¢ºwªÅ¶¡¤£°÷,²{¦bÀ³¸Ó´N¥i¥H§âemtex\dist..\tool\...¥ý¬å¤F
+ ¦w¸Ë¦n¤F¤§«á´N¥i¥H
+ bg5latex readme.tex
+ ÁöµMÁÙ¬O²£¥Í«Ü¦hĵ§i°T®§,¥i¬OÁÙ¥i¥H²£¥Íreadmeb5.dvi
+ ¤§«áÁÙ¬O¥Îdvips16 ©Î dvips32 ²£¥Í readmeb5.ps
+ »P v @xx readmeb5 ¬Ý¿é¥X
+---------
+«áµù
+---------
+¤@¡B§Ú¦b¦w¸ËCJKªº®É­Ô,¹J¨ì¤@¨Ç³Â·Ð,¥i¯à¬O4dos/ndosªºª©¥»¦³©Ò®t²§,
+ ¦³¨Ç¥\¯à¤Î¨ç¼Æ¨Ã¥¼´£¨Ñ,©Ò¥H¹ï­ì¥ýµ¹©w¤§btmÀɦ³¦h³B­×§ï,¤£¤Î³Æ¸ü?
+ ¦p±z¤£©¯¤]¾D¹JÃþ¦ü³Â·Ð,¨º´N......!-R
+¤G¡B§Úªºdvips16 ¦b³B²zreadmeb5.dvi®É¥X²{°O¾ÐÅ餣¨¬ªº°T¸¹,
+ ¦Ódvips32¤SµLªk¦Û°Ê©I¥sMakeTexPk ¨Ó²£¥Ífonts.btm,
+ ©Ò¥H¥u¦n¦Û¤v°Ê¤â¼g¤F¤@­Ófontss.btm ¨Ó¤ÀªR%dvips_stderr%ªº¿é¥XÀÉ,
+ ¦A©I¥sMakeTexPK ¨Ó²£¥Ífonts.btm,¦h¦¹¤@Á|:(
+¤T¡B³o¤å¥ó¨Ã«D¤@Ãä¦w¸Ë¤@Ã伶¼g,¦Ó¬O¨Æ«á¦A¦æ¾ã²z,¥i¯à¦³¨Ç¶µ¥Ø¦³©Ò²¨º|,
+ «Ü¦³¥i¯àµLªk·ÓµÛ STEP by STEP
+ªº¶i¦æ,¦Ó¥B§Ú²Ä¤@¦¸¼g³oºØªø½gªºpost(?)
+ ¦p¦³¤£·í¤§³B½Ð«ü¥¿!-R,
+ Thank you!
+
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/chinese/teTeXb5.txt b/language/chinese/CJK/cjk-4.8.5/doc/chinese/teTeXb5.txt
new file mode 100644
index 0000000000..ee28bc3564
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/chinese/teTeXb5.txt
@@ -0,0 +1,327 @@
+
+¥»¤å´£¨Ñ¤@­Ó²³æªº½d¨Ò¡A»¡©ú¦p¦ó±N CJK-4_2.0 ¦w¸Ë¦b tetex-0.9, kpathsea-3.2
+ªºÀô¹Ò¤U¡C¥Ñ©ó¦Û 4_2.0 ª©¥H«á¡A CJK ±N¤£¦A¥]§t ttf2pk µ¥¤u¨ãµ{¦¡¡A¦Ó ttf2pk
+¤]¤w²¾¨ì FreeType package ¤§¤¤¡C¦]¦¹­Y·Q­n¨Ï¥Î TTF ¦r«¬¨ÓÂà´«¦¨ CJK ªº¦r«¬
+ªº¸Ü¡AÁÙ­n¥t¥~§ì FreeType package ¦^¨Ó¦w¸Ë¡C¥»¤å¸Õ¹Ï±N¾ã­Ó¨BÆJ°µ¤@­Ó¾ã²z¡A
+¥H¤è«K¤j®a°Ñ¦Ò¡C
+
+(PS. ·PÁ CJK ªº§@ªÌ Werner LEMBERG <wl@gnu.org> ¹ï¥»¤å©Ò°µªº comment :-))
+
+
+A. ©Ò»Ýªº package:
+===================
+
+1. CJK-4_2.0:
+ ftp://ftp1.sinica.edu.tw/pub2/tex/languages/chinese/CJK
+
+2. FreeType:
+ ftp://ftp.freetype.org/pub/freetype/devel/freetype-current.tar.gz
+ ftp://apollo.ce.ntu.edu.tw/pub/freetype
+
+
+B. ¦w¸Ë¸ô®|:
+=============
+
+¥Ñ©ó§Úªº tetex-0.9 ¬OÀHµÛ Debian Linux 2.0 distribution ¦Ó¨Óªº¡A¨ä©Ò¦b
+ªº¥D¸ô®|¬O /usr, ¦Ó²{¦b­n¥[¸Ë CJK ªº¤ä´©¡A§Ú¥´ºâ±N CJK »P ttf2pk ªº³¡¤À
+¾¨¥i¯à¦a¦w¸Ë¦b /usr/local ¤§¤U¡A¥H«K»P Debian ©Òªþªº distribution ¦³©Ò
+°Ï®æ¡C¦]¦¹¡A§Ú«K§â©Ò»Ýªº¦w¸Ë¸ô®|¦w±Æ¦p¤U:
+
+ °õ¦æÀÉ: BINLOCAL=/usr/local/bin
+ CJK »P ttf2pk ªº¬ÛÃö³]©wÀÉ: TEXMFLOCAL=/usr/local/lib/texmf
+
+¦P®É§Ú­ÌÁٻݭn°t¦X (­×§ï) TEXMFCNF=/etc/texmf/texmf.cnf ¤¤ªº¬ÛÃö³]©w¨Ó
+¦w¸ËÀÉ®×, ¨Ï±o latex »P ttf2pk ¦b¹B§@¹Lµ{¤¤¯à§ä¨ì©Ò¦³©Ò»ÝªºÀɮסC
+
+PS. 1. $TEXMFCNF ¬O tetex ªº¦UºØ¸ô®|³]©wÀÉ¡AÀɦW¬° texmf.cnf, ¦ý¥¦ªº¦ì
+ ¸m¥i¯à¨Ì¤£¦Pªº distribution ¦Ó¦³¤£¦P: ¥i¯à¦b /etc/ ¤U¡A¤]¥i¯à¦b
+ /etc/texmf/ ¤U¡C
+
+ 2. $TEXMFLOCAL ªº­È¬O¨Ì $TEXMFCNF ªº³]©w¦Ó©w¡A½Ð¦Û¦æ°Ñ¦Ò±z¨t²Î¤¤ªº
+ ³]©w¡C
+
+ 3. ¦b§Úªº¨t²Î¤¤¡A $TEXMFCNF ¤¤¦³¤@¦æ¬O³o¼Ëªº:
+
+ TEXMF = {$HOMETEXMF,!!$TEXMFLOCAL,!!$TEXMFMAIN}
+
+ ¨ä·N¸q¬O¡A¤Z¬O¨Ï¥Î $TEXMF °µ¬°¸ô®|¶}ÀYªÌ¡A«h¨t²Î¦b·j´M®É·|¦Û°Ê´M
+ §ä $HOMETEXMF, $TEXMFLOCAL, $TEXMFMAIN µ¥¥Ø¿ý©³¤Uªº¸ô®|¡C¨ä¤¤:
+
+ HOMETEXMF = $HOME/texmf % ¨Ï¥ÎªÌ¦Û¤vªº tex ¥Ø¿ý¦ì¸m
+ TEXMFMAIN = /usr/lib/texmf % tetex ¥D¥Ø¿ý
+
+ 4. latex/xdvi/dvips/ttf2pk µ¥µ{¦¡¦b¹B§@ªº¹Lµ{¤¤¡A©Ò²£¥Íªº tfm »P pk ¦r
+ «¬ÀÉ¡A·|©ñ¨ì $VARTEXFONTS ©³¤U¡C®Ú¾Ú $TEXMFCNF ªº¹w³]¡A¨ä­È¬°
+
+ VARTEXFONTS = /var/spool/texmf
+
+ 5. Ãö©ó¬ÛÃöªº¦r«¬¸ô®|¦WºÙ¡A¥i¥H°Ñ¦Ò CJK-4_2.0..../doc/TDS.txt ªº«Øij¡C
+
+
+C. ¦w¸Ë¨BÆJ:
+=============
+
+1. TTF ¦r«¬§Ú¥Î moe_kai.ttf, ©ñ¦b $TEXMFLOCAL/fonts/truetype ¤U¡C
+ (PS. $TEXMFCNF ¤¤ªº¹w³]¬°: TTFONTS = .:$TEXMF/fonts/truetype//)
+
+2. ±N CJK-4_2.0/.../texinput/ ¾ã­Ó«þ¨ì $TEXMFLOCAL/tex/CJK¡C
+ (PS. $TEXMFCNF ¤¤ªº¹w³]¬°:
+ TEXINPUTS.latex2e = .:$TEXMF/tex/{latex,generic,latex209,}//
+ TEXINPUTS.latex = .:$TEXMF/tex/{latex,generic,latex209,}//)
+
+3. ­×§ï /usr/lib/texmf/tex/latex/CJK/Bg5/c00kai.fd, ¨º¬O©w¸q CJK kai
+ ©Ò¥Îªº¦r«¬¡A¦b¦¹§Ú­Ì±N¨Ï¥Î moe_kai ªº¦r«¬¡C½Ð±N
+
+\DeclareFontShape{C00}{kai}{m}{n}{<-> CJK * b5ka12}{}
+\DeclareFontShape{C00}{kai}{bx}{n}{<-> CJKb * b5ka12}{\CJKbold}
+
+ §ï¦¨
+
+\DeclareFontShape{C00}{kai}{m}{n}{<-> CJK * moekai}{}
+\DeclareFontShape{C00}{kai}{bx}{n}{<-> CJKb * moekai}{\CJKbold}
+
+ ¥Ñ©ó¥Ø«eªº FreeType - ttf2pk ©|¤£¤ä´©±N¤¤¤å¦rÂà 90 «×¡A¬G¦b¦¹§Ú­Ì
+ ¤£¥h­×§ï c00kair.fd ÀÉ¡C
+
+ (PS. ½Ðª`·N¡A¦b¦¹©Ò¨Ï¥Îªº¦r«¬¦W½Ð¾¨¶q¤£­n¦³ "_" ¦r¤¸¡A¥H§K³y¦¨°ÝÃD)
+
+4. ­×§ï $TEXMFMAIN/fontnames/special.map, ¥[¤J
+
+moekai big5 moekai
+
+ ¨ä¸q·N¬O¡A CJK ©Ò»Ýªº .tfm, .pk µ¥¦r«¬±N·|©ñ¦b:
+
+ moekai*.tfm ===> $VARTEXFONTS/tfm/big5/moekai/
+ moekai*pk ===> $VARTEXFONTS/pk/big5/moekai/
+
+ ©³¤U¡C
+
+5. Compile ¤@¤U CJK-4_2.0/utils/Bg5conv/bg5conv.c, ¨Ã±N¥¦©ñ¨ì $BINLOCAL
+ ¤U¡C¦P®É¤]±N bg5latex ¤]©ñ¹L¥h¡C
+
+6. ¦w¸Ë FreeType lib ¡C½Ð¨ì FreeType ªº¥Ø¿ý¤U¡A°õ¦æ:
+
+ ./configure --prefix=/usr/local --with-locale-dir=/usr/share/locale
+ make
+ make install
+
+7. ¦w¸Ë ttf2pk ¡C½Ð¨ì freetype/contrib/ttf2pk ©³¤U¡A°õ¦æ:
+
+ ./configure --prefix=/usr/local --with-kpathsea-dir=/usr
+ make
+ make install
+
+ ¦b¦¹¦]¬°§Úªº¨t²Î¤¤¦³ kpathsea lib, ¬O©ñ¦b /usr ©³¤U¡A¦]¦¹§Ú°µ¤F³o¼Ëªº
+ ªº³]©w¡C­Y±zªº¨t²Î¤¤¨S¦³ kpathsea lib, «h¤£­n³] --with-kpathsea-dir¡C
+ «Øij±z¨Ï¥Î kpathsea lib, ¦]¬°³o¼Ëªº¸Ü ttf2pk package ¥i¥H«Ü§¹¾ã¦a»P
+ tetex ¨t²Î¾ã¦X¦b¤@°_¡C
+
+ (PS. ½Ðª`·N¡A®Ú¾Ú Werner LEMBERG ªº comment, ³o¼Ëªº°µªk¥i¯à¦b¬Y¨Ç
+ ±¡ªp¤U·|¥¢®Ä¡C³Ì¤@¯ëªº°µªk¡A¬O±N ttf2pk ªº°õ¦æÀɦw¸Ë¦b»P¨ä¥L
+ tetex ªº°õ¦æÀɬۦPªº¥Ø¿ý¤U¡A¦b¤W­zªº¨Ò¤l§Y¬° /usr/bin ¡C¦P®É¡A
+ ¦b configure ®É --prefix ¤]À³¸Ó³]¬° /usr ¤~¹ï¡C­Y±zµo²{¥Î¤W­z
+ ªº¤è¦¡µLªk work ®É¡A½Ð±z¸ÕµÛ±N ttf2pk ¦w¸Ë¦b»P tetex ªº°õ¦æÀÉ
+ ¦w¸Ë¦b¤@°_¡C°£¦¹¤§¥~¡A¨Ï¥Î symbolic link ±N /usr/local/bin/ttf2pk
+ link ¨ì /usr/bin/ttf2pk ¥i¯à¤]¨S¥Î)
+
+8. ²{¦b§Ú±N ttf2pk ªº¬ÛÃö¸ê®ÆÀÉ©ñ¨ì $TEXMFLOCAL/ttf2pk ¤U:
+
+ mkdir $TEXMFLOCAL/ttf2pk
+ cp freetype/contrib/ttf2pk/data/* $TEXMFLOCAL/ttf2pk
+ ln -s $TEXMFLOCAL/ttf2pk $TEXMFLOCAL/ttf2tfm
+
+ µM«á­×§ï $TEXMFCNF, ¥[¤J¥H¤U¨â¦æ:
+
+ TTF2PKINPUTS = $TEXMF/ttf2pk/
+ TTF2TFMINPUTS = $TEXMF/ttf2pk/
+
+ ¥H©ú½T«ü©w ttf2tfm ¥H¤Î ttf2pk ©Ò»Ýªº³]©w»P¸ê®ÆÀɪº¦ì¸m)
+
+9. °µ¥X©Ò¦³ªº tfm ¦r«¬ (¥»«ü¥Oªº¸Ô²Ó·N¸q½Ð¨£ man ttf2tfm):
+
+ ttf2tfm moe_kai -P 3 -E 4 moekai@Big5@
+
+ ¦bµ{¦¡°õ¦æ²×¤F·|¦L¥X³o¤@¦æ:
+
+moekai@Big5@ moe_kai Pid=3 Eid=4
+
+ ½Ð±N³o¤@¦æ¼g¨ì $TEXMFLOCAL/ttf2pk/ttfonts.map Àɤ¤¡Cttf2pk §Y¨Ï¥Î¦¹¸ê
+ ®Æ¨Ó²£¥Í©Ò»Ýªº pk ¦r«¬ÀÉ¡C
+
+ µM«á¡A¦A±N²£¥Í¥X¨Óªº .tfm ¦r«¬¥þ³¡²¾¨ì $VARTEXFONTS/tfm/big5/moekai
+ ©³¤U¡C
+
+10. ¶]¤@¤U texconfig rebuild ls-R data base. ­Y±zªº¨t²Î¨S¦³³o­Ó«ü¥O¡A«h
+ ¶]¤@¤U mktexlsr <path_name>. ½Ðª`·N¡A¨C¦¸±z­«·s°µ¥X tfm ¦r«¬¡A©Î¼W¥[¡B
+ §R°£ tetex ©³¤UªºÀɮ׮ɡA±z³£¥²¶·°µ³o¤@¨B¡A¥H§ó·s ls-R data base ªº¤º
+ ®e¡C¨Ï¥Î texconfig ®É·|¥X²{¤@­Ó¿ï³æ¡A±z¥i¥H¿ï¨ú "rebuild ls-R database"
+ §Y¥i¡C­Y±z¨Ï¥Î mktexlsr, «h­n«ü©ú¸ô®|¡A¦p
+
+ mktexlsr /var/spool/texmf
+ mktexlsr /usr/local/lib/texmf
+
+11. Patch tetex-0.9 ªº mktexpk script¡C¨ä diff ÀɬO¦b
+ freetype/contrib/ttf2pk/scripts/web2c-7.2/ ©³¤U¡C¦p¦¹ latex ¨t²Î
+ ¦b»Ý­n®É¡A´N·|©I¥s ttf2pk ¨Ó²£¥Í©Ò»Ýªº pk ¦r«¬¡C
+
+ (PS. ­Y±z©Ò¥Îªº¬O³Ì·sªº teTeX 0.9-beta ªº¸Ü¡A¨ä mktexpk ¤w¥]§t¤F¥H¤W
+ ªº patch, ©Ò¥H±z¤£¥²°µ³o¤@¨B¡C³Ì·sªº teTeX 0.9-beta ¥i¥H¦b³oùØ
+ §ä¨ì:
+
+ ftp://ftp.rrzn.uni-hannover.de/pub/local/misc/teTeX-beta/)
+
+12. §¹¦¨! ±z¥i¥H¸Õ¸Õ½sĶ CJK_4_2.0/doc/chinese/READMEb5.tex, ¬Ý¦³¨S
+ ¦³¨ä¥L°ÝÃD¡C
+
+
+
+C. LaTeX/CJK ªº¤u§@­ì²z (for tetex-0.9, CJK-4_2.0):
+====================================================
+
+¥H¤U¬°´N§Ú©Òª¾ªº LaTeX ½sĶ¤å³¹ªº¨BÆJ»P¥Ø«e CJK ªº¤u§@­ì²zµy·L»¡©ú¤@¤U¡A
+¥HÀ°§UŪ¤F¸Ñ¥H¤W³]©wªº·N¸q¡C
+
+­º¥ý¡A·í TeX/LaTeX ¦bŪ¤J¤@­Ó .tex ÀÉ¡A¨Ã¸Õ¹Ï¦a°µ¥X¤@­Ó .dvi ÀɮɡA¥¦¥²¶·
+­n¥Î¨ì .tfm ªº¦r«¬¡C .tfm ªº¦r«¬ÀÉ¥u°O¿ý¤F¸ÓºØ¦r«¬³Ì°ò¥»ªº¸ê°T¡A¥¦¬Æ¦Ü»P
+¦r«¬ªº¹ê»Ú¤j¤pµLÃö¡A¥¦¯Âºé¥u¥Î¨Ó°µ±Æª©¥Îªº¡CTeX/LaTeX ¹w³]ª¬ªp¤U³£·|¨ì
+$TEXMFDIR/fonts/tfm/ ©³¤U§ä .tfm ¦r«¬ (¦U¦ì¥i¥H¬Ý¬Ý /etc/texmf/texmf.cnf
+ªº³]©w) ¡A¦]¦¹¡A°²³]¦b tfm/ ¤UÁÙ¦³«Ü¦h¥Ø¿ý¡A¦p
+
+ ..../tfm/big5/moekai/
+ ..../tfm/big5/moesung/
+ ..../tfm/ams/
+ ...........
+
+µ¥µ¥¡A«h³o¨Ç¤l¥Ø¿ý©³¤U©Ò¦³ªº .tfm ¦r«¬Àɳ£·|³Q·j´M¨ì¡C¦Ó $TEXMFDIR «h¥Nªí
+¤F§A¨t²Î¤¤ TeX ªº¥D¥Ø¿ý¡C¸U¤@§ä¤£¨ì¦r«¬¡A¥¦·|©I¥s mktextfm ¨Ó²£¥Í¦r«¬¡A©Ò
+²£¥Í¥X¨Óªº¦r«¬´N¥á¨ì $TEXMFDIR/fonts/tfm/.... ¤U¡C
+
+mktextfm ¬O¤@­Ó shell script ¡A¥¦¦b¤u§@®É­º¥ý·|¥ý¤ÀªR©Ò»Ý²£¥Íªº¦r«¬ºØÃþ»P
+À³¦bªº¸ô®|¦W¡A¨Ã¦A¦¸Àˬd¸Ó¦r«¬¬O§_¦s¦b¡A¦pªG¯u¤£¦s¦b¡A«h¥¦·|©I¥s¦r«¬²£¥Í
+µ{¦¡ mf ¨Ó§â¦r«¬°µ¥X¨Ó¡C
+
+µM¦Ó¡A¤£ºÞ¬O°µ¤°»ò¼Ëªº¦r«¬¡A³£¤@©w­n¦³¤@­Ó¨Ñ°Ñ¦Òªº¦r«¬¡u¼ËªO¡v¤~¦æ¡A¦b TeX
+¨t²Î¤¤¡A¹w³]ªº¦r«¬¼Ëª©¬° MetaFont, ³o¬O¨t²Î³Ì°ò¥»ªº¦r«¬¼Ëª©¡C·íµM¡A§Ú­Ì¥i
+¥H¥[¤J¨ä¥Lªº¦r«¬°µ¬°¼Ëª©¡A¦Ó³o¨Ç¥[¤Jªº¦r«¬´N°O¿ý¦b¤@­Ó¥s special.map ªºÀÉ
+¤¤¡A¦¹Àɦ³¤T­ÓÄæ¦ì¦p¤U:
+
+% Font source typeface
+%
+A public hieroglyph
+Aa public hieroglyph
+B public hieroglyph
+C public hieroglyph
+D public hieroglyph
+DeadSea public hebrew
+
+¨ä¤¤²Ä¤@Äæ¬O¦r«¬¦WºÙ¡A²Ä¤GÄæ©M²Ä¤TÄæ¬O¦r«¬Ãþ§O¡CTeX/LaTeX §Y®Ú¾Ú special.map
+ªº¤º®e¡A¦b $TEXMF/fonts/tfm ¤U´M§ä©Ò»Ýªº .tfm ¦r«¬¡C¹w³]±¡ªp¤U¡A¥¦´N¥H
+¦r«¬Ãþ§O¦WºÙ°µ¬°¸Ó¦r«¬ªº¦s¦b¸ô®|¡A¨Ò¦p·í»Ý­n DeadSea*.tfm ®É¡A¨ä¦s¦bªº¸ô¦æ§Y
+¬° $TEXMF/fonts/tfm/public/hebrew/ ¡C­Y¸ô®|¤£¦s¦b©Î¦r«¬¤£¦s¦b¡A«hµø»Ý­n
+²£¥Í¸Ó¸ô®|¡A¨Ã©I¥s mktextfm ¨Ó²£¥Í¦r«¬ÀÉ¡A mktextfm «h·|¶i¤@¨B©I¥s mf µ{¦¡¨Ó
+¤u§@¡C
+
+·í .dvi ÀÉ¥X¨Ó«á¡A§Ú­Ì¥i¥H¥Î xdvi ¨Ó°µ¹wµø¡A³o®É­Ô´N»Ý­n .pk ªº¦r«¬¡A¦¹¬°
+ÂI°}¦r«¬¡A´N»P¹ê»Ú©Ò»Ýªº¦r«¬¤j¤p¦³Ãö¡C¦P¼Ëªº¡A xdvi ·|¥ý¨ì
+$TEXMF/fonts/pk/..../ ¬Ý¬Ý¸Ó¦r«¬¬O§_¤w¦s¦b¡A§ä¤£¨ì¥¦´N·|¥h©I¥s
+mktexpk ¨Ó°µ¥X¦r«¬¡Cmktexpk ªº¤u§@¾÷¨î»P mktextfm §¹¥þ¤@¼Ë¡A©Ò¥H´N¤£¦A­«ÂСC
+·íµM¡A§Ú­Ì¤]¥i¥H¥Î dvips ¨Ó²£¥Í PostScript ªº¤å¥óÀÉ¡A¦b³oùئP¼Ë­n¨Ï¥Î .pk
+ªº¦r«¬¡A¤]¬O¥Î mktexpk ¨Ó°µ¡C
+
+´N¥H¤Wªº»¡©ú¡A§Ú­Ì¥i¥Hª¾¹D¡A­Y­n¥Î CJK ¨Ó²£¥Í¤¤¤å¤å¥ó¡A«h»Ý­n¨ã³Æ¥H¤U±ø¥ó:
+
+1. ¥Î¨Ó©w¸q¤¤¤å¤å¥ó®æ¦¡ªº texinput style ÀÉ¡C
+
+2. ¤¤¤å¦r«¬ .tfm ¥H¤Î .pk ¡C
+
+¨ä¤¤²Ä¤@­Ó±ø¥ó«Ü®e©ö¡A¤]´N¬O§Ú¦b¤W¤@¸`ªº¡u¦w¸Ë¨BÆJ¡v¤¤ªº²Ä¤G¨B©Ò´£¨ìªº¡C°£
+¦¹¤§¥~¡A§Ú­ÌÁٻݭn¤@­Ó bg5conv ªºµ{¦¡¡A¥¦­t³dŪ¤J¤¤¤å .tex ­ì©lÀÉ¡A¸g½s½X
+«áÂন .cjk ½s¿é¥X¡AµM«á¤~¥æµ¹ latex ¶i¦æ²£¥Í .dvi Àɪº°Ê§@¡C
+
+¤ñ¸û³Â·Ðªº¬O¦r«¬ªº³¡¤À¡C´N .tfm ¦r«¬¦Ó¨¥¡A¦b¹L¥h¦w¸Ë CJK ®É¡A§Ú­Ì¥i¯à¤£·|
+¹w¥ý±N©Ò¦³»Ý­nªº .tfm ¹w¥ý°µ¥X¨Ó¡A¦Ó¬O±Ä¥Î½u¤W²£¥Íªº¤è¦¡¡A³o®É§Ú­Ì»Ý­n­×
+§ï mktextfm, ¥H«K¦b»Ý­n®É©I¥s ttf2pk ¤§Ãþªºµ{¦¡¦Û TTF ¦r«¬°µ¥X .tfm ¦r«¬¡C
+¦ý²{¦b§Ú­Ì¨Ï¥Î·sª©ªº ttf2pk package, ¨ä ttf2tfm µ{¦¡¥i¥H«Ü®e©ö¦a±N©Ò¦³ªº
+.tfm ¦r«¬²£¥Í¥X¨Ó¡A¨Ã¹w¥ý¦w¸Ë¨ì¥¿½Tªº¥Ø¿ý¤¤¡A¦p¦¹§Ú­Ì´N¤£»Ý­n¥h­×§ï mktextfm
+¤F¡C¦Ó³o´N¬O¤W¤@¸`¡u¦w¸Ë¨BÆJ¡v¤¤ªº²Ä 9 ¨B©Ò°µªº¤u§@¡A¨ä©R¥Oªº·N¸q¬°:
+
+ ttf2tfm <TTF filename> -P <platform ID> -E <encoding ID> <TFM filename>
+
+¨ä¤¤ <TTF filename> ÀɦW®æ¦¡¬° <name>XX.tfm, <name> ¬O¦r«¬¦WºÙ¡A XX ¬O¤@­Ó
+¼Æ¦r¡A¥Nªí¤F¸Ó¦r«¬ encoding ªº§Ç¸¹¡A¨Ò¦p: moekai03.tfm ¡C¹ï©ó¤@®M§¹¾ãªº
+¦r«¬¡A¨ä§Ç¸¹¥²¶·¨¬¥H¥]§t©Ò¦³ªº¤¤¤å¦r¡A¥H Big5 ½X¬°¨Ò¡A¨ä§¹¾ãªº§Ç¸¹¬O±q 01
+¨ì 58, ¤]´N¬O¥²¶·²£¥Í 58 ­Ó¦r«¬ÀÉ¡C¦b·sª©ªº ttf2tfm ¤¤¡A±z¤£»Ý­n©I¥s ttf2tfm
+58 ¦¸¡Aª`·N¨ì¦b¦w¸Ë¨BÆJ¤¤¡A <TFM filename> ³o¤@­Ó°Ñ¼Æ¬O
+
+ moekai@Big5@
+
+¨ä¤¤ moekai §Y¬° <name>, ¦Ó @Big5@ ¬O«ü§Ç¸¹ªº³¡¤À¡A¦b³oùجO¥Î¤@­Ó
+Big5.sfd ³o­ÓÀɨӥN´À (µ{¦¡·|¦Û°Ê¥[¤J .sfd ³o­ÓªþÀɦW) ¡Aª`·N¨ì¦b¡u¦w¸Ë
+¨BÆJ¡v¤¤ªº²Ä 8 ¨B§Ú­Ì¤w±N³o­ÓÀɮ׫þ¨ì¤F¾A·í¦ì¸m¡A¦Ó¸ÓÀÉ´N°O¿ý¤F Big5 ½X¦r
+«¬©Ò¦³§Ç¸¹µ¥¬ÛÃö¸ê°T¡A ttf2tfm ¥i¥Hª½±µ°Ñ¦Ò³o­ÓÀɪº¤º®e±N©Ò¦³ªº¦r«¬¥þ³¡
+°µ¥X¨Ó¡C
+
+¦b ttf2tfm ¤u§@§¹¦¨¤§«á¡A¥¦·|¦L¥X¤@¦æ°T®§ (¨£¡u¦w¸Ë¨BÆJ¡v²Ä 9 ¨B)¡A³o¤@
+¦æ¬Oµ¹ ttf2pk °Ñ¦Ò¥Îªº¡A¥²¶·¼g¤J ttf2pk ±MÄݪº³]©wÀÉ ttfonts.map ¤¤¡C³Ì
+«á¡A§Ú­Ì¦A±N©Ò¦³ªº .tfm ¦r«¬²¾¦Ü¾A·í¥Ø¿ý¡A§Y§¹¦¨¤F .tfm ¦r«¬ªº³¡¤À¡C
+
+¹ï©ó .pk ¦r«¬¡A¥Ñ©ó³oùØÁÙ²o¯A¤F¤£¦Pªº¦r«¬¤j¤p¦³¤£¦PªºÀÉ¡A§Ú­ÌµLªk¹w¥ýª¾
+¹D»Ý­n¨º¨Ç¤j¤pªº¦r«¬¡A¦]¦¹¦b¦¹§Ú­Ì±Ä¥Î¤F½u¤W²£¥Íªº¤è¦¡¡A»Ý­n®É¤~²£¥Í pk
+¦r«¬¡C©ó¬O¡A§Ú­Ì¥²¶·­×§ï mktexpk¡A¦b»Ý­n¤¤¤å¦r«¬®É©I¥s ttf2pk ¦Û TTF ¦r
+«¬±N©Ò»Ýªº¦r«¬°µ¥X¨Ó (¨£¡u¦w¸Ë¨BÆJ¡v²Ä 11 ¨B)¡C
+
+pk ¦r«¬ÀɦWªº®æ¦¡¦p¤U:
+
+ <name>XX.<SSSS>pk
+
+¨ä¤¤ <name> ¬O¦r«¬¦W¡A XX ¬O encoding §Ç¸¹¡A <SSSS> §Y¬°¸Ó¦r«¬ªº¤j¤p (dpi)¡C
+
+ÁÙ¦³¤@ÂI¡A¥Ñ©ó·sª©ªº ttf2pk ¤w¯à¨Ï¥Î kpathsea lib ¨Ó·j´M¥¦©Ò»ÝªºÀɮסA¥]
+¬A¦r«¬ÀÉ¥H¤Î³]©wÀÉ¡A¦Ó³]©wÀɪº³¡¤À§Ú­Ì´N¥²¶·±N¥¦ªº¦ì¸m¼g¦b
+/etc/texmf/texmf.cnf ¤¤¡A¨Ã¥B­n¶] mktexlsr ©Î texconfig «á (¨£¡u¦w¸Ë¨BÆJ¡v
+ªº²Ä 8 ¨B»P²Ä 10 ¨B)¡A¦p¦¹ kpathsea lib ¤~¯à§ä¨ì³]©wÀɪº¦ì¸m¡C
+
+
+ºî¤W©Ò­z¡A¥H¤U§Ú´y­z¤@¤U¾ã­Ó LaTeX/CJK ªº compile ¹Lµ{¡A°µ¬°Á`µ²¡C
+
+
+1. °õ¦æ bg5latex, ³o¬O¤@­Ó script, ¥¦©I¥s bg5conv Ū¤J .tex ­ì©lÀÉ¡A¨ÃÂà
+ ¦¨½s½X«áªº .cjk ÀÉ¡C
+
+2. bg5latex ±µµÛ©I¥s latex, Ū¤J .cjk ÀÉ¡A¦b§P©w¥¦»Ý­n CJK package ®É¡A
+ ¦p:
+
+ \usepackage{CJK}
+ \begin{CJK*}{Bg5}{kai}
+
+ «KŪ¤J¤@¨t¦Cªº CJK texinput style ÀÉ¡A¨Ã¸ò¾Ú Bg5, kai, Ū¨ú
+ .../Bg5/c00kai.fd ³o­Ó¦r«¬©w¸qÀÉ¡C
+
+3. ®Ú¾Ú c00kai.fd Àɪº©w¸q¡A latex ª¾¹D¤¤¤åªº³¡¤À»Ý­n moe_kai ¦r«¬¡C©ó¬O¡A
+ ¦b²£¥Í .dvi Àɪº¹Lµ{¤¤¡A¥¦®Ú¾Ú special.map Àɪº¤º®e¡A¦b¾A·íªº¸ô®|¤¤´M§ä
+ ©Ò»Ýªº .tfm ÀÉ¡A­Y§ä¤£¨ì«h©I¥s mktextfm ¨Ó²£¥Í¥¦¡C¥Ñ©ó¨Æ¥ý§Ú­Ì¤w¦w¸Ë¦n
+ ©Ò¦³ªº .tfm ¦r«¬¡A¦]¦¹³o¤@¨B¤£»Ý­n©I¥s mktextfm §Y¥i§¹¦¨¡C
+
+4. .dvi ÀÉ¥X¨Ó«á¡A°²³]§Ú­Ì­n¥Î dvips ¨Ó²£¥Í .ps ÀÉ¡A«h dvips ¦bµo²{»Ý­n
+ moekai ¦r«¬®É¡A·|¸ò¾Ú special.map ªº¤º®e¡A¨ì¾A·íªº¸ô®|¥h´M§ä moekai*pk
+ ÀÉ¡C
+
+5. ­Y§ä¤£¨ì¡A«h¥¦·|©I¥s mktexpk ¨Ó²£¥Í¦r«¬ÀÉ¡C­×§ï¹Lªº mktexpk ¦bµo²{©Ò»Ý
+ ²£¥Íªº¦r«¬¬O moekai ®É¡A«K·|©I¥s ttf2pk ¨Ó¤u§@¡C
+
+6. ttf2pk ­º¥ý³z¹L kpathsea lib, ÂÇ¥Ñ /etc/texmf/texmf.cnf ¤¤ªº³]©w§ä¨ì¨ä
+ ³]©wÀÉ ttfonts.map ªº¦ì¸m¡AŪ¤J³]©wÀÉ«á¡A®Ú¾Ú moekai ¨º¤@¦æ¡A¥¦ª¾¹D¤F:
+
+ a. ©Ò»Ý­nªº¦r«¬¼Ëª©¬° $TEXMFLOCAL/fonts/truetype/moe_kai.ttf ¡C
+
+ b. ¸Ó¦r«¬ªº encoding §Ç¸¹¸ê®Æ¦s©ñ¦b»P ttfonts.map ¬Û¦P¥Ø¿ý¤Uªº Big5.sfd
+ Àɤ¤¡C
+
+ c. ¨ä¥L¦p Platform ID »P Encoding ID ªº¸ê°T¡C
+
+ ttf2pk §Y§Q¥Î³o¨Ç¸ê°T¡A±N©Ò»Ýªº moekai*pk ÀÉ°µ¥X¨Ó¡A¨Ã¥æ¥Ñ mktexpk ±N¸Ó
+ ÀÉ©ñ¨ì¥¿½Tªº¸ô®|¤U¡A¥H³Æ¤é«á­«½Æ§Q¥Î¡C
+
+7. §¹¦¨¡C
+
+
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/cjk-enc.txt b/language/chinese/CJK/cjk-4.8.5/doc/cjk-enc.txt
new file mode 100644
index 0000000000..67ad57fc4f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/cjk-enc.txt
@@ -0,0 +1,438 @@
+This is the file cjk-enc.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+cjk-enc.el
+----------
+
+Mule, the multilingual Emacs, is one of the most powerful editors available
+for Unix systems like Linux. It is capable to edit and display texts which
+are, among other scripts, written in various CJK languages; as an example
+you can have traditional and simplified Chinese at the same time. Mule is
+distributed under the GNU Public License; it is now integrated into the
+source code emacs 20.
+
+The CJK package enables LaTeX to do the same (with some restrictions, see
+below), but the interface is different. Mule uses additional bits internally
+to store the encoding of a character, whereas the CJK package needs \CJKenc
+macros to select encodings.
+
+Now enters cjk-enc.el . This small output filter for Mule (written in Lisp)
+converts text as entered in Mule into a form TeX can understand. Double-byte
+encodings which can be processed by CJK are usually converted into EUC form
+preceded by \CJKenc{...} macros, single-byte encodings (Latin-1, etc.) into
+equivalent LaTeX 2e macros (e.g., Latin-1 character 0xC4 (umlaut A) into
+\"A). Some of these macros are undefined by default in standard LaTeX 2e
+because CM or EC fonts have no characters for it. Vietnamese, Cyrillic
+scripts, Modern Greek, and Thai are also supported (see below).
+
+cjk-enc.el comes in two versions.
+
+ . An old version for Mule 2.3 with limited capabilities since it is no
+ longer supported (but updated if necessary).
+
+ . A new version with enhanced commands which works with emacs versions
+ >= 20.3 and xemacs versions >= 21.1 (the latter without Thai support).
+
+Support for emacs versions < 20.3 has been dropped. Please upgrade. In the
+following, `Mule' is used for all emacs flavours.
+
+
+Installation
+------------
+
+To load cjk-enc.el into Mule, put the following line into your .emacs file:
+
+ (load-library "cjk-enc")
+
+this assumes that cjk-enc.el is in a directory searched by Mule. A good
+place for it is the site-lisp subdirectory (e.g.,
+/usr/local/share/emacs/site-lisp).
+
+After loading, a new (output) encoding scheme is defined: `*cjk-coding*'.
+[This is called `cjk-coding' under emacs 20---Please note further that the
+ prefix for Mule commands has changed to `C-x RET' for emacs 20 instead of
+ `C-x C-k'.]
+
+Note: `*cjk-coding*' (`cjk-coding') can't be used to save documents! It
+ is intended only to create the *.cjk file which is then directly
+ processed by LaTeX.
+
+
+Usage (LaTeX 2e part)
+---------------------
+
+A sample of a multilingual document (muletest.{tex,cjk,dvi,pdf}) can be
+found in the examples subdirectory (only the TEX file is in the src package
+of CJK, the other files are in the doc package).
+
+European languages based on the Latin script:
+
+ Simply write your documents! Characters like `u umlaut' or `c hacek' are
+ converted into LaTeX 2e macros. You don't need to write "u or something
+ else (nevertheless it's possible). It is recommended to use LaTeX 2e's
+ T1 font encoding scheme to have a) most of the European diacritics
+ available and b) correct hyphenation for accented characters.
+
+ The lower half of JIS X 0201 is treated similarly.
+
+ Note that the default CM fonts of LaTeX are OT1 encoded. You should
+ rather use the EC fonts which are based on T1 (or virtual T1 fonts
+ mapped onto OT1).
+
+ For correct hyphenation you still have to change languages, thus a
+ system like Babel should be used additionally.
+
+CJK languages:
+
+ Don't start a CJK (or CJK*) environment! cjk-enc.el does this
+ automatically for you at the `\begin{document}' command. It also inserts
+ \CJKspace and \CJKnospace commands (\CJKspace for Korean, \CJKnospace
+ for all other CJK scripts; but see the section `Problems' below also).
+
+ In CJK.enc the default font family for all encodings is `song' (except
+ for Korean Hangul where it is `mj'). Two commands are available to
+ change the CJK font encoding and family in combination with cjk-enc.el
+ (see CJK.txt and commands.txt for a detailed description):
+
+ \CJKencfamily[<fontencoding>]{<encoding>}{<family>}
+ Change family for a certain encoding (and fontencoding).
+
+ \CJKfontenc{<encoding>}{<fontencoding>}
+ Change fontencoding for a certain encoding.
+
+ The second command is primarily for users who use Japanese DNP fonts
+ (see the Japanese documentation subdirectory for further details) or
+ Korean HLaTeX fonts.
+
+ For the upper half of JIS X 0201 encoding, the katakana range of the
+ SJIS encoding of the CJK package is used.
+
+Vietnamese:
+
+ Vietnamese uses accented characters not contained in EC or CM fonts. To
+ assure proper kerning you must explicitly activate T5 font encoding
+ (this can't be done automatically) to access a Vietnamese font.
+
+ The VnTeX bundle contains Vietnamese fonts and support files; it also
+ defines T5 encoding. It is available from http://vntex.sf.net.
+ (Note that the now obsolete vncmr package is no longer supported.)
+
+Russian and other languages using the cyrillic script:
+
+ Cyrillic LaTeX encodings (T2A, T2B, T2C, and X2) are now supported
+ within the LaTeX 2e distribution (starting with version 1998/12/01).
+ Cyrillic fonts and auxiliary files supporting these encodings are
+ available at CTAN from fonts/cyrillic and macros/latex/contrib/t2); most
+ TeX distributions already come with Cyrillic fonts installed.
+
+ The current implemention needs a lot of temporary disk space for
+ Cyrillic scripts (e.g., a 100 kByte document written only with Cyrillic
+ letters has an intermediate output file of about 800 kByte). On the
+ other hand, it is still possible to recognize the Cyrillic characters
+ name macros in the log file in case of error messages---if I used the
+ shortest possible representation, only numbers would be visible, and the
+ size of the intermediate output file would still have 500 kByte...
+
+ You must explicitly activate one of the T2* (or X2) encodings for
+ Cyrillic. Russian needs T2A.
+
+Greek:
+
+ You must use the LGR encoding and fonts as defined in the Babel package:
+ ISO-8859-7 characters are mapped back to ASCII characters which are then
+ displayed as Greek characters, using the ligature mechanism extensively.
+
+Thai:
+
+ It is implemented only in the emacs 20.3 version of cjk-enc.el. Instead
+ of using an external program, Ken'ichi Handa has written thai-word.el
+ which implements the word-breaking algorithm in Lisp, based on the the
+ C-TTeX package version 1.15 written by Vuthichai Ampornaramveth
+ <vuthi@ctrl.titech.ac.jp>. `thai.sty' is still very rudimentary---any
+ improvements are welcome.
+
+ The used encoding is C90 (this is the only case where you have to
+ specify a `C' encoding directly, either by using the `thaicjk' language
+ for Babel or by saying `\DeclareFontEncoding{C90}{}{}' in the preamble);
+ the default fonts specified in c90gar.fd and c90nrsr.fd are taken from
+ the thailatex package, which can be found at
+
+ http://linux.thai.net/plone/TLWG/thailatex
+
+ You should use version 0.3.5.1 or newer. Note that this package is not
+ compatible with CJK; neither its metric files nor its LaTeX support
+ files should be used. Please read the file thaifont.txt for details how
+ to install the fonts.
+
+ Whitespace between Thai characters are always respected; newlines
+ together with trailing and leading whitespace are not by default. Use
+ \Thaispace to make trailing and leading whitespace respected also (the
+ opposite command is \Thainospace). Note that the space width of the Thai
+ font (which is usually larger than for a Roman font) is used for
+ whitespace between Thai words:
+
+ Thai Thai
+ Thai
+
+ is approximately translated to
+
+ {\thaifont Thai Thai\nospaces
+ Thai}
+
+ (if \Thainospace is active), whereas
+
+ Thai\ Thai\
+ Thai
+
+ is approximately translated to
+
+ {\thaifont Thai}{\romanfont\ }{\thaifont Thai}{\romanfont\ }
+ {\thaifont Thai}
+
+ To improve appearance, \Thaiglue (which is defined in MULEenc.sty) is
+ used as intercharacter glue; this value can be modified similarly to
+ \CJKglue.
+
+
+Usage (Mule part)
+-----------------
+
+Simply load your document into Mule and call cjk-write-file (which is
+defined in cjk-enc.el) to create a preprocessed file. For most files this
+file's name is formed by replacing the extension with `.cjk'. However,
+BibTeX files are given the extension `-cjk.bib' because the BibTeX program
+requires `.bib' as the extension. This also avoids conflicts with the CJK
+file produced by a LaTeX file by the same name. Because of this you should
+use the command \CJKbibliography{foo} in your LaTeX source file (which
+finally expands to foo-cjk.bib). A similar macro is \CJKinclude{bar} which
+expands to `bar.cjk' instead of bar.tex. Finally, you can say
+\CJKinput{foo.bar} to input file `foo.bar'; if the file name has no
+extension, `cjk' is appended: \CJKinput{foo} loads `foo.cjk'.
+
+cjk-write-file is the only user function provided by cjk-enc.el for
+Mule 2.3.
+
+If you want to process a file which includes some other files, use the
+function cjk-write-all-files in combination with \CJKinclude, \CJKinput, and
+\CJKbibliography. If used interactively, you have to supply a file name
+which is then scanned for occurrences of \CJKinclude, \CJKinput, and
+\CJKbibliography; all files found plus the master file are converted.
+
+Example:
+
+ `a.tex' contains:
+
+ \CJKenc{Bg5}
+ Chinese text
+
+ `b.tex' contains:
+
+ \CJKenc{JIS}
+ Japanese text
+
+ `c.tex' contains:
+
+ \CJKenc{UTF8}
+ Some Unicode text
+
+ `master.tex' can now include the files as follows:
+
+ Some Korean text
+
+ \CJKinput{a}
+ \input{b}
+ \input{c}
+
+ Calling cjk-write-all-files automatically converts `master.tex' and
+ `a.tex'.
+
+The functions batch-cjk-write-file and batch-force-write-file are intended
+to be used in Makefiles; please read the function documentation for more
+details.
+
+It is recommended that you assign cjk-write-file or cjk-write-all-files to a
+key (e.g., with global-set-key) in your `.emacs' configuration file.
+
+
+Unicode encoding
+................
+
+Note that the forthcoming Emacs 22 has no native Unicode support. Instead,
+Unicode encoded date is mapped onto the internal character sets of Emacs;
+this process heavily depends on the selected (Emacs) language environment.
+For example, if you select `Chinese-BIG5', Emacs first tries to map Unicode
+characters to Big 5. If that fails, it tries the GB 2312 character set, then
+KS X 1001, and so on. To get typographically satisfying output you would
+need identical font shapes for different CJK encodings, a very unlikely
+situation.
+
+For this reason it is strongly recommended to *not* use data files encoded
+in UTF-8 with cjk-enc.el. Instead, UTF-8 should be directly handled by a CJK
+environment (i.e., `\begin{CJK}{UTF8}{...}').
+
+
+Usage with AUC TeX
+------------------
+
+Append the data between >>> and <<< to your .emacs file to have special CJK
+support within AUC TeX:
+
+
+>>>
+
+ (defun TeX-run-CJK-LaTeX (name command file)
+ "Create a process for NAME using COMMAND to format FILE with CJK/LaTeX."
+
+; use next code line for Mule instead of the (balanced) expression
+; containing `cjk-write-all-files'
+; -- no multifile document support!
+; (cjk-write-file)
+
+ (cjk-write-all-files (concat (TeX-master-directory)
+ (file-name-nondirectory file)
+ ".tex"))
+ (TeX-run-LaTeX name command file))
+
+ ;; replace the error source file `*.cjk' with `*.tex' (and `*-cjk.bib'
+ ;; with `*.bib'), then C-c ` can be used as usual.
+
+ (add-hook 'TeX-translate-location-hook
+ '(lambda ()
+ (if (string-match "\\(.*\\)\.cjk$" file)
+ (setq file
+ (concat
+ (substring file
+ (match-beginning 1)
+ (match-end 1))
+ ".tex"))
+ (if (string-match "\\(.*\\)-cjk\.bib$" file)
+ (setq file
+ (concat
+ (substring file
+ (match-beginning 1)
+ (match-end 1))
+ ".bib"))))))
+
+ (require 'tex)
+ (add-to-list 'TeX-command-list
+ '("CJKLaTeX" "%l '\\nonstopmode\\input{%s.cjk}'" TeX-run-CJK-LaTeX nil t))
+
+<<<
+
+
+To process a CJK document with AUC TeX use C-c C-c on your LaTeX source file
+and select CJKLaTeX as the formatting command. It also works with multiple
+files; only modified files are converted (again).
+
+Note that only the master file is processed with cjk-enc and scanned for
+\CJKinclude and \CJKinput!
+
+If you mainly write text in Japanese or Chinese, consider the use of
+cjkspace.el or cjktilde.el for inserting a tilde character (which has been
+redefined to a shibuaki space) if you hit the space key. Please read the
+documentation in the two files for differences. cjkspace.el works with
+AUC TeX only, cjktilde.el works in every mode.
+
+In case you use an Emacs input method (quail) for your Asian language
+(contrary to an external input method provided by the operating system), you
+can add `rules' with the following code added to your .emacs file; the
+special space handling is then active only when the corresponding input
+method is active too.
+
+ (add-hook 'quail-activate-hook
+ (function
+ (lambda ()
+ (if (equal (quail-name) "chinese-py-punct-b5")
+ (progn
+ (quail-defrule " " "~")
+ (quail-defrule " " " "))))))
+
+Replace `chinese-py-punct-b5' with your favourite input encoding. In case
+you use more than one input method, repeat the above lisp code for each
+method.
+
+
+Technical notes
+---------------
+
+cjk-enc.el loads MULEenc.sty or CJK.sty in the first output line which
+contains all needed definitions for LaTeX 2e.
+
+To assure working in verbatim environments, \CJKenc and the LaTeX 2e macros
+are not output directly. The active character 0x7F is used to output
+\CJKenc, \CJKspace, Latin characters, etc.
+
+CNS 1-CNS 7 and JIS2 encoded characters are output as \CJKchar macros. The
+reason for this choice is the infrequency of CNS and JIS2 characters in
+normal text. Since \CJKchar does not select a new binding this macro is
+executed faster for single CNS and JIS2 characters.
+
+
+Problems and Tips
+-----------------
+
+. cjk-enc.el starts a CJK environment only if it finds at least one CJK
+ character in the master file; this character can appear in a comment also.
+ Example:
+
+ % some Chinese text in this comment
+ \CJKinput{a}
+ \CJKbibliography{b}
+
+. If you need some CJK processing in the preamble you must start a CJK
+ environment there manually because cjk-enc.el uses the \AtBeginDocument
+ hook for its commands. This interferes with the \CJKspace/\CJKnospace
+ insertion mechanism of cjk-enc.el because the Lisp code always assumes a
+ single, global CJK environment. A similar problem exists if you start a
+ new language in a comment. To overcome this, simply insert a \CJKspace or
+ \CJKnospace command (whatever appropriate) right after the
+ `\begin{document}' macro to synchronize again with cjk-enc.el .
+
+ Example:
+
+ \documentclass{article}
+
+ \begin{CJK*}{}{}
+ some Japanese macro stuff
+ \end{CJK*}
+
+ \begin{document}
+ \CJKnospace
+ more Japanese text
+ ...
+
+. Another consequence of the \CJKspace/\CJKnospace insertion mechanism of
+ cjk-enc.el is that in cases like
+
+ Latin_text Chinese_text\ Latin_text
+
+ you can't omit the final `\ ' after the Chinese phrase---only for Korean
+ words it is not necessary to use a (protected) space.
+
+. Usually, Emacs can automatically recognize the encoding of a given file
+ (e.g., using a language environment or setting `file-coding-system-alist';
+ please read the chapter `Recognizing Coding Systems' in the emacs info
+ files for further details). But sometimes this fails (e.g., to find out
+ whether a text is in latin-1 or in, say, latin-3 is impossible), and you
+ have to use a file variable to define the encoding.
+
+ Here an example how to specify `Big 5' encoding for a TeX input file (the
+ following lines are to be inserted at the very end):
+
+ % Local Variables:
+ % coding: big5
+ % End:
+
+ If AUCTeX already has created local variables like `TeX-master', simply
+ add the line `coding: big5' and you are done.
+
+. Another useful local variable for AUCTeX is `TeX-command-default':
+
+ % Local Variables:
+ % TeX-command-default: "CJKLaTeX"
+ % End:
+
+ selects `CJKLaTeX' as the default command if you type `C-c C-c'.
+
+
+---End of cjk-enc.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/commands.txt b/language/chinese/CJK/cjk-4.8.5/doc/commands.txt
new file mode 100644
index 0000000000..0cfba3263e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/commands.txt
@@ -0,0 +1,388 @@
+This is the file commands.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+Here is a list of all commands of CJK.
+
+
+\begin{CJK}[<fontencoding>]{<encoding>}{<family>}
+...
+\end{CJK}
+
+ This starts a CJK environment.
+
+ Possible values for <encoding> are:
+ `Bg5', `Bg5+', `GB', `GBt', `GBK', `JIS', `SJIS', `KS', `UTF8',
+ `EUC-TW', `EUC-JP'.
+
+ [`CNS1'-`CNS7', `CEFX', `CEFY' are also possible but make no
+ sense. These are used with CEF and Mule. The same holds for
+ `JIS2'.]
+
+ Possible values for <fontencoding> are:
+ `' (empty, the default), `pmC' (for Bg5, GB, GBt, JIS, KS),
+ `dnp' (for JIS and SJIS), `wn' (for JIS), `HL' (for KS).
+
+ Possible values for <family> are defined in the FD files which must
+ be configured for the available fonts. If empty, the default value
+ (`mj' for KS encoding, `song' for the rest) is used.
+
+ Families can be changed with \CJKencfamily on a per-encoding base
+ and with \CJKfamily for all encodings. \CJKfamily overrides
+ \CJKencfamily; to have \CJKencfamily active you must assure that the
+ `family' parameter of the CJK environment is empty or that
+ \CJKfamily is defined as empty (inside the environment).
+
+ Font encodings can be changed on a per-encoding base with
+ \CJKfontenc; \CJKenc always uses the specified font encoding.
+
+ The hook \CJKhook is called on initializing the environment (used
+ by cjk-enc.el and VTeX, for example).
+
+ Newlines and spaces after a CJK character are retained. If you want
+ to suppress a newline, finish the line with `%'.
+
+ See also \CJKspace and \CJKnospace.
+
+
+\begin{CJK*}[<fontencoding>]{<encoding>}{<family>}
+...
+\end{CJK*}
+
+ The same as the CJK environment except that newlines and spaces
+ after a CJK character are swallowed. If you want a space after a CJK
+ character you must protect it (e.g., use `\ ').
+
+ See also \CJKspace and \CJKnospace.
+
+
+Text containing CJK characters should start with a fresh line (in the source
+file, not in the output) after activating a CJK environment because TeX has
+already read in the characters of the current line as non-active characters.
+
+You can stack CJK environments (i.e., saying \begin{CJK}...\end{CJK} again
+inside of a CJK environment) if you have not set the `global' package
+option, but it is possible that TeX's `save size' overflows. Use \CJKenc,
+\CJKfontenc, \CJKfamily, and \CJKencfamily instead. See CJK.txt for CJK
+package options which modify the scope of the CJK environment.
+
+To have different encodings/families on the same input line you must use
+\CJKenc, \CJKfontenc, \CJKfamily, and/or \CJKencfamily.
+
+If you use cjk-enc.el, you should NOT open a CJK (or CJK*) environment! It
+is done automatically. See cjk-enc.txt for details.
+
+
+==============================================================================
+
+
+The following commands are defined (or make sense) only inside of a CJK or
+CJK* environment (except \CJKbold, \CJKnormal, \CJKencfamily, \CJKfontenc,
+\CJKverbatim, \CJKhangul, \CJKhanja, \CJKhwkatakana, \CJKnohwkatakana,
+\CJKaddEncHook, \CJKtolerance, \CJKboldshift).
+
+
+\CJKcaption{<caption>} Load <caption>.cpx, a language/encoding specific
+ caption file. You need the SCRIPT style files of the
+ koma-script package to fully use them (see CJK.txt
+ for details).
+
+ <caption>.cpx is a preprocessed version of
+ <caption>.cap.
+
+ Example:
+
+ \begin{CJK*}{Bg5}{song}
+ \CJKcaption{Bg5}
+ ...
+ \end{CJK*}
+
+
+\CJKchar[<enc>]{<byte1>}{<byte2>}
+ Insert a CJK character literally. <byte1> and
+ <byte2> are the first and second byte of the CJK
+ character (in the selected encoding), the optional
+ parameter selects the encoding. You can use decimal,
+ hexadecimal, or octal notation. <byte1> and <byte2>
+ can be both in 7bit or 8bit (GL or GR)
+ representation.
+
+ To select Unicode characters you must specify `UTF8'
+ encoding (but enter real Unicode values). If the
+ Unicode value is greater than U+FFFF, put the first
+ two bytes into the first argument, and the third byte
+ into the second one.
+
+
+ Examples:
+
+ \CJKchar[Bg5]{217}{223}
+ \CJKchar[CNS1]{"57}{"4C}
+ \CJKchar[UTF8]{"02D9}{"04F}
+
+
+\CJKenc{<encoding>} Change encoding. Contrary to \begin{CJK}{...}{...}
+ it is not necessary to start a new line after
+ \CJKenc. This command always uses the font encoding
+ selected with \CJKfontenc.
+
+ \CJKenc acts globally if the `global' option is set.
+
+ See fonts.txt for a mapping table between CJK
+ encoding names and the names of the FD files
+ finally used.
+
+ Use the macro \CJKaddEncHook to add commands which
+ should be executed when a certain encoding is
+ selected.
+
+
+\CJKfamily{<family>} Change family for all encodings. This command
+ overrides \CJKencfamily; to reactivate \CJKencfamily
+ say `\CJKfamily{}'.
+
+ \CJKfamily acts globally if the `global' option is
+ set.
+
+
+\CJKencfamily[<fontencoding>]{<encoding>}{<family>}
+ Change family for a certain encoding (and
+ font encoding). Can be overridden with \CJKfamily.
+
+ The possible values of <family> are defined in the
+ encoding specific FD files.
+
+ This command makes sense outside of a CJK
+ environment; it acts globally if the `global' option
+ is set.
+
+
+\CJKfontenc{<encoding>}{<fontencoding>}
+ Change font encoding for a certain encoding. If you
+ select an encoding with \CJKenc, the font encoding
+ specified with \CJKfontenc for this encoding is
+ chosen.
+
+ This command makes sense outside of a CJK
+ environment; it acts globally if the `global' option
+ is set.
+
+ Example:
+
+ \CJKencfamily{GBt}{hei}
+ \CJKfontenc{JIS}{dnp}
+
+ \begin{CJK*}{Bg5}{fs} % this is equal to
+ % \begin{CJK*}{}{}
+ % \CJKenc{Bg5}
+ % \CJKfamily{fs}
+
+ ... Text in Bg5 fangsong ... % c00fs.fd used
+ \CJKenc{GB} ... Text in GB fangsong ... % c10fs.fd used
+ \CJKfamily{kai} ... Text in GB kai ... % c10kai.fd used
+ \CJKenc{JIS} ... Text in JISdnp kai ... % c42kai.fd used
+ \CJKfamily{}%
+ \CJKenc{GBt} ... Text in GBt hei ... % c20hei.fd used
+ \end{CJK*}
+
+
+\CJKindent The `classical' indentation for CJK documents is
+ exactly two ideographic spaces. \CJKindent sets
+ the paragraph indentation to this value, using
+ \parindent and the currently active CJK font.
+
+
+\CJKkern To prevent a line break before a CJK character, say
+ \CJKkern. This command suppresses the insertion of
+ \CJKglue before the CJK character.
+
+
+\CJKglue If you get overfull \hbox'es caused by CJK
+ characters, try to increase \CJKglue. The default
+ definition is
+
+ \newcommand{\CJKglue}{\hskip 0pt plus 0.08\baselineskip} .
+
+ \CJKglue is inserted by CJK between Chinese
+ characters (punctuation characters as defined in the
+ punctuation tables use an unbreakable glue; see
+ CJK.enc). You should separate non-Chinese text from
+ CJK characters with spaces to enable hyphenation. Or
+ you can say \CJKtilde.
+
+
+\CJKtilde This command changes the definition of the active
+ `~' character from an unbreakable space to
+
+ \def~{\hspace{0.25em plus 0.125em minus 0.08em}} .
+
+
+\nbs The original meaning of `~' is preserved within \nbs,
+ a shorthand for the LaTeX command \nobreakspace.
+\standardtilde To return to the original definition of `~' use this
+ command.
+
+
+\CJKspace
+\CJKnospace Switch from CJK to CJK* `mode' (\CJKnospace) or
+ vice versa (\CJKspace).
+
+
+\CJKverbatim If the `verbatim' package is loaded it is possible
+ to improve the output automatically, namely, to
+ avoid breaking of overfull lines in a verbatim
+ environment. This command installs a hook to
+ suppress insertion of glue between CJK and Thai
+ glyphs.
+
+
+\CJKhanja
+\CJKhangul \CJKhanja deactivates the use of C61 font encoding
+ for hangul characters: All fonts used have C60 font
+ encoding. \CJKhangul is the opposite command. The
+ default is C61 for hangul.
+
+ Archaic hangul elements (KS 0xA4D5-0xA4FE) and the
+ character KS 0xA4D4 are only accessible if \CJKhanja
+ is active.
+
+ Both commands act globally if the `global' option is
+ set.
+
+ These commands make sense outside of a CJK
+ environment.
+
+
+\CJKhwkatakana
+\CJKnohwkatakana \CJKnohwkatakana deactivates the use of the C49
+ font encoding and maps half-width katakana
+ characters to full-width glyphs instead.
+ \CJKhwkatakana (the default) is the opposite
+ command.
+
+ Both commands act globally if the `global' option is
+ set; they have only effect for SJIS input encoding.
+
+ These commands make sense outside of a CJK
+ environment.
+
+
+\CJKtolerance If you get overfull \hbox'es caused by KS
+ characters, try to increase \CJKtolerance. The
+ default definition is
+
+ \newcommand{\CJKtolerance}{400} .
+
+ Increasing \emergencystretch may help also.
+
+ This command makes sense outside of a CJK
+ environment.
+
+
+\CJKuppercase If Big 5, SJIS, Bg5+, or GBK characters are used
+ non-preprocessed, the LaTeX command \MakeUppercase
+ is disabled (otherwise wrong CJK characters would be
+ selected). In the unlikely case that you really need
+ \MakeUppercase, use \CJKuppercase instead.
+
+ This restriction does not exist for preprocessed CJK
+ files, i.e., files processed with Bg5conv, SJISconv,
+ CEF5conv, CEFSconv, extconv, or cjk-enc.el, thus
+ \CJKuppercase is not defined in these cases.
+
+ \CJKuppercase acts globally if the `global' option
+ is set.
+
+
+\begin{Bg5text}
+...
+/end(Bg5text)
+
+\begin{SJIStext}
+...
+/end(SJIStext) Enable the use of Big 5/SJIS encoded characters
+ which contain `\', `{', and `}' as second bytes. See
+ CJK.txt for a complete discussion. You need these
+ environments only in rare cases where
+ bg5conv/sjisconv or cjk-enc.el can't be used.
+
+\begin{Bg5+text}
+...
+/end(Bg5+text)
+
+\begin{GBKtext}
+...
+/end(GBKtext) Enable the use of Big 5+/GBK encoded characters
+ which contain `\', `{', and `}' as second bytes. See
+ CJK.txt for a complete discussion. You need these
+ environments only in rare cases where extconv can't
+ be used.
+
+
+\Unicode{<byte1>}{<byte2>}
+\Unicode{<byte1><byte2>}{<byte3>}
+ Insert a Unicode character literally. <byte1>,
+ <byte2>, and <byte3> are the first, second, and
+ third byte of the Unicode character. You can use
+ decimal, hexadecimal, or octal notation. This
+ command can only be used within UTF 8 encoding. In
+ all other encodings you must say
+ \CJKchar[UTF8]{<byte1>}{<byte2>} or
+ \CJKchar[UTF8]{<byte1><byte2>}{<byte3>} instead.
+
+
+ Examples:
+
+ \Unicode{"23}{"45}
+ \Unicode{"25E}{"9A}
+
+\CJKCJKchar
+\CJKhangulchar
+\CJKlatinchar These commands control the handling of
+ intercharacter glue. Only defined for UTF8 encoding.
+ \CJKCJKchar selects CJK style (using \CJKglue),
+ \CJKhangulchar selects hangul style (using
+ \CJKtolerance) and \CJKlatinchar uses none. Default
+ is \CJKCJKchar.
+
+ Only 3-byte UTF-8 encoded characters (i.e., Unicode
+ characters in the range 0x800-0xFFFF) are affected;
+ two-byte encoded characters is handled as ordinary
+ characters (i.e., as if \CJKlatinchar were set).
+
+
+\CJKbold
+\CJKnormal These commands set and unset the \ifCJK@bold@ flag.
+ If set, boldface is emulated.
+
+ Both commands are intended to appear in
+ \DeclareFontShape commands only (usually in FD
+ files); see fonts.txt for further details.
+
+
+\CJKsymbol The CJK package uses this command instead of \symbol
+ to print a CJK character; it honours the
+ \ifCJK@bold@ flag: if set, boldface is emulated by
+ printing the character three times with slight
+ horizontal offsets. There should be hardly a reason
+ to ever use this command explicitly.
+\CJKsymbols A similar command specific to HLaTeX font support.
+ It takes two characters which are then mapped to the
+ final glyph using TeX's ligature mechanism.
+
+
+\CJKboldshift The horizontal shift used for imitating bold fonts.
+ Redefine this macro if the default value of 0.015em
+ is not satisfying.
+
+ These commands make sense outside of a CJK
+ environment.
+
+
+\CJKaddEncHook{<encoding>}{<body>}
+ This macro is primarily intended for packages. Use
+ it to append the code in <body> to a hook for
+ <encoding> which is executed each time <encoding> is
+ selected. For an example see CJKnumb.sty .
+
+
+---End of commands.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/dvidrv.txt b/language/chinese/CJK/cjk-4.8.5/doc/dvidrv.txt
new file mode 100644
index 0000000000..6f520d6c2d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/dvidrv.txt
@@ -0,0 +1,56 @@
+Using dvidrv.btm [emTeX for DOS and OS/2]
+-------------------------------------------
+
+This batch file does the same as mktexpk does; it is a replacement for
+dvidrv.exe of emTeX which can handle ttf2pk, hbf2gf, and ps2pk additionally
+(the ps2pk part is untested yet; it uses ps2pkmfj of the 4allTeX
+distribution and was basically copied from a similar script, also part of
+4allTeX).
+
+First of all, create and install a set of TFM files as described in the
+INSTALL file.
+
+Then configure the following variables in dvidrv.btm:
+
+ ps2pk ... set it to `yes' if you want to use this program
+ ttf2pk ... ditto
+ hbf2gf ... ditto
+
+ pkdir ... the place where PK files created by ps2pk, ttf2pk,
+ or hbf2gf should go to. dvidrv.btm adds
+ `\modeless\XXXdpi' or `\modeless\dpiXXX' to this
+ string (depending on the variables `pre_dpi' and
+ `post_dpi')
+
+ ttfonts ... where the TrueType fonts files reside
+ ttfcfg ... where the auxiliary data files of ttf2pk reside
+
+ hbfonts ... where the HBF files reside
+ hbfcfg ... the place where the hbf2gf configuration files are
+
+The last four variables in the above list support trailing `!' and `!!' for
+recursive directory searching (see the file dvidrv.doc of the emTeX package
+for details).
+
+Alternatively, you can set these variables in the environment; please note
+that no spaces are allowed before and after the equal sign, e.g.,
+
+ set foo=bar
+
+is OK, but
+
+ set foo = bar
+
+fails.
+
+Rename dvidrv.exe to dvidrv.ori or something similar and copy dvidrv.btm to
+a directory in the path.
+
+Don't forget to update the DVIDRVFONTS and TEXTFM environment variables if
+necessary.
+
+Under OS/2 dvips calls mfjob or hbf2gf itself; under DOS it creates a batch
+file which must be called afterwards.
+
+
+---End of dvidrv.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/fdxfiles.txt b/language/chinese/CJK/cjk-4.8.5/doc/fdxfiles.txt
new file mode 100644
index 0000000000..cc60d08948
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/fdxfiles.txt
@@ -0,0 +1,111 @@
+This is the file fdxfiles.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+
+Extended font definition files
+==============================
+
+The CJK package modifies LaTeX's font loading mechanism to input an extended
+font definition file (with suffix `.fdx') immediately after a normal font
+definition file (with suffix `.fd') has been loaded. A `.fdx' file is
+optional. Here a list of useful commands---note that neither whitespace nor
+linebreaks produce output while macros are defined in such files, which is
+quite convenient.
+
+Immediately after selecting the proper subfont for a given input character,
+the CJK package tests whether a macro
+
+ \<encoding>/<family>/<series>/<shape>/<plane>/<code>/<direction>
+
+is defined. If it exists, it is executed instead of calling \CJKsymbol.
+
+For halfwidth katakana, the macro is called
+
+ \<encoding>/<family>/<series>/<shape>/<code>/<direction>
+
+For fonts from HLaTeX the macro is called
+
+ \<encoding>/<family>/<series>/<shape>/<byte1>/<byte2>/<direction>
+
+For UTF-8, only characters in the range 0x800-0x10FFFF execute the test for
+this macro.
+
+<code>, <byte1> and <byte2> are decimal numbers; <direction> is either `v'
+or `h'.
+
+The following commands are intended for `.fdx' files:
+
+o For vertical writing, \CJKvdef should be used to (globally) define the
+ macros described above. It always prepends `<encoding>/<family>/'.
+ Example from c00bsmi.fdx:
+
+ \CJKvdef{m/n/01/1}{\def\CJK@plane{v}\selectfont\CJKsymbol{4}}
+
+ This defines macro `\C00/bsmi/m/n/01/1/v': If glyph 1 in subfont `01'
+ (`bsmilp01' in this example) should be typeset, it is replaced with
+ glyph 4 from subfont `v' (`bsmilpv').
+
+ \CJKhdef is the equivalent for horizontal writing.
+
+o Another macro is \CJKvlet, performing a global \let. Example (again
+ from c00bsmi.fdx):
+
+ \CJKvlet{bx/n/01/1}{m/n/01/1}
+
+ This makes `\C00/bsmi/bx/n/01/1/v' the same as `\C00/bsmi/m/n/01/1/v'.
+
+ \CJKhlet is the equivalent for horizontal writing.
+
+CJKvert.sty provides additional macros:
+
+o Glyphs which shouldn't be rotated are available with \CJKsymbolsimple.
+ Here an example from c10gbsn.fdx:
+
+ \CJKvdef{m/n/01/17}{\CJKsymbolsimple{17}}
+
+ If glyph 17 in subfont `01' (`gbsnlp01') is requested, it is replaced
+ with itself but unrotated.
+
+o Some correction parameters are available to position glyphs of a given
+ font (i.e., all subfonts) while \CJKvert is active.
+
+ \CJKvdef{norotate}{}
+
+ The default of CJKvert.sty is to rotate all glyphs using the graphicx
+ package. If `norotate' is present in a `.fdx' file, glyphs accessed
+ with \CJKsymbol are not rotated. `fullheight', `height' and `offset'
+ are used only if `norotate' is not set.
+
+ \CJKvdef{fullheight}{<dimension>}
+
+ If defined, it sets the full height (height plus depth) of all CJK
+ glyphs accessed with \CJKsymbol to <dimension>. In most cases this
+ value is 1em.
+
+ \CJKvdef{height}{<dimension>}
+
+ If defined, it defines the height of all CJK glyphs accessed with
+ \CJKsymbol. Consequently, the depth is set to `fullheight - height'.
+ For example, the AFM file for `bsmilp01' gives 879 PS units for the
+ `Ascender' value. Since 1em is 1000 PS units, a proper value for
+ the `height' parameter is 0.88em.
+
+ \CJKvdef{offset}{<dimension>}
+
+ If defined, shift the (rotated) glyphs accessed with \CJKsymbol
+ vertically by <dimension>.
+
+ \CJKvdef{simpleoffset}{<dimension>}
+
+ If defined, shift all glyphs accessed with \CJKsymbolsimple vertically
+ by <dimension>.
+
+o The `offset' parameter is available to position glyphs of a given
+ font (i.e., all subfonts) while \CJKhorz is active.
+
+ \CJKhdef{offset}{<dimension>}
+
+ If defined (and \CJKhorz being active), shift the glyphs accessed
+ with \CJKsymbol vertically by <dimension>.
+
+---End of fdxfiles.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/fonts.txt b/language/chinese/CJK/cjk-4.8.5/doc/fonts.txt
new file mode 100644
index 0000000000..0e07dcd46b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/fonts.txt
@@ -0,0 +1,311 @@
+This is the file fonts.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+The fonts
+---------
+
+This file describes how to set up CJK fonts inside of LaTeX 2e. For a
+description how to install TrueType or bitmap fonts please refer to the
+INSTALL file.
+
+
+CJK.sty uses NFSS (New Font Selection Scheme, part of LaTeX 2e) which has
+some advantages over the font selection offered with pmC (for plain TeX and
+LaTeX 2.09):
+
+ o TeX fonts are loaded only on demand. This is especially useful with
+ Asian logographs. If you have e.g., three Chinese characters in your
+ text, pmC must load the whole Chinese font (about 85 TeX subfonts),
+ whereas LaTeX 2e loads only three subfonts normally.
+
+ o As long as the limit of 256 TeX fonts is not exceeded, you can use
+ as many CJK fonts as you like (e.g., simplified and traditional
+ Chinese characters together with Japanese fonts in different sizes)
+ ---pmC is limited to two sizes and can only have two CJK fonts at
+ the same time.
+
+ In the web2c TeX package (for Unix) you find a patch which allows
+ the use of more than 256 TeX fonts (up to about 1000; this is a
+ standard feature of web2c 7.2 and newer versions).
+
+ Omega can use up to approx. 65000 fonts.
+
+ o You need not care about the right size of CJK fonts in footnotes,
+ etc. They obey the NFSS (except encoding).
+
+ Of course you must have access to CJK fonts.
+
+ . Use pdftex and dvipdfmx which can handle TrueType fonts directly.
+ It is very easy to set up dvipdfmx for handling CJK subfonts; with
+ pdftex this is more complicated. See the file doc/pdf/HOWTO.txt
+ for more information.
+
+ . Use fontforge to convert TrueType fonts to PS subfonts. Such
+ subfonts work with virtually all dvi drivers. The directory
+ utils/subfonts contain some scripts which help in the conversion
+ process.
+
+ . Use hbf2gf for HBF pixel fonts to convert them to TFM and PK
+ fonts.
+
+ . Use ttf2pk (and ttf2tfm) to convert TrueType fonts to TFM and PK
+ fonts.
+
+If you chose one font per active character as with the pmC macros, you would
+waste character space (256 characters per font are possible starting with
+TeX 3). Therefore CJK.sty expects the whole CJK font split in TeX subfonts
+with 256 characters each.
+
+An example:
+
+ GuoBiao-encoded simplified characters in song style at 12pt:
+ ^ ^ ^^ ^^
+
+ first byte second byte TeX subfont offset
+ -----------------------------------------------
+ 0xA1 0xA1-0xFE gsso1201 0
+ 0xA2 0xA1-0xFE gsso1201 94
+ 0xA3 0xA1-0xE4 gsso1201 188
+ 0xA3 0xE5-0xFE gsso1202 0
+ 0xA4 0xA1-0xFE gsso1202 26
+ 0xA5 0xA1-0xFE gsso1202 120
+ .
+ .
+ .
+ 0xFE 0xA1-0xFE gsso1235 38
+
+
+To convert bitmap fonts to PK files with hbf2gf, you must get the
+appropriate HBF (Hanzi Bitmap Font) header files or create if you can't find
+the right one; these HBF files document CJK fonts completely.
+
+The HBF specification can be found here:
+
+ http://www.ibiblio.org/pub/packages/ccic/software/info/HBF-1.1/
+
+Various bitmap fonts together with HBF header files are collected here:
+
+ http://www.ibiblio.org/pub/packages/ccic/software/fonts/
+
+
+The font definition files
+-------------------------
+
+CJK fonts can be installed as easy as normal TeX fonts! (Well, probably this
+is the first time you have to install a font for TeX---I strongly recommend
+that you process and read the `fntguide' documentation which is part of the
+LaTeX 2e base package. There you can also find a description of size
+commands.)
+
+CJK.sty defines six new size commands:
+
+ `CJK' corresponds to `' (empty)
+ `sCJK' corresponds to `s'
+ `CJKfixed' corresponds to `fixed'
+ `sCJKfixed' corresponds to `sfixed'
+ `CJKsub' corresponds to `sub'
+ `CJKssub' corresponds to `ssub' .
+
+For dnp fonts (i.e., real dnp fonts and Watanabe dnp fonts) and Watanabe
+jfonts (which both use the same font encoding scheme) two additional
+commands are provided:
+
+ `DNP' corresponds to `' (empty)
+ `DNPgen' corresponds tp `gen' .
+
+Note that PS Wadalab fonts don't use these size functions (but are still in
+DNP font order).
+
+For poor-man's boldface these size commands have been defined:
+
+ `CJKb', `sCJKb', `CJKfixedb', `sCJKfixedb', `DNPb', `DNPgenb' .
+
+They are completely identical to its counterparts without the final `b'. The
+only reason to use them is to make the fifth parameter of \DeclareFontShape
+for bold series different from the one for medium series (LaTeX2e uses this
+parameter as a macro name to execute loading-settings, thus they must not be
+equal).
+
+The difference between the size functions just introduced and the original
+commands defined by LaTeX 2e is that a CJK size function defines a class of
+fonts: if you say as an example
+
+ \DeclareFontShape{C00}{song}{m}{n}{<6> <7> <8> sCJKfixed * b5so07}{} ,
+
+LaTeX 2e searches for fonts named b5so0701 - b5so0755 if the font size is 6,
+7, or 8 pt; in other words, the CJK size functions append two digits to the
+font name to select the proper subfonts. These digits are defined in the
+`\CJK@...Encoding' macros; the macro \CJK@plane holds the current value (in
+pmC compatibility mode and for UTF8 encoding, \CJK@plane holds hexadecimal
+numbers; see JISdnp.enc for the dnp subfont names which are again
+different).
+
+Here a more detailed example:
+
+ \DeclareFontFamily{C10}{fs}{}
+
+ \DeclareFontShape{C10}{fs}{m}{n}{<-> CJK * gsfs14}{}
+ \DeclareFontShape{C10}{fs}{bx}{n}{<-> CJKb * gsfs14}{\CJKbold}
+
+This defines a GB encoded font (LaTeX font encoding `C10') which has
+fangsong shape (fs) in medium series (m) and emulated bold extended (bx)
+series. The names of the subfonts are gsfs1401 - gsfs1432; all sizes are
+available. (This is actually a font definition for a bitmap font which
+corresponds to a size of 14pt if the printer resolution were 300 dpi; hbf2gf
+magnifies it to any desired size.)
+
+The corresponding CJK environment would be
+
+ \begin{CJK*}{GB}{fs}
+ ...
+ \end{CJK*} .
+
+To be consistent with the CJK package it is recommended that for each font
+shape `m' and `bx' series are defined (some PS font styles from PSNFSS
+define `b' instead of `bx'; in this case you should add a font substitution
+entry in the FD file). The default CJK FD files define a `song' shape for
+each encoding except for KS so that
+
+ \begin{CJK*}{your-encoding}{}
+ ...
+ \end{CJK*}
+
+works (note the empty last parameter). See below for an additional reason.
+
+Here a table of the CJK (font) encodings and the corresponding NFSS font
+encodings.
+
+ Chinese: Bg5 C00
+ Bg5pmC C01
+ Bg5+ C09
+
+ GB C10
+ GBpmC C11
+ GBK C19
+
+ GBt C20
+ GBtpmC C21
+
+ CNS1-7 C31-37
+
+ Japanese: JIS C40
+ JISpmC C41
+ JISdnp C42
+ JISwn C43
+
+ JIS2 C50
+ JIS2dnp C52
+
+ SJIS -> kana C49 (additionally)
+
+ Korean: KS -> hanja C60
+ -> hangul C61
+ KSpmC C62
+ KSHL -> hangulHL C63
+ -> symbolHL C64
+ -> hanjaHL C65
+
+ Unicode: UTF8 C70
+
+ CEF: CEFX C80
+ CEFY C81
+
+ [Thai: C90]
+
+
+Some remarks:
+
+ o An NFSS font encoding for the CJK package consists of the letter `C'
+ followed by two digits; the first represents the CJK (input)
+ encoding, the second the CJK font encoding. Some CJK encodings need
+ more than one NFSS encoding to fully represent all characters.
+
+ Note: Since LaTeX version 1996/12/01, the name of an FD file
+ consists only of lowercase letters, e.g., c00fs.fd.
+
+ o You can't use the NFSS encodings (as defined above) directly! You
+ should always use the CJK interface (the exception is Thai; please
+ read cjk-enc.txt and thaifont.txt for details).
+
+ o According to the NFSS rules the family name must not be longer than
+ five characters. In early versions of CJK the family `fangsong' was
+ used. This is no longer allowed and has been replaced with `fs'.
+
+ This restriction is mainly for ancient operating systems like MS-DOS
+ which are limited to 8.3 filenames; today, there is no reason any
+ more to artificially shorten the family name.
+
+ o If you declare an NFSS font encoding in the standard way the
+ corresponding FD file for the default font is loaded. Since a font
+ encoding can be defined only in the preamble, all CJK font encodings
+ must be registered before the document starts even if you use only
+ one or two encodings. For the CJK package this would cause the
+ loading of almost 30 font definition files (see the table above)
+ which is inacceptable.
+
+ To avoid this overhead NFSS is faked with some rudimentary
+ definitions just enough to pass the NFSS tests of LaTeX 2e. Of
+ course this has a disadvantage: an unknown CJK family causes an
+ error instead of switching to the fallback family usually defined
+ with \DeclareFontSubstitution. Nevertheless, replacing an undefined
+ series or shape works correctly.
+
+
+Setting up cyberbit.ttf for UTF-8 encoding
+------------------------------------------
+
+Note 1: I strongly discourage the use of this font, especially for CJKV
+ scripts. The main reason is that correct glyph shapes depend on the
+ language; this means that a glyph representation form for a given
+ Unicode value looks differently in Japanese, Korean, and Chinese (a
+ famous example is character U+9038). Cyberbit doesn't provide such
+ different glyph shapes.
+
+Note 2: The following describes a setup for dvipdfmx only. Furthermore, it
+ assumes a recent TeXLive installation.
+
+
+1. Copy cyberbit.ttf to your local TeXLive tree; a proper location is
+
+ <TeXLive>/texmf-local/fonts/truetype/cyberbit/
+
+ (on e.g. Windows) or
+
+ ~/texmf/fonts/truetype/cyberbit/
+
+ (on e.g. GNU/Linux) or something similar. <TeXLive> indicates the root
+ directory of TeXLive's texmf tree, for example C:\TeXLive2007 or
+ /usr/local/texlive2007.
+
+2. In the file <TeXLive>/texmf/fonts/map/dvipdfm/dvipdfmx/cid-x.map there is
+ already an entry for cyberbit.ttf. Remove the comment character in front
+ of the line.
+
+3. Change to an empty directory and create TFM files with the following call
+ on the command line:
+
+ ttf2tfm cyberbit.ttf -q cyberb@Unicode@
+
+4. Move all resulting TFM files to
+
+ <TeXLive>/texmf-local/fonts/bitstrea/cyberb/
+
+ or
+
+ ~/texmf/fonts/bitstrea/cyberb
+
+ or something similar.
+
+5. Say
+
+ mktexlsr
+
+ on the command line to regenerate TeXLive's file name database.
+
+
+That's it. Within the CJK package, the font can be activated with
+
+ \begin{CJK}{UTF8}{song}
+
+
+---End of fonts.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/hbf2gf.txt b/language/chinese/CJK/cjk-4.8.5/doc/hbf2gf.txt
new file mode 100644
index 0000000000..6484a8c236
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/hbf2gf.txt
@@ -0,0 +1,382 @@
+This is the file hbf2gf.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+Using hbf2gf
+-------------
+
+hbf2gf converts CJK bitmaps with an HBF header file into GF files.
+
+Additional documentation can be found in the man page utils/hbf2gf/hbf2gf.1
+(pre-formatted versions of this document can be found in the `cjk-doc'
+bundle of CJK).
+
+
+Syntax:
+
+ hbf2gf [-q] configuration_file[.cfg]
+ hbf2gf [options] subfont_name x_resolution [y_scale | y_resolution]
+ hbf2gf -t [-q] font_name
+ hbf2gf --version | --help
+
+Options:
+ -q make hbf2gf quiet
+ -p don't create a PL file
+ -g don't create a GF file
+ -n use no resolution in extension (only `.gf')
+ -t test for font_name (returns 0 on success)
+
+
+Keywords in the configuration file must start a line, the appropriate values
+being on the same line separated with one or more blanks or tabs.
+Environment variables names start with `$'; to get a dollar sign you must
+type `$$'.
+
+The expansion of environment variables in hbf2gf itself (without the help of
+the kpathsea library) is very limited; this feature has been carried over
+from previous versions. It can't expand variables set in texmf.cnf; it also
+can't handle more than one directory as the variable's value. Don't use it
+except for the `pk_directory' and `tfm_directory' parameters!
+
+Here is an example configuration file gsfs14.cfg (please refer to hbf2gf.1
+and hbf2gf.dvi for a description of the keywords) to be run under OS/2:
+
+hbf_header jfs56.hbf
+mag_x 1
+design_size 14.4
+
+y_offset -13
+comment jianti fansongti 56x56 pixel font scaled and adapted to 14.4pt
+
+nmb_files -1
+tfm_files yes
+
+output_name gsfs14
+
+checksum 123456789
+
+dpi_x 300
+
+coding codingscheme GB 2312-80 encoded TeX text
+
+pk_directory $HBF_TARGET\pixel.lj\432dpi\
+tfm_directory $HBF_TARGET\tfm\
+
+rm_command del
+cp_command copy
+long_extension off
+job_extension .cmd
+
+
+Installation of a complete set of subfonts
+------------------------------------------
+
+Here are the results of a sample run of the above configuration file
+(assuming that the environment variable %HBF_TARGET% points to d:\china):
+
+ input files: jfs56.a - jfs56.e, jfs56.hbf
+
+ program call: hbf2gf gsfs14.cfg
+
+ intermediate files: gsfs14.cmd, gsfs1401.gf - gsfs1432.gf, gsfs14.pl
+
+ batch file call: gsfs14.cmd
+
+ output files: d:\china\pixel.lj\432dpi\gsfs1401.pk - gsfs1432.pk,
+ d:\china\tfm\gsfs1401.tfm - gsfs1432.tfm
+
+
+[gsfs: GuoBiao simple encoded FanSong style
+ ^ ^ ^ ^
+It's hard to overcome the DOS restriction of 8 characters in a file name if
+you need two characters as a running number...]
+
+
+Using MakeTeXPK or mktexpk
+--------------------------
+
+*****************************************************************************
+* *
+* For teTeX >=1.0 and web2c >= 7.3.1, no patches are necessary for either *
+* mktexpk or mktextfm. *
+* *
+*****************************************************************************
+
+The simpler way to create PK fonts is to apply the patches in the
+utils/hbf2gf/scripts directory. In case you can't become root make sure that
+the patched file is found in the path *before* the original MakeTeXPK (or
+mktexpk) script.
+
+First of all, move the HBF files together with the bitmap font files to its
+final destination which has to be added to the variables $MISCFONTS, which
+can be either modified in texmf.cnf or set in the environment (please read
+the kpathsea info files how to do that). Now do the same with all `.cfg'
+files; the corresponding configuration variable is $HBF2GFINPUTS.
+
+Then, create a set of TFM files for the specified CJK bitmap font. This
+should be done with the hbf2gf configuration parameters `tfm_files yes' and
+`pk_files no' (to be modified in the `.cfg' files; see hbf2gf.dvi for a
+detailed description of all needed keywords). After calling the produced
+shell script the TFM files are installed. Note that if you change any hbf2gf
+parameters which alter the appearance of the font (the metrics, to be more
+exact) you must repeat this step so that TFM and PK files fit together.
+
+The previous step can be omitted in case you patch MakeTeXTFM or mktextfm
+too so that TFM files can be created on-the-fly.
+
+Please note further that in case you write a new hbf2gf configuration file,
+the name of that file must be the name stem of the CJK subfont (as defined
+in the appropriate FD file and the hbf2gf configuration file) plus `.cfg':
+
+ Example:
+
+ searched: gsfs1021.pk
+ configuration file: gsfs10.cfg
+
+The final step for web2c 6.x or teTeX 0.4 is to edit texmf.cnf (the kpathsea
+configuration file, usually in /usr/local/lib/texmf/web2c) and change the
+two variables
+
+ $PKFONTS.xdvi
+ $PKFONTS
+
+by appending
+
+ :$pkdir/hbf2gf
+
+to define an own `mode' for hbf2gf, similar to the modes `cx', `ljfour',
+etc. The TeX Directory Structure (TDS) standard suggests `modeless' for this
+name which is already defined in teTeX 1.0 and web2c 7.x.
+
+Example:
+
+ PKFONTS.xdvi=.:$pkdir/$MAKETEX_MODE:$pkdir/gsftopk:
+ $pkdir/ps2pk:$pkdir/hbf2gf
+ PKFONTS=.:$TEXMF/fonts//pk/$MAKETEX_MODE:$pkdir/hbf2gf
+
+The line break above is given for convenience only and should not appear
+in the texmf.cnf file (no space before and after the `:').
+
+[If you cannot become root, copy texmf.cnf into your home directory and do
+the modifications there; make sure that your personal config file is found
+in the search path first since web2c uses the first definition of each
+variable encountered.]
+
+If you use hbf2gf with two parameters (as in MakeTeXPK), only one GF file
+and one PL file is produced, and no batch file is created; the `pk_files'
+parameter is ignored. You can control with the switches -g and -p whether a
+GF or PL file is created at all.
+
+
+Using dvidrv.btm [emTeX for DOS and OS/2]
+-------------------------------------------
+
+This batch file does the same as MakeTeXPK and mktexpk; it is a replacement
+for dvidrv.exe of emTeX which can handle ttf2pk, hbf2gf, and ps2pk
+additionally (the ps2pk part is untested yet; it uses ps2pkmfj of the
+4allTeX distribution and was basically copied from a similar script, also
+part of 4allTeX).
+
+First of all, create and install a set of TFM files as described in the
+previous section.
+
+Then configure the following variables in dvidrv.btm:
+
+ ps2pk ... set it to `yes' if you want to use this program
+ ttf2pk ... ditto
+ hbf2gf ... ditto
+
+ pkdir ... the place where PK files created by ps2pk, ttf2pk,
+ or hbf2gf should go to. dvidrv.btm adds
+ `\modeless\XXXdpi' resp. `\modeless\dpiXXX' to this
+ string (depending on the variables `pre_dpi' and
+ `post_dpi')
+
+ ttfonts ... where the TrueType fonts files reside
+ ttfcfg ... where the auxiliary data files of ttf2pk reside
+
+ hbfonts ... where the HBF files reside
+ hbfcfg ... the place where the hbf2gf configuration files are
+
+The last four variables in the above list support trailing `!' and `!!' for
+recursive directory searching (see the dvidrv.doc of the emTeX package for
+details).
+
+Alternatively, you can set these variables in the environment; please note
+that no spaces are allowed before and after the equal sign, e.g.,
+
+ set foo=bar
+
+is OK, but
+
+ set foo = bar
+
+fails.
+
+Rename dvidrv.exe to dvidrv.ori or something similar and copy dvidrv.btm to
+a directory in the path.
+
+Don't forget to update the DVIDRVFONTS and TEXTFM environment variables if
+necessary.
+
+Under OS/2 dvips calls mfjob or hbf2gf itself; under DOS it creates a batch
+file which must be called afterwards.
+
+
+Adjusting the font parameters
+-----------------------------
+
+It is possible to convert bitmap fonts to PK files almost automatically. The
+HBF header file already has the entry `HBF_BITMAP_BOUNDING_BOX' which
+defines vertical and horizontal offsets (in pixels), but these values are
+not in all cases optimal for the desired target size. If you omit `x_offset'
+and `y_offset' in the CFG file, the third and fourth parameter of
+`HBF_BITMAP_BOUNDING_BOX' is used (except for rotated glyphs), scaled to
+design size (to say it in other words: x_offset and y_offset always apply to
+the design size to be synchronous with the TFM files).
+
+Don't confuse scaling and magnification: Scaling here means that you choose
+a (arbitrary) design size and compute scaling values (mag_x and mag_y; the
+parameter names are a bit misleading) which scales the bitmap to this
+particular design size at a certain (arbitrarily chosen) resolution (dpi_x
+and dpi_y). Magnification means that the scaled bitmap is then magnified to
+a certain target size while still using the font parameters (i.e., TFM file)
+of the design size.
+
+In the sample, you have a 56x56 bitmap font which is scaled to 14.4pt having
+a resolution of 300 dpi; here we compute the theoretical scaling value to
+reach the design size (14.4pt):
+
+ 1 pt are 300 / 72.27 = 4.1511 pixel;
+ 14.4 pt are 4.1511 x 14.4 = 59.78 pixel;
+ thus the theoretical magnification value is 59.78 / 56 = 1.0675 .
+
+But especially for small sizes, this may be not the best value if the font
+should harmonize with, say, Knuth's Computer Modern fonts. I recommend to to
+compute, say, five PK fonts, then check the CJK font with different TeX
+fonts to see whether the offsets and/or the magnification value is good. The
+greater the design size the finer you can control the offsets---as an
+example you could use a design size of 30pt (nevertheless there is an
+arbitrary compile-time constant MAX_CHAR_SIZE which limits the maximal
+character size; default is 1023 pixels).
+
+Testing has shown that in the above example a magnification value of 1 is
+better than 1.07; additionally if you use this font at 14.4pt you get the
+original bitmap without any distortions introduced by scaling.
+
+If you have found optimal offsets, you can produce many different
+magnifications of the CJK font using the same set of TFM files in analogy to
+ordinary TeX fonts; as a simplification, we assume that PK files with a
+resolution of XXXdpi and a design size of 10pt have the extension `.XXXpk'
+(respectively come into a `XXXdpi' subdirectory)---this is the reason why in
+the above example for the 14.4pt design size with 300dpi a `432dpi' target
+directory has been used. Now we can use the following formula:
+
+ your_target_size
+ needed_dpi = your_horizontal_resolution * ----------------
+ 10.0
+
+Example: Assuming that your printer has a resolution of 300 x 400dpi,
+and you want 14.4pt:
+
+ 14.4
+ 300 * ---- = 432
+ 10.0
+
+The vertical scaling value is 400 / 300 = 1.3333. Use these values now to
+call hbf2gf in METAFONT--like mode:
+
+ hbf2gf hbf2gf.cfg 432 1.3333
+
+Assuming you have created a complete set of hanja fonts (ksmj10) for 10pt
+design size, the proper entry in c60mj.fd would be
+
+ \DeclareFontShape{C60}{mj}{m}{n}{<5><6><7><8><9><10>
+ <10.95><12><14.4>
+ <17.28><20.74><24.88> CJK * ksmj10}{}
+
+If you use the (modified) mktexpk to create PK fonts on demand it is
+sufficient to write
+
+ \DeclareFontShape{C60}{mj}{m}{n}{<-> CJK * ksmj10}{}
+
+if one CJK bitmap font should cover the whole size range.
+
+
+Compiling hbf2gf
+----------------
+
+You need an ANSI C compiler.
+
+Under Unix-like systems say
+
+ ./configure --prefix=/usr/local/TeX \
+ --with-kpathsea-include=<INCLUDEDIR> \
+ --with-kpathsea-lib=<LIBDIR>
+ make
+ make install
+
+for a normal compilation and installation. Replace `/usr/local/TeX' with a
+path to your TeX distribution.
+
+[Note 1:
+ Try to find `libkpathsea.*' on your system. Use this directory as the
+ argument for --with-kpathsea-lib. Then try to find `kpathsea/tex-file.h'
+ and use the parent directory of kpathsea as the argument for
+ --with-kpathsea-include. This should work in most cases. If you can't find
+ the library, you probably have a web2c package with statically linked
+ binaries. This means that you have to get the web2c sources from CTAN,
+ configure it with something like
+
+ ./configure --prefix=/usr/local/TeX --datadir=/usr/local/TeX \
+ --enable-shared --disable-static
+
+ according to your setup; then change to the kpathsea directory and say
+ `make' and `make install' (Do the latter with caution not to overwrite
+ original binaries like kpsewhich).
+
+ It even works with the source tree from the TeX Live CD! You just have
+ to add a proper --srcdir option to the configure script.
+
+ Note 2:
+ It seems that c-auto.h created during the kpathsea library compiling
+ process won't be installed for some older web2c versions. You should add
+ it manually, i.e., copy <web2c source tree>/kpathsea/c-auto.h to the
+ location where the other kpathsea header files have been installed.
+
+ Note 3:
+ As a last resort or for testing purposes, you can even compile hbf2gf
+ without any search library; a simple call to fopen() is used instead.]
+
+
+
+Use Makefile.gnu for emx + GNU make and say
+
+ make -f Makefile.gnu
+
+to get a help screen with the possible options.
+
+[Note: It should work with djgpp too, but I haven't tested this.]
+
+
+If necessary, `touch' hbf2gf.c (in case you don't have ctangle) to made the
+time stamp of the file more recent; otherwise, the `make' program complains.
+
+Under some older SunOS versions, gcc (without the GNU C-library) has
+problems; if possible, install the GNU C-library. Otherwise you get a bunch
+of warning messages about missing prototypes which can be ignored. The only
+missing function is strtoul(). If your system has gdb or some other GNU
+utils, you are almost done. Search for the libiberty.a library (usually in
+/usr/local/lib), copy it into the hbf2gf subdir and link it with the other
+modules:
+
+ LDFLAGS=-liberty ./configure ...
+
+If you don't have libiberty, replace strtoul() with strtol() in the hbf2gf.w
+(or hbf2gf.c) file.
+
+It was reported that on the NeXT an older version of gcc has difficulties to
+process the '%i' printf parameter correctly; simply replace all occurrences
+with '%d' (most notably in hbf.c).
+
+
+---End of hbf2gf.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/history.2_5 b/language/chinese/CJK/cjk-4.8.5/doc/history.2_5
new file mode 100644
index 0000000000..b09d60ea46
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/history.2_5
@@ -0,0 +1,202 @@
+This file is part of the CJK package Ver. 4.8.5 (16-Oct-2021).
+
+The history of the beta versions of the never released version 2.5 .
+--------------------------------------------------------------------
+
+Changes beta 1 -> beta 2:
+ hbf2gf: faster (search_min_max() removed)
+ feof() seems to be broken under Amiga gcc 2.6.3; replaced with
+ == EOF, etc.
+ some small bug fixes and typos
+ default value of target_size is now design_size (and not 10 pt)
+
+Changes beta 2 -> beta 3:
+ ttf2pk: ttfdir must now be defined only once (in MakeTeXPK/maketexp.btm)
+ ttf2pkl instead of ttf2pk at some places erroneously used
+ an updated (and modified) version of MakeTeXPK is used
+ Makefile under Unix erroneously used FS=MSDOS
+
+Changes beta 3 -> beta 4:
+ ttf2pk: MakeTeXPK couldn't create DC fonts correctly.
+ MakeTeXPK couldn't use already created .pk fonts in some cases;
+ you must now change the PKFONTS and PKFONTS.xdvi variable in
+ the kpathsearch configuration file (texmf.cnf) to add
+ `:$pkdir/ttf2pk'
+ ttf2pk.doc added
+ InstallFont added
+ hbf2gf: all float types changed to double. This makes life easier under
+ Amiga
+ pinyin.sty added
+ \CJKcaption command added
+ some caption files added. Works with the koma-script style files
+ included here (see below). Most of them are not complete now
+ wrong punctuation character offsets in Bg5.chr corrected
+ koma-script style files added. Note: this is only temporary until the
+ next official release of the koma-script package
+
+Changes beta 4 -> beta 5:
+ \CJK@enc replaced with specific encodings where possible
+ SJIS encoding scheme added (SJIS.enc, SJISconv.tex, etc.). Doesn't
+ currently work with CEF.sty
+ new commands \CJKCJK, \CJKhangul, and \CJKlatin for UTF8 encoding
+* handling of intercharacter glue enhanced. Now there is no \CJKglue
+* before and after a block of CJK characters. Note that this is a
+* visually incompatible change to the previous versions of CJK!
+* (see the command \CJKtilde also)
+ koma-script package removed (you should use the latest official release
+ now); caption files updated
+ mule2cjk added
+ \CJKtilde and \standardtilde added
+ MakeTeXPK hard linked into utils/hbf2gf
+
+Changes beta 5 -> beta 6:
+ gmulatex script added
+ \CJKhangul erroneously defined twice: \CJKCJK renamed into \CJKCJKchar,
+ \CJKhangul (in UTF 8 environment) into \CJKhangulchar, \CJKlatin into
+ \CJKlatinchar
+ the `global' option didn't work correctly; many \CJK@global's added
+ new command \CJKencshape to specify shapes on a per encoding base
+ \CJKchar didn't work in preprocessed mode
+ hbf2gf: new keyword `pk_files' (yes/no)
+ new calling mode for use with MakeTeXPK:
+ hbf2gf configuration_file [subfont_number resolution]
+ hbf2gf.cfg renamed to b5so12.cfg (MakeTeXPK needs this name)
+ some .cfg files added
+ other small changes
+ MakeTeXPK: taken from contrib/ttf2pk and enhanced to create CJK .pk
+ files on demand from bitmap files
+ name of the mode subdir changed from `(.../pk/)ttf2pk' to
+ `(.../pk/)CJK'.
+ maketexp.btm: similar changes as for MakeTeXPK; hard linked into
+ utils/hbf2gf
+ makettfp.btm: hard linked into utils/hbf2gf
+ latin-3 and latin-4 added to mule2cjk
+
+Changes beta 6 -> beta 7:
+ according to the newest LaTeX2e release, \MakeUppercase is disabled
+ instead of \uppercase in some cases.
+ a severe bug disabled Korean encoding
+ the encoding switching mechanism was broken; again many \CJK@global's
+ added
+ some commands which should be active only in certain encodings redefined
+ to work with the `global' option (Bg5text environment, \mj, etc.)
+ to use the Japanese DNP fonts, an encoding `JISdnp' and two size
+ functions (`DNP' and `DNPgen') are added
+* a new unifying fontencoding scheme has been introduced:
+* max. 4 characters encoding + max. 3 characters fontencoding
+* examples:
+* JISdnp, JISpmC, etc.
+* this change causes many files to be renamed (e.g.,
+* Uhanja.fd->Uhanj.fd); there is also a bunch of new/redefined functions
+* to support this:
+* \CJKenc
+* \CJKfontenc
+* \CJKshape
+* \CJKencshape
+* CJK and CJK* environment
+* SOME OF THE ABOVE CHANGES ARE NOT COMPATIBLE WITH PREVIOUS VERSIONS!
+ CJK characters in verbatim environments are now treated correctly
+ by mule2cjk. Latin-encodings still don't work there
+ hbf2gf: the collection of configuration files has been harmonized in
+ size
+
+changes beta 7 -> 3.0:
+ the protection mechanism has been completely rewritten. Encoding changes
+ now work in sectioning commands too.
+
+ the pseudo-\if's has been replaced with real if's to avoid problems with
+ nested \if...\else...\fi constructions.
+
+ CNS directory renamed to CEF.
+
+ CEF macros CX, CY and U implemented. Font definition files for CX and CY
+ encodings added.
+
+ CEF now works with SJIS encoding too. CEFSconv added.
+
+ CNS.sty removed. Has been integrated into CJK.sty .
+
+ there are now three internally used active characters:
+ ^^80, ^^A0: used by mule2cjk
+ ^^ff : used by CEFconv and mule2cjk.
+ we need those characters for verbatim environments.
+
+ a new internal level introduced:
+ we now have
+
+ active characters
+ |
+ +--------------> bindings (normal, preprocessed) <- new
+ |
+ active character macros
+ |
+ +--------------> encodings (GB, Bg 5, ...) +
+ | font encodings (none, dnp, pmC)
+ |
+ subfont selecting macros
+ |
+ +--------------> character macro sets (standard, Big 5, ...)
+ |
+ character selecting macros
+
+ all encodings except UTF 8 now work in preprocessed mode too.
+
+ some additional checks whether a loading of a certain binding/encoding/
+ character set is neccessary.
+
+ a new style option has been added: `active'. If activated, bindings are
+ local. Default is still `local' (with global bindings). You need this
+ option if you want to mix preprocessed text with non-preprocessed text
+ in nested CJK environments. This can happen if you merge texts in
+ various encodings.
+
+ the offset for the roma subfont of dnp font encoding was incorrect.
+
+ watanabe (a PD replacement of dnp fonts) font encoding for JIS added.
+
+ \CJKchar has now an optional parameter to select the encoding. You can
+ also use this command with Unicode encoding; additionally you can
+ enter characters with or without the 8th bit set (GL or GR form)
+ except for SJIS, Bg5 and UTF8 encoding.
+
+ two new size functions: `CJKsub' and `CJKssub'. They are similar to
+ `sub' and `ssub' except that the font substitution warnings appear
+ only once per CJK fontset. All .fd files updated.
+
+ MULEenc.sty added. Is loaded automatically after a file has been
+ processed with mule2cjk.
+
+ Latin encodings now work in verbatim environments also.
+
+ switch -g from mule2cjk has been removed. It was never necessary since
+ `"' and `\"' in german.sty select the same macro.
+
+ mule2cjk now inserts LaTeX2e macros (\textexclamdown, \textcent, etc.)
+ analogously to the latin[12].def files of the LaTeX2e distribution
+ (where applicable) for Latin encoded characters.
+
+ the batch file muclatex processes mule encoded files which contain
+ CEF macros.
+
+ Stephen Simpson <simpson@math.psu.edu> contributed a Bg 5 .fd file for
+ NTU TT fonts (ntu2cjk and ttf2pk).
+
+ pinyin.sty didn't work in tabbing environments; the syllable \me was
+ missing; the syllables \Na and \na were wrongly defined (Michael E.
+ Deisher <deisher@enws261.eas.asu.edu>).
+
+ pinyin.sty now accepts DC fonts too.
+
+ all .bat and .cmd files now have LF/CR pairs as newlines.
+
+ .bat and .cmd batch files added for all equivalent script files in the
+ utils directory. It might be useful to replace the TeX-coded
+ preprocessors with this filters since they are faster.
+
+ all .bat and .cmd files call f_name.bat (f_name.cmd) to replace the
+ extension (usually .tex) with .cjk .
+
+ hbf2gf always used 300dpi resolution if used in mf-like mode (Zhang
+ Zhengyou <ZhengYou.Zhang@sophia.inria.fr>).
+
+---End of history.2_5---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/history.txt b/language/chinese/CJK/cjk-4.8.5/doc/history.txt
new file mode 100644
index 0000000000..d29a180783
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/history.txt
@@ -0,0 +1,1576 @@
+This file is part of the CJK package.
+
+
+History of the CJK package
+==========================
+
+
+Version 1.0: first release.
+01-June-1994
+
+
+Version 1.1: new:
+20-Aug-1994 \CJK@char(x) simplified.
+
+ CJK.txt updated.
+
+ diff.txt added.
+
+
+Version 2.0: new:
+15-Sep-1994 support for Hangul:
+ virtual fonts / tfm files for Hangul standard fonts.
+
+ changed:
+ font selection: modified .fd-files needed:
+ structure of .fd-files much more simplified.
+
+
+Version 2.1: new:
+28-Sep-1994 optional parameters to CJK size functions added.
+
+ sCJK size function added.
+
+ CJK* environment added: spaces after CJK characters are
+ swallowed.
+
+ Utility programs hbf2hbf and hbf2cjk added.
+
+ changed:
+ new Big 5 encoded fonts needed (more compressed)---saves
+ about 13 TeX subfonts per Big 5 encoded font.
+
+ modified example .fd-files .
+
+ errors:
+ Bg5text environment to pmC-Bg5 environment added.
+
+ pmC emulation now uses compatible font names, i.e.,
+ wcb5a1, wcb5a2, etc.
+
+
+Version 2.2: new:
+18-Oct-1994 CJK now supports hangul and hanja together. Two different
+ sets of subfonts are used as defined in Uhangul.fd and
+ Uhanja.fd .
+
+ CJK punctuation characters (fullwidth comma, colon,
+ semicolon, etc.) don't start a line. CJK opening
+ braces, etc., don't end a line.
+
+ \uppercase and \lowercase is now disabled if Big 5
+ encoding is active.
+
+ \lccode's is only reset if the new `lowercase' option is
+ set. This function is so seldom used that I decided to
+ separate it from setting \uccode's. You need less save
+ size if `encapsulated' is used without `lowercase'.
+
+ C source of hbf2cjk replaced with CWEB source.
+ .dvi files of hbf2hbf and hbf2cjk added.
+ C source files of hbf2hbf and hbf2cjk produced by
+ CTANGLE added.
+
+ \CJKtolerance added - this command for Hangul syllables
+ is the pendant to \CJKglue.
+
+ changed:
+ hangul environment renamed to KS.
+
+ modified example .fd-files.
+
+ new Hangul .vf and .tfm files.
+
+ definition of \CJKglue changed.
+
+ HBF API now supports HBF 1.1 (CHARS optional).
+
+ fine-tuning to hbf2cjk added
+ (Sam Chiu <ccc11@cus.cam.ac.uk>).
+
+ errors:
+ CJK* didn't work in sectioning commands
+ (Wu Guangxi <wuxi@unixg.ubc.ca>).
+
+
+Version 2.21: errors:
+25-Oct-1994 CJK* didn't suppress spaces
+(only CJK.sty) (Sam Chiu <ccc11@cus.cam.ac.uk>)
+
+
+Version 2.3: new:
+15-Nov-1994 JIS coding scheme/environment added.
+
+ pmC-KS and pmC-JIS environments added.
+
+ CNS coding scheme added.
+
+ hbf2gf added.
+ This program merges bmf2gf, hbf2cjk, and hbf2hbf; it
+ is about 10 times faster than hbf2cjk.
+ Consequently, hbf2cjk and hbf2hbf were removed.
+
+ changed:
+ only \uppercase disabled (see error).
+
+ \CJK@char, etc., simplified.
+
+ errors:
+ verbatim environments didn't work in Big 5 encoding
+ (Lee Chun-Yu <d791013@ce.ntu.edu.tw>).
+
+
+Version 2.4: new:
+03-Jan-1995 UTF 8 (Unicode) scheme added.
+
+ option `unicode' to hbf2gf added: if `on', a two-digit
+ hexadecimal number is used as a running number
+ starting with the value of the first byte of the first
+ code range.
+
+ Bg5conv.tex added: this is a small preprocessor which
+ converts Big 5 encoded characters `XY' into the form
+ `XZZZ.' . Now you can use Big 5 encoding without the
+ annoying Bg5text environment.
+ Auxiliary files: Bg5pp.enc, pmCsmpp.enc, and
+ bg5latex.bat .
+
+ changed:
+ new versions of emx.exe, emx.dll (ver. 0.9a) and rsx.exe
+ (rel. 5)
+
+ errors:
+ hbf2gf sometimes drew one pixel too much
+ (You Rey-Jer <you@gi4.bauingenieure.uni-stuttgart.de>).
+
+ pmC encodings didn't work
+ (Zhang Zhengyou <Zhengyou.Zhang@sophia.inria.fr>).
+
+ \CJK@charToHex and \CJK@numbToHex could erroneously change
+ page counter (Li Yu-Ray <r82111@ew.ee.ntu.edu.tw>).
+
+
+Version 2.5: never released; 7 beta versions published. See file
+ history.2_5.
+
+
+Version 3.0 there are too many changes to be described here in full
+10-Oct-1995 detail. Please reread the various documentation files and
+ check the file history.2_5 too.
+
+ new:
+ two contributed packages: ntu2cjk and ttf2pk.
+
+ SJIS coding scheme added.
+
+* a new unifying fontencoding scheme has been introduced:
+* max. 4 characters encoding + max. 3 characters
+* fontencoding
+*
+* examples:
+* JISdnp, JISpmC, etc.
+*
+* this change causes many files to be renamed (e.g.,
+* Uhanja.fd->Uhanj.fd); there is also a bunch of new/
+* redefined functions to support this:
+* \CJKenc
+* \CJKfontenc
+* \CJKshape
+* \CJKencshape
+* CJK and CJK* environment
+*
+* SOME OF THE ABOVE CHANGES ARE NOT COMPATIBLE WITH
+* PREVIOUS VERSIONS!
+
+ two fontencodings added: `dnp' for DNP fonts and `wn'
+ for Watanabe fonts.
+
+ four new size functions: `CJKsub', `CJKssub', `DNP', and
+ `DNPgen'.
+
+ \CJKchar has now an optional parameter to select the
+ encoding. You can also use this command with Unicode
+ encoding; additionally you can enter characters with
+ or without the 8th bit set (GL or GR form) except for
+ SJIS, Bg5 and UTF8 encoding.
+
+ a new internal level introduced:
+ we now have
+
+ active characters
+ |
+ +--------------> bindings (normal,
+ | preprocessed) <- new
+ |
+ active character macros
+ |
+ +--------------> encodings (GB, Bg 5, ...) +
+ | font encodings (none, dnp,
+ | pmC)
+ |
+ subfont selecting macros
+ |
+ +--------------> character macro sets
+ | (standard, Big 5, ...)
+ |
+ character selecting macros
+
+ a new style option has been added: `active'. If
+ activated, bindings are local. Default is still
+ `local' (with global bindings). You need this option
+ if you want to mix preprocessed text with
+ non-preprocessed text in nested CJK environments. This
+ can happen if you merge texts in various encodings.
+
+ options `dos' and `dosdebug' to makefiles added for
+ compiling with djgpp.
+
+ new keywords `design_size', `target_size', `tfm_files',
+ and `pk_files' added to hbf2gf. If `tfm_files'
+ (`pk_files') is `no', creation of .tfm-files
+ (.pk-files) is suppressed.
+
+ new calling mode for hbf2gf for use with MakeTeXPK:
+ hbf2gf configuration_file [subfont_number resolution]
+
+ a modified MakeTeXPK (and maketexp.btm) added to process
+ Chinese TrueType fonts (with ttf2pk) and CJK bitmap
+ fonts (with hbf2gf).
+
+ pinyin.sty for writing pinyin syllables with tones.
+
+ \CJKtilde and \standardtilde for embedding ordinary words
+ in CJK text.
+
+ new command \CJKcaption to load a caption file.
+
+ new commands \CJKCJKchar, \CJKhangulchar and
+ \CJKlatinchar added to specify character handling
+ (glue, discretionary). Only for UTF8 encoding needed.
+ Default is \CJKCJKchar.
+
+ various caption files (.cap) added to be used in
+ conjunction with the KOMA-script document classes.
+
+ MULE to CJK converter added.
+
+ changed:
+ the protection scheme has been completely rewritten.
+ Encoding changes now work in sectioning commands too.
+
+ reorganization of source tree.
+
+ all occurrences of utf8 changed to UTF8 including
+ filenames.
+
+ all occurrences of GBs changed to GB including filenames.
+
+* handling of intercharacter glue enhanced. Now there is
+* no \CJKglue before and after a block of CJK
+* characters. Note that this is a visually incompatible
+* change to the previous versions of CJK! (See the
+* command \CJKtilde also.)
+
+ the definition of the CEF encoding has changed; it uses
+ now HTML-macros to identify CNS codes. Various
+ preprocessors has been added to handle these macros.
+
+ CNS.sty removed. Has been integrated into CJK.sty .
+
+ if only one of the keywords `dpi_x' or `dpi_y' is given
+ in the hbf2gf config file the other printer resolution
+ is set equal to the given one.
+
+ the key values `on' and `off' in the hbf2gf config file
+ are replaced with `yes' and `no'.
+
+ errors:
+ if two Big 5 environments were stacked, the Bg5text
+ environment was defined twice causing an error
+ (Yang Jinn S. <v30yjs@v0sun11.ccl.itri.org.tw>).
+
+ \CJK@punctEnc was undefined in pmC-Bg5 environment
+ (Yang Jinn S. <v30yjs@v0sun11.ccl.itri.org.tw>).
+
+ pmC-Bg5 encoding did not work in preprocessed mode
+ (Yang Jinn S. <v30yjs@v0sun11.ccl.itri.org.tw>).
+
+ Bg5conv.tex and CEFconv.tex/CEF5conv.tex fail under the
+ web2c-TeX implementation because \write commands don't
+ output 8bit characters. C programs which do the same
+ were added.
+
+ wrong \CJK@min and \CJK@max values for some encodings.
+
+ some punctuation characters with Big 5 encoding had wrong
+ offsets (Li Yu-Ray <r82111@ew.ee.ntu.edu.tw>).
+
+ `global' option didn't work correctly.
+
+ \CJKchar didn't work in preprocessed mode
+ (Rob Lahaye <lahaye@amolf.amolf.nl>).
+
+ all .bat and .cmd files call f_name.bat (f_name.cmd) to
+ replace the extension (usually .tex) with .cjk .
+
+
+Version 3.0.1 new:
+20-Nov-1995 hbf2gf config files for CNS added.
+
+ changed:
+ .vf and .tfm files for Hangul have been removed; they
+ are now part of the Hangul font packages.
+
+ CNS font definition files modified.
+
+ `~', if \CJKtilde has been executed, now suppresses
+ spaces afterwards.
+
+ (hopefully) better installation documentation.
+
+ ttf2pk: improved scripts.
+
+ the font directories (for web2c) in the various
+ script/config files have been standardized:
+
+ the source bitmap fonts and its HBF header files are
+ now assumed to be in
+
+/usr/local/lib/font/{china,japan,korea,...}/font_name/
+
+ the hbf2gf configuration files in
+
+/usr/local/lib/hbf2gf/
+
+ the TeX font files in
+
+/usr/local/lib/texmf/fonts/{chinese,japanese,korean,...}/font_name/pk/CJK/
+/usr/local/lib/texmf/fonts/{chinese,japanese,korean,...}/font_name/{tfm,vf}/
+
+ the NTU TrueType fonts in
+
+/usr/local/lib/font/china/truetype .
+
+
+ errors:
+ standard.chr redefined the altchar macros erroneously
+ (Patrick Tuttle <n8442161@toad.lake.cs.wwu.edu>).
+
+ MULEenc.sty failed with german.sty in sectioning
+ commands.
+
+ mule2cjk didn't work with CNS planes 3-7.
+
+
+Version 3.1.0: new:
+20-Feb-1996 MakeTeXPK now supports DC (and TC) 1.2 fonts.
+
+ JIS supplement character set (JIS X 0212-1990)
+ implemented.
+
+ hbf2gf config file j2so12.cfg (for a JIS X 0212 font)
+ added.
+
+ New parameter for hbf2gf: slant. Note that slanted
+ fonts are not common for CJK languages and should
+ be used only in special situations.
+
+ Documentation about Japanese TeX systems and how to
+ handle Japanese with CJK contributed by TANAKA
+ Shinichiro <tanaka3@ifos.se.fujitsu.co.jp>.
+
+ An introduction into the CJK package in Chinese
+ contributed by Lee Chun-Yu <d791013@ce.ntu.edu.tw>.
+ Consequently the outdated README.bg5 together with
+ bg5_test.tex has been removed.
+
+ ntu2cjk version 1.3 .
+
+ CEF example added.
+
+ changed:
+ MULEenc.sty, mule2cjk:
+ \textcdot dropped; replaced with \textperiodcentered.
+
+ MULEenc.sty:
+ definition of \textregistered dropped since it is
+ defined for all encodings in the latest LaTeX2e
+ release.
+
+ CJK.sty:
+ \nbs is now defined as a shorthand for \nobreakspace.
+
+ \space's added to font size functions analogously to
+ the latest LaTeX release.
+
+ mule2cjk:
+ \nbs replaced with \nobreakspace.
+
+ maketexp.btm:
+ small enhancements.
+
+ f_name.bat:
+ slightly modified to make it run under 4DOS too.
+
+ hbf2gf:
+ hbf.c updated to latest hbf version (17-Oct-1995).
+ errors:
+ maketexp.btm:
+ the ttfdir environment variable in the created
+ fonts.btm file was not set.
+
+ Oh, oh, font creation with hbf2gf also didn't work...
+
+ at one place two `%%' used instead of one.
+
+ UJISwn.fd should now search for the right fonts.
+
+ *.cap:
+ erroneously contained \@undefined instead of
+ \undefined.
+
+ JIS.cap:
+ completely broken (sigh). Unbalanced \if... statements
+ caused unrecoverable errors.
+
+
+Version 3.1.1: new:
+20-Jun-1996 \CJKspace switches (inside of a CJK or CJK* environment)
+ from CJK* to CJK mode.
+ \CJKnospace switches from CJK to CJK* mode.
+
+ support for Vietnamese with Mule. You need the vncmr-2.1
+ package for fonts and LaTeX2e support.
+
+ Latin 5 (ISO 8859-9) for Mule implemented.
+
+ changed:
+ mule2cjk removed and replaced with cjk-enc.el which
+ defines a new output encoding scheme for Mule
+ (*cjk-coding*). See cjk-enc.doc for details.
+
+ new protection scheme and changed macro definitions in
+ MULEenc.sty enables kerning for non-CJK languages. This
+ also makes most of the CJK macros significantly smaller.
+
+ f_name.bat replaced with the latest version.
+
+ some documentation improvements.
+
+ \CJKhanja and \CJKhangul now also make sense outside of
+ KS encoding (useful in connection with mule2cjk).
+
+ errors:
+ f_name.cmd doesn't work. All *.cmd removed. I have first
+ to learn REXX to write such batch files for OS/2.
+
+ ttf2pk failed if the PK package size of a character was
+ 1024 (the same error is also in the pbm2pk program).
+
+ hbf2gf didn't initialize mag_x/mag_y and dpi_x/dpi_y
+ correctly (Zhang Zhengyou
+ <Zhengyou.Zhang@sophia.inria.fr>).
+
+ after closing a CJK environment not all characters above
+ 0x80 had been made non-active (a typo).
+
+ pinyin.sty did not preserve the \a macro (used in
+ tabbing environments).
+
+ single byte characters didn't work in SJIS encoding (a
+ typo).
+
+ `:' and `.' do not work as parameter delimiters if these
+ characters are active (Daniel Flipo <?@?>). Now ^^ff
+ is used; the old macro ^^ff is now ^^a0; ^^a0 has
+ become ^^80. The old ^^80 macro has been removed since
+ the new version of mule2cjk always use the `global'
+ option of CJK which allows the use of (the new) ^^80
+ instead.
+
+ \CJKenc{SJIS} didn't work (Thomas Piekenbrock
+ <piekenbro@msmzid.frankfurt.hoechst-ag.d400.de>).
+
+ SJISconv.tex didn't run (a senseless line called the
+ nonexistent macro \CJK@other) (Thomas Piekenbrock
+ <piekenbro@msmzid.frankfurt.hoechst-ag.d400.de>).
+
+ JIS.cap didn't work (a typo).
+
+ SJIS.cap didn't work either (forgot to edit).
+
+
+Version 4.0.0: new:
+20-Sep-1996 I did the final step. All CJK encodings now have all
+ NFSS attributes, namely family, series, and shape
+ (represented by \CJK@family, \CJK@series, and
+ \CJK@shape). \CJK@family is set by entering a CJK
+ environment in the same way as it was done in former
+ versions of this package. \CJK@series and \CJK@shape
+ are (usually) controlled by the standard NFSS commands
+ (e.g., \slshape, \textbf, etc.).
+
+ To achieve this it was necessary to define (NFSS)
+ font encodings for the CJK package. All CJK font
+ encodings map to NFSS font encodings which start with
+ the letter `C', followed by two digits. Here is a
+ table:
+
+ Chinese: Bg5 C00
+ Bg5pmC C01
+
+ GB C10
+ GBpmC C11
+
+ GBt C20
+ GBtpmC C21
+
+ CNS1-7 C31-37
+
+ Japanese: JIS C40
+ JISpmC C41
+ JISdnp C42
+ JISwn C43
+
+ JIS2 C50
+
+ SJIS -> kana C49
+ (additionally)
+
+ Korean: KS -> hanja C60
+ -> hangul C61
+ KSpmC C62
+ KSHL -> hanjaHL C63
+ -> hangulHL C64
+ -> HLsymbolJ C65
+ -> HLsymbolK C66
+
+ Unicode: UTF8 C70
+
+ CEF: CEFX C80
+ CEFY C81
+
+ The first digit corresponds to a CJK (input) encoding
+ like Bg5 or JIS, the second digit represents either a
+ CJK font encoding or internal encodings necessary to
+ cover the selected CJK encoding.
+
+ One consequence of this step is that you have to adapt
+ all .fd files to the new scheme. Look at the example
+ font definition files of the CJK package how to do it.
+
+ You can't use e.g., `C01' directly! Use the CJK
+ interface (in this example \CJKfontenc[pmC]{Bg5}).
+
+ Another consequence is that you are now limited to
+ five characters for the family name since it is part
+ of the .fd name (together with the NFSS font
+ encoding): e.g., `fangsong' is not longer allowed. I've
+ renamed this to `fs'.
+
+ the new font encoding scheme of the HLaTeX package is
+ supported. You can select it with \CJKfontenc[HL]{KS}
+ or \begin{CJK}[HL]{KS}{...} . This is _not_ an
+ emulation of HLaTeX! See CJK.doc for details.
+
+ poor-man's bold font has been introduced. To do this all
+ occurrences of \symbol has been replaced with the new
+ command \CJKsymbol which honours the \ifCJK@bold@
+ flag. If set, a character is printed three times with
+ a small horizontal shift. You can modify this flag
+ with \CJKnormal and \CJKbold. These commands are
+ intended for use with \DeclareFontShape:
+
+ \DeclareFontShape{C00}{CNS}{m}{n}{<-> CJK * csso12}{}
+ \DeclareFontShape{C00}{CNS}{bx}{n}{<-> CJKb * csso12}{\CJKbold}
+
+ Additionally four size functions (CJKb, sCJKb,
+ CJKfixedb, sCJKfixedb) has been introduced which are
+ completely identical to its counterparts without the
+ final `b'. The only reason to use them is, as shown in
+ the above example, to make the fifth parameter of
+ \DeclareFontShape for bold series different from the
+ one for medium series (LaTeX2e uses this parameter as
+ a macro name to execute loading-settings, thus they
+ must not be equal). Redefine \CJKboldshift if the
+ default shift value of 0.015em is not optimal for the
+ specific font.
+
+ support for ruby (= furigana) added. See rubi.doc for
+ details.
+
+ ttf2pk:
+ TTF specific error handling enabled.
+
+ Big 5 encoded TTF in format 4 can now be handled.
+
+ hbf2gf: you can now use environment variables ($FOO or
+ ${FOO}) in the configuration file. Use $$ to get a
+ dollar sign.
+
+ man pages added.
+
+ more examples added.
+
+ REXX scripts bg5latex.cmd, etc. (for OS/2) added
+ (contributed by Wonkoo Kim <wkim+@pitt.edu>).
+
+ teTeX.doc added.
+
+ changed:
+* The CJK distribution has been divided into three
+* packages:
+* src The sources. Needed for all platforms
+* bin Binaries compiled with emx for DOS and OS/2.
+* rest Preformatted documentation (.dvi, .ps,
+* output from cjk-enc.el)
+*
+* ALL FONT DEFINITION FILES HAVE BEEN CHANGED AND RENAMED!
+*
+ \CJKshape and \CJKencshape renamed to \CJKfamily and
+ \CJKencfamily respectively. For backward compatibility
+ you can still use the old names. Nevertheless, they
+ now modify the font family parameter and no longer the
+ font shape parameter.
+
+ all *conv.tex and its batch files removed.
+
+ all converter programs now do not change the number of
+ lines in the output file.
+*
+* the UN*X converter batch files now replace the extension
+* with .cjk instead of appending it. E.g.
+* test.tex -> test.cjk (instead of test.tex.cjk)
+*
+ f_name.bat provides a new environment variable %fu%
+ for a Unix-like path (using `/' instead of `\'). Now
+ you can run bg5latex.bat and the other DOS batch files
+ having a file name with a path as an argument. Please
+ replace all these batch files with the new ones.
+
+ starting with this version ttf2pk is a direct part of
+ the CJK package. I maintain it. As a consequence the
+ ttf2pk directory tree has been moved into the utils
+ subdirectory.
+
+ MakeTeXPK, MakeTTFPK: environment variable ttfdir and
+ hbf2gfdir renamed to TTFDIR and HBF2GFDIR
+ respectively.
+
+ hbf2gf: sample configuration files now contain TDS
+ compliant directories.
+
+ ttf2pk:
+ -c option removed which never worked.
+
+ some redundant code removed.
+
+ heavily reformatted.
+
+ errors:
+* PLEASE RECREATE ALL .TFM AND .PK FILES PRODUCED BY
+* TTF2PK!
+* Reason: the width values were resolution dependent.
+* You should use the InstallFont script or instfont.btm
+* for this job since the very bug in ttf2pk has not yet
+* been fixed. Additionally you must install the new
+* MakeTTFPK script.
+
+ ttf2pk:
+ endchar didn't work correctly.
+
+ punctuation characters in KS were not handled correctly.
+
+ \CJKchar failed sometimes (Jinn S. Yang
+ <v30yjs@v0sun11.ccl.itri.org.tw>).
+
+ Big 5/SJIS characters failed in headers, etc., if used
+ without preprocessor (Jinn S. Yang
+ <v30yjs@v0sun11.ccl.itri.org.tw>).
+
+
+Version 4.0.1: appeared as a diff only---a typo in utils/ttf2pk/findex.c
+26-Sep-1996
+
+
+Version 4.1.0: new:
+20-Nov-1996 ttf2pk:
+ a new parameter -e has been introduced for selecting
+ the font encoding; possible values are `Big5' (the
+ default), `EUC' for extended Unix codes (JIS, GB, KS,
+ etc.), `SJIS', and `X'. The last value treats the TTF
+ file as SJIS encoded but expects start_char in JIS
+ encoding (routines are in coding.{c,h}).
+
+ a new parameter -r has been introduced for rotating
+ the glyphs 90 degrees counter-clockwise if its value
+ is non-zero. See ttf2pk.1 for details.
+
+ Some preliminary support for composite glyphs has been
+ included. Since hinting instructions are not supported
+ yet this is only of some academic interest. You can
+ watch the funny results with the mingli system font of
+ the traditional Chinese Windows 3.1 .
+
+ Support for different horizontal and vertical
+ resolutions has been added. Now you have one more
+ parameter to call ttf2pk:
+
+ ttf2pk pkname tfmname xres yscale startch nmbch ...
+
+ Currently you have to change yscale by hand in
+ MakeTTFPK (or makettfp.btm). [yres = xres * scale]
+
+ The source code has been prepared for pretty-printing
+ with c2cweb. Say `make documentation OS=<SYSTEM>' to
+ produce it (of course after installing the c2cweb
+ package). You find precomputed .dvi files in the
+ `rest' part of the CJK package.
+
+ HSIEH Tung-Han <thhsieh@twclx.phys.ntu.edu.tw>
+ contributed NTeXb5.doc for installing the CJK package
+ under NTeX.
+
+ hbf2gf:
+ if called in METAFONT-like mode, one additional
+ parameter has been added to allow printers with
+ different horizontal and vertical resolutions:
+
+ hbf2gf config_file subfont_nmb x_resolution y_scale
+
+ (y_resolution = x_resolution * y_scale; y_scale must
+ be a real number > 0; currently you must change y_scale
+ by hand in MakeTeXPK/maketexp.btm)
+
+ hbf2gf now produces a .pl file even if in
+ METAFONT-like mode.
+
+ a new config file option `rotation' rotates the glyphs
+ 90 degrees counter-clockwise if set to `yes'.
+
+ vertical presentation forms of Big5 punctuation
+ characters added to punctuation tables in CJK.enc .
+
+ CJKvert.sty for vertical typesetting added. This is an
+ experimental feature! Please read vertical.doc for
+ further details.
+
+* MakeTeXPK and friends:
+* it's no longer necessary to rename TTF files to avoid
+* underline characters. A configuration file is now used
+* (ttf2pk.cfg) which resides in $TTF2PKDIR (usually
+* $TEXMF/ttf2pk) to describe the various TTF files.
+* Please rename e.g., ntukai.ttf back to ntu_kai.ttf .
+* The environment variable $TTFDIR has become obsolete.
+
+ The teTeX variants of the scripts can now produce tfm
+ files on demand---it's sufficient to simply install
+ the source files of a new font.
+
+ changed:
+* rubi.sty has been renamed to ruby.sty; the same is
+* true for all commands in it: \ruby, \rubyoverlap, etc.
+
+ new version (1.5) of ntu2cjk.
+
+ hbf2gf:
+ the option `target_size' has been removed. It is
+ ignored now.
+
+ under DOS and OS/2 both `\' and `/' are now recognized
+ as a path separator.
+
+ ttf2pk:
+ the -s parameter (to select a design size) has been
+ removed. The program now always assume a design size
+ of 10pt.
+
+ the parameter end_char has been replaced with
+ nmb_of_char (max. 256).
+
+ begin_char can now be either decimal, hexadecimal
+ (prefix `0x'), or octal (prefix `0').
+
+ x_offset and y_offset behave now similar to hbf2gf
+ (and most people would expect it that way): a positive
+ x (y) value shifts right (up); default is zero for
+ both parameters using the default placement as given
+ in the TTF file. The values are no longer integers but
+ real numbers and should be multiples of design size.
+
+ horz_esc and vert_esc are now real numbers too and
+ should be multiples of design size.
+
+ you no longer need to use -W, -H, and -D for getting
+ resolution independent .tfm files. ttf2pk now
+ correctly uses the values of the TTF file.
+
+* PLEASE RECREATE ALL .TFM (AND .PK) FILES! Sorry for
+* this inconvenience. I hope it is the last time. Due to
+* some optimizations the .pk files are about 5% smaller
+* now.
+
+ The TTF part of the source code has been transformed
+ into a library (ttflib); the makefile has been
+ rewritten with a new syntax. Say `make' for details.
+
+ utils/ttf2pk/README.b5 and INSTALL.bg5 removed. They
+ were out of date.
+
+ modified MakeTTFPK/MakeTeXPK/InstallFont and
+ makettfp.btm/maketexp.btm/instfont.btm scripts.
+
+
+Version 4.1.1: appeared as a diff only.
+02-Dec-1996
+ new:
+ cjktilde.el:
+ this file contains a minor mode (`cjk-tilde-mode') for
+ emacs to exchange the ` ' key with the `~' key. See
+ the documentation of \CJKtilde for details.
+
+ changed:
+ directory cjk-enc renamed to lisp.
+
+ errors:
+ the fullwidth double colon in GB encoding was missing in
+ the punctuation tables.
+
+
+Version 4.1.2: new:
+20-Feb-1997 ntu2cjk ver. 1.6 now supports the Jackson font (a Big 5
+ encoded PostScript font).
+
+ cjkspace.el: similar to cjktilde.el for cooperation with
+ AUCTeX.
+
+ support files for NDOS contributed by KUO Yi-Liang
+ <c300711@ms5.hinet.net> .
+
+ emTeX support documentation also contributed by
+ KUO Yi-Liang <c300711@ms5.hinet.net> .
+
+ changed:
+ ttf2pk/src/Makefile: uses -C switch of GNU make now for
+ entering subdirectories.
+
+ adaptation to LaTeX release 1996/12/01:
+ all .fd files now start with e.g., c00 instead of C00
+ (nevertheless, the encoding is still called `C00').
+
+ all executables are now finished with exit() to avoid
+ additional security holes.
+
+ Bg5rot.tex renamed to Bg5vert.tex .
+
+ errors:
+ MakeTTFPK:
+ some sed programs can't understand the `\w' special
+ character (indicating a word constituent character);
+ has been replaced with `.'.
+
+ it was not possible to open a CJK environment with
+ SJIS encoding a second time (Thomas Piekenbrock
+ <piekenbro@smzid.frankfurt.hoechst-ag.d400.de>).
+
+ the same problem existed with UTF 8 encoding;
+ additionally the macros failed for protected
+ arguments.
+
+ cjktilde.el:
+ if you assigned the minor mode to a key, the status
+ line was not updated.
+
+ ttf2pk:
+ problems with empty glyphs fixed.
+
+ problems with invalid index tables now lead to a
+ warning instead of a fatal error.
+
+
+Version 4.1.3: new:
+20-Jun-1997 hbf2gf can now create virtual Omega (.ofm) files.
+
+ ttf2pk (and its scripts) now supports Unicode encoded
+ fonts.
+
+ cjk-enc.el for emacs 20.
+
+ Russian support (in T2 encoding) for Mule/emacs 20.
+ Please contact me for fonts, hyphenation patterns, and
+ macro packages.
+
+ JIS X 0201 support for Mule/emacs 20.
+
+ experimental support for Thai (only emacs 20). This is
+ basically C-TTeX version 1.51 adapted to CJK. Anybody
+ who is interested in this stuff (and has some
+ knowledge on Thai contrary to me :-) please contact
+ me so I can improve it. Please read cjk-enc.doc for
+ more details.
+
+ ntu2cjk version 1.8:
+ now supports partial downloading of NTU fonts with
+ dvips.
+
+ installation checklist added to INSTALL.
+
+ installation instructions written in Chinese GB
+ contributed by YAO Fude <yao@everest.micro.umass.edu>.
+
+ UTF8.tex example added.
+
+ changed:
+ MULEenc.sty:
+ \hbar and \HBAR replaced with \textmalteseh and
+ \textmalteseH respectively according to the LaTeX2e
+ release June 1997.
+
+ further simplifications.
+
+ external CJK font packages, script and documentation
+ files updated to TDS standard.
+
+ c70song.fd:
+ now uses cyberbit.ttf as default font.
+
+ errors:
+ make*.btm scripts now really work :-) (thanks to
+ <rshuang@ms11.hinet.net>).
+
+ c00cns.fd was incorrectly stored as c00CNS.fd .
+
+ MULEenc.sty:
+ expansion macro improved (the old version prevented
+ kerning if used with e.g., \MakeUppercase).
+
+ hbf2gf:
+ support for Unicode encoded HBF files was totally
+ broken.
+
+ always used non-rotated x and y input sizes.
+
+ the HBF interface now uses only one file handle per
+ opened font---previously it used one file handle per
+ HBF_CODE_RANGE line (Mark Leisher
+ <mleisher@crl.nmsu.edu>).
+
+ ttf2pk:
+ can now handle fonts like avkv.ttf which have a
+ non-standard way to handle the end of the glyph index.
+
+ a nasty allocation bug removed due to missing modulo
+ 65536 operations (thanks to YANG Ching-Hsiang
+ <jsyang@vlsi.ccl.itri.org.tw>).
+
+
+Version 4.2.0: new:
+13-Dec-1998 pinyin.sty:
+ support for EC fonts: the macron bar has been lowered
+ considerably.
+
+ kerning in pinyin syllables is now identical to
+ unaccented syllables.
+
+ teTeXb5.doc:
+ How to set up CJK with teTeX 0.9 (in Chinese).
+ Contributed by HSIEH Tung-Han
+ <thhsieh@twcpro.phys.ntu.edu.tw>.
+
+ CJKnumb.sty:
+ new package for converting a number into a CJK
+ representation. It provides just one command,
+ \CJKnumber.
+
+ CJK.sty:
+ new command \CJKaddEncHook for adding code which is
+ executed each time a certain encoding is selected.
+
+ contrib/wadalab:
+ how to use Wadalab Japanese PostScript fonts with CJK.
+ Contributed by LEUNG Hin-Tak <htl10@cus.cam.ac.uk>.
+
+ CJK.enc:
+ added C52 encoding (JIS2 in dnp font encoding).
+
+ changed:
+ MULEenc.sty, cjk-enc.el:
+ updated to latest LaTeX 2e changes (1997/12/01 and
+ 1998/06/01):
+ \DH, \dh renamed to \DJ, \dj; LaTeX2e now provides
+ \textdegree, \textordfeminine, and \textordmasculine.
+
+ updated to latest T2 changes: \CYRUKRI, \CYRUKRE and
+ its lowercase forms are renamed to \CYRII and \CYRIE
+ respectively.
+
+ there is now a version of cjk-enc.el for emacs 20.3
+ too.
+
+ muletest.tex:
+ new translations; Russian now standard.
+
+ thaiconv:
+ updated to include cttex 1.15 changes.
+
+ a revised TDS structure for storing CJK fonts and
+ configuration files (see TDS.doc for details).
+
+ compile.doc has been removed.
+
+ NTeXb5.doc has been removed.
+
+ ttf2pk.doc has been removed (it is now in the ttf2pk-old
+ package).
+
+ the whole ttf2pk subdirectory has been removed. Get the
+ new ttf2pk program of the FreeType project (available
+ from ftp.freetype.org in the directory
+ pub/freetype/devel as the package
+ freetype-current.tar.gz)---the new ttf2pk can work
+ with composite fonts too and supports hinting. The old
+ ttf2pk is still available as ttf2pk-old.tar.gz .
+
+ the whole ntu2cjk subdirectory has been removed. Get the
+ new ttf2pfb program of the FreeType project (see just
+ above for the location). ntu2cjk is still available as
+ ntu2cjk.tar.gz .
+
+ the whole NDOS subdirectory has been removed because it
+ is completely out of date.
+
+ CJK.sty:
+ caption files for preprocessed mode have now the
+ extension `.cpx' to simplify editing of cap files.
+
+* hbf2gf:
+* completely redesigned to make calls in scripts for
+* creating PK fonts easier. Please refer to hbf2gf.1
+* or hbf2gf.dvi for details.
+*
+* maketexp.btm, etc.:
+* replaced with dvidrv.btm, a replacement for emTeX's
+* dvidrv.exe; it is documented in dvidrv.doc .
+
+ fonts from HLaTeX >= 0.97 are now supported. As a
+ consequence, support for older HLaTeX versions has
+ been withdrawn. The internal encoding C66 no longer
+ exists.
+
+ cjk-enc.el:
+ function write-cjk-file added (thanks to David Fox
+ <fox@cat.nyu.edu>).
+
+ errors:
+ pinyin.sty:
+ \O wasn't handled specially.
+
+ CJK.sty now coexists with ArabTeX.
+
+ possible save size overflow fixed (\CJK@temp was
+ assigned locally and globally at the same time).
+
+
+Version 4.3.0: An intermediate version containing most features of 4.5.0
+04-Apr-2000 published on the TeX Live 5 CD. It has never been officially
+ released.
+
+
+Version 4.4.0: An intermediate version containing most features of 4.5.0
+17-Apr-2001 published on the TeX Live 6 CD. It has never been officially
+ released.
+
+Version 4.5.0: An intermediate version containing most features of 4.5.1
+01-May-2002 published on the TeX Live 7 CD. It has never been officially
+ released.
+
+Version 4.5.1: new:
+17-Jun-2002 CJKulem.sty:
+ Full underlining support using the latest version of
+ ulem.sty.
+
+ Bg5+ and GBK charsets and encodings added (together with
+ `Bg5+text' and `GBKtext' environments). The encodings
+ are C09 and C19, respectively.
+
+ `bg5+latex' and `gbklatex' scripts added (together
+ with its DOS and OS/2 pendants); both call the new
+ converter `extconv'.
+
+ EUC-JP and EUC-TW encodings (*with* single shifts) added.
+
+ SJIS encoding with DNP fontencoding.
+
+ A configuration file `CJK.cfg' is read by CJK.sty just
+ before the \endinput command.
+
+ CJKnumb.sty:
+ Added the macro \CJKdigits to CJKnumb.sty for printing
+ a (integer) number with CJK digits.
+
+ Added macro \CJKnullspace to control the amount of
+ space inserted before and after a circle character
+ used for CJK digit zero.
+
+ Added the macro \CJKindent to CJK.sty which sets the
+ paragraph indentation to two ideographic spaces.
+
+ Added a test file `CJKbabel.tex' for testing CJK,
+ emacs 20, and the babel package.
+
+ Thai support for Babel added.
+
+ Added a test file `thai.tex' for testing Thai.
+
+ cjk-enc.el:
+ Now works with XEmacs also (except for Thai).
+
+ Support for ISO-8859-7 (Greek) added.
+
+* Support for multifile documents added. As a
+* consequence, it is now necessary to specify the
+* encoding of all files with local variables for Emacs
+* (see the comments at the end of the files in the
+* `examples' directory how to do that; the `coding: ...'
+* line must exist.
+
+ The translation tex->cjk is now executed only if the
+ source file is more recent than the corresponding
+ output file (it is still possible to force translation
+ though).
+
+ Hyphenation patterns for unaccented pinyin syllables
+ (together with support for the Babel package) in
+ utils/pyhyphen. Documentation is in doc/pyhyphen.doc.
+
+ pinyin.sty:
+ Added option `useCMmacron' (for LaTeX only) to use
+ a macron accent from the CM fonts in case the current
+ font doesn't have it (e.g., some versions of virtual
+ files for Palatino).
+
+ Compound syllables can now be hyphenated.
+
+ MULEenc.sty:
+ Added \CJKinclude{<file>}, \CJKinput{<file>}, and
+ \CJKbibliography{<file>} macros which behave similar
+ to \include, \input, and \bibliography but include
+ (input) <file>.cjk and <file>-cjk.bib instead.
+
+ CJK.sty/MULEenc.sty:
+ The command \CJKverbatim suppresses insertion of glue
+ between CJK and Thai characters in verbatim
+ environments if the `verbatim' package is used. This
+ is useful if you have overlong lines.
+
+ changed:
+ Thai support has been redesigned. The external program
+ `thaiconv' has been replaced by a Lisp file called
+ thai-word.el; ligatures in virtual Thai fonts are now
+ used to select the proper glyph representation forms.
+ See thaifont.doc and cjk-enc.doc for details.
+
+ CNS stuff moved into a `CNS' directory.
+
+* CJK.sty/MULEenc.sty,
+* cefconv, cef5conv, cefsconv, bg5conv, sjisconv,
+* cjk-enc.el:
+* The character slot 0xA0 is no longer used for
+* \CJKchar; instead, the multiplex character 0x7F
+* interface now handles this also. Additionally,
+* character 0x7F (instead of 0xFF) is used as delimiting
+* character. 0x7F is used for all CJK characters also in
+* preprocessed mode---as a consequence, preprocessed and
+* non-preprocessed data can be used simultaneously.
+*
+* You *must* update the *conv programs (if you use
+* them). \CJKpreproc and \CNSpreproc now contain the
+* current version string so you can check whether really
+* the new versions are called.
+
+ cjk-enc.el:
+ ET5 encoding for Vietnamese replaced with T5 encoding.
+
+ The version for emacs 20 has been removed. Please
+ upgrade your emacs to 20.7 or newer.
+
+ contrib/wadalab:
+ Use CJK font size functions instead of DNP ones.
+
+ hbf2gf:
+ The configure option --with-kpathsea-dir has been
+ replaced with --with-kpathsea-include and
+ --with-kpathsea-lib to support web2c installations
+ with multiple architectures.
+
+ errors:
+ cjk-enc.el:
+ The formatting parameter `%i' has been replaced with
+ `%d'.
+
+ pmC.chr:
+ Missing \ifCJK@ added.
+
+ Punctuation macros fixed.
+
+ Bg5.chr:
+ Fixed a typo \CJK@temp -> \CJK@gtemp.
+
+ hbf2gf:
+ Now works correctly with very large pixel sizes.
+
+ Punctuation with half-width katakana in SJIS encoding
+ improved.
+
+ A bug fixed which prevented the usage of caption files
+ together with hyperref.
+
+ KS encoding with HLaTeX fontencoding now supports
+ punctuation also.
+
+ Specifying a font size factor (like `CJK * [1.5]') in
+ FD files no longer produces a warning message for
+ all subfonts.
+
+Version 4.5.2: new:
+28-Mar-2003 The new macro \CJKnohwkatakana prevents the use of the
+ C49 encoding for half-width katakana; instead, the
+ characters are mapped to full-width glyphs. The
+ opposite command is \CJKhwkatakana (the default).
+
+ Improved support for pseudo-vertical typesetting.
+
+ . CJKvert.sty provides new commands \CJKvert (the
+ default) and \CJKhorz to toggle pseudo-vertical
+ typesetting.
+
+ . After loading CJKvert.sty, LaTeX reads file
+ `<foo>.fdv' (if it exists) immediately after reading
+ `<foo>.fd'. Such a file contains additional
+ information how to typeset a font vertically. Most
+ importantly, outline fonts can be configured so that
+ they are rotated with the graphicx package, making
+ it work with both dvips and pdfTeX. See
+ `vertical.doc' for more information.
+
+ errors:
+ \CJKchar sometimes didn't accept 7bit representations.
+
+ pinyin.sty:
+ Added missing syllables \chua, \den, \rua.
+ Make it work properly in tables.
+
+ contrib/wadalab:
+ Older versions of the `makefont' script produce bad
+ hints for all Wadalab fonts. Either use the new
+ version to regenerate all fonts or use the new script
+ `fixwada' to correct fonts created with an old version
+ of `makefont'.
+
+ EUC-TW.chr: Make it really work.
+
+Version 4.6.0: new:
+11-Aug-2005 CJKutf8.sty merges basic LaTeX's and CJK's UTF-8 support.
+ See CJKutf8.doc for details.
+
+ The two new macros \Thaispace and \Thainospace can be
+ used to control the EOL behaviour in Thai text blocks
+ if processed with cjk-enc.el.
+
+ There are now scripts (for Unix) to call pdflatex
+ instead of latex: bg5pdflatex, sjispdflatex, etc.;
+ all scripts now pass parameters to latex (the program).
+
+ New documentation files giving hints how to set up the
+ CJK package for optimal PDF output.
+
+ New documentation file `reftex.doc' describing
+ customization for RefTeX (which is part of Emacs).
+
+ CJKfntef.sty provides more font effects specific to
+ CJK scripts. See the example file CJKfntef.tex for
+ typical usage.
+
+* All .fdv-files have been renamed to use the suffix
+* `.fdx' since they are no longer restricted to vertical
+* writing direction. See the new file `fdxfiles.doc'
+* for more information.
+
+ changed:
+ All plain text documentation files now have the suffix
+ `.txt'.
+
+* Thai support has been improved.
+*
+* . Internally, the font creation process now uses
+* fontinst to create the TFM files. As a consequence,
+* virtual fonts are no longer necessary.
+*
+* . Due to an uncertain license, the `dbtt' font family
+* has been replaced with `garuda', taken from
+* thailatex version 0.3.5.1 which you can find at
+*
+* http://linux.thai.net/plone/TLWG/thailatex
+*
+* . The directory tree below `utils/thaifont' has been
+* updated to reflect TDS 1.1, as supported by the
+* forthcoming TeXLive 2005 and teTeX 3.0.
+*
+* Please replace all files related to Thai fonts in your
+* TEXMF tree with the new fonts and font support files.
+
+* HLaTeX support has been updated to handle fonts from
+* version 1.0.1---there are no longer MF source files,
+* only PS fonts. Support for non-uhc fonts have been
+* removed; you should upgrade to the latest HLaTeX font
+* archives from CTAN. Please consult CJK.doc, section
+* `Korean input', for the (slightly) changed font names of
+* HLaTeX support.
+
+ errors:
+ Some characters in Big 5 encoding disappeared without
+ a warning if pseudo-vertical writing was active.
+
+ pinyin.sty:
+ Umlaut u with diacritic appeared bold.
+
+ Umlaut u with macron above was broken.
+
+ CJKulem.sty:
+ User-defined \CJKglue value was ignored.
+
+ Line breaks before a post-punctuation CJK glyph
+ weren't disabled when \uline and friends were used.
+
+ MULEenc.sty:
+ \textordfeminine and \textordmasculine were exchanged
+ if used with cjk-enc.el.
+
+ contrib/wadalab/*.fdx:
+ Handle Hiragana-Katagana prolongation mark correctly.
+
+ cjk-enc.el:
+ Multifile support was partially broken.
+
+ CJKvert.sty:
+ Both \CJKvert and \CJKhorz had both local and global
+ effects. Now they are completely local.
+
+
+Version 4.7.0:
+17-Oct-2006
+ new:
+ A new encoding `HK' (C05) is available for Hong Kong's
+ HKSCS-2004, used in combination with Big 5.
+
+* `UTF8' encoding now supports full Unicode (up to
+* U+10FFFF). Subfont planes for ranges greater than U+FFFF
+* consist of four hexadecimal digits (for example
+* `foo025e' which covers U+25E00-U+25EFF). The \Unicode
+* command (and \CJKchar) has been extended to accept
+* Unicode values greater than U+FFFF.
+
+ CJKutf8.sty:
+ Support Unicode encoded bookmarks if the hyperref
+ package is used.
+
+ Automatically generate ToUnicode cmaps for pdftex
+ (tested with pdftex version 3.141592-1.30.4-2.2; it
+ currently doesn't work with virtual fonts).
+
+ Caption files in UTF-8 encoding have been added; the
+ files are identical to the encoding-specific versions.
+
+ ja Japanese
+ ko-Hang Korean using Hangul
+ ko-Hang2 another version using Hangul
+ ko-Hani Korean using Hanja
+ zh-Hans Chinese simplified
+ zh-Hant Chinese traditional
+
+ errors:
+ UTF-8 input character 0x80 was handled only partially.
+
+ pinyin.sty:
+ The package didn't preserve `\ding' which is defined
+ in pifont.sty, causing problems with older versions of
+ the hyperref package and its `hpdftex' driver option.
+
+ CJK.sty:
+ Make it work with font definition files (like the ones
+ from the fourier package) which expect that the
+ loading-settings are called only once.
+
+ The use of caption files within the `scrartcl' class
+ made \chapter a defined command (instead of reporting
+ an error).
+
+ With the koma-script classes, all CJK caption files
+ except for Korean produced bad looking TOC entries for
+ \part.
+
+
+Version 4.8.0:
+22-May-2008
+ new:
+ Support for EUC-JP with DNP font encoding has been
+ added.
+
+ Support for XeLaTeX has been contributed by SUN
+ Wen-Chang <sunwch@hotmail.com> (in file `xCJK.sty').
+ Note that this is just a rudimentary emulation layer;
+ most users are probably better off using XeLaTeX's
+ Unicode and font support directly. See `xCJK.txt' for
+ more details.
+
+ pinyin.sty:
+ Added support for T5 encoding.
+
+ CJKvert.sty:
+ Added command \CJKbaselinestretch to adjust the
+ baseline stretch used in vertical typesetting.
+ Previously, the value 1.3 was hardcoded.
+
+ Added package option `usebaselinestretch' to use
+ the \baselinestretch value set before loading
+ CJKvert.sty; \CJKbaselinestretch then becomes a
+ factor to adjust it.
+
+ Add support for \CJKhdef{offset}{...} in .fdx-files.
+ For example, to vertically shift all glyphs of the
+ `bsmi' font shape in Big 5 encoding (for horizontal
+ writing), put
+
+ \CJKhdef{offset}{-.07em}
+
+ into c00bsmi.fdx and add
+
+ \usepackage{CJKvert}
+ \CJKhorz
+
+ to your preamble.
+
+ errors:
+ \CJK@bold didn't work properly for C49 (half-width
+ katakana) encoding. Now C49 is handled as a CJK
+ encoding, this is, you should use the various size
+ functions (`CJK', `CJKb', etc.).
+
+
+Version 4.8.1:
+10-Aug-2008
+ new:
+ SUN Wen-Chang has contributed the CJKspace.sty package
+ which modifies the `CJK*' environment to suppress spaces
+ only after CJK characters. See CJKspace.txt for
+ details.
+
+ errors:
+ Pinyin syllable macros (defined in pinyin.sty) were not
+ robust, causing problems with indices, for example.
+
+ Some Chinese .fd and .fdx files were missing for fonts
+ which are present in the forthcoming TeXLive
+ distribution.
+
+
+Version 4.8.2:
+29-Dec-2008
+ new:
+ CJKnumb.sty:
+ The new command \CJKdigits* is the same as \CJKdigits
+ but uses the traditional glyph for digit zero.
+
+ changed:
+ The various directories `norasi' and `garuda' have been
+ changed to `norasi-c90' and `garuda-c90', respectively.
+
+ Thai support has been updated to use the fonts from
+ thailatex version 0.4.2. For easier maintainance it is
+ now expected that the PFB and AFM files (for `norasi'
+ and `garuda') are no longer renamed.
+
+ errors:
+ Poor-man's bold fonts could work incorrectly for
+ substituted fonts.
+
+ \Unicode didn't use proper glyph representation forms in
+ vertical mode.
+
+
+Version 4.8.3:
+07-May-2012
+ new:
+ CJKfntef.sty:
+ New commands \varCJKunderline, \CJKunderanyline,
+ \CJKunderanysymbol. See the example file `CJKfntef.tex'
+ for typical usage.
+
+ cjk-enc.el:
+ Emacs 23 and newer is now supported, thanks to patches
+ from Leung Hin-Tak.
+
+ Leung Hin-Tak also contributed Thai support for UTF-8
+ encoding, making emacs an alternative to Thai word
+ separator programs like `cttex' or `swath'. See the
+ example file `thai_utf8.tex' for a typical usage.
+
+ changed:
+ Special XeTeX support has been removed (file `xCJK.sty'
+ and others). Please use the separate `xeCJK' package
+ instead.
+
+ Peter Breitenlohner contributed various minor fixes and
+ improvements to the many conversion programs like
+ `cjklatex' or `bg5conv'.
+
+ The Thai metrics files for `norasi' and `garuda' were
+ updated to version 0.5 of the `font-tlwg' bundle.
+
+ errors:
+ CJKfntef.sty:
+ An incompatibility with recent versions of `ulem.sty'
+ was fixed.
+
+ ruby.sty:
+ Fix case where furigana is smaller than base glyph.
+
+
+Version 4.8.4:
+18-Apr-2015
+ errors:
+ CJKutf8.sty:
+ Fix space handling of non-CJK characters.
+
+ CJK.sty:
+ In \Unicode, fix conditional to allow line breaks.
+
+
+Version 4.8.5:
+16-Oct-2021
+ new:
+ Hyphenation patterns for pinyin syllables:
+ The patterns have been extended to cover accented pinyin
+ syllables, too.
+
+ [Pinyin patterns are distributed via the `tex-hyphen'
+ package and are by default activated in TeXLive.]
+
+ errors:
+ CJK.sty:
+ Make it work with recent LaTeX versions. Note, however,
+ that this problem was not visible to the end user since
+ the LaTeX kernel contained a first-aid fix to circumvent
+ the issue.
+
+ cjk-enc.el:
+ Make it work with Emacs 25 and later.
+
+ Hyphenation patterns for pinyin syllables:
+ Investigation has shown that the apostrophe before a
+ syllable starting with `a', `e', or `o' should vanish if
+ a line break occurs. Consequently, character ' is no
+ longer part of the hyphenation patterns. The apostrophe
+ should now be entered with the Babel shorthand "'.
+
+---End of history.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/japanese/README b/language/chinese/CJK/cjk-4.8.5/doc/japanese/README
new file mode 100644
index 0000000000..ab5101887a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/japanese/README
@@ -0,0 +1,18 @@
+* The documentation files in this directory describe version 3.1.0; mule2cjk
+* no longer exists---please read cjk-enc.txt for the new interaction between
+* Mule and CJK. Until now I couldn't reach the author again.
+
+In this directory you find a suite of small documentation files which deal
+with CJK and other Japanese features/systems in relation to TeX. They were
+contributed by TANAKA Shinichiro <tanaka3@ifos.se.fujitsu.co.jp>.
+
+japanese.jis is the Japanese version of japanese.txt . Note that this file
+and the file shibuaki.txt contain Japanese characters in JUNET encoding.
+
+Please send any comments and suggestions to the author of these doc files.
+Questions related to non-CJK topics should be asked in the fj.comp.text
+news group since the author only uses CJK.
+
+
+Documentation how to use Wadalab fonts can be found in the contrib/wadalab
+directory.
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/japanese/ascii.txt b/language/chinese/CJK/cjk-4.8.5/doc/japanese/ascii.txt
new file mode 100644
index 0000000000..41815cca5a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/japanese/ascii.txt
@@ -0,0 +1,58 @@
+ASCII Co. was founded by Mr. Nishi Kazuhiko, Mr. Tsukamoto, and Mr. Gunji.
+This company works in the software and publishing field. So ASCII was
+interested in the TeX system. They developed "ASCII Nihongo TeX" in
+cooperation with a group of the Keio University in 1987. ASCII Nihongo TeX
+is freeware. ASCII Co. implemented this system on MS-DOS in 1989 and sold
+it. ASCII Co. added the capability of vertical typesetting to Nihongo TeX---
+this is called the p version or pTeX (publishing TeX).
+
+ASCII translated some important books into the Japanese language. These
+books are of course typesetted with Nihongo TeX.
+
+ "The TeX book", "The Metafont book" Knuth.
+
+ "LaTeX: A Document Preparation System" Lamport.
+
+Many articles about TeX appear in the "UNIX magazine" published monthly by
+ASCII.
+
+
+Some features of Nihongo TeX:
+
+ 1. The dvi file format is different from the original TeX's dvi file
+ format. (NTT-JTeX's dvi file format is the same as original one. So we
+ can use NTT-JTeX's dviware for the CJK package.)
+
+ 2. Nihongo TeX is not only capable of using TeX Font Metric files (tfm),
+ but can also use Japanese Font Metric files (jfm). The jfm file format
+ is defined as an extension of the tfm file format for Nihongo TeX. One
+ jfm file has about 7000 kanji character metrics and kerning
+ informations to cover entire JIS fonts (and thus avoiding subfonts).
+ [See shibuaki.txt for some details about space handling between
+ Japanese and ASCII characters.]
+
+ 3. Characters can be printed vertically.
+
+
+In 1992 Tsukamoto and Gunji retired from ASCII Co. and founded Impress Co.,
+and some engineers specialized on TeX moved from ASCII to Impress.
+
+Impress Co. works in same field as ASCII Co., namely software and
+publishing. In 1994 Impress made and sold "TeX for Windows" based on an
+older version of ASCII Nihongo TeX (a modified TeX version 2.99). This
+system runs on Windows 3.1, Windows 95 or Windows NT and has been sold to
+many PC users. Literature is also available for "TeX for Windows".
+
+A major drawback of this system is that it is not yet based on TeX 3 and
+thus cannot fully support LaTeX2e or multilingual issues.
+
+
+In November 1995 ASCII announced the latest version of Nihongo TeX (pTeX
+2.1.1) which is based on TeX 3.1415; this package also contains a format
+file of LaTeX2e <1995/06/01>.
+
+At the time of this writing (1996/02/09) ASCII Nihongo TeX's version is pTeX
+2.1.4 .
+
+
+Version 1.0 Beta2 (1996/02/09) written by tanaka3@ifos.se.fujitsu.co.jp
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/japanese/japanese.jis b/language/chinese/CJK/cjk-4.8.5/doc/japanese/japanese.jis
new file mode 100644
index 0000000000..69e034c6d1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/japanese/japanese.jis
@@ -0,0 +1,642 @@
+This is the file japanese.jis of the CJK macro package ver. 4.1.0
+(20-Nov-1996).
+
+(Font metric $B$,(B $BF|K\8l(B PS $B%U%)%s%HFbB"$N(B PostScript $B%W%j%s%?!<$H6&MQ$7(B
+$B$F;H$&;v$,2DG=$J(B) DNP $B%U%)%s%H$H!"EOJU%U%)%s%H$N;H$$J}$K$D$$$F$^$H$a$F(B
+$B$"$j$^$9!#(B
+
+hbf2gf $B$H6&$K;H$&(B kanji48 font $B$N;H$$J}$OB>$N(B CJK bitmap files $B$HF1$8(B
+$B$G$9!#>\:Y$O(B hbf2gf.txt $B$K=q$+$l$F$$$^$9!#(B
+
+
+kanji48 font
+------------
+
+$B$3$N(B font $B$O$I$3$K$"$j$^$9$+!)(B)
+
+Host ftp.tex.ac.uk
+ Location: /pub/archive/fonts/CJK
+ FILE -rw-rw-r-- 1 ctan TeX 742459 Dec 1 00:01 kanji48.tar.gz
+Host ftp.dante.de
+ Location: /tex-archive/fonts/CJK
+ FILE -rw-rw-r-- 1 Mr.Ftp server 742459 Dec 1 00:01 kanji48.tar.gz
+
+$B$^$?$O!"$"$J$?$N%5%$%H$N6a$/$N(B CTAN $B$N%_%i!<$r$7$F$$$k%5%$%H$K$"$j$^$9!#(B
+
+
+$B$I$&$d$C$F(B CJK $B$+$i;H$&$N$G$9$+!)(B)
+
+$B0J2<$N$h$&$K(B CJK.sty $B$GF|K\8l$NJ8>O$r=q$$$F$/$@$5$$(B:
+
+with latex:
+
+ \documentclass[a4paper]{article}
+ \topmargin=-3.5cm
+ \textheight=26cm
+ \usepackage{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}{JIS}{song}
+
+ .....
+ < "$BF|K\8l$NJ8>O(B" >
+ .....
+
+ \end{CJK*}
+ \end{document}
+
+
+with mulatex:
+
+ \documentclass[a4paper]{article}
+ ....
+ \usepackage[global]{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}{}{}
+
+ .....
+ < "$BF|K\8l$NJ8>O(B" >
+ .....
+
+ \end{CJK*}
+ \end{document}
+
+
+CJK $B%Q%C%1!<%8$O(B CJK $B$H(B CJK* $B$H$$$&#2$D$N4D6-$rDs6!$7$^$9!#(BCJK* $B$N4D6-(B
+$B$O(B CJK $BJ8;z(B($BF|K\8l!"4Z9q8l!"Cf9q8l(B)$B$N8e$m$N6uGr$r05=L$7$^$9!#(BCJK $B$N4D(B
+$B6-$O05=L$7$^$;$s!#(B
+
+$BF|K\8l$7$+=q$+$J$$$N$G$"$l$P!"(BCJK* $B$N4D6-$r;H$&$Y$-$G$7$g$&!#$I$&$7$F(B
+$B$b(B(CJK* $B4D6-$NCf$G(B) CJK $BJ8;z$N8e$K6uGr$,I,MW$J>l9g$K$O(B `\ ' $B$d(B `{}' $B$J(B
+$B$I$N$h$&$J(B TeX $B%3%^%s%I$r;H$o$J$1$l$P$J$j$^$;$s!#(B
+
+$B$^$?!"F|K\8l0J30$N8@8l$NCf$G$bF|K\8l$r=q$/$3$H$,$G$-$k$h$&$K!"(Bmulatex
+$B$r;H$&$J$i!"(B
+
+ \usepackage[global]{CJK}
+
+$B$H@k8@$9$k;v$r6/$/?d>)$7$^$9!#>\:Y$O(B mule2cjk.doc $B$r8+$F2<$5$$!#(B
+
+
+DNP $B%U%)%s%H(B
+------------
+
+DNP fonts $B$H$O$J$s$G$9$+!)(B)
+
+DNP $B$H$OF|K\$NBg<j0u:~2q<R$G$"$kBgF|K\0u:~$N$3$H$G$9!#(BDNP $B%U%)%s%H$OBg(B
+$BF|K\0u:~$K$h$C$F:n$i$l$?>&MQ%U%)%s%H$G$9!#<+J,$N%5%$%H$K$9$G$K(B DNP $B%U%)(B
+$B%s%H$,%$%s%9%H!<%k$5$l$F$$$k$J$i!"$=$l$r$D$+$&$Y$-$G$7$g$&!#(BDNP $B%U%)%s(B
+$B%H$r%(%_%e%l!<%H$9$k$?$a$KEOJU%U%)%s%H$r%+%9%?%^%$%:$7$?EOJU(B DNP $B%U%)(B
+$B%s%H$O(B freeware $B$H$7$F;HMQ$9$k$3$H$,$G$-$^$9!#(BDNP $B%U%)%s%H$r%(%_%e%l!<(B
+$B%H$9$kJ}K!$O%7%s%\%j%C%/%j%s%/$G$9!#(B
+
+$B$3$N(B font $B$O$I$3$K$"$j$^$9$+!)(B )
+
+ watanabe-dnp (pk files)
+ ftp.math.s.chiba-u.ac.jp://tex/watanabe-dnp/300
+ jb10-300pk.tar.gz jb10-622pk.tar.gz jm10-329pk.tar.gz
+ jm10-746pk.tar.gz jb10-329pk.tar.gz jb10-746pk.tar.gz
+ jm10-360pk.tar.gz jm8-300pk.tar.gz jb10-360pk.tar.gz
+ jb8-300pk.tar.gz jm10-432pk.tar.gz jm9-300pk.tar.gz
+ jb10-432pk.tar.gz jb9-300pk.tar.gz jm10-518pk.tar.gz
+ jb10-518pk.tar.gz jm10-300pk.tar.gz jm10-622pk.tar.gz
+ tfm files
+ ftp.math.s.chiba-u.ac.jp://tex/watanabe-dnp/tfm-dnp.tar.gz
+ ftp.math.s.chiba-u.ac.jp://tex/watanabe-dnp/tfm.tar.gz
+ tools for symbolic link
+ ftp.math.s.chiba-u.ac.jp://tex/watanabe-dnp/fake.tar.gz
+
+$B$I$&$d$C$F%;%C%H%"%C%W$9$k$N$G$7$g$&$+!)(B)
+
+ $B$"$J$?$N(B font $B%G%#%l%/%H%j$r(B $fonts $B$H2>Dj$7$^$9!#(B
+ (e.g. /usr/local/lib/tex/fonts/japan)
+ $B$5$i$K!">e5-$N%U%!%$%k$NCV$+$l$F$$$k%G%#%l%/%H%j$r(B $src $B$H2>Dj(B
+ $B$7$^$9!#(B
+ (e.g. /usr/local/src)
+
+ ftp server $B$+$i(B get $B$7$?%U%!%$%k$rE83+$7$^$9!#(B
+
+ % cd $src
+ % gunzip -c fake.tar.gz | tar xvf -
+ % gunzip -c jd....pk.tar.gz | tar xvf -
+ % gunzip -c jm....pk.tar.gz | tar xvf -
+ % gunzip -c tfm.tar.gz | tar xvf -
+
+ $B%G%#%l%/%H%j$N:n@.!#(B
+
+ % cd $fonts
+ % mkdir $fonts/watanabe-dnp
+ % mkdir $fonts/watanabe-dnp/jd300
+ % mkdir $fonts/watanabe-dnp/tfm
+
+ $B%U%!%$%k$r(B copy $B$7$^$9!#(B
+
+ % cd $fonts/watanabe-dnp
+ % cp $src/fake/* .
+ % cp $src/tfm/* tfm
+ % cp $src/*pk/*pk jd300
+
+ $BA4$F$NEOJU%U%)%s%H$r:n@.$7$^$9!#(B
+
+ % make mk-300ex
+
+ $B%7%s%\%j%C%/%j%s%/$rD%$j$^$9!#(B
+
+ % mkdir $fonts/dnp
+ % cd $fonts/dnp
+ % cp $fonts/watanabe-dnp/LNFAKE .
+
+ $B<!$K(B dnp $B%G%#%l%/%H%j$N(B `LNFAKE' $B$rJT=8$7$^$9!#(B`wdir' $B$NItJ,$r(B
+ $B$"$J$?$,EOJU(B DNP $B%U%)%s%H$r%$%s%9%H!<%k$7$?%G%#%l%/%H%j$K%;%C%H(B
+ $B$7$^$9!#(B
+
+ wdir=../watanabe-dnp/jd300/
+
+ $B$=$N8e!"0J2<$r<B9T$7$F2<$5$$!#(B
+
+ % LNFAKE jm dm
+ % LNFAKE jb dg
+
+
+ $B%$%s%9%H!<%k8e$N%G%#%l%/%H%j!<%D%j!<$O0J2<$N$h$&$K$J$j$^$9(B:
+
+ $fonts/ +- watanabe-dnp/ +-jd300/ (all pk files)
+ | |
+ | +-tfm/
+ | |
+ | +-Makefile, FAKEDNP, FAKETFM, fake.c ...
+ |
+ +- dnp/
+
+ $fonts/watanabe-dnp/jd300 $B$H(B $fonts/dnp $B$@$1$,I,MW$J$N$G!"(B
+ $fonts/watanabe-dnp/tfm/ $B$dI,MW$NL5$$%U%!%$%k$O:o=|$7$F9=$$$^$;$s!#(B
+
+ tfm $B$r%$%s%9%H!<%k$7$F$"$k%G%#%l%/%H%j$K0\$C$F!"0J2<$r<B9T$7$F$/$@(B
+ $B$5$$!#(B
+
+
+ % gunzip -c tfm-dnp.tar.gz | tar xvf -
+
+ $B$=$l$+$i!"(Btfm-dnp $B$N%U%k%Q%9$r4D6-JQ?t(B TEXFONTS $B$KDI2C$7$F2<$5$$!#(B
+
+
+$B$I$&$d$C$F(B CJK $B$+$i;H$&$N$G$9$+!)(B)
+
+DNP $B%U%)%s%H$G(B CJK.sty $B$r;H$&Nc$G$9!#(B
+
+with latex:
+
+ \documentclass[a4paper]{article}
+ \topmargin=-3.5cm
+ \textheight=26cm
+ \usepackage{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}[dnp]{JIS}{song}
+
+ < "$BF|K\8l$NJ8>O(B" >
+
+ \end{CJK*}
+ \end{document}
+
+
+with mulatex:
+
+ \documentclass[a4paper]{article}
+ ....
+ \usepackage[global]{CJK}
+ \usepackage{indentfirst}
+
+ \CJKfontenc{JIS}{dnp}
+
+ \begin{document}
+ \begin{CJK*}{}{}
+
+ < "$BF|K\8l$NJ8>O(B" >
+
+ \end{CJK*}
+ \end{document}
+
+
+[$B$J$<!"(Bmulatex $B$H6&$K(B `\begin{CJK*}[dnp]{}{}' $B$H=q$$$F$O$$$1$J$$(B
+$B$+$K$D$$$F$O!"(Bmule2cjk.doc $B$rFI$s$G2<$5$$(B]
+
+
+$BEOJU(B $B%U%)%s%H(B
+-------------
+
+$B%*%j%8%J%k$NEOJU%U%)%s%H$b$^$?!"(BCJK $B$N4D6-$G;H$&;v$,=PMh$^$9!#(B
+
+$B$3$N(B font $B$O$I$3$K$"$j$^$9$+!)(B)
+
+ watanabe-jfonts (pk files)
+ ftp.iij.ad.jp://pub/TeX/fonts/watanabe-jfonts/300
+ b250.lzh b274.lzh b300.lzh b329.lzh b360.lzh
+ b432.lzh b518.lzh b622.lzh b746.lzh m250.lzh
+ m274.lzh m300.lzh m329.lzh m360.lzh m432.lzh
+ m518.lzh m622.lzh m746.lzh
+
+ ftp.iij.ad.jp://pub/TeX/fonts/watanabe-jfonts/400
+
+ tfm files
+ ftp.iij.ad.jp://pub/TeX/fonts/watanabe-jfonts/tfmfiles.lzh
+
+
+$B$I$&$d$C$F(B CJK $B$+$i;H$&$N$G$9$+!)(B)
+
+$BEOJU%U%)%s%H$+$i(B CJK $B$r;H$&Nc$r0J2<$K<($7$^$9!#(B
+
+with latex:
+
+ \documentclass[a4paper]{article}
+ \topmargin=-3.5cm
+ \textheight=26cm
+ \usepackage{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}[wn]{JIS}{song}
+
+ < "$BF|K\8l$NJ8>O(B" >
+
+ \end{CJK*}
+ \end{document}
+
+
+with mulatex:
+
+ \documentclass[a4paper]{article}
+ ....
+ \usepackage[global]{CJK}
+ \usepackage{indentfirst}
+
+ \CJKfontenc{JIS}{wn}
+
+ \begin{document}
+ \begin{CJK*}{}{}
+
+ < "$BF|K\8l$NJ8>O(B" >
+
+ \end{CJK*}
+ \end{document}
+
+
+compilation and coding-system
+-----------------------------
+
+$B$b$7!"(Blatex $B%U%!%$%k$r(B latex $B%3%^%s%I$r;H$C$F%3%s%Q%$%k$9$k$J$i!"%U%!(B
+$B%$%k$rF|K\8l(B EUC $B$GJ]B8$7$J$1$l$P$J$j$^$;$s!"$=$7$F(B
+
+ latex yourfile
+
+$B$H$7$F(B latex $B%U%!%$%k$r=hM}$7$F2<$5$$!#(B
+
+[$B%U%!%$%k$r(B SJIS $B$GJ]B8$9$k;v=PMh$^$9!#$=$N;~$O(B CJK $B$N4D6-$K$*$1$k%(%s(B
+$B%3!<%G%#%s%0%Q%i%a!<%?$r(B JIS $B$NBe$o$j$K(B SJIS $B$K$7$J$1$l$P$J$j$^$;$s!#(B
+SJIS$B$N4D6-$G$b(B JIS $B$N%U%)%s%H$r;H$$$^$9!#(B]
+
+$B$b$7(B latex $B%U%!%$%k$r(B mulatex $B%3%^%s%I$r;H$C$F%3%s%Q%$%k$9$k$J$i!"(B
+latex file $B$rJ]B8$9$k;~$K(B coding $B%7%9%F%`$K4X$7$F$$$/$D$+$NA*Br;h$r;}(B
+$B$D;v$,=PMh$^$9!#(BCJK $B%Q%C%1!<%8$K%G%U%)%k%H$GIU$$$FMh$k(B mulatex $B$r;H$&(B
+$B$J$i(B latex file $B$r(B Mule $B$N(B internal code$B$GJ]B8$7$F!"(B
+
+ mulatex yourfile
+
+$B$H$7$F(B latex $B%U%!%$%k$r=hM}$7$F2<$5$$!#(B
+
+[mulatex $B$O(B CJK $B%Q%C%1!<%8$N(B utils/mule2cjk $B$H$$$&%G%#%l%/%H%j$KCV$+(B
+$B$l$F$$$^$9!#(Bmule2cjk.doc $B$r;2>H$7$F2<$5$$!#(B]
+
+$B$7$+$7!"(BMule $B$N(B internal code $B$,I8=`$N%3!<%I7O$G$J$$$H$+!"(BMule $B0J30$G(B
+$BFI$a$J$$$H$+!">-MhJQ$o$C$F$7$^$&$+$b$7$l$J$$$H$$$&M}M3$G!"(Blatex file
+$B$r(B Mule $B$N(B internal code $B$GJ]B8$7$?$/$J$$>l9g$O!"(Blatex file $B$r!"(B
+ISO2022 $B%(%s%3!<%G%#%s%0$r4p$K$7$?(B *junet* $B$GJ]B8$9$k$+!"(BX window
+system $B$G(B Compound Text Encoding $B$H$7$F;H$o$l$F$$$k(B *ctext* $B$GJ]B8$9$k(B
+$B$3$H$,$G$-$^$9!#0J2<$N$&$A$N0l$D$N(B mulatex shell script $B$GCV$-49$($F2<(B
+$B$5$$!#(B
+
+ : mulatex for *junet*
+
+ % cat mulatex
+ #!/bin/sh
+ # mulatex : LaTeX2e for Mule's *junet* encoding
+ #
+ fname=`echo $1 | sed 's/\.[^\.]*$//g'`
+ coco '*junet*' '*internal*' < $1 | mule2cjk > $fname.cjk
+ st=$?
+ if [ $st -ne 0 ] ; then
+ exit $st
+ fi
+ latex $fname.cjk
+ st=$?
+ if [ -f $fname.cjk ] ; then
+ /bin/rm -f $fname.cjk
+ fi
+ exit $st
+ %
+
+ : mulatex for *ctext*
+
+ % cat mulatex
+ #!/bin/sh
+ # mulatex : LaTeX2e for Mule's *ctext* encoding
+ #
+ fname=`echo $1 | sed 's/\.[^\.]*$//g'`
+ coco '*ctext*' '*internal*' < $1 | mule2cjk > $fname.cjk
+ st=$?
+ if [ $st -ne 0 ] ; then
+ exit $st
+ fi
+ latex $fname.cjk
+ st=$?
+ if [ -f $fname.cjk ] ; then
+ /bin/rm -f $fname.cjk
+ fi
+ exit $st
+ %
+
+auctex $BL5$7$G(B mule $B$r;H$&>l9g$O!"0J2<$N(B Lisp code $B$r=i4|2=%U%!%$%k(B
+`.emacs' $B$KIU$12C$($F2<$5$$!#(B
+
+ : `.emacs' for *junet*
+
+ (add-hook 'LaTeX-mode-hook
+ (function (lambda ()
+ (set-file-coding-system *junet*)
+ )))
+
+ : `.emacs' for *ctext*
+
+ (add-hook 'LaTeX-mode-hook
+ (function (lambda ()
+ (set-file-coding-system *ctext*)
+ )))
+
+`coco' $B$O(B Mule $B$N(B package $B$K4^$^$l$F$$$k%W%m%0%i%`$G$9!#(B
+
+
+auctex
+------
+
+auctex $B$O(B TeX $B$H(B LaTeX $B%f!<%6!<$N$?$a$N(B elisp $B%Q%C%1!<%8$G$9!#(BCJK $B$N4D(B
+$B6-$r(B auctex $B$KE}9g$9$k$N$O4JC1$G$9!#;H$$J}$O!"(Bdvi $B%U%!%$%k$r%3%s%Q%$%k(B
+$B$9$k$?$a$N%?%$%W%;%C%H%3%^%s%I$,(B latex $B$G$O$J$/(B mulatex $B$G$"$kE@$r=|$1(B
+$B$P!"I8=`$N(B LaTeX $B$HA4$/F1$8$G$9!#0J2<$N%3!<%I$r$"$J$?$N(B `.emacs' $B$+(B
+($B$b$72DG=$J$i(B tex-site.el $B$K(B)$BDI2C$7$F2<$5$$!#(B
+
+ : `.emacs' for auctex users
+
+ (add-hook 'LaTeX-mode-hook
+ (function (lambda ()
+ (set-file-coding-system *junet*)
+ (nconc
+ TeX-command-list
+ (list
+ (list "MuLaTeX" "aucmulatex %t" 'TeX-run-LaTeX nil t)
+ )
+ )
+ (setq TeX-command-default "MuLaTeX")
+ )))
+
+
+ : mulatex for auctex users
+
+ % cat aucmulatex
+ #!/bin/sh
+ # aucmulatex : LaTeX2e in auctex mode for Mule's *junet* encoding
+ #
+ fname=`echo $1 | sed 's/\.[^\.]*$//g'`
+ coco '*junet*' '*internal*' < $1 | mule2cjk > $fname.cjk
+ st=$?
+ if [ $st -ne 0 ] ; then
+ exit $st
+ fi
+ latex \\nonstopmode\\input{$fname.cjk}
+ st=$?
+ if [ -f $fname.cjk ] ; then
+ /bin/rm -f $fname.cjk
+ fi
+ exit $st
+ %
+
+ $B$3$NNc$O!"(B*junet* $B$K$D$$$F$N$_=q$+$l$F$$$^$9$,!"$b$A$m$sB>$N%3!<%I(B
+ $B7O$G$bF1MM$K;H$($^$9!#(B
+
+
+auctex (yet another usage)
+----------------------------
+
+Shell $B%9%/%j%W%H$r;H$C$?(B mulatex $B$NJQ$o$j$K(B $BD>@\(B elisp $B$r=q$/;v$b$G$-(B
+$B$^$9!#(BLaTeX $B%U%!%$%k$,(B *junet* $B$d(B *ctext*, *euc-japan* $B$H$$$C$?%3!<%I(B
+$B7O$G=q$+$l$F$$$?$H$7$F$b!"(BMule $B$O<+F0E*$K$=$l$i$N%3!<%I$rH=JL$9$k$G$7$g(B
+$B$&!#0J2<$N%3!<%I$r$"$J$?$N(B `.emacs' $B$+(B($B$b$72DG=$J$i(B tex-site.el $B$K(B)$BDI(B
+$B2C$7$F2<$5$$!#(B
+
+ : `.emacs' for auctex user (for Mule 2.3 based on emacs 19.28)
+
+ (add-hook 'LaTeX-mode-hook
+ (function (lambda ()
+ (nconc
+ TeX-command-list
+ (list
+ (list "MuLaTeX" "latex '\\nonstopmode\\input{%c}'"
+ 'TeX-run-MuLaTeX nil t)
+ )
+ )
+ (nconc
+ TeX-expand-list
+ (list
+ (list "%c" 'file "cjk")
+ ))
+ (setq TeX-command-default "MuLaTeX")
+ )))
+
+ (define-program-coding-system nil "mule2cjk" *internal*)
+
+ (defvar TeX-LaTeX-CJK-tmpfile nil)
+
+ (defun TeX-MuLaTeX-sentinel (process name)
+ (prog1
+ (TeX-LaTeX-sentinel process name)
+ (delete-file TeX-LaTeX-CJK-tmpfile)))
+
+ ; customized from TeX-run-LaTeX
+ (defun TeX-run-MuLaTeX (name command file)
+ "Run mule2cjk and latex on current TeX buffer."
+
+ (let ((TeX-LaTeX-CJK-tmpbuffer (generate-new-buffer-name "cjk")))
+ (setq TeX-LaTeX-CJK-tmpfile (concat file ".cjk"))
+ (generate-new-buffer TeX-LaTeX-CJK-tmpbuffer)
+ (call-process-region
+ (point-min) (point-max) "mule2cjk" nil TeX-LaTeX-CJK-tmpbuffer nil)
+ (set-buffer TeX-LaTeX-CJK-tmpbuffer)
+ (write-region (point-min) (point-max)
+ TeX-LaTeX-CJK-tmpfile nil nil *internal*)
+
+ (let ((process (TeX-run-format name command file)))
+ (setq TeX-sentinel-function 'TeX-MuLaTeX-sentinel)
+ (if TeX-process-asynchronous
+ process
+ (TeX-synchronous-sentinel name file process)))
+ (kill-buffer TeX-LaTeX-CJK-tmpbuffer)))
+
+
+indentfirst.sty
+---------------
+
+$BF|K\8lJ8>O$NCJMn$N%$%s%G%s%H$N$D$1J}$O%*%j%8%J%k$N(B latex $B$N%$%s%G%s%H$N(B
+$BIU$1J}$H0[$C$F$$$^$9!#$3$NLdBj$r2r7h$9$k$?$a$K!"(B`indentfirst.sty' $B$H$$(B
+$B$&!">o$K:G=i$NCJMn$G%$%s%G%s%H$9$k$?$a$N%9%?%$%k%U%!%$%k$,(B LaTeX2e $B$N(B
+official tool $B$NCf$K$"$j$^$9!#(B
+
+indentfirst.sty $B$O$I$3$K$"$j$^$9$+!)(B)
+
+Host ftp.dante.de
+
+ Location: /tex-archive/macros/latex/packages/tools
+ FILE rw-rw-r-- 1492 Dec 14 17:46 indentfirst.dtx
+
+$B$^$?$O!"$"$J$?$N%5%$%H$N6a$/$N(B CTAN $B$N%_%i!<$r$7$F$$$k%5%$%H$K$"$j$^$9!#(B
+
+/pub/TeX/CTAN/macros/latex/packages/tools $B$K$"$kA4$F$N%U%!%$%k$r(B get
+$B$7$F$=$3$K4^$^$l$k(B readme.txt $B$rFI$s$G$+$i%$%s%9%H!<%k$7$?J}$,$$$$$G(B
+$B$7$g$&!#$=$NCf$K$ONc$($P(B tabular $B$d(B verbatim $B$H$$$C$?Hs>o$KM-MQ$J%9%?(B
+$B%$%k%U%!%$%k$,4^$^$l$F$$$^$9!#(B
+
+\maketitle
+----------
+
+$BF|K\8l$N%?%$%H%k$r=q$-$?$$;~$O!"(B\maketitle $B%3%^%s%I$O(B CJK $B$N4D6-$NFbB&(B
+$B$K$J$/$F$O$$$1$^$;$s!#$J$<$J$i!"F|K\8l$N%?%$%H%k$O(B CJK $BJ8;z$r4^$`$+$i(B
+$B$G$9!#(B
+
+$BNc(B)
+
+ \documentclass[a4paper]{article}
+ ....
+ \usepackage[global]{CJK}
+ \usepackage{indentfirst}
+
+ \begin{CJK*}{}{}
+ \title{ < "$BF|K\8l$NJ8>O(B" > }
+ \author{ < "$BF|K\8l$NJ8>O(B" > }
+ \end{CJK*}
+
+ \begin{document}
+ \begin{CJK*}{}{}
+
+ \maketitle
+ .....
+ < "$BF|K\8l$NJ8>O(B" >
+ .....
+
+ \end{CJK*}
+ \end{document}
+
+
+JIS.cap
+-------
+
+CJK $B$G$OF|K\8l(B caption $B$r;H$&$3$H$b$G$-$^$9!#$=$N$?$a$K$O!"(B($BI8=`$N(B
+class $B$rCV$-49$($F$7$^$&(B) koma-script $B%Q%C%1!<%8$,I,MW$G$9!#(B($B>\$7$/$O(B
+CJK.txt $B$N(B captions $B$r;2>H$7$F$/$@$5$$!#(B)
+
+[CJK 4.1.0 $B$h$jA0$N%P!<%8%g%s$G$O$3$N5!G=$OF|K\8l$K4X$7$F$&$^$/F0:n$7(B
+ $B$^$;$s!#(B]
+
+
+Koma-script $B$O$I$3$K$"$j$^$9$+!)(B)
+
+Host ftp.dante.de
+
+ Location: /tex-archive/macros/latex/contrib/supported
+ DIRECTORY rwxr-xr-x 1024 Jan 23 12:20 koma-script
+
+$B$^$?$O!"$"$J$?$N%5%$%H$N6a$/$N(B CTAN $B$N%_%i!<$r$7$F$$$k%5%$%H$K$"$j$^$9!#(B
+
+$B$I$&$d$C$F(B CJK $B$+$i;H$&$N$G$9$+!)(B)
+
+CJK JIS $B4D6-$NCf$G0J2<$N%3%^%s%I$r=q$/;v$K$h$C$F(B
+
+ \CJKcaption{JIS}
+
+$BF|K\8l(B caption $B$rM-8z$K$9$k;v$,$G$-$^$9!#(B
+
+ CJK.sty $B$H(B Koma-script $B$GF|K\8l(B caption $B$r;H$&$?$a$K$O(B, $B0J2<$NNc$r(B
+ $B$NMM$K$7$F$/$@$5$$!#(B
+
+ % srcartcl is a stylefile of Koma-script
+ \documentclass{scrartcl}
+ \topmargin=-3.5cm
+ \textheight=26cm
+ \usepackage{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}[dnp]{JIS}{song}
+ \CJKcaption{JIS}
+
+ < "$BF|K\8l$NJ8>O(B " >
+
+ % $BF|K\8l(B Caption
+ \refname{< "$BF|K\8l$NJ8>O(B " >}
+
+ \end{CJK*}
+ \end{document}
+
+
+\newpage
+--------
+
+CJK $B$N%3%^%s%I$,L$Dj5A$G$"$k$H$$$&%(%i!<$K=P$/$o$9>l9g$K$O!"(BCJK $B4D6-$,(B
+$B=*N;$9$kD>A0$G$=$N%Z!<%8$r(B($B%a%b%j$+$i%U%!%$%k$X(B)$B=q$-=P$9I,MW$,$"$j$^$9!#(B
+$B$J$<$J$i!"(BLaTeX $B$O(B CJK $B4D6-$r=*N;8e$K(B(CJK $B%3%^%s%I$r4^$`(B)$B%X%C%@$r(B($B%U%!(B
+$B%$%k$X(B)$B=q$-9~$`$3$H$,$"$k$+$i$G$9!#(B($B>\$7$/$O(B CJK.txt $B$N(B Possible
+errors $B$r;2>H$7$F$/$@$5$$!#(B)
+
+
+$BNc(B)
+
+ \documentclass[a4paper]{article}
+ \usepackage{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}{JIS}{song}
+
+ < "$BF|K\8l$NJ8>O(B" >
+ .....
+ \newpage
+ \end{CJK*}
+ \end{document}
+
+
+$BF|K\8l(B Postscript $B%W%j%s%?!<(B
+----------------------------
+
+$B<+J,$N%5%$%H$K(B /Ryumin-Light $B$H(B /GothicBBB-Medium $B$r<BAu$7$F$$$k$+!"$b(B
+$B$7$/$O%(%_%e%l!<%H$G$-$kF|K\8l(B PS $B%U%)%s%H$rFbB"$7$F$$$k(B PostScript $B%W(B
+$B%j%s%?!<$,$"$l$P!"(BDNP $B%U%)%s%H%a%H%j%C%/$r;}$D(B dnp-tfm (DNP fonts $B;2>H(B)
+$B$K$h$C$F:n$i$l$?(B dvi $B%U%!%$%k$r4JC1$K0u:~$9$k;v$,$G$-$^$9!#(Bdvi2ps $B$OF|(B
+$BK\8l(B PostScript $B%W%j%s%?$N%I%i%$%P!<%=%U%H$G$9!#$^$?F1MM$K(B DNP $B%U%)%s%H(B
+$B$HF1$8%a%H%j%C%/$r;}$DEOJU(B DNP $B%U%)%s%H$r(B preview $B$K;H$&$3$H$b$G$-$^$9!#(B
+
+dvi2ps $B$O$I$3$K$"$j$^$9$+!)(B)
+
+Host ftp.math.s.chiba-u.ac.jp
+
+ Location: /tex
+ FILE rw-r--r-- 112970 Dec 1 1994 dvi2ps-1.91j.tar.gz
+
+
+------------------
+Version 1.0 Beta7 (1996/02/03)
+ Tanaka Shinichiro Email: tanaka3@ifos.se.fujitsu.co.jp
+
+
+
+---End of japanese.jis---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/japanese/japanese.txt b/language/chinese/CJK/cjk-4.8.5/doc/japanese/japanese.txt
new file mode 100644
index 0000000000..e637fdb0d7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/japanese/japanese.txt
@@ -0,0 +1,637 @@
+This is the file japanese.txt of the CJK macro package ver. 4.1.0
+(20-Nov-1996).
+
+It concentrates on the use of DNP fonts (their font metrics can be used
+in conjunction with PS printers which have their own builtin Japanese fonts)
+and watanabe jfonts.
+
+The use of the kanji48 bitmap font together with hbf2gf is similar to all
+other CJK bitmap files and is documented in detail in the file hbf2gf.txt .
+
+
+kanji48 font
+------------
+
+Where is the font ? )
+
+Host ftp.tex.ac.uk
+ Location: /pub/archive/fonts/CJK
+ FILE -rw-rw-r-- 1 ctan TeX 742459 Dec 1 00:01 kanji48.tar.gz
+Host ftp.dante.de
+ Location: /tex-archive/fonts/CJK
+ FILE -rw-rw-r-- 1 Mr.Ftp server 742459 Dec 1 00:01 kanji48.tar.gz
+
+or your nearest CTAN mirror ftp sites.
+
+
+How to use it in CJK ? )
+
+Use CJK.sty with Japanese as follows:
+
+with latex:
+
+ \documentclass[a4paper]{article}
+ \topmargin=-3.5cm
+ \textheight=26cm
+ \usepackage{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}{JIS}{song}
+
+ .....
+ < Japanese text >
+ .....
+
+ \end{CJK*}
+ \end{document}
+
+
+with mulatex:
+
+ \documentclass[a4paper]{article}
+ ....
+ \usepackage[global]{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}{}{}
+
+ .....
+ < Japanese text >
+ .....
+
+ \end{CJK*}
+ \end{document}
+
+
+The package CJK offers two environments: CJK and CJK*. CJK* suppresses
+spaces followed by a CJK character, whereas CJK doesn't.
+
+If you write only Japanese, you should use the CJK* environment. If you
+really need a space directly followed by a JIS character, you must then use
+TeX commands like `\ ', `{} ', etc.
+
+It is highly recommended to declare
+
+ \usepackage[global]{CJK}
+
+if you use mulatex to be able to write Japanese inside of other
+environments. See mule2cjk.doc for details.
+
+
+DNP fonts
+---------
+
+What are DNP fonts ? )
+
+DNP stands for "Dai Nippon Printing" (a big printing company in Japan). DNP
+fonts are commercial fonts made by this company; if real DNP fonts have been
+already installed at your site, you should use them. But watanabe-dnp fonts,
+which are customized from watanabe-jfonts to emulate DNP fonts, are
+freeware. The method of emulation is symbolic name linking.
+
+
+Where are the fonts ? )
+
+ watanabe-dnp (pk files)
+ ftp.math.s.chiba-u.ac.jp://tex/watanabe-dnp/300
+ jb10-300pk.tar.gz jb10-622pk.tar.gz jm10-329pk.tar.gz
+ jm10-746pk.tar.gz jb10-329pk.tar.gz jb10-746pk.tar.gz
+ jm10-360pk.tar.gz jm8-300pk.tar.gz jb10-360pk.tar.gz
+ jb8-300pk.tar.gz jm10-432pk.tar.gz jm9-300pk.tar.gz
+ jb10-432pk.tar.gz jb9-300pk.tar.gz jm10-518pk.tar.gz
+ jb10-518pk.tar.gz jm10-300pk.tar.gz jm10-622pk.tar.gz
+ tfm files
+ ftp.math.s.chiba-u.ac.jp://tex/watanabe-dnp/tfm-dnp.tar.gz
+ ftp.math.s.chiba-u.ac.jp://tex/watanabe-dnp/tfm.tar.gz
+ tools for symbolic link
+ ftp.math.s.chiba-u.ac.jp://tex/watanabe-dnp/fake.tar.gz
+
+How to set them up ? )
+
+ Suppose your fonts directory is $fonts ,
+ (e.g. /usr/local/lib/tex/fonts/japan)
+ and your source directory in which the above files are put is $src.
+ (e.g. /usr/local/src)
+
+ You should now expand all fonts that you've downloaded from the ftp
+ server.
+
+ % cd $src
+ % gunzip -c fake.tar.gz | tar xvf -
+ % gunzip -c jd....pk.tar.gz | tar xvf -
+ % gunzip -c jm....pk.tar.gz | tar xvf -
+ % gunzip -c tfm.tar.gz | tar xvf -
+
+ Make directories.
+
+ % cd $fonts
+ % mkdir $fonts/watanabe-dnp
+ % mkdir $fonts/watanabe-dnp/jd300
+ % mkdir $fonts/watanabe-dnp/tfm
+
+ Copy files.
+
+ % cd $fonts/watanabe-dnp
+ % cp $src/fake/* .
+ % cp $src/tfm/* tfm
+ % cp $src/*pk/*pk jd300
+
+ Make all watanabe-dnp fonts.
+
+ % make mk-300ex
+
+ Make symbolic links.
+
+ % mkdir $fonts/dnp
+ % cd $fonts/dnp
+ % cp $fonts/watanabe-dnp/LNFAKE .
+
+ Next, edit the file `LNFAKE' in the dnp directory. Make sure that
+ `wdir' is set to the directory where you have installed watanabe-dnp
+ fonts:
+
+ wdir=../watanabe-dnp/jd300/
+
+ Then execute,
+
+ % LNFAKE jm dm
+ % LNFAKE jb dg
+
+
+ The directory tree after the installation will look like this:
+
+ $fonts/ +- watanabe-dnp/ +-jd300/ (all pk files)
+ | |
+ | +-tfm/
+ | |
+ | +-Makefile, FAKEDNP, FAKETFM, fake.c ...
+ |
+ +- dnp/
+
+ You will need only the directories $fonts/watanabe-dnp/jd300 and
+ $fonts/dnp. You can remove $fonts/watanabe-dnp/tfm/ together with the
+ other now unnecessary files.
+
+ Moving to your tfm directory, execute
+
+ % gunzip -c tfm-dnp.tar.gz | tar xvf -
+
+ Then add tfm-dnp (with the full path) to the TEXFONTS environment
+ variable.
+
+
+How to use them in CJK ? )
+
+See the following examples how to use CJK.sty with DNP fonts.
+
+with latex:
+
+ \documentclass[a4paper]{article}
+ \topmargin=-3.5cm
+ \textheight=26cm
+ \usepackage{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}[dnp]{JIS}{song}
+
+ <Japanese text>
+
+ \end{CJK*}
+ \end{document}
+
+
+with mulatex:
+
+ \documentclass[a4paper]{article}
+ ....
+ \usepackage[global]{CJK}
+ \usepackage{indentfirst}
+
+ \CJKfontenc{JIS}{dnp}
+
+ \begin{document}
+ \begin{CJK*}{}{}
+
+ <Japanese text>
+
+ \end{CJK*}
+ \end{document}
+
+
+[Read the file mule2cjk.doc for an explanation why you can't say
+ `\begin{CJK*}[dnp]{}{}' with mulatex.]
+
+
+watanabe jfonts
+---------------
+You can also use the original watanabe jfonts in a CJK environment.
+
+Where are the fonts ? )
+
+ watanabe-jfonts (pk files)
+ ftp.iij.ad.jp://pub/TeX/fonts/watanabe-jfonts/300
+ b250.lzh b274.lzh b300.lzh b329.lzh b360.lzh
+ b432.lzh b518.lzh b622.lzh b746.lzh m250.lzh
+ m274.lzh m300.lzh m329.lzh m360.lzh m432.lzh
+ m518.lzh m622.lzh m746.lzh
+
+ ftp.iij.ad.jp://pub/TeX/fonts/watanabe-jfonts/400
+
+ tfm files
+ ftp.iij.ad.jp://pub/TeX/fonts/watanabe-jfonts/tfmfiles.lzh
+
+
+How to use them in CJK ? )
+
+See the following examples how to use CJK.sty with watanabe jfonts.
+
+with latex:
+
+ \documentclass[a4paper]{article}
+ \topmargin=-3.5cm
+ \textheight=26cm
+ \usepackage{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}[wn]{JIS}{song}
+
+ <Japanese text>
+
+ \end{CJK*}
+ \end{document}
+
+
+with mulatex:
+
+ \documentclass[a4paper]{article}
+ ....
+ \usepackage[global]{CJK}
+ \usepackage{indentfirst}
+
+ \CJKfontenc{JIS}{wn}
+
+ \begin{document}
+ \begin{CJK*}{}{}
+
+ <Japanese text>
+
+ \end{CJK*}
+ \end{document}
+
+
+compilation and coding-system
+-----------------------------
+
+If you use `latex' to compile latex files, you must save these files in
+Japanese EUC and say
+
+ latex yourfile
+
+to process these files.
+
+[You can also save the file in SJIS encoding; then you must use `SJIS'
+ instead of `JIS' as the encoding parameter in the CJK environment. Note
+ that SJIS uses the JIS fonts.]
+
+If you use `mulatex' to compile latex files, there are several possibilities
+in which coding-system you can save your latex files. If you use the
+original mulatex script file that comes with the CJK package, you must save
+these files in Mule's internal code and say
+
+ mulatex yourfile
+
+to process these files.
+
+[mulatex is in utils/mule2cjk in CJK package directory. ref: mule2cjk.doc]
+
+But if you do not like the idea of saving latex files in Mule's internal
+encoding (this coding-system is not a standard coding-system, can not be
+read without Mule and will be changed in the future), you can save them in
+*junet*, which is based on ISO-2022 encoding, or in *ctext*, which is used
+in the X window system as Compound Text Encoding. Then replace the mulatex
+shell script with one of the following examples.
+
+
+ : mulatex for *junet*
+
+ % cat mulatex
+ #!/bin/sh
+ # mulatex : LaTeX2e for Mule's *junet* encoding
+ #
+ fname=`echo $1 | sed 's/\.[^\.]*$//g'`
+ coco '*junet*' '*internal*' < $1 | mule2cjk > $fname.cjk
+ st=$?
+ if [ $st -ne 0 ] ; then
+ exit $st
+ fi
+ latex $fname.cjk
+ st=$?
+ if [ -f $fname.cjk ] ; then
+ /bin/rm -f $fname.cjk
+ fi
+ exit $st
+ %
+
+ : mulatex for *ctext*
+
+ % cat mulatex
+ #!/bin/sh
+ # mulatex : LaTeX2e for Mule's *ctext* encoding
+ #
+ fname=`echo $1 | sed 's/\.[^\.]*$//g'`
+ coco '*ctext*' '*internal*' < $1 | mule2cjk > $fname.cjk
+ st=$?
+ if [ $st -ne 0 ] ; then
+ exit $st
+ fi
+ latex $fname.cjk
+ st=$?
+ if [ -f $fname.cjk ] ; then
+ /bin/rm -f $fname.cjk
+ fi
+ exit $st
+ %
+
+If you use Mule (without auctex), add one of the following pieces of
+Lisp code to your .emacs initialization file.
+
+ : `.emacs' for *junet*
+
+ (add-hook 'LaTeX-mode-hook
+ (function (lambda ()
+ (set-file-coding-system *junet*)
+ )))
+
+ : `.emacs' for *ctext*
+
+ (add-hook 'LaTeX-mode-hook
+ (function (lambda ()
+ (set-file-coding-system *ctext*)
+ )))
+
+The program `coco' is included in the Mule package.
+
+
+auctex
+------
+
+auctex is an elisp package for TeX and LaTeX users. It is easy to integrate
+the CJK environment into auctex; the usage is very similar to ordinary LaTeX
+with the exception that the typesetting command to compile a .dvi file is
+not `latex' but `mulatex'.
+
+Add the following code to your .emacs file (or, if possible, to
+tex-site.el).
+
+ : `.emacs' for auctex users
+
+ (add-hook 'LaTeX-mode-hook
+ (function (lambda ()
+ (set-file-coding-system *junet*)
+ (nconc
+ TeX-command-list
+ (list
+ (list "MuLaTeX" "aucmulatex %t" 'TeX-run-LaTeX nil t)
+ )
+ )
+ (setq TeX-command-default "MuLaTeX")
+ )))
+
+
+ : mulatex for auctex users
+
+ % cat aucmulatex
+ #!/bin/sh
+ # aucmulatex : LaTeX2e in auctex mode for Mule's *junet* encoding
+ #
+ fname=`echo $1 | sed 's/\.[^\.]*$//g'`
+ coco '*junet*' '*internal*' < $1 | mule2cjk > $fname.cjk
+ st=$?
+ if [ $st -ne 0 ] ; then
+ exit $st
+ fi
+ latex \\nonstopmode\\input{$fname.cjk}
+ st=$?
+ if [ -f $fname.cjk ] ; then
+ /bin/rm -f $fname.cjk
+ fi
+ exit $st
+ %
+
+ This example describes only the usage for *junet*. Of course, you can use
+ other coding systems too.
+
+
+auctex (yet another usage)
+----------------------------
+
+You can directly write elisp code instead of using a mulatex shell script
+(not for the faint-hearted :-). If TeX files are written in *junet*, *ctext*,
+*euc-japan* ... encoding, Mule will understand the input files automatically.
+Add the following code to your .emacs file (or, if possible, to tex-site.el).
+
+ : `.emacs' for auctex user (for Mule 2.3 based on emacs 19.28)
+
+ (add-hook 'LaTeX-mode-hook
+ (function (lambda ()
+ (nconc
+ TeX-command-list
+ (list
+ (list "MuLaTeX" "latex '\\nonstopmode\\input{%c}'"
+ 'TeX-run-MuLaTeX nil t)
+ )
+ )
+ (nconc
+ TeX-expand-list
+ (list
+ (list "%c" 'file "cjk")
+ ))
+ (setq TeX-command-default "MuLaTeX")
+ )))
+
+ (define-program-coding-system nil "mule2cjk" *internal*)
+
+ (defvar TeX-LaTeX-CJK-tmpfile nil)
+
+ (defun TeX-MuLaTeX-sentinel (process name)
+ (prog1
+ (TeX-LaTeX-sentinel process name)
+ (delete-file TeX-LaTeX-CJK-tmpfile)))
+
+ ; customized from TeX-run-LaTeX
+ (defun TeX-run-MuLaTeX (name command file)
+ "Run mule2cjk and latex on current TeX buffer."
+
+ (let ((TeX-LaTeX-CJK-tmpbuffer (generate-new-buffer-name "cjk")))
+ (setq TeX-LaTeX-CJK-tmpfile (concat file ".cjk"))
+ (generate-new-buffer TeX-LaTeX-CJK-tmpbuffer)
+ (call-process-region
+ (point-min) (point-max) "mule2cjk" nil TeX-LaTeX-CJK-tmpbuffer nil)
+ (set-buffer TeX-LaTeX-CJK-tmpbuffer)
+ (write-region (point-min) (point-max)
+ TeX-LaTeX-CJK-tmpfile nil nil *internal*)
+
+ (let ((process (TeX-run-format name command file)))
+ (setq TeX-sentinel-function 'TeX-MuLaTeX-sentinel)
+ (if TeX-process-asynchronous
+ process
+ (TeX-synchronous-sentinel name file process)))
+ (kill-buffer TeX-LaTeX-CJK-tmpbuffer)))
+
+
+indentfirst.sty
+---------------
+
+Japanese style of indenting paragraphs is different from the original latex.
+There is a style file called `indentfirst.sty' in the official LaTeX2e
+`tools' package which always indents the first paragraph.
+
+Where is indentfirst.sty ? )
+
+Host ftp.dante.de
+
+ Location: /tex-archive/macros/latex/packages/tools
+ FILE rw-rw-r-- 1492 Dec 14 17:46 indentfirst.dtx
+
+or your nearest CTAN mirror ftp sites.
+
+You should get all files in /pub/TeX/CTAN/macros/latex/packages/tools, read
+the readme.txt file and install them. There are many, many useful styles in it.
+(e.g. tabular or verbatim etc.)
+
+
+\maketitle
+----------
+
+When you write Japanese titles, make sure that the \maketitle command
+is inside of a CJK environment because it contains CJK characters.
+
+example )
+
+ \documentclass[a4paper]{article}
+ ....
+ \usepackage[global]{CJK}
+ \usepackage{indentfirst}
+
+ \begin{CJK*}{}{}
+ \title{ < Japanese Text > }
+ \author{ < Japanese Text > }
+ \end{CJK*}
+
+ \begin{document}
+ \begin{CJK*}{}{}
+
+ \maketitle
+ .....
+ < Japanese Text >
+ .....
+
+ \end{CJK*}
+ \end{document}
+
+
+
+JIS.cap
+-------
+
+CJK provides Japanese captions. You need the koma-script package (which is a
+replacement of the standard classes) to use the caption files. (ref: `CJK
+captions' in CJK.txt)
+
+[This feature does not work for Japanese in CJK versions prior to 4.1.0]
+
+
+Where is Koma-script ? )
+
+Host ftp.dante.de
+
+ Location: /tex-archive/macros/latex/contrib/supported
+ DIRECTORY rwxr-xr-x 1024 Jan 23 12:20 koma-script
+
+or your nearest CTAN mirror ftp sites.
+
+How to use it in CJK ? )
+
+Inside of your CJK JIS environment, put
+
+ \CJKcaption{JIS}
+
+to activate Japanese captions.
+
+ To use CJK.sty and Koma-script for Japanese captions, see the
+ example below.
+
+ % srcartcl is a stylefile of Koma-script
+ \documentclass{scrartcl}
+ \topmargin=-3.5cm
+ \textheight=26cm
+ \usepackage{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}[dnp]{JIS}{song}
+ \CJKcaption{JIS}
+
+ <Japanese text>
+
+ % Japanese Caption
+ \refname{<Japanese text>}
+
+ \end{CJK*}
+ \end{document}
+
+
+\newpage
+--------
+
+If you encounter an undefined CJK command (just before leaving the CJK
+environment), it is necessary to flush out the page, because LaTeX sometimes
+writes the headers _after_ the environment was closed. (ref: `Possible
+errors' in CJK.txt)
+
+
+example )
+
+ \documentclass[a4paper]{article}
+ \usepackage{CJK}
+ \usepackage{indentfirst}
+
+ \begin{document}
+ \begin{CJK*}{JIS}{song}
+
+ < Japanese text >
+ .....
+ \newpage
+ \end{CJK*}
+ \end{document}
+
+
+Japanese PostScript printer
+---------------------------
+
+If your site has a postscript printer with builtin Japanese PS fonts
+that implements /Ryumin-Light and /GothicBBB-Medium, or a printer that
+can emulate these fonts, you can easily use it to print out a dvi file
+made from dnp-tfm (see DNP fonts). `dvi2ps' is a tool to drive printer
+resident Japanese PS fonts. You can also use watanabe-dnp fonts for
+previewing, as their metric files are the same.
+
+Where is dvi2ps ? )
+
+Host ftp.math.s.chiba-u.ac.jp
+
+ Location: /tex
+ FILE rw-r--r-- 112970 Dec 1 1994 dvi2ps-1.91j.tar.gz
+
+
+------------------
+Version 1.0 Beta8 (1996/02/09)
+ Tanaka Shinichiro Email: tanaka3@ifos.se.fujitsu.co.jp
+
+
+
+---End of japanese.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/japanese/jp-fonts.txt b/language/chinese/CJK/cjk-4.8.5/doc/japanese/jp-fonts.txt
new file mode 100644
index 0000000000..49d2bae519
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/japanese/jp-fonts.txt
@@ -0,0 +1,54 @@
+Data: Japanese Fonts Environment
+
+
+Phototypesetting systems and font makers.
+ Syaken
+ Morisawa
+ Ryobi
+
+Font makers.
+ Dai Nippon Screen
+ Font Works
+ Ricoh ---> TrueType fonts (MS-mincho, MS-gothic; used in
+ Japanese MS-Windows)
+ (some further companies also make Japanese PS fonts, e.g. URW from
+ Germany)
+
+Printing companies.
+ Dai Nippon Printing (DNP)
+ Tokyo Syoseki Printing
+ Toppan Printing
+ (these are only the biggest companies; many further printing
+ companies are active in Japan)
+
+(Ref: `Dai' means `Big'. `Nippon' means `Japan'. `Syoseki' means `books'.
+ Ricoh is not only a font maker.)
+
+
+ 1. Syaken Co is the most famous and biggest company dealing with
+ phototypesetting systems and fonts in Japan.
+
+ 2. Syaken does not make PostScript Fonts. Their fonts are used
+ only on Syaken's special phototypesetting machines which many
+ printing companies use.
+
+ 3. Morisawa made Postscript Fonts in cooperation with Adobe Inc.
+ It is famous that their fonts have strong software copy
+ protection.
+
+ 4. There are inexpensive PS fonts called `HEISEI Mincho' and
+ `HEISEI Gothic' made by the Nippon standard association (I
+ don't know the exact English name of this association). These
+ fonts are not so beautiful as Morisawa's PS fonts but cheaper.
+
+ 5. In former times pure PostScript printers only had Morisawa's PS
+ fonts as builtin fonts. Now there are also pure PS printers
+ that use builtin Heisei fonts.
+
+ 6. The dvi2ps program outputs Morisawa's font metrics.
+
+
+This document contains no information about the relation about ASCII Nihongo
+TeX and Syaken's phototypesetting machines.
+
+Version 1.0B4 (1996/02/09) written by tanaka3@ifos.se.fujitsu.co.jp
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/japanese/jp-tex.txt b/language/chinese/CJK/cjk-4.8.5/doc/japanese/jp-tex.txt
new file mode 100644
index 0000000000..8effc41832
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/japanese/jp-tex.txt
@@ -0,0 +1,50 @@
+Data: NTT-JTeX's Standard Fonts Environment.
+
+ (La)TeX file
+ |
+ +--- dnp-tfm (DNP font metrics)
+ |
+ dvi file
+ |
+ +-----------------------+-----------------------+
+ | | |
+ dvips-5.58 dvips-5.58 dvi2ps-1.91j
+ | or dvi2ps-1.91j | or dvi2ps-1.91j |
+ | | |
+ real DNP fonts watanabe-dnp fonts Japanese PostScript
+ (pk fonts) (pk fonts) fonts
+ | | |
+ | | |
+ PostScript PostScript Japanese PostScript
+ Printer Printer Printer
+ (or dot Printer (or dot Printer
+ with GhostScript) with GhostScript)
+
+ 1. Real DNP fonts are commercial fonts sold by DNP.
+ DNP Fonts are *not* PostScript fonts but PK fonts.
+
+ 2. Watanabe DNP fonts are freeware. That have same font metrics as
+ real DNP Fonts but have different font names.
+
+ 3. DNP fonts are more beautiful than any available freeware fonts.
+ (The book written about NTT-JTeX is printed by DNP.)
+
+ 4. NTT-JTeX uses DNP Font Metrics by default.
+ dvi2ps is standard dviware for NTT-JTeX.
+
+ 5. The printer resident PostScript fonts have no relation to DNP
+ fonts.
+
+ 6. But dvi2ps use `DNP Font Metrics' to drive printer resident
+ PostScript fonts.
+
+ 7. Recently PostScript fonts are more used than DNP fonts since
+ Japanese PostScript printers are now inexpensive in Japan.
+
+
+This document contains no information about TrueType and outline (vector)
+fonts.
+
+Version 1.0B4 (1996/02/09) written by tanaka3@ifos.se.fujitsu.co.jp
+
+
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/japanese/preview.txt b/language/chinese/CJK/cjk-4.8.5/doc/japanese/preview.txt
new file mode 100644
index 0000000000..574eb29925
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/japanese/preview.txt
@@ -0,0 +1,39 @@
+Data: NTT-JTeX's Preview Environment.
+
+ (La)TeX file
+ |
+ +--- dnp-tfm (DNP fonts metric)
+ |
+ dvi file
+ |
+ +-----------------------+-----------------------+
+ | | |
+ | | |
+ real DNP fonts watanabe-dnp fonts Outline fonts
+ (pk fonts) (pk fonts) (vector fonts)
+ | | |
+ xdvi-20 xdvi-20 [ Now investigating ]
+
+
+ 1. If you use real DNP fonts or watanabe-dnp fonts for printing,
+ you should use them to preview dvi files too.
+
+ 2. If you use a Japanese Postscript printer for printing, there
+ are different possibilities to preview dvi files.
+
+ 1) pk fonts.
+
+ Because dvi files are made from dnp-tfm, you can preview the
+ dvi files by real DNP fonts or watanabe-dnp fonts.
+
+ Of course Japanese PS fonts are not exactly equal to DNP
+ fonts.
+
+ 2) outline fonts.
+
+ Outline fonts need less disc space than PK fonts. You can
+ use outline fonts (often called vector fonts) to preview
+ them.
+
+
+Version 1.0B3 (1996/02/09) written by tanaka3@ifos.se.fujitsu.co.jp
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/japanese/shibuaki.txt b/language/chinese/CJK/cjk-4.8.5/doc/japanese/shibuaki.txt
new file mode 100644
index 0000000000..ca317a82fd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/japanese/shibuaki.txt
@@ -0,0 +1,150 @@
+
+Handling of space between Kanji and non-Kanji characters.
+
+
+1. Shibuaki or Yonbuaki ($B;MJ,$"$-(B)
+
+
+
+ <Japanese Text> English word <Japanese Text>
+ ^ ^
+ This point This point
+
+ This space is called "Shibuaki" which has a width of a quarter of a kanji
+ font width. It is used only between Kanji and non-Kanji characters.
+ (between Kanji and Kanji only stretchable glue is used; between
+ ASCII and ASCII ordinary space.)
+
+
+2. Yakumono($BLsJ*(B)
+
+ Here are the rules how and where to use Shibuaki.
+
+2.1 Yakumono for ASCII characters
+
+ rules:
+
+ 0 No shibuaki between previous kanji character and the ASCII
+ character, and between next kanji character and the ASCII
+ character.
+
+ <Kanji character><ASCII character><Kanji Character>
+
+ 1 Shibuaki space only between previous kanji character and the
+ ASCII character.
+
+ <Kanji character> <ASCII character><Kanji Character>
+ ^
+ shibuaki
+
+ 2 Shibuaki space only between next kanji character and the ASCII
+ character.
+
+ <Kanji character><ASCII character> <Kanji Character>
+ ^
+ shibuaki
+
+ 3 Shibuaki spaces between kanji characters and ASCII word.
+
+ <Japanese Text> English word <Japanese Text>
+ ^ ^
+ shibuaki shibuaki
+
+
+ Rule 3 is always used by all printable ASCII characters without
+ the following yakumono ASCII characters.
+
+ [This is data from ASCII-Nihongo TeX.]
+
+ % ASCII yakumono characters and the corresponding rules
+ ( 1
+ ) 2
+ [ 1
+ ] 2
+ ` 1
+ ' 2
+ ; 2
+ , 2
+ . 2
+
+2.2 Yakumono for kanji characters
+
+ rules:
+
+ 0 No shibuaki space between previous ASCII character and the kanji
+ character, and between next ASCII character and the kanji
+ character.
+
+ <ASCII character><Kanji character><ASCII character>
+
+ 1 No shibuaki space between previous ASCII character and the kanji
+ character.
+
+ <ASCII character><Kanji character> <ASCII character>
+ ^
+ shibuaki
+
+ 2 No shibuaki space between next ASCII character and the kanji
+ character.
+
+ <ASCII character> <Kanji character><ASCII character>
+ ^
+ shibuaki
+
+ 3 Shibuaki spaces between kanji character and ASCII characters
+
+ <ASCII character> <Kanji character> <ASCII character>
+ ^ ^
+ shibuaki shibuaki
+
+ Rule 3 is always used by all kanji characters without the following
+ yakumono kanji characters.
+
+ [This is data from ASCII-Nihongo TeX.]
+
+ % Kanji yakumono characters and the corresponding rules
+ $B!"(B 1
+ $B!#(B 1
+ $B!$(B 1
+ $B!%(B 1
+ $B!((B 1
+ $B!)(B 1
+ $B!K(B 1
+ $B!J(B 2
+ $B!O(B 1
+ $B!N(B 2
+ $B!Q(B 1
+ $B!P(B 2
+ $B!F(B 2
+ $B!G(B 1
+ $B!H(B 2
+ $B!I(B 1
+ $B!L(B 2
+ $B!M(B 1
+ $B!R(B 2
+ $B!S(B 1
+ $B!T(B 2
+ $B!U(B 1
+ $B!V(B 2
+ $B!W(B 1
+ $B!X(B 2
+ $B!Y(B 1
+ $B!Z(B 2
+ $B![(B 1
+ $B!=(B 0
+ $B!A(B 0
+ $B!D(B 0
+ $B!o(B 0
+ $B!k(B 1
+ $B!l(B 1
+ $B!m(B 1
+
+
+
+
+Reference: "Nihongo TeX technical book I" ASCII co.
+ $BF|K\8l(BTeX$B%F%/%K%+%k%,%$%I(B I $B%"%9%-!<=PHG6I(B
+ 2200 yen.
+
+
+Version 1.0B1 written by tanaka3@ifos.se.fujitsu.co.jp
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/HOWTO.txt b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/HOWTO.txt
new file mode 100644
index 0000000000..432fbda51b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/HOWTO.txt
@@ -0,0 +1,425 @@
+How to make PDF files using CJK/LaTeX with embedded TrueType fonts
+
+Hin-Tak Leung <htl10@users.sourceforge.net>
+December 2003
+
+
+Introduction
+------------
+
+Existing CJK/LaTeX instruction for high-quality print-out tends to suggest
+permanently converting TrueType fonts (which had a better availability) to
+postscript sub-fonts; this document covers how to use TrueType fonts
+directly, and also preparing such PDF documents. Today, the PDF output
+format is slightly more popular than PostScript; also, even on US English
+systems, CJK font packs are available for font substitution in Adobe Acrobat
+Reader (and similar mechanisms exist for xpdf and ghostscript), which allows
+the generation of PDF files containing only important textual content but no
+embedded fonts. Such files are small enough to be e-mailed while preserving
+formatting, provided the recipient has the font packs installed. This
+document also covers the issues with no-embedded-font PDF files at the very
+end as well.
+
+The following steps are discussed below in greater detail:
+
+ 1. Finding the fonts.
+ 2. Getting and building some software: ttf2tfm, dvipdfmx.
+ Some other nice optional software: oto, the other freetype/freetype2
+ demo tools, ttfm, ttx.
+ 3. Using ttf2tfm, generating *.tfm and *.enc files for each font.
+ 4. Putting the fonts, the *.tfm files, and the *.enc files into the right
+ place in your system.
+ 5. Configuring dvipdfmx to use the new fonts.
+ 6. (optional) Configuring pdflatex to use the new fonts also.
+ 7. Configuring CJK/LaTeX to use those fonts.
+ 8. Testing.
+ 9. Problems and tips.
+
+I can read both traditional and simplified Chinese, and a substantial amount
+of Japanese, but there isn't any Korean-specific info here. Hopefully this
+is useful enough as a starting point at least for Korean-related
+experiments.
+
+The two most important references during this venture was the FreeBSD
+(Taiwan) Chinese HOWTO (it is substantially better and more up-to-date than
+the GNU/Linux one), and Edward G. J. Lee's various treatises on the net,
+particularly his `mycjk' notes. Unfortunately both are available in Chinese
+only, I believe.
+
+
+1. Fonts
+========
+
+ Chinese
+ -------
+
+ Arphic donated 4 high-quality Chinese fonts to the open-source community:
+ two for traditional and two for simplified Chinese, respectively. They are
+ shipped with Redhat 9 (which I used for most of this work) and Debian 3
+ and possibly also other GNU/Linux distributions; they can be downloaded
+ from Arphic's home site and, probably more convenient, from
+
+ ftp://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/
+
+ and its mirrors. Tip: Use `unzip -L' to convert file names to lowercase.
+
+ Redhat 9 also ships zysong, a simplified Chinese font. This font seems to
+ be licensed to Redhat only since it isn't found in other GNU/Linux
+ distributions. It is part of the package "ttfonts-zh_CN-2.12-1.noarch.rpm",
+ together with the two Arphic simplified Chinese fonts, on the 3rd CD
+ of the Redhat 9 CD set.
+
+ The Ministry of Education in Taiwan released a few fonts for
+ standardization: Currently two are available from the ministry's home page
+ (http://www.edu.tw/mandr/index.htm), but there are old versions with
+ different type faces floating around in the net.
+
+ CwTeX (a Chinese-enabled LaTeX implementation in Taiwan) ships 5 fonts.
+ (http://ccms.ntu.edu.tw/~ntut019/cwtex/cwtex.html)
+
+ Still available is the set of 8 TrueType fonts from NTU which were widely
+ used previously for CJK/LaTeX documents (http://input.cpatch.org/font/ntu/).
+
+ There is also a set of 10 quite fancy and unusual fonts for traditional
+ Chinese, developed by Dr Hann-Tzong Wang
+ (http://140.135.64.77/teacher/htwang/htwang.htm). It is distributed as
+ one of the standard font sets for FreeBSD Taiwan.
+ (http://www.freebsd.org/cgi/pds.cgi?ports/chinese/wangttf).
+
+ Japanese
+ --------
+
+ Redhat 9 and SuSE both ship the Kochi Gothic and Mincho fonts; Debian
+ ships Watanabe Mincho and Wadalab Gothic as part of the XTT TrueType font
+ server. The packages are: "ttfonts-ja-1.2-21.noarch.rpm" on the 3rd disc
+ of the Redhat 9 CD set, "ttf-kochi-mincho-0.2.20020727-81.noarch.rpm" and
+ "ttf-kochi-gothic-0.2.20030118-17.noarch.rpm" on SuSe 8.2,
+ "xtt-fonts" for Debian systems.
+
+ Other source of fonts (e.g. Win2k/WinXP/Win2k3 ships a few as standard,
+ and also localized version of MS Office, etc.) are mostly proprietary.
+
+ These instructions are known to work on those also, but I don't want to
+ go into specific details...
+
+
+2. ttf2tfm and dvipdfmx
+=======================
+
+ The specific details about compiler switches, include paths, are for
+ the Redhat 9 distribution. You may have to adapt them.
+
+ ttf2tfm
+ -------
+
+ ttf2tfm is part of ttf2pk package which is itself part of
+ freetype-contrib, a suite of programs depending on the FreeType 1 library.
+ Most GNU/Linux systems ship both FreeType 2 and FreeType 1 (that's the
+ case for RH9, in fact), which are *not* compatible. So I decided to build
+ the latest FreeType 1 static version and made freetype-contrib depend on
+ that to avoid using the out-dated library shipped with my system. The
+ mentioned packages can be downloaded from ftp.freetype.org.
+
+ Unpack freetype-current (adapt the `/home/hleung' part to suit yourself),
+ then do
+
+ cd /home/hleung/freetype-current
+ ./configure --enable-static --disable-shared --prefix=/home/hleung
+ make
+
+ Now unpack freetype-contrib-current inside the freetype-current tree, then
+ do
+
+ cd freetype-contrib-current/ttf2pk
+ CFLAGS=-I../../lib/ LDFLAGS=-L../../lib/.libs ./configure \
+ --with-kpathsea-lib=/usr/lib --with-kpathsea-include=/usr/include
+ make
+ make install
+
+ Important: At the end, you need to manually copy the data/*.sfd files into
+ ${TEXMF}/ttf2tfm and also ${TEXMF}/ttf2pk (a soft link from
+ ${TEXMF}/ttf2tfm to ${TEXMF}/ttf2pk will do also).
+
+ [The recent TeX directory structure (TDS), version 1.1, comes with a new
+ subdirectory fonts/sfd, to be accessed with the kpathsea variable
+ $SFDFONTS. ttf2tfm and other programs available in the TeXLive
+ distribution have already been updated to use it.]
+
+ The man pages of ttf2tfm and ttf2pk give detailed explanation of all
+ command line arguments.
+
+ Tip: I find a utility called "checkinstall" quite useful. Instead of `make
+ install' one calls `checkinstall' which does the same as `make install'
+ but also integrates the data nicely into the package management system for
+ Redhat/Debian/Slackware; this gives cleaner upgrades and uninstalls.
+
+ dvipdfmx
+ --------
+
+ http://project.ktug.or.kr/dvipdfmx/
+
+ For dvipdfmx I use
+
+ CFLAGS='-I/usr/kerberos/include -O2 -march=i386 -mcpu=i686' ./configure
+ make
+ make install
+
+ The include path is due to dependency on the kerberos library for PDF
+ encryption. Important: The 10 Wang fonts have some peculiarities; I
+ submitted a preliminary patch which the author has much refined and
+ incoporated into a new release. You need a version newer than 2003-08-11
+ if you want to use this set of fonts. From the ChangLog of dvipdfmx:
+
+ 2003-08-11 Jin-Hwan Cho <chofchof@ktug.or.kr>
+ * A faked font name was used for TrueType fonts without any PS
+ font name as suggested by Hin-Tak Leung.
+
+ [The recent TeX directory structure (TDS), version 1.1, comes with a new
+ subdirectory fonts/sfd, to be accessed with the kpathsea variable
+ $SFDFONTS. dvipdfmx and other programs available in the TeXLive
+ distribution have already been updated to use it.]
+
+
+3. Generating ttf and enc files
+===============================
+
+ OpenType Organizer (oto) : http://sourceforge.net/projects/oto/
+ True Type Font Manager (ttfm):
+ - part of Chinese GNU/Linux Extention http://cle.linux.org.tw/
+
+ You need to know what cmap (character map) the TrueType font (*.ttf or
+ *.ttc) contains. The utility programs oto, ftdump (two versions! --
+ FreeType 1 and FreeType 2 both have this demo program, showing quite
+ different information), and ttfinfo (part of ttfm) can show this info, and
+ some other information about your font as well. Only ftdump works on
+ TrueType collections (*.ttc), but the other two have their strengths also
+ (ttfinfo gives the most straightforward info, while oto gives some details
+ that ftdump doesn't show).
+
+ For detailed information on cmaps in a font you can use ttx, a tool to
+ assemble and disassemble OpenType fonts. It is available from
+ http://fonttools.sf.net.
+
+ If there is a Unicode cmap you can use ttf2tfm's `U*.sfd' files (see the
+ `@...@' argument for ttf2tfm); the command line for ttf2tfm is simpler
+ also. Otherwise you need to specify the platform (-P) and encoding (-E)
+ IDs.
+
+ Here is what works for me for the fonts I mentioned. Important: The font
+ stem name needs to be unique. Additionally, dvipdfmx doesn't like numbers
+ in the font stem name. I use a 4-letter combination. By LaTeX convention
+ it shouldn't be longer than 5 letters.
+
+ ttf2tfm bkai00mp.ttf -q -w bkai@UBig5@
+ ttf2tfm bsmi00lp.ttf -q -w bsmi@UBig5@
+ ttf2tfm gbsn00lp.ttf -q -w gbsn@UGB@
+ ttf2tfm gkai00mp.ttf -q -w gkai@UGB@
+
+ ttf2tfm zysong.ttf -q -w zysg@UGB@
+
+ ttf2tfm kai-linux.ttf -P 3 -E 4 -q -w mekl@Big5@
+ ttf2tfm edustd-15.ttf -P 3 -E 4 -q -w mest@Big5@
+ ttf2tfm moe_kai.ttf -P 3 -E 4 -q -w meko@Big5@
+ ttf2tfm moe_sung.ttf -P 3 -E 4 -q -w meso@Big5@
+
+ ttf2tfm ntu_li_m.ttf -P 3 -E 4 -q -w ntli@Big5@
+ ttf2tfm ntu_br.ttf -P 3 -E 4 -q -w ntbr@Big5@
+ ttf2tfm ntu_fs_m.ttf -P 3 -E 4 -q -w ntfs@Big5@
+ ttf2tfm ntu_kai.ttf -P 3 -E 4 -q -w ntka@Big5@
+ ttf2tfm ntu_mb.ttf -P 3 -E 4 -q -w ntmb@Big5@
+ ttf2tfm ntu_mm.ttf -P 3 -E 4 -q -w ntmm@Big5@
+ ttf2tfm ntu_mr.ttf -P 3 -E 4 -q -w ntmr@Big5@
+ ttf2tfm ntu_tw.ttf -P 3 -E 4 -q -w nttw@Big5@
+
+ ttf2tfm mttf.ttf -q -w cwtm@UBig5@
+ ttf2tfm kttf.ttf -q -w cwtk@UBig5@
+ ttf2tfm fttf.ttf -q -w cwtf@UBig5@
+ ttf2tfm bbttf.ttf -q -w cwtb@UBig5@
+ ttf2tfm rttf.ttf -q -w cwtr@UBig5@
+
+ ttf2tfm kochi-gothic.ttf -w kcgt@UJIS@
+ ttf2tfm kochi-mincho.ttf -w kcmc@UJIS@
+
+ ttf2tfm wadalab-gothic.ttf -P 3 -E 2 -w wdgt@SJIS@
+ ttf2tfm watanabe-mincho.ttf -P 3 -E 2 -w wnmc@SJIS@
+
+ The Wang's font set has some unusual properties, and need either
+ a new version of freetype 1 (after 2003-10 from CVS), or a slightly
+ modified "Big5.sfd", called "wcl.sfd" here:
+
+ ttf2tfm wcl-01.ttf -P 3 -E 4 -q -w wclj@wcl@
+ ttf2tfm wcl-02.ttf -P 3 -E 4 -q -w wclk@wcl@
+ ttf2tfm wcl-03.ttf -P 3 -E 4 -q -w wcll@wcl@
+ ttf2tfm wcl-04.ttf -P 3 -E 4 -q -w wclm@wcl@
+ ttf2tfm wcl-05.ttf -P 3 -E 4 -q -w wcln@wcl@
+ ttf2tfm wcl-06.ttf -P 3 -E 4 -q -w wclp@wcl@
+ ttf2tfm wcl-07.ttf -P 3 -E 4 -q -w wclq@wcl@
+ ttf2tfm wcl-08.ttf -P 3 -E 4 -q -w wclr@wcl@
+ ttf2tfm wcl-09.ttf -P 3 -E 4 -q -w wcls@wcl@
+ ttf2tfm wcl-10.ttf -P 3 -E 4 -q -w wclt@wcl@
+
+ As an example, here is what I do for a well-known proprietary simplified
+ Chinese font which has only a cmap for simplified Chinese:
+
+ ttf2tfm gkai00m.ttf -P 3 -E 3 -q -w gkaim@EUC@
+
+ Here an example for a TrueType collection:
+
+ ttf2tfm dcai5.ttc -q -w dcaiq@UJIS@
+
+
+4. Putting the files where they should be
+=========================================
+
+ This is somewhat related to how kpathsea works and how latex (the program)
+ find its files. It is possible to set individual environment variables for
+ each of these items, but it is easier to set one: $TEXMF to a list of
+ locations, with a tree parallel to the system tree. Then do the following:
+
+ . Put the *.tfm files into a subdirectory of ${TEXMF}/fonts/tfm.
+ . Put the *.enc files into a subdirectory of ${TEXMF}/dvips.
+ . Put the *.ttf (or *.ttc) files into a subdirectory of
+ ${TEXMF}/fonts/truetype.
+ . Put the *.sfd files into ${TEXMF}/ttf2tfm or a subdirectory of it.
+ Don't forget to either copy them into ${TEXMF}/ttf2pk also or to set up
+ a link from ${TEXMF}/ttf2pk to ${TEXMF}/ttf2tfm.
+
+ Reason: dvipdfmx searches SFD files (which it needs for reassembling)
+ under ${TEXMF}/ttf2pk although we don't use ttf2pk anywhere. ttf2tfm
+ looks for them under its own name, of course.
+
+ [The recent TeX directory structure (TDS), version 1.1, comes with a new
+ subdirectory fonts/sfd, to be accessed with the kpathsea variable
+ $SFDFONTS. dvipdfmx and other programs available in the TeXLive
+ distribution have already been updated to use it.]
+
+ Important: Run texhash (mktexlsr) to rebuild the kpathsea database,
+ otherwise files won't be found. You have been warned!
+
+
+5., 6. Configuring dvipdfmx and (optionally) pdflatex
+=====================================================
+
+ cid-x.map, dvipdfmx.cfg, *.map
+
+ See for example, my own "cid-x.map" for the main font config file of
+ dvipdfmx -- all my own customization is at the very end after the line
+ "Hin-Tak Leung's custom setup below:". For each font xxxx, one needs
+ to add a line "f xxxx.map" into "dvipdfmx.cfg", and a fontmap
+ file "xxxx.map" into the dvipdfmx config directory --
+ ${TEXMF}/dvipdfm/config/ on my system (the missing
+ "x" is not a typo, as dvipdfmx originally derived from dvipdfm).
+ I have included cwbt.map, for one of the CwTeX fonts, as an example,
+ and my dvipdfmx.cfg as well.
+
+ Because I have a fair number of fonts I like to add, I wrote a little
+ perl script "gen-map.pl", which generates all the *.map files plus
+ a file called "map.list" which I can simply append to dvipdfmx.cfg,
+ from an internal table at the very top of the script.
+
+ pdflatex needs the same fontmap files for each new font - copy them into
+ ${TEXMF}/dvips/config/. Modify the updmap script which is used for
+ updating both pdflatex.cfg and dvips.cfg, and run the updmap script.
+ On teTeX 1.0.x, one needs to add to the "extra_modules=" entry the
+ *.map files for each font. My modified updmap is included as an
+ example "updmap.my", found as "/usr/share/texmf/dvips/config/updmap" on
+ a RH 9 system. On teTeX 2.0.x, updmap has a separate config file
+ updmap.cfg located in ${TEXMF}/web2c/.
+
+
+7. Configuring CJK/LaTeX
+========================
+
+ Copy the whole `texinput' directory of the CJK package into a directory
+ which is in your $TEXINPUTS path. Also create some new *.fd files there.
+ My "c00cwtb.fd" is included as an example; again, since I have quite
+ a few font files, I have created some template fd files as c*tmpl.fd,
+ and duplicating and change every "tmpl" string to "cwtb" inside
+ as needed like this:
+ cp c00tmpl.fd c00cxtb.fd
+ perl -pi -e "s/tmpl/cwtb/;" c00cwtb.fd
+
+ If you use Big5 or Shift-JIS encoding, compile the bg5conv and
+ sjisconv utilities; under Unix-like systems you can use the bg5pdflatex
+ and sjispdflatex scripts to access them conveniently.
+
+
+8. Testing
+==========
+
+ Just pick the relevant files in the CJK/examples directory and change the
+ font name to match. Either call pdflatex or call latex followed by
+ dvipdfmx. In general, I found that dvipdfmx generates much smaller files
+ (1/3 to 1/2 size).
+
+
+9. Problems
+===========
+
+ a. files can't be found
+
+ This is the most frequent problem. Setting the environment variable
+ KPATHSEA_DEBUG to -1 activates full debugging; you can then check
+ how latex/dvipdfmx/pdflatex tries to find those files. See the
+ kpathsea info pages for more details on debugging output.
+
+ For latex (the program) you only need the new custom-made *.fd files,
+ the files from CJK/texinput, and the tfm files. The *.fd files could be
+ broken -- check their contents. latex (the program) neither needs the
+ *.enc files nor the font files themselves.
+
+ If latex (the program) works, but dvipdfmx doesn't, then your dvipdfmx
+ configuration probably needs some tuning. Alternatively, the map files
+ or the font files are not found, etc. Note that dvipdfmx neither needs
+ the tfm files, nor the CJK/LaTeX input files, but it does need the
+ enc files.
+
+ pdflatex does everything in one step, so everything needs to be in the
+ right place.
+
+ b. Acrobat on GNU/Linux doesn't print PDF files generated with dvipdfmx
+
+ The problem is probably caused by ghostscript version 7.x which chokes
+ on the intermediate postscript file under some command options.
+ Upgrading to ghostscript 8.x should fix this printfilter problem. It is
+ *strongly* recommended to use ghostscript 8.11 or newer due to severe
+ problems with earlier versions.
+
+ c. no-font-embedded PDF files
+
+ This is quite simple to do with dvipdfmx: Just put an extra `!'
+ (exclamation mark) in the dvipdfmx configuration file in front of the
+ font which shouldn't be embedded.
+
+ A problem can arise if the PDF reader is not able to find a proper
+ substitution font if the font specified in the document isn't available.
+ I did some investigation and had a long discussion with the author of
+ dvipdfmx about this. Basically, it seems that win32 Acrobat Reader 6.x
+ will substitute any missing fonts with fonts from the Adobe CJK font
+ packs or from the system. Acrobat reader 5.x for GNU/Linux will only do
+ so -- and only with fonts from the CJK packs, not from the X server --
+ if the font name is one of the well-known ones for that region:
+ SimHei, SimSun (found on most MS Windows boxes), and some fonts of Arphic
+ and Dynafont which are very popular in the far east. Otherwise,
+ it aborts with an error message.
+
+ Besides the proprietary fonts mentioned in the last paragraph, only
+ Wang's fonts can be configured currently to be not embedded so that
+ acroread on GNU/Linux accepts them. I have spent much time looking
+ into this issue and apparently Acroread on GNU/Linux seems to do
+ font substitutions by looking at the capital letters in the font name.
+ Due to the missing PS name of the Wang's fonts (and our dvipdfmx
+ work-around on 2003-08-11 using the file name -- happened to be all
+ lowercase -- as the missing font name), they work by luck.
+
+ Both xpdf and ghostscript will substitute any missing fonts with a
+ specific font per language, if suitably configured. On Redhat 9, the
+ heavily adapted ghostscript will substitute automatically if some named
+ fonts from the CD are installed (without any extra effort); for xpdf it
+ is an extra few lines of configuration in ${HOME}/.xpdfrc to tell it
+ what font to use from the X server for substituting a missing font for a
+ particular language. So ghostscript works out of the box for a full RH
+ installation, whereas xpdf doesn't, but xpdf is more configurable and
+ the setting of what fall-back font to use can differ per user.
+
+---End of HOWTO.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/bkai.map b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/bkai.map
new file mode 100644
index 0000000000..71d205d501
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/bkai.map
@@ -0,0 +1,55 @@
+bkai01 bkai01 <bkai01.enc <bkai00mp.ttf
+bkai02 bkai02 <bkai02.enc <bkai00mp.ttf
+bkai03 bkai03 <bkai03.enc <bkai00mp.ttf
+bkai04 bkai04 <bkai04.enc <bkai00mp.ttf
+bkai05 bkai05 <bkai05.enc <bkai00mp.ttf
+bkai06 bkai06 <bkai06.enc <bkai00mp.ttf
+bkai07 bkai07 <bkai07.enc <bkai00mp.ttf
+bkai08 bkai08 <bkai08.enc <bkai00mp.ttf
+bkai09 bkai09 <bkai09.enc <bkai00mp.ttf
+bkai10 bkai10 <bkai10.enc <bkai00mp.ttf
+bkai11 bkai11 <bkai11.enc <bkai00mp.ttf
+bkai12 bkai12 <bkai12.enc <bkai00mp.ttf
+bkai13 bkai13 <bkai13.enc <bkai00mp.ttf
+bkai14 bkai14 <bkai14.enc <bkai00mp.ttf
+bkai15 bkai15 <bkai15.enc <bkai00mp.ttf
+bkai16 bkai16 <bkai16.enc <bkai00mp.ttf
+bkai17 bkai17 <bkai17.enc <bkai00mp.ttf
+bkai18 bkai18 <bkai18.enc <bkai00mp.ttf
+bkai19 bkai19 <bkai19.enc <bkai00mp.ttf
+bkai20 bkai20 <bkai20.enc <bkai00mp.ttf
+bkai21 bkai21 <bkai21.enc <bkai00mp.ttf
+bkai22 bkai22 <bkai22.enc <bkai00mp.ttf
+bkai23 bkai23 <bkai23.enc <bkai00mp.ttf
+bkai24 bkai24 <bkai24.enc <bkai00mp.ttf
+bkai25 bkai25 <bkai25.enc <bkai00mp.ttf
+bkai26 bkai26 <bkai26.enc <bkai00mp.ttf
+bkai27 bkai27 <bkai27.enc <bkai00mp.ttf
+bkai28 bkai28 <bkai28.enc <bkai00mp.ttf
+bkai29 bkai29 <bkai29.enc <bkai00mp.ttf
+bkai30 bkai30 <bkai30.enc <bkai00mp.ttf
+bkai31 bkai31 <bkai31.enc <bkai00mp.ttf
+bkai32 bkai32 <bkai32.enc <bkai00mp.ttf
+bkai33 bkai33 <bkai33.enc <bkai00mp.ttf
+bkai34 bkai34 <bkai34.enc <bkai00mp.ttf
+bkai35 bkai35 <bkai35.enc <bkai00mp.ttf
+bkai36 bkai36 <bkai36.enc <bkai00mp.ttf
+bkai37 bkai37 <bkai37.enc <bkai00mp.ttf
+bkai38 bkai38 <bkai38.enc <bkai00mp.ttf
+bkai39 bkai39 <bkai39.enc <bkai00mp.ttf
+bkai40 bkai40 <bkai40.enc <bkai00mp.ttf
+bkai41 bkai41 <bkai41.enc <bkai00mp.ttf
+bkai42 bkai42 <bkai42.enc <bkai00mp.ttf
+bkai43 bkai43 <bkai43.enc <bkai00mp.ttf
+bkai44 bkai44 <bkai44.enc <bkai00mp.ttf
+bkai45 bkai45 <bkai45.enc <bkai00mp.ttf
+bkai46 bkai46 <bkai46.enc <bkai00mp.ttf
+bkai47 bkai47 <bkai47.enc <bkai00mp.ttf
+bkai48 bkai48 <bkai48.enc <bkai00mp.ttf
+bkai49 bkai49 <bkai49.enc <bkai00mp.ttf
+bkai50 bkai50 <bkai50.enc <bkai00mp.ttf
+bkai51 bkai51 <bkai51.enc <bkai00mp.ttf
+bkai52 bkai52 <bkai52.enc <bkai00mp.ttf
+bkai53 bkai53 <bkai53.enc <bkai00mp.ttf
+bkai54 bkai54 <bkai54.enc <bkai00mp.ttf
+bkai55 bkai55 <bkai55.enc <bkai00mp.ttf
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/cid-x.map b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/cid-x.map
new file mode 100644
index 0000000000..595d421b81
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/cid-x.map
@@ -0,0 +1,364 @@
+%% FONTMAP: CID-keyed font mapping file for dvipdfmx
+%% =================================================
+%%
+%% Last modified: April 2, 2002
+%%
+%%
+%% SYNOPSIS
+%% --------
+%%
+%% TFMNAME[@SFDNAME@] ENCNAME [:INDEX:][!]FONTNAME[,VARIANT] [OPTIONS]
+%%
+%%
+%% DESCRIPTION
+%% -----------
+%%
+%% 1) TFMNAME[@SFDNAME@]
+%%
+%% TFM name is specified in the field `TFMNAME' without extension (.tfm),
+%% and the subfont definition name in the field `SFDNAME' without
+%% extension (.sfd). For example, jbtm@UKS@ specifies the TFM names,
+%% jbtm01 - jbtm35, used in the CJK package.
+%%
+%% 2) ENCNAME
+%%
+%% CMap resource name is specified in the field `ENCNAME'. It is used in
+%% dvipdfmx to convert double-byte character codes to CID numbers.
+%% For more details, see `doc/README'.
+%%
+%% 3) [:INDEX:][!]FONTNAME[,VARIANT]
+%%
+%% Font name is specified in the field `FONTNAME' with or without
+%% extension. The field `INDEX' is used for TrueType collections (.ttc)
+%% to specify the font index number. In the case of ordinary TrueType
+%% fonts (.ttf) the field should be `0'. The character `!' enables the
+%% no-embedding option. The stylistic variants (Bold, Italic, BoldItalic)
+%% are specified in the filed `VARIANT'. See examples below.
+%%
+%% 4) [OPTIONS]
+%%
+%% All options available in the original dvipdfm are also valid here.
+%% However, the slant option [-s number] is ignored for vertical mode,
+%% and the remap option [-r] is always ignored since it doesn't make
+%% sense for CID-keyed fonts.
+%%
+%%
+%% ** IMPORTANT **
+%%
+%% There is no default CMap, and the keyword `none' in the `ENCNAME' field is
+%% not allowed for CID-keyed font. Valid CMap name should be recorded in the
+%% `ENCNAME' field. Otherwise, the font will not be treated as a CID-keyed font.
+%%
+%% The format of the font mapping file is not compatible with the jpatch patch
+%% which expects keyword `none' or `default' in the `ENCNAME' field.
+%%
+%% Be sure that all CMaps used in the font mapping file are under the directory
+%% `${TEXMF}/dvipdfm/CMap', and all subfont definition files under the
+%% directory `${TEXMF}/dvipdfm/base'. CMap file name should coincide with CMap
+%% name.
+%%
+%%
+%% EXAMPLES
+%% --------
+%%
+%% 1) Pre-defined CIDFonts
+%%
+%% Minimal font information required by PDF viewers are available from
+%% dvipdfmx built-in data. The built-in data does not contain any glyph
+%% data required to render actual shape of each characters. Hence, PDF
+%% viewers must substitute those fonts with suitable one available from
+%% the system. The reproducibility and the correctness of document layout
+%% opened on the remote system is not always guaranteed, however, it seems
+%% not to cause any problems in general if you does not use special
+%% characters in your document. Please use those fonts if you are sure that
+%% all peoples that receives your documents have usable fonts installed on
+%% their system. It greatly reduces size of resulting PDF documents because
+%% no glyph data are embedded.
+%%
+%% Here is the list of pre-defined CIDFonts in dvipdfmx.
+%%
+%% ---------------------------------------------------------
+%% Language Acrobat pre-defined CIDFonts
+%% ---------------------------------------------------------
+%% Chinese/Simplified STSong-Light
+%% Chinese/Traditional MHei-Medium, MSung-Light
+%% Japanese HeiseiMin-W3, HeiseiKakuGo-W5
+%% Korean HYGoThic-Medium, HYSMyeongJo-Medium
+%% ---------------------------------------------------------
+
+%rml H HeiseiMin-W3
+%gbm H HeiseiKakuGo-W5
+%rmlv V HeiseiMin-W3
+%gbmv V HeiseiKakuGo-W5
+
+%% ** PostScript "standard" fonts (Japanese) are also pre-defined.
+%%
+%% Ryumin-Light, GothicBBB-Medium (Adobe-Japan1-2)
+
+rml H Ryumin-Light
+gbm H GothicBBB-Medium
+rmlv V Ryumin-Light
+gbmv V GothicBBB-Medium
+
+%% Note. If you apply vertical version (WMode 1) of CMaps to horizontal
+%% fonts (e.g., rml), dvipdfmx does horizontal positioning while PDF
+%% viewers apply vertical positioning for that font.
+%%
+%% Note. On some Mac platforms, Ryumin-Light and GothicBBB-Medium are not
+%% handled properly by Adobe products. Especially, if you have those fonts
+%% in the OCF format, you may want to avoid them.
+%%
+%%
+%% 2) OpenType CIDFonts (CIDFontType0)
+%%
+%% Postscript CID-keyed fonts are supported only in the CFF OpenType format
+%% with Type 2 charstrings.
+%%
+%% o Kozuka-Mincho sold by Adobe:
+
+kml H KozMinPro-Regular.otf
+
+%% o CFF/OpenType version of Kochi CIDFont:
+
+kochi-min H Kochi-Mincho.otf
+kochi-got H Kochi-Gothic.otf
+
+%% The suffix `.otf' is optional. Please use suffix `.otf' if needed.
+%%
+%%
+%% 3) TrueType CIDFonts (CIDFontType2)
+%%
+%% TrueType (.ttf) and TrueType collection (.ttc) are supported.
+%%
+%% o Japanese MS-Windows fonts
+
+msmin H :0:msmincho
+msgot H :0:msgothic
+
+%% MS-Mincho with proportional latin and kana:
+
+msminp H :1:msmincho
+
+%% o Kochi is TrueType (not a collection):
+
+kmin H :0:kochi-mincho
+kgot H :0:kochi-gothic
+
+%% o Korean MS-Windows fonts with stylistic variants (no-embedding)
+
+%jbtm@UKS@ UniKS-UCS2-H :0:!batang.ttc
+%jbtmo@UKS@ UniKS-UCS2-H :0:!batang.ttc,Italic
+%jbtb@UKS@ UniKS-UCS2-H :0:!batang.ttc,Bold
+%jbtbo@UKS@ UniKS-UCS2-H :0:!batang.ttc,BoldItalic
+
+%% o Baekmuk fonts (used with HLaTeX package)
+
+%bbtm@KS-HLaTeX@ KSCms-UHC-H :0:batang.ttf
+%bbtmo@UKS-HLaTeX@ UniKS-UCS2-H :0:batang.ttf -s .167
+
+
+%% Font Licensing Issue
+%% --------------------
+%%
+%% If you try to use the following font,
+
+hgskai H :0:hgrsksj
+
+%% you will see the following message:
+%%
+%% ** Embedding disabled due to licensing restriction **
+%%
+%% As this message indicates, font embedding is disabled because embedding
+%% is not allowed for this font. Also, please note that any documents that
+%% contains font with `Preview & Print' embedding licensing can be opened
+%% only for the purpose of previewing and/or printing. When fonts with this
+%% type of license are encountered, you will see the following message:
+%%
+%% ** NOTICE: This document contains `Preview & Print' only licensed font **
+%%
+%% In this case, you cannot distribute resulting PDF document if you are not
+%% absolutely sure that you are not violating license you acquired.
+%%
+%%
+%% Other Encodings
+%% ---------------
+%%
+%% Only 16-bit encodings are supported. The DVI format specification allows
+%% 24-bit and 32-bit (signed) long character codes, though.
+%%
+%% 1) JIS C 6226 (JIS78) character set with NEC extensions, ISO-2022-JP encoding:
+
+rmlx Ext-H Ryumin-Light
+
+%% or Shift-JIS encoding:
+
+rmlsjx Ext-RKSJ-H Ryumin-Light
+
+%% 2) Hojo-Kanji (JIS X 0212-1990): Adobe-Japan2 character collection
+
+hjmin Hojo-H :0:msmincho
+hjminv Hojo-V :0:msmincho
+
+%% You need ToUnicode CMap for the Adobe-Japan2 character collection.
+%% If you cannot find it, copy and paste from the "ToUnicode Mapping File
+%% Tutorial" (Adobe Technical Note #5411). Please change the CMap name and
+%% the ordering string from `Adobe-Japan2-000' to `Adobe-Japan2-UCS2' and
+%% from `Adobe_Japan2_000' to `Adobe_Japan2_UCS2', respectively. You must
+%% save it as Adobe-Japan2-UCS2.
+%%
+%% 3) Unicode encodings, Omega requires them. (not fully tested.)
+%%
+%% o Chinese
+
+ombkai UniCNS-UCS2-H :0:bkai00mp
+ombsmi UniCNS-UCS2-H :0:bsmi00lp
+omgkai UniGB-UCS2-H :0:gkai00mp
+omgbsn UniGB-UCS2-H :0:gbsn00lp
+
+%% o Japanese
+
+omrml UniJIS-UCS2-H Ryumin-Light
+
+%% o Korean
+
+omgtm UniKS-UCS2-H HYGoThic-Medium
+omubt UniKS-UCS2-H :0:batang
+
+%% 4) UTF8 encodings with CJK package
+%%
+%% It is possible to use several languages in a document with CJK package
+%% via the UTF8 encoding.
+
+cyberb@Unicode@ Identity-H :0:cyberbit.ttf
+
+%% Bitstream Cyberbit font is available at:
+%%
+%% http://ftp.netscape.com/pub/communicator/extras/fonts/windows/ReadMe.htm
+%%
+%%
+%% Custom CMap and Specialized Font
+%% --------------------------------
+%%
+%% All TrueType font should have TrueType cmap (character codes to
+%% glyph indices mapping) table with platform ID 3, and encoding ID
+%% 1. If you are using CMap `Dummy-H' having, say, registry string
+%% `My' and ordering string `Ordering' to map character codes used in
+%% the DVI file to CIDs, you must also have CMap resource named
+%% `My-Ordering-UCS2' (for encoding ID 1) which defines mapping from
+%% CID to character code used in the TrueType font:
+%%
+%% myfont Dummy-H :0:myfont.ttf
+%%
+%% Some font that have 511 glyphs (one for .notdef), split into two
+%% single-byte fonts for use with `plain' TeX, tied up to a single
+%% CID-keyed font:
+%%
+%% math1 Math-Symbol1 :0:msymbol.ttf
+%% math2 Math-Symbol2 :0:msymbol.ttf
+%%
+%% Arabic as CID-Keyed font:
+%%
+%% omarb UniArab-UCS2 :0:arabuni.ttf
+%%
+%% At present, accessing glyphs via glyph indices directly is not supported.
+%% It will be supported if someone need it.
+%%
+%% Please make your CMap resource file as simple as possible. The built-in
+%% CMap parser will fail if the structure of CMap file is too complicated.
+%%
+%%
+%% TODO
+%% ----
+%%
+%% o Supports TrueType UCS4 cmap table
+%%
+%% o Supports TrueType Symbol cmap table (under consideration)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Hin-Tak Leung's custom setup below: %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+cwtb@UBig5@ UniCNS-UCS2-H :0:bbttf.ttf
+cwtf@UBig5@ UniCNS-UCS2-H :0:fttf.ttf
+cwtk@UBig5@ UniCNS-UCS2-H :0:kttf.ttf
+cwtm@UBig5@ UniCNS-UCS2-H :0:mttf.ttf
+cwtr@UBig5@ UniCNS-UCS2-H :0:rttf.ttf
+%
+mekl@Big5@ ETen-B5-H :0:kai-linux.ttf
+mest@Big5@ ETen-B5-H :0:edustd-15.ttf
+mesx@Big5@ ETen-B5-H :0:edustds1.ttf
+mesy@Big5@ ETen-B5-H :0:edustds2.ttf
+meko@Big5@ ETen-B5-H :0:moe_kai.ttf
+meso@Big5@ ETen-B5-H :0:moe_sung.ttf
+%
+bkai@UBig5@ UniCNS-UCS2-H :0:bkai00mp.ttf
+bsmi@UBig5@ UniCNS-UCS2-H :0:bsmi00lp.ttf
+%
+gbsn@UGB@ UniGB-UCS2-H :0:gbsn00lp.ttf
+gkai@UGB@ UniGB-UCS2-H :0:gkai00mp.ttf
+%
+ntbr@Big5@ ETen-B5-H :0:ntu_br.ttf
+ntfs@Big5@ ETen-B5-H :0:ntu_fs_m.ttf
+ntka@Big5@ ETen-B5-H :0:ntu_kai.ttf
+ntli@Big5@ ETen-B5-H :0:ntu_li_m.ttf
+ntmb@Big5@ ETen-B5-H :0:ntu_mb.ttf
+ntmm@Big5@ ETen-B5-H :0:ntu_mm.ttf
+ntmr@Big5@ ETen-B5-H :0:ntu_mr.ttf
+nttw@Big5@ ETen-B5-H :0:ntu_tw.ttf
+%
+wclj@Big5@ ETen-B5-H :0:wcl-01.ttf
+wclk@Big5@ ETen-B5-H :0:wcl-02.ttf
+wcll@Big5@ ETen-B5-H :0:wcl-03.ttf
+wclm@Big5@ ETen-B5-H :0:wcl-04.ttf
+wcln@Big5@ ETen-B5-H :0:wcl-05.ttf
+wclp@Big5@ ETen-B5-H :0:wcl-06.ttf
+wclq@Big5@ ETen-B5-H :0:wcl-07.ttf
+wclr@Big5@ ETen-B5-H :0:wcl-08.ttf
+wcls@Big5@ ETen-B5-H :0:wcl-09.ttf
+wclt@Big5@ ETen-B5-H :0:wcl-10.ttf
+%
+zysg@UGB@ UniGB-UCS2-H :0:zysong.ttf
+%
+wnmc@SJIS@ Ext-RKSJ-H :0:watanabe-mincho.ttf
+wdgt@SJIS@ Ext-RKSJ-H :0:wadalab-gothic.ttf
+%
+kcgt@UJIS@ UniJIS-UCS2-H :0:kochi-gothic.ttf
+kcmc@UJIS@ UniJIS-UCS2-H :0:kochi-mincho.ttf
+%
+ykah@Big5@ ETen-B5-H :0:yka00hp.ttf
+gtrl@Big5@ ETen-B5-H :0:gtr00lp.ttf
+gtrm@Big5@ ETen-B5-H :0:gtr00mp.ttf
+leim@Big5@ ETen-B5-H :0:lei00mp.ttf
+heim@Big5@ ETen-B5-H :0:hei01mp.ttf
+sunm@Big5@ ETen-B5-H :0:sun00mp.ttf
+%
+gbsnl@EUC@ GB-EUC-H :0:gbsn00l.ttf
+ggtrl@EUC@ GB-EUC-H :0:ggtr00l.ttf
+gkaim@EUC@ GB-EUC-H :0:gkai00m.ttf
+gleim@EUC@ GB-EUC-H :0:glei00m.ttf
+gsinm@EUC@ GB-EUC-H :0:gsin00m.ttf
+tgtrl@EUC@ GB-EUC-H :0:tgtr00l.ttf
+tkaim@EUC@ GB-EUC-H :0:tkai00m.ttf
+tleim@EUC@ GB-EUC-H :0:tlei00m.ttf
+tooru@EUC@ GB-EUC-H :0:toor00u.ttf
+tovru@EUC@ GB-EUC-H :0:tovr00u.ttf
+tsinm@EUC@ GB-EUC-H :0:tsin00m.ttf
+%
+dcaiq@UJIS@ UniJIS-UCS2-H :0:dcai5.ttc
+dcailq@UJIS@ UniJIS-UCS2-H :0:dcail5.ttc
+dcaisq@UJIS@ UniJIS-UCS2-H :0:dcais5.ttc
+dccryq@UJIS@ UniJIS-UCS2-H :0:dccry5.ttc
+dchgmq@UJIS@ UniJIS-UCS2-H :0:dchgm5.ttc
+dchleiq@UJIS@ UniJIS-UCS2-H :0:dchlei5.ttc
+dcinlq@UJIS@ UniJIS-UCS2-H :0:dcinl5.ttc
+dckgmc@UJIS@ UniJIS-UCS2-H :0:dckgmc.ttc
+dclkaiq@UJIS@ UniJIS-UCS2-H :0:dclkai5.ttc
+dcysmr@UJIS@ UniJIS-UCS2-H :0:dcysm7.ttc
+dfcrdp@UJIS@ UniJIS-UCS2-H :0:dfcrd3.ttc
+dffrsp@UJIS@ UniJIS-UCS2-H :0:dffrs3.ttc
+dfgskr@UJIS@ UniJIS-UCS2-H :0:dfgsk7.ttc
+dfkaie@UJIS@ UniJIS-UCS2-H :0:dfkaie.ttc
+dfkbtp@UJIS@ UniJIS-UCS2-H :0:dfkbt3.ttc
+dfoyjq@UJIS@ UniJIS-UCS2-H :0:dfoyj5.ttc
+dfryss@UJIS@ UniJIS-UCS2-H :0:dfrys9.ttc
+dfshtq@UJIS@ UniJIS-UCS2-H :0:dfsht5.ttc
+dfshtr@UJIS@ UniJIS-UCS2-H :0:dfsht7.ttc
+dfskair@UJIS@ UniJIS-UCS2-H :0:dfskai7.ttc
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/cwtb.map b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/cwtb.map
new file mode 100644
index 0000000000..964c65c84a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/cwtb.map
@@ -0,0 +1,55 @@
+cwtb01 cwtb01 <cwtb01.enc <bbttf.ttf
+cwtb02 cwtb02 <cwtb02.enc <bbttf.ttf
+cwtb03 cwtb03 <cwtb03.enc <bbttf.ttf
+cwtb04 cwtb04 <cwtb04.enc <bbttf.ttf
+cwtb05 cwtb05 <cwtb05.enc <bbttf.ttf
+cwtb06 cwtb06 <cwtb06.enc <bbttf.ttf
+cwtb07 cwtb07 <cwtb07.enc <bbttf.ttf
+cwtb08 cwtb08 <cwtb08.enc <bbttf.ttf
+cwtb09 cwtb09 <cwtb09.enc <bbttf.ttf
+cwtb10 cwtb10 <cwtb10.enc <bbttf.ttf
+cwtb11 cwtb11 <cwtb11.enc <bbttf.ttf
+cwtb12 cwtb12 <cwtb12.enc <bbttf.ttf
+cwtb13 cwtb13 <cwtb13.enc <bbttf.ttf
+cwtb14 cwtb14 <cwtb14.enc <bbttf.ttf
+cwtb15 cwtb15 <cwtb15.enc <bbttf.ttf
+cwtb16 cwtb16 <cwtb16.enc <bbttf.ttf
+cwtb17 cwtb17 <cwtb17.enc <bbttf.ttf
+cwtb18 cwtb18 <cwtb18.enc <bbttf.ttf
+cwtb19 cwtb19 <cwtb19.enc <bbttf.ttf
+cwtb20 cwtb20 <cwtb20.enc <bbttf.ttf
+cwtb21 cwtb21 <cwtb21.enc <bbttf.ttf
+cwtb22 cwtb22 <cwtb22.enc <bbttf.ttf
+cwtb23 cwtb23 <cwtb23.enc <bbttf.ttf
+cwtb24 cwtb24 <cwtb24.enc <bbttf.ttf
+cwtb25 cwtb25 <cwtb25.enc <bbttf.ttf
+cwtb26 cwtb26 <cwtb26.enc <bbttf.ttf
+cwtb27 cwtb27 <cwtb27.enc <bbttf.ttf
+cwtb28 cwtb28 <cwtb28.enc <bbttf.ttf
+cwtb29 cwtb29 <cwtb29.enc <bbttf.ttf
+cwtb30 cwtb30 <cwtb30.enc <bbttf.ttf
+cwtb31 cwtb31 <cwtb31.enc <bbttf.ttf
+cwtb32 cwtb32 <cwtb32.enc <bbttf.ttf
+cwtb33 cwtb33 <cwtb33.enc <bbttf.ttf
+cwtb34 cwtb34 <cwtb34.enc <bbttf.ttf
+cwtb35 cwtb35 <cwtb35.enc <bbttf.ttf
+cwtb36 cwtb36 <cwtb36.enc <bbttf.ttf
+cwtb37 cwtb37 <cwtb37.enc <bbttf.ttf
+cwtb38 cwtb38 <cwtb38.enc <bbttf.ttf
+cwtb39 cwtb39 <cwtb39.enc <bbttf.ttf
+cwtb40 cwtb40 <cwtb40.enc <bbttf.ttf
+cwtb41 cwtb41 <cwtb41.enc <bbttf.ttf
+cwtb42 cwtb42 <cwtb42.enc <bbttf.ttf
+cwtb43 cwtb43 <cwtb43.enc <bbttf.ttf
+cwtb44 cwtb44 <cwtb44.enc <bbttf.ttf
+cwtb45 cwtb45 <cwtb45.enc <bbttf.ttf
+cwtb46 cwtb46 <cwtb46.enc <bbttf.ttf
+cwtb47 cwtb47 <cwtb47.enc <bbttf.ttf
+cwtb48 cwtb48 <cwtb48.enc <bbttf.ttf
+cwtb49 cwtb49 <cwtb49.enc <bbttf.ttf
+cwtb50 cwtb50 <cwtb50.enc <bbttf.ttf
+cwtb51 cwtb51 <cwtb51.enc <bbttf.ttf
+cwtb52 cwtb52 <cwtb52.enc <bbttf.ttf
+cwtb53 cwtb53 <cwtb53.enc <bbttf.ttf
+cwtb54 cwtb54 <cwtb54.enc <bbttf.ttf
+cwtb55 cwtb55 <cwtb55.enc <bbttf.ttf
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/dvipdfmx.cfg b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/dvipdfmx.cfg
new file mode 100644
index 0000000000..e1fd450a21
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/dvipdfmx.cfg
@@ -0,0 +1,164 @@
+% original config -- Made by MAW on 8/31/99
+% Distiller template examples. Uncomment
+% the appropriate one, or (preferably) create your own.
+% Put %i in the command line where the input file name should go.
+% Put %o in the command line where the output file name should go.
+% (dvipdfm must be able to supply the output file name to your
+% command line)
+% Put %b in the line somewhere if you want to specify the
+% "base" name of the input file, e.g., "foo" instead of "foo.eps"
+%
+% Note that it's probably a good idea to fully qualify
+% the paths so you can be sure what you are running
+
+% The following line works with Frank Siegert's pstill
+% D "/usr/local/bin/pstill -c -o %o %i"
+
+% The following line works with GhostScript
+% UNIX/Linux (borrowed from W32TeX by Akira Kakuto)
+D "gs -q -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dAutoFilterGrayImages=false -dAutoFilterColorImages=false -dGrayImageFilter=/FlateEncode -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=%o %i -c quit"
+% Win32 (borrowed from W32TeX by Akira Kakuto)
+% D "gswin32c -q -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dAutoFilterGrayImages=false -dAutoFilterColorImages=false -dGrayImageFilter=/FlateEncode -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=%o %i -c quit"
+% The following line works on compressed or uncompressed postscript with GhostScript
+% UNIX/Linux (borrowed from W32TeX by Akira Kakuto)
+% D "zcat -f %i | gs -q -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dUseFlateCompression=true -sOutputFile=%o - -c quit"
+% Win32 (borrowed from W32TeX by Akira Kakuto)
+% D "gzcat -f %i | gswin32c -q -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dUseFlateCompression=true -sOutputFile=%o - -c quit"
+
+% The following line works with Adobe Acrobat Distiller
+% D "/usr/local/bin/distill -quiet -pairs %i %o"
+
+% Set default paper size here
+p a4
+
+% The "g" option specifies the amount to "grow" annotations by
+% Many TeX macro pages set the annotation bounding box equal
+% to the TeX box that encloses the material. That's not always
+% what you want
+g 1
+
+% PDF version stamp to use in output file and max version of files
+% allowed to be included (3 for 1.3, 4 for 1.4)
+V 3
+
+% Key bits for PDF encryption (40 - 128)
+K 40
+
+% Permission flag for PDF encryption: Revision will be 3 if the key size
+% is greater than 40 bits.
+%
+% 0x0004 (Revision 2) Print the document.
+% (Revision 3) Print the document (possibly not at the highest quality
+% level, depending on whether bit 12[0x0800] is also set).
+% 0x0008 Modify the contents of the document by operations other than those
+% controlled by bits 6[0x0020], 9[0x0100], and 11[0x0400].
+% 0x0010 (Revision 2) Copy or otherwise extract text and graphics from the
+% document, including extracting text and graphics (in support of
+% accessibility to disabled users or for other purposes).
+% (Revision 3) Copy or otherwise extract text and grphics from the
+% document by operations other than that controlled by bit 10[0x0200].
+% 0x0020 Add or modify text annotations, fill in interactive form fields,
+% and, if bit 4[0x0008] is also set, create or modify interactive
+% form fields (including signature fields).
+%
+% (Revision 3 only)
+% 0x0100 Fill in existing interactive form fields (including signature
+% fields), even if bit 6 is clear.
+% 0x0200 Extract text and graphics (in support of accessibility to disabled
+% users or for other purposes).
+% 0x0400 Assemble the document (insert, rotate, or delete pages and create
+% bookmarks or thumbnail images), even if bit 4 is clear.
+% 0x0800 Print the document to a representation from which a faithful digital
+% copy of the PDF content could be generated. When this bit is clear
+% (and bit 3 is set), printing is limited to a low-level representation
+% of the appearance, possibly of degraded quality.
+P 0x003C
+
+% Font map files
+%
+f cmr.map
+f psbase14.map
+% Most distributions now use these names
+f lw35urw.map
+% Some use these names
+% f lw35urwa.map
+f cid-x.map
+% Added by Hin-Tak Leung below this point:
+f cwtb.map
+f cwtf.map
+f cwtk.map
+f cwtm.map
+f cwtr.map
+f mekl.map
+f mest.map
+f mesx.map
+f mesy.map
+f meko.map
+f meso.map
+f bkai.map
+f bsmi.map
+f gbsn.map
+f gkai.map
+f ntbr.map
+f ntfs.map
+f ntka.map
+f ntli.map
+f ntmb.map
+f ntmm.map
+f ntmr.map
+f nttw.map
+f wclj.map
+f wclk.map
+f wcll.map
+f wclm.map
+f wcln.map
+f wclp.map
+f wclq.map
+f wclr.map
+f wcls.map
+f wclt.map
+f zysg.map
+f wnmc.map
+f wdgt.map
+f kcgt.map
+f kcmc.map
+f acrj.map
+f acrg.map
+f acrb.map
+f ykah.map
+f gtrl.map
+f gtrm.map
+f leim.map
+f heim.map
+f sunm.map
+f gbsnl.map
+f ggtrl.map
+f gkaim.map
+f gleim.map
+f gsinm.map
+f tgtrl.map
+f tkaim.map
+f tleim.map
+f tooru.map
+f tovru.map
+f tsinm.map
+f dcaiq.map
+f dcailq.map
+f dcaisq.map
+f dccryq.map
+f dchgmq.map
+f dchleiq.map
+f dcinlq.map
+f dckgmc.map
+f dclkaiq.map
+f dcysmr.map
+f dfcrdp.map
+f dffrsp.map
+f dfgskr.map
+f dfkaie.map
+f dfkbtp.map
+f dfoyjq.map
+f dfryss.map
+f dfshtq.map
+f dfshtr.map
+f dfskair.map
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/gen-map.pl b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/gen-map.pl
new file mode 100644
index 0000000000..737304da36
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/gen-map.pl
@@ -0,0 +1,120 @@
+#!/usr/bin/perl -w
+
+@font_list =
+(
+ "cwtb", "bbttf.ttf", 55,
+ "cwtf", "fttf.ttf", 55,
+ "cwtk", "kttf.ttf", 55,
+ "cwtm", "mttf.ttf", 55,
+ "cwtr", "rttf.ttf", 55,
+#
+ "mekl", "kai-linux.ttf", 58,
+ "mest", "edustd-15.ttf", 55,
+ "mesx", "edustds1.ttf", 55,
+ "mesy", "edustds2.ttf", 55,
+ "meko", "moe_kai.ttf", 58,
+ "meso", "moe_sung.ttf", 58,
+#
+ "bkai", "bkai00mp.ttf", 55,
+ "bsmi", "bsmi00lp.ttf", 55,
+#
+ "gbsn", "gbsn00lp.ttf", 32,
+ "gkai", "gkai00mp.ttf", 32,
+#
+ "ntbr", "ntu_br.ttf", 58,
+ "ntfs", "ntu_fs_m.ttf", 58,
+ "ntka", "ntu_kai.ttf", 58,
+ "ntli", "ntu_li_m.ttf", 58,
+ "ntmb", "ntu_mb.ttf", 58,
+ "ntmm", "ntu_mm.ttf", 58,
+ "ntmr", "ntu_mr.ttf", 58,
+ "nttw", "ntu_tw.ttf", 58,
+#
+ "wclj", "wcl-01.ttf", 55,
+ "wclk", "wcl-02.ttf", 55,
+ "wcll", "wcl-03.ttf", 55,
+ "wclm", "wcl-04.ttf", 55,
+ "wcln", "wcl-05.ttf", 55,
+ "wclp", "wcl-06.ttf", 55,
+ "wclq", "wcl-07.ttf", 55,
+ "wclr", "wcl-08.ttf", 55,
+ "wcls", "wcl-09.ttf", 55,
+ "wclt", "wcl-10.ttf", 55,
+#
+ "zysg", "zysong.ttf", 32,
+#
+ "wnmc", "watanabe-mincho.ttf", 35,
+ "wdgt", "wadalab-gothic.ttf", 35,
+#
+ "kcgt", "kochi-gothic.ttf", 31,
+ "kcmc", "kochi-mincho.ttf", 31,
+#
+ "acrj", "kochi-mincho.ttf", 31,
+ "acrg", "gbsn00lp.ttf", 32,
+ "acrb", "bsmi00lp.ttf", 55,
+#
+"ykah", "yka00hp.ttf", 57,
+"gtrl", "gtr00lp.ttf", 57,
+"gtrm", "gtr00mp.ttf", 57,
+"leim", "lei00mp.ttf", 57,
+"heim", "hei01mp.ttf", 57,
+"sunm", "sun00mp.ttf", 57,
+#
+"gbsnl", "gbsn00l.ttf",32,
+"ggtrl", "ggtr00l.ttf",32,
+"gkaim", "gkai00m.ttf",32,
+"gleim", "glei00m.ttf",32,
+"gsinm", "gsin00m.ttf",32,
+"tgtrl", "tgtr00l.ttf",32,
+"tkaim", "tkai00m.ttf",32,
+"tleim", "tlei00m,ttf",32,
+"tooru", "toor00u.ttf",32,
+"tovru", "tovr00u.ttf",32,
+"tsinm", "tsin00m.ttf",32,
+#
+"dcaiq", "dcai5.ttc", 31,
+"dcailq", "dcail5.ttc", 31,
+"dcaisq", "dcais5.ttc", 31,
+"dccryq", "dccry5.ttc", 31,
+"dchgmq", "dchgm5.ttc", 31,
+"dchleiq", "dchlei5.ttc", 31,
+"dcinlq", "dcinl5.ttc", 31,
+"dckgmc", "dckgmc.ttc", 31,
+"dclkaiq", "dclkai5.ttc", 31,
+"dcysmr", "dcysm7.ttc", 31,
+"dfcrdp", "dfcrd3.ttc", 31,
+"dffrsp", "dffrs3.ttc", 31,
+"dfgskr", "dfgsk7.ttc", 31,
+"dfkaie", "dfkaie.ttc", 31,
+"dfkbtp", "dfkbt3.ttc", 31,
+"dfoyjq", "dfoyj5.ttc", 31,
+"dfryss", "dfrys9.ttc", 31,
+"dfshtq", "dfsht5.ttc", 31,
+"dfshtr", "dfsht7.ttc", 31,
+"dfskair", "dfskai7.ttc", 31,
+#
+);
+
+open(LISTFILE, "> map.list");
+
+$list_length = (scalar @font_list ) /3 ;
+for ($i = 0; $i < $list_length ; $i++)
+{
+ $stem = shift @font_list;
+ $font = shift @font_list;
+ $entries = shift @font_list;
+ print LISTFILE "f ", $stem, ".map\n";
+ open(MAPFILE, "> ${stem}.map");
+
+ for ($j=1; $j<= $entries ; $j++)
+ {
+ $j_pad = sprintf "%2.2d", $j;
+ print MAPFILE
+ $stem, $j_pad, " ", $stem, $j_pad, " <",
+ $stem, $j_pad, ".enc <",
+ $font, "\n";
+ }
+ close(MAPFILE);
+}
+close(LISTFILE);
+
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/map.list b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/map.list
new file mode 100644
index 0000000000..ae1fcd4ad1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/map.list
@@ -0,0 +1,78 @@
+f cwtb.map
+f cwtf.map
+f cwtk.map
+f cwtm.map
+f cwtr.map
+f mekl.map
+f mest.map
+f mesx.map
+f mesy.map
+f meko.map
+f meso.map
+f bkai.map
+f bsmi.map
+f gbsn.map
+f gkai.map
+f ntbr.map
+f ntfs.map
+f ntka.map
+f ntli.map
+f ntmb.map
+f ntmm.map
+f ntmr.map
+f nttw.map
+f wclj.map
+f wclk.map
+f wcll.map
+f wclm.map
+f wcln.map
+f wclp.map
+f wclq.map
+f wclr.map
+f wcls.map
+f wclt.map
+f zysg.map
+f wnmc.map
+f wdgt.map
+f kcgt.map
+f kcmc.map
+f acrj.map
+f acrg.map
+f acrb.map
+f ykah.map
+f gtrl.map
+f gtrm.map
+f leim.map
+f heim.map
+f sunm.map
+f gbsnl.map
+f ggtrl.map
+f gkaim.map
+f gleim.map
+f gsinm.map
+f tgtrl.map
+f tkaim.map
+f tleim.map
+f tooru.map
+f tovru.map
+f tsinm.map
+f dcaiq.map
+f dcailq.map
+f dcaisq.map
+f dccryq.map
+f dchgmq.map
+f dchleiq.map
+f dcinlq.map
+f dckgmc.map
+f dclkaiq.map
+f dcysmr.map
+f dfcrdp.map
+f dffrsp.map
+f dfgskr.map
+f dfkaie.map
+f dfkbtp.map
+f dfoyjq.map
+f dfryss.map
+f dfshtq.map
+f dfshtr.map
+f dfskair.map
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/Bg5/c00cwtb.fd b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/Bg5/c00cwtb.fd
new file mode 100644
index 0000000000..d7ff990e8b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/Bg5/c00cwtb.fd
@@ -0,0 +1,11 @@
+% This is the file c00cwtb.fd of the CJK package
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00cwtb.fd}[\filedate\space\fileversion]
+
+\DeclareFontFamily{C00}{cwtb}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C00}{cwtb}{m}{n}{<-> CJK * cwtb}{\CJKnormal}
+\DeclareFontShape{C00}{cwtb}{bx}{n}{<-> CJKb * cwtb}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/Bg5/c00tmpl.fd b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/Bg5/c00tmpl.fd
new file mode 100644
index 0000000000..8881d69974
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/Bg5/c00tmpl.fd
@@ -0,0 +1,11 @@
+% This is the file c00tmpl.fd of the CJK package
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00tmpl.fd}[\filedate\space\fileversion]
+
+\DeclareFontFamily{C00}{tmpl}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C00}{tmpl}{m}{n}{<-> CJK * tmpl}{\CJKnormal}
+\DeclareFontShape{C00}{tmpl}{bx}{n}{<-> CJKb * tmpl}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/GB/c10tmpl.fd b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/GB/c10tmpl.fd
new file mode 100644
index 0000000000..3f1aea21d7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/GB/c10tmpl.fd
@@ -0,0 +1,11 @@
+% This is the file c10tmpl.fd of the CJK package
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c10tmpl.fd}[\filedate\space\fileversion]
+
+\DeclareFontFamily{C10}{tmpl}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C10}{tmpl}{m}{n}{<-> CJK * tmpl}{\CJKnormal}
+\DeclareFontShape{C10}{tmpl}{bx}{n}{<-> CJKb * tmpl}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/JIS/c40tmpl.fd b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/JIS/c40tmpl.fd
new file mode 100644
index 0000000000..d1d15459fc
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/JIS/c40tmpl.fd
@@ -0,0 +1,10 @@
+% This is the file c40tmpl.fd of the CJK package
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c40tmpl.fd}[\filedate\space\fileversion]
+
+\DeclareFontFamily{C40}{tmpl}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C40}{tmpl}{m}{n}{<-> CJK * tmpl}{\CJKnormal}
+\DeclareFontShape{C40}{tmpl}{bx}{n}{<-> CJKb * tmpl}{\CJKbold}
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/SJIS/c49tmpl.fd b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/SJIS/c49tmpl.fd
new file mode 100644
index 0000000000..498f136f4d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/texinput/SJIS/c49tmpl.fd
@@ -0,0 +1,10 @@
+% This is the file c49song.fd of the CJK package
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c49song.fd}[\filedate\space\fileversion]
+
+\DeclareFontFamily{C49}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C49}{song}{m}{n}{<-> CJK * tmpl}{\CJKnormal}
+\DeclareFontShape{C49}{song}{bx}{n}{<-> CJKb * tmpl}{\CJKbold}
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/updmap.my b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/updmap.my
new file mode 100644
index 0000000000..a020e035ee
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/updmap.my
@@ -0,0 +1,161 @@
+#!/bin/sh
+# Thomas Esser, 1998, 1999. Public domain.
+
+###########################################################################
+# updmap: create psfonts.map, ps2pk.map and pdftex.map from smaller
+# "modules". To recreate the map files, just run the command:
+# ./updmap
+###########################################################################
+
+###########################################################################
+# Configuration section:
+###########################################################################
+
+# Add any extra modules here. See the definition of common_modules below
+# for an example of the correct syntax. If you just want to use the type1
+# version for the computer modern fonts by default in dvips (instead of
+# the metafont based bitmap fonts), just change the definition of
+# type1_default that is given below.
+#
+# An alternative to adding map files here is to edit the files
+# config/dvips/config.ps
+# pdftex/config/pdftex.cfg
+# in a local texmf tree.
+extra_modules="
+cwtb.map
+cwtf.map
+cwtk.map
+cwtm.map
+cwtr.map
+mekl.map
+mest.map
+mesx.map
+mesy.map
+meko.map
+meso.map
+bkai.map
+bsmi.map
+gbsn.map
+gkai.map
+ntbr.map
+ntfs.map
+ntka.map
+ntli.map
+ntmb.map
+ntmm.map
+ntmr.map
+nttw.map
+wclj.map
+wclk.map
+wcll.map
+wclm.map
+wcln.map
+wclp.map
+wclq.map
+wclr.map
+wcls.map
+wclt.map
+zysg.map
+wnmc.map
+wdgt.map
+kcgt.map
+kcmc.map
+acrj.map
+acrg.map
+acrb.map
+"
+
+###########################################################################
+# Set up the standard Laserwriter fonts:
+# urw-kb: these are included in teTeX's texmf tree
+# urw-urw: these are included in ghostscript 4.0 and later. Adjust the
+# search paths for type1 and afm files in texmf.cnf if you set
+# this
+# adobe-kb: use this if you have the original Adobe fonts. Install the
+# type1 and afm files with Berry names.
+###########################################################################
+
+lw35=urw-kb # URW fonts (download type1 files using Berry names)
+# lw35=urw-urw # URW fonts (download type1 files using URW names)
+# lw35=adobe-kb # Adobe fonts (download type1 files using Berry names)
+
+###########################################################################
+# Set to true to use postscript type1 versions for fonts with existing
+# metafont versions.
+###########################################################################
+
+type1_default=false
+# type1_default=true
+
+###########################################################################
+# Add common map files here:
+###########################################################################
+common_modules="
+ charter.map context.map lucidabr.map marvosym.map mathpi.map
+ mathpple-ext.map mt-plus.map mt-yy.map omega.map utopia.map
+ xypic.map txr4.map pxr4.map pazo.map $extra_modules
+"
+
+###########################################################################
+# End of configuration section.
+###########################################################################
+
+###########################################################################
+# Type1 fonts with Metafont equivalents. When not generating resolution
+# independent postscript or pdf, we prefer the Metafont variants for these.
+###########################################################################
+mf_modules="
+ bsr.map bsr-interpolated.map cmcyr.map cs.map hoekwater.map pl.map
+"
+
+###########################################################################
+# These are used by dvips:
+###########################################################################
+lw35_modules="
+ *-adobe-bi.map
+ $common_modules
+"
+
+###########################################################################
+# Add CM + AMS fonst if configured:
+###########################################################################
+if test "x$type1_default" = xtrue; then
+ lw35_modules="$lw35_modules $mf_modules"
+fi
+
+###########################################################################
+# ps2pk has no "built in" fonts and needs to download everything:
+###########################################################################
+ps2pk_modules="
+ *-$lw35.map
+"
+
+###########################################################################
+# pdftex has the acrobat fonts (subset of the lw35 fonts) built in, but
+# needs to download fonts for ExtendFont / SlantFont:
+###########################################################################
+pdftex_modules="
+ $mf_modules
+
+ *ar-ext-$lw35.map
+ *ar-std-adobe-bi.map
+ *lw35extra-$lw35.map
+ mtsupp-ext-$lw35.map
+ mtsupp-std-adobe-bi.map
+
+ $common_modules
+"
+
+# Create psfonts.map ps2pk.map and pdftex.map:
+for file in psfonts.map ps2pk.map pdftex.map; do
+cat >$file <<eof
+% $file: maintained by the script updmap in \$TEXMFMAIN/dvips/config.
+% The preferred way to add things to this file is to put the extra lines
+% into a separate file and add that filename to the updmap script. Then,
+% run the updmap script to recreate this file.
+eof
+done
+
+cat $lw35_modules | grep -v '^%' | grep . | sort | uniq >> psfonts.map
+cat $ps2pk_modules | grep -v '^%' | grep . | sort | uniq >> ps2pk.map
+cat $pdftex_modules | grep -v '^%' | grep . | sort | uniq >> pdftex.map
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/wcl.sfd b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/wcl.sfd
new file mode 100644
index 0000000000..594a36acba
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pdfhowto/examples/wcl.sfd
@@ -0,0 +1,62 @@
+# Big5.sfd
+#
+# subfont numbers for Big 5 encoding and its corresponding code ranges
+# to be used with the CJK package for LaTeX.
+
+01 0xA140_0xA17E 0xA1A1_0xA1FE 0xA240_0xA27E 0xA2A1_0xA2C4
+02 0xA2C5_0xA2FE 0xA340_0xA37E 0xA3A1_0xA3FE 0xA440_0xA468
+03 0xA469_0xA47E 0xA4A1_0xA4FE 0xA540_0xA57E 0xA5A1_0xA5ED
+04 0xA5EE_0xA5FE 0xA640_0xA67E 0xA6A1_0xA6FE 0xA740_0xA77E 0xA7A1_0xA7B3
+05 0xA7B4_0xA7FE 0xA840_0xA87E 0xA8A1_0xA8FE 0xA940_0xA957
+06 0xA958_0xA97E 0xA9A1_0xA9FE 0xAA40_0xAA7E 0xAAA1_0xAADC
+07 0xAADD_0xAAFE 0xAB40_0xAB7E 0xABA1_0xABFE 0xAC40_0xAC7E 0xACA1_0xACA2
+08 0xACA3_0xACFE 0xAD40_0xAD7E 0xADA1_0xADFE 0xAE40_0xAE46
+09 0xAE47_0xAE7E 0xAEA1_0xAEFE 0xAF40_0xAF7E 0xAFA1_0xAFCB
+10 0xAFCC_0xAFFE 0xB040_0xB07E 0xB0A1_0xB0FE 0xB140_0xB16F
+11 0xB170_0xB17E 0xB1A1_0xB1FE 0xB240_0xB27E 0xB2A1_0xB2F4
+12 0xB2F5_0xB2FE 0xB340_0xB37E 0xB3A1_0xB3FE 0xB440_0xB47E 0xB4A1_0xB4BA
+13 0xB4BB_0xB4FE 0xB540_0xB57E 0xB5A1_0xB5FE 0xB640_0xB65E
+14 0xB65F_0xB67E 0xB6A1_0xB6FE 0xB740_0xB77E 0xB7A1_0xB7E3
+15 0xB7E4_0xB7FE 0xB840_0xB87E 0xB8A1_0xB8FE 0xB940_0xB97E 0xB9A1_0xB9A9
+16 0xB9AA_0xB9FE 0xBA40_0xBA7E 0xBAA1_0xBAFE 0xBB40_0xBB4D
+17 0xBB4E_0xBB7E 0xBBA1_0xBBFE 0xBC40_0xBC7E 0xBCA1_0xBCD2
+18 0xBCD3_0xBCFE 0xBD40_0xBD7E 0xBDA1_0xBDFE 0xBE40_0xBE76
+19 0xBE77_0xBE7E 0xBEA1_0xBEFE 0xBF40_0xBF7E 0xBFA1_0xBFFB
+20 0xBFFC_0xBFFE 0xC040_0xC07E 0xC0A1_0xC0FE 0xC140_0xC17E 0xC1A1_0xC1C1
+21 0xC1C2_0xC1FE 0xC240_0xC27E 0xC2A1_0xC2FE 0xC340_0xC365
+22 0xC366_0xC37E 0xC3A1_0xC3FE 0xC440_0xC47E 0xC4A1_0xC4EA
+23 0xC4EB_0xC4FE 0xC540_0xC57E 0xC5A1_0xC5FE 0xC640_0xC67E 0xC6A1_0xC6B0
+24 0xC6B1_0xC6FE 0xC740_0xC77E 0xC7A1_0xC7FE 0xC840_0xC854
+25 0xC855_0xC87E 0xC8A1_0xC8FE 0xC940_0xC97E 0xC9A1_0xC9D9
+26 0xC9DA_0xC9FE 0xCA40_0xCA7E 0xCAA1_0xCAFE 0xCB40_0xCB7D
+27 0xCB7E 0xCBA1_0xCBFE 0xCC40_0xCC7E 0xCCA1_0xCCFE 0xCD40_0xCD43
+28 0xCD44_0xCD7E 0xCDA1_0xCDFE 0xCE40_0xCE7E 0xCEA1_0xCEC8
+29 0xCEC9_0xCEFE 0xCF40_0xCF7E 0xCFA1_0xCFFE 0xD040_0xD06C
+30 0xD06D_0xD07E 0xD0A1_0xD0FE 0xD140_0xD17E 0xD1A1_0xD1F1
+31 0xD1F2_0xD1FE 0xD240_0xD27E 0xD2A1_0xD2FE 0xD340_0xD37E 0xD3A1_0xD3B7
+32 0xD3B8_0xD3FE 0xD440_0xD47E 0xD4A1_0xD4FE 0xD540_0xD55B
+33 0xD55C_0xD57E 0xD5A1_0xD5FE 0xD640_0xD67E 0xD6A1_0xD6E0
+34 0xD6E1_0xD6FE 0xD740_0xD77E 0xD7A1_0xD7FE 0xD840_0xD87E 0xD8A1_0xD8A6
+35 0xD8A7_0xD8FE 0xD940_0xD97E 0xD9A1_0xD9FE 0xDA40_0xDA4A
+36 0xDA4B_0xDA7E 0xDAA1_0xDAFE 0xDB40_0xDB7E 0xDBA1_0xDBCF
+37 0xDBD0_0xDBFE 0xDC40_0xDC7E 0xDCA1_0xDCFE 0xDD40_0xDD73
+38 0xDD74_0xDD7E 0xDDA1_0xDDFE 0xDE40_0xDE7E 0xDEA1_0xDEF8
+39 0xDEF9_0xDEFE 0xDF40_0xDF7E 0xDFA1_0xDFFE 0xE040_0xE07E 0xE0A1_0xE0BE
+40 0xE0BF_0xE0FE 0xE140_0xE17E 0xE1A1_0xE1FE 0xE240_0xE262
+41 0xE263_0xE27E 0xE2A1_0xE2FE 0xE340_0xE37E 0xE3A1_0xE3E7
+42 0xE3E8_0xE3FE 0xE440_0xE47E 0xE4A1_0xE4FE 0xE540_0xE57E 0xE5A1_0xE5AD
+43 0xE5AE_0xE5FE 0xE640_0xE67E 0xE6A1_0xE6FE 0xE740_0xE751
+44 0xE752_0xE77E 0xE7A1_0xE7FE 0xE840_0xE87E 0xE8A1_0xE8D6
+45 0xE8D7_0xE8FE 0xE940_0xE97E 0xE9A1_0xE9FE 0xEA40_0xEA7A
+46 0xEA7B_0xEA7E 0xEAA1_0xEAFE 0xEB40_0xEB7E 0xEBA1_0xEBFE 0xEC40
+47 0xEC41_0xEC7E 0xECA1_0xECFE 0xED40_0xED7E 0xEDA1_0xEDC5
+48 0xEDC6_0xEDFE 0xEE40_0xEE7E 0xEEA1_0xEEFE 0xEF40_0xEF69
+49 0xEF6A_0xEF7E 0xEFA1_0xEFFE 0xF040_0xF07E 0xF0A1_0xF0EE
+50 0xF0EF_0xF0FE 0xF140_0xF17E 0xF1A1_0xF1FE 0xF240_0xF27E 0xF2A1_0xF2B4
+51 0xF2B5_0xF2FE 0xF340_0xF37E 0xF3A1_0xF3FE 0xF440_0xF458
+52 0xF459_0xF47E 0xF4A1_0xF4FE 0xF540_0xF57E 0xF5A1_0xF5DD
+53 0xF5DE_0xF5FE 0xF640_0xF67E 0xF6A1_0xF6FE 0xF740_0xF77E 0xF7A1_0xF7A3
+54 0xF7A4_0xF7FE 0xF840_0xF87E 0xF8A1_0xF8FE 0xF940_0xF947
+55 0xF948_0xF97E 0xF9A1_0xF9FE 0xFA40_0xFA65
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pinyin.txt b/language/chinese/CJK/cjk-4.8.5/doc/pinyin.txt
new file mode 100644
index 0000000000..326202899e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pinyin.txt
@@ -0,0 +1,62 @@
+This is the file pinyin.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+pinyin.sty
+----------
+
+This style file (which can be also used under plain TeX) enables the input
+of pinyin syllables with tones.
+
+Say
+
+ \usepackage{pinyin}
+
+to load all pinyin macros under LaTeX2e; say `\input pinyin.sty' under plain
+TeX.
+
+An example explains best how to input pinyin:
+
+ \Wo3 \hen3 \xi3\huan1 \chi1 \Zhong1\guo2 \cai4.
+
+Note there is no fifth tone marker in pinyin (Zhuyinfuhao uses a dot to
+indicate the fifth tone; on the other hand no marker is used for the first
+tone). Nevertheless you can say e.g., \ne5 to get the syllable `ne' without a
+tone.
+
+
+There are some special cases:
+
+ o use `v' instead of `u umlaut' in pinyin syllables (these are \lv,
+ \lve, \nv, \nve and its uppercase forms). Example:
+
+ \nv3'\er2 daughter
+
+ The appearance of u umlaut with additional tone markers has been
+ tested with the standard cm, ec, and PostScript fonts.
+
+ o use \Long and \LONG instead of \long and \Long (which you would
+ expect): \long is a very important internal TeX command. Many
+ packages would fail if we redefined \long.
+
+
+Problems:
+
+ The following macros are redefined if you load pinyin.sty:
+
+ \a, \chi, \cong, \ding, \ge, \hang, \le, \min, \mu, \ne, \ni, \nu,
+ \o, \O, \pi, \Pi, \Re, \tan, \xi, \Xi.
+
+ They are available as \PY... (\PYchi, \PYcong, etc.).
+
+ If this is not enough, you can say \PYdeactivate to restore the original
+ definitions (and reactivate these syllables with \PYactivate).
+
+ In case you use the hyperref package earlier than version 6.75a
+ (2006-Feb-12) together with the `hpdftex' driver you should load
+ pinyin.sty *after* hyperref.sty (contrary to what the hyperref manual
+ says). Reason is that \ding is defined in pifont.sty which is
+ automatically loaded by hpdftex.def -- the latest hyperref version no
+ longer uses pifont.sty .
+
+
+---End of pinyin.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/pyhyphen.txt b/language/chinese/CJK/cjk-4.8.5/doc/pyhyphen.txt
new file mode 100644
index 0000000000..63e68dce32
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/pyhyphen.txt
@@ -0,0 +1,135 @@
+This is the file pyhyphen.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+Hyphenation patterns for pinyin syllables with and without tone markers
+-----------------------------------------------------------------------
+
+Sometimes it makes sense to use unaccented pinyin syllables for common names
+and phrases which are repeated frequently; sometimes you are in an
+environment which doesn't allow accented pinyin syllables at all. For such
+cases it is desirable to have correct hyphenation, avoiding manually added
+hints using e.g., `\-' between the syllables.
+
+Fortunately, due to the limited numbers of Chinese pinyin syllables (407 for
+Mandarin), it is easy to create hyphenation patterns. The logical
+consequence is to add a new `language' to the Babel package, and exactly
+this can be found in the directory utils/pyhyphen.
+
+
+Installation
+------------
+
+[Note: The hyphenation patterns have been submitted to the `tex-hyphen'
+ project. In recent TeX distributions it is no longer necessary to set
+ up pinyin support manually since everything should work out of the
+ box.]
+
+This is fairly straightforward. Move the Babel language definition file
+pinyin.ldf file to a place found by TeX. If you e.g., maintain a local
+TEXMF tree, a good place would be $TEXMFLOCAL/tex/generic/babel/pinyin.ldf.
+Similarly, move the pinyin hyphenation pattern files hyph-zh-latn-pinyin.tex
+and hyph-zh-latin-tonepinyin.tex into your (local) TEXMF tree: The analogous
+place would be directory $TEXMFLOCAL/tex/generic/hyphen.
+
+Now run texconfig (or a similar tool) to add hyph-zh-latn-pinyin.tex and
+hyph-zh-latin-tonepinyin.tex to the used hyphenation patterns. In the usual
+case you have to add a line saying
+
+ pinyin hyph-zh-latn-tonepinyin.tex
+
+for Unicode-aware TeX engines (XeTeX, luatex, upTeX) or
+
+ pinyin hyph-zh-latn-pinyin.tex
+
+for all other engines to the hyphenation configuration file language.dat.
+Finally, build a new format file (usually the command `initex latex.ltx');
+in most cases this happens automatically.
+
+Using Babel ensures that it works both with LaTeX and Plain TeX.
+
+
+Usage
+-----
+
+Unicode-aware engines
+- - - - - - - - - - -
+
+Do something like this:
+
+ \documentclass[...]{...}
+
+ \usepackage[pinyin,german,english]{babel}
+ ...
+
+ \begin{document}
+ ...
+ \foreignlanguage{pinyin}{pinyin with tone markers like Běijīng}
+ ...
+ \end{document}
+
+
+Other engines
+- - - - - - -
+
+Do something like this:
+
+ \documentclass[...]{...}
+
+ \usepackage[T1]{fontenc}
+ \usepackage[pinyin,german,english]{babel}
+ ...
+
+ \begin{document}
+ ...
+ \foreignlanguage{pinyin}{pinyin without tone markers like Beijing}
+ ...
+ \end{document}
+
+
+Note 1: pinyin.ldf is intentionally very minimal. Don't expect that e.g.,
+ \chapter yields a pinyin version of the Chinese word for `chapter'.
+ It might be useful to define a shorthand macro like the following:
+
+ \newcommand{\py}[1]{\foreignlanguage{pinyin}{#1}}
+
+ Now you can simply say
+
+ \py{Beijing}
+
+Note 2: The apostrophe character `'' is used as to precede syllables
+ starting with `a', `e', or `u'. This is needed to resolve
+ ambiguities like this:
+
+ Xi'an -> Xi-an (two syllables)
+ Xian -> Xian (one syllable)
+
+ If a line break occurs, the apostrophe should vanish, e.g.,
+
+ Tian'anmen -> Tian-
+ anmen
+
+ Use the Babel shorthand "' to enter '; this internally resolves to
+ \discretionary.
+
+ The shorthand `"u' (as used in German) is available to input
+ `umlaut u'.
+
+Note 3: Most Babel language support files define a `<language>.sty' file
+ also. This is not true for pinyin! pinyin.sty is used for accented
+ pinyin syllables which don't need a special hyphenation support.
+ (pinyin.sty works with Plain TeX also.)
+
+
+Technical details
+-----------------
+
+The dictionary used to construct the hyphenation patterns has been created
+with a small C program `pinyin.c' which simply combines all existing Chinese
+syllable pairs that don't need an apostrophe inbetween. Then, `patgen' has
+been run on the dictionary; `pinyin.tr' defines the used character set.
+
+Due to the regularity of the word combinations, only two-letter patterns of
+the first and second level are needed to find all possible breaks without a
+single error or omission.
+
+---End of pyhyphen.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/reftex.txt b/language/chinese/CJK/cjk-4.8.5/doc/reftex.txt
new file mode 100644
index 0000000000..3dc7935243
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/reftex.txt
@@ -0,0 +1,34 @@
+This is the file reftex.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+RefTeX
+------
+
+To make RefTeX aware of \CJKinput and \CJKbibliography, add the following
+two lines to your .emacs file:
+
+ (add-to-list 'reftex-include-file-commands "CJKinclude")
+ (add-to-list 'reftex-bibliography-commands "CJKbibliography")
+
+These two variables have been added to RefTeX in July 2002.
+
+Older versions (like 4.16) which don't have them must be patched directly.
+In reftex.el:
+
+1097c1097
+< (include-re (concat wbol "\\\\\\(include\\|input\\)[{ \t]+\\([^} \t\n\r]+\\)"))
+---
+> (include-re (concat wbol "\\\\\\(include\\|input\\|CJKinput\\)[{ \t]+\\([^} \t\n\r]+\\)"))
+
+In reftex-parse.el:
+
+333c333
+< "\\(\\`\\|[\n\r]\\)[ \t]*\\\\\\(no\\)?bibliography{[ \t]*\\([^}]+\\)" nil t)
+---
+> "\\(\\`\\|[\n\r]\\)[ \t]*\\\\\\(no\\|CJK\\)?bibliography{[ \t]*\\([^}]+\\)" nil t)
+
+Changes for even older RefTeX versions (before Aug 1999 which only have
+reftex.el) are virtually the same.
+
+
+---End of reftex.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/ruby.txt b/language/chinese/CJK/cjk-4.8.5/doc/ruby.txt
new file mode 100644
index 0000000000..68f82abc9d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/ruby.txt
@@ -0,0 +1,139 @@
+This is the file ruby.txt of the CJK macro package ver. 4.8.5 (16-Oct-2021).
+
+What is ruby?
+-------------
+
+To cite Martin Duerst (mduerst@w3.org) who wrote a proposal for ruby in HTML
+documents:
+
+
+ Ruby are small characters used for annotations of a text, at the right
+ side for vertical text, and atop for horizontal text, to indicate the
+ reading (pronounciation) of ideographic characters. [...]
+
+ The name `ruby' is the name of the 5.5 point type size in British
+ terminology; this was the size most used for ruby. [...]
+
+ Ruby are in most cases set at half the size of the main letters,
+ resulting in a possible two ruby characters per main character, and
+ taking up half of the width of the main characters. However, at least up
+ to five ruby characters per main character are possible (an example is
+ `u-ke-ta-ma-wa-...'), and so various solutions, from leaving white space
+ in the main text to having the ruby overlap the next characters of the
+ main text, are possible (the later is possible in Japanese especially
+ because in many cases, the characters around an ideograph with ruby are
+ syllabic, and therefore the assignment of ruby to main characters poses
+ no problems for the reader). [...]
+
+ Ruby are particularly frequent in Japanese, because of the way CJK
+ ideographs are used in Japanese. Ideographs can have many different
+ readings (pronounciations) because different readings were taken over
+ from different regions of China and at different times when the
+ characters where adopted in Japan. Also, these characters are used to
+ write indigenous Japanese words, and many readings may be possible
+ because the ideograph might cover many different concepts distinguished
+ in the Japanese language. [...] The main use of ruby today is in
+ magazines of all levels, and of course in educational material. Ruby are
+ also used in educational material in China and Taiwan.
+
+ In Japan, the term `furigana' is also used instead of `ruby'. `Furigana'
+ is composed of the verb `furu' (to attach, sprinkle, ...) and `gana'
+ (either hiragana or katakana, one of the two Japanese syllabaries usually
+ used for ruby).
+
+
+
+Usage
+-----
+
+Here a typical example:
+
+
+ \documentclass{article}
+
+ \usepackage{CJK}
+ \usepackage[overlap, CJK]{ruby}
+
+
+ \begin{document}
+
+ \begin{CJK*}{JIS}{song}
+
+ ....Japanese text.....\ruby{base character(s)}{ruby}....
+
+ \end{CJK*}
+
+ \end{document}
+
+
+The following options can be selected:
+
+ `overlap' and `nooverlap', as described above. \rubyoverlap and
+ \rubynooverlap are the corresponding commands to modify the overlap flag.
+ `overlap' is the default.
+
+ `CJK' and `latin'. The corresponding commands are \rubyCJK and \rubylatin.
+ Use these commands similar to \CJKnospace and \CJKspace to suppress or not
+ suppress spaces after a \ruby macro and to get/avoid insertion of glue.
+ `CJK' is the default.
+
+The command \rubysize defines the factor between the size of the base
+character and the ruby. Its default value is 0.4 . Usually you get some
+error messages about size substitution (the reason is that LaTeX 2e always
+defines a default error font) which can be safely ignored if you use ttf2pk
+or hbf2gf since these programs compute fonts for (almost) any font size. In
+the unlikely case that you need latin fonts as ruby it may be necessary to
+adapt your FD definition files if the particular font supports non-standard
+sizes (e.g., EC, Sauter, PS) and you really want exactly that size.
+
+The command \rubysep defines the separation between the base character and
+the ruby. Its default value is -0.5ex.
+
+To avoid lines sticking together the value of \lineskiplimit has been set
+to 1pt. It may be necessary to increase this value for larger font sizes.
+
+Note that all \ruby... commands are local, i.e., they obey groups.
+
+
+Implementation specific details
+-------------------------------
+
+There are a number of possibilities how ruby can interact with other CJK
+characters.
+
+ o The ruby has a smaller width than its base character:
+
+ The behaviour is identical to an ordinary CJK character.
+
+ o The ruby has a greater width than its base character:
+
+ + Overlapping ruby:
+
+ . If the previous or next character is a CJK character
+ (ordinary or punctuation), insert unbreakable glue between.
+
+ . If the previous or next character is a ruby, handle both
+ ruby as non-overlapping and insert unbreakable glue between.
+
+ . A ruby at the beginning of a paragraph is treated as if the
+ nonoverlap option had been set. To force an overlapping ruby
+ you have to start the paragraph with a \leavevmode command.
+
+ + Non-overlapping ruby:
+
+ . If the previous or next character is a CJK character
+ (ordinary or punctuation), insert unbreakable glue between.
+
+If `latin' is active, no glue at all is inserted.
+
+
+Technical details
+-----------------
+
+ruby.sty introduces a third variation of a small kern (3sp) to inform the
+next CJK or ruby macro that the previous character was an overlapping ruby
+with the ruby's width greater than its base character. The global variable
+\ruby@width then contains this width.
+
+
+---End of ruby.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/thaifont.txt b/language/chinese/CJK/cjk-4.8.5/doc/thaifont.txt
new file mode 100644
index 0000000000..1a98eba882
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/thaifont.txt
@@ -0,0 +1,130 @@
+This is the file thaifont.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+Thai font support in the CJK package
+------------------------------------
+
+Version 4.8.5 of the CJK package has improved support for Thai. This file
+describes how to install and use the fonts. Please refer to cjk-enc.txt how
+to set up cjk-enc.el (which automatically loads thai-word.el for finding
+word breaks).
+
+The directory structure in utils/thaifont/texmf already reflects the
+directory structure of a standard TEXMF tree, version 1.1. Example:
+
+ utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc ->
+ /usr/local/share/texmf/fonts/enc/dvips/thai/c90.enc
+
+To create TFM files for other Thai fonts, use the utility files in the
+`thaifont/tools' directory. Details how to do that can be found in
+`thaifonts/tools/INSTALL'. The file thaifont/tools/c90.etx gives the
+theoretical background on the used font encoding and ligature mechanism;
+a pre-formatted version can be found in CJK's doc bundle.
+
+
+Installation
+------------
+
+. It is assumed that you have already installed the main parts of the CJK
+ package (as described in the doc/INSTALL file).
+
+. Get the latest fonts-tlwg package from
+
+ http://linux.thai.net/projects/thaifonts-scalable
+
+ and install the Type 1 font families `garuda' and `norasi'. You should use
+ fonts-tlwg version 0.5 or newer. Note, however, that this bundle no longer
+ contains pre-compiled AFM files; instead, they are generated (together
+ with Type 1 and TrueType versions of the font) with a bunch of tools using
+ a configure script and a Makefile.
+
+ Recommended locations are
+
+ TEXMF/fonts/type1/public/{garuda,norasi}/ .
+
+ Examples:
+
+ garuda.pfb -> TEXMF/fonts/type1/public/garuda/garuda.pfb
+ norasi_bi.pfb -> TEXMF/fonts/type1/public/norasi/norasi_bi.pfb
+
+ Note that the TeX metric files of font-tlwg bundle are incompatible with
+ CJK's Thai implementation. Nevertheless, it is possible to use both at the
+ same time if desired. This is the very reason that the Babel language
+ support file of the CJK package is called `thaicjk.ldf', not `thai.ldf'.
+
+. Install all files from utils/thaifont/texmf in your TEXMF tree. This
+ should be straightforward.
+
+. Font definition files for Thai are in CJK's texinput/thai directory. To
+ simplify font handling with LaTeX, `gar' and `nrsr' are aliased to `cmr',
+ `cmss', and `cmtt'. If you want to use other fonts, you have to adapt
+ c90cmr.fd, c90cmss.fd, and c90cmtt.fd accordingly.
+
+. There are two possibilities how to make the Thai PostScript fonts known to
+ the various DVI drivers (and pdftex). The recommended way is to include
+ the files `garuda-c90.map' and `norasi-c90.map' in the `updmap.cfg'
+ configuration script by adding the following two lines:
+
+ Map garuda-c90.map
+ Map norasi-c90.map
+
+ Older versions of updmap which don't have updmap.cfg must be patched
+ directly by adding the map files to the `extra_modules' variable:
+
+ extra_modules="
+ garuda-c90.map
+ norasi-c90.map
+ "
+
+ After executing updmap, the fonts are known to all programs which uses the
+ map files.
+
+ For dvips, you can also use the `config.norasi-c90' and `config.garuda-c90'
+ files on the command line:
+
+ dvips -P norasi-c90 ...
+
+ This method doesn't work with pdfTeX (which doesn't understand the `-P'
+ option).
+
+. Run mktexlsr or a similar program to update the TEXMF file database.
+
+
+Usage
+-----
+
+Thai support has been fully integrated into the Babel system. For example,
+to have Thai as a secondary language and US English as the primary language,
+say
+
+ \documentclass{...}
+
+ ...
+ \usepackage[thaicjk,USenglish]{babel}
+ ...
+
+
+ \begin{document}
+
+ ...
+ \begin{otherlanguage}{thaicjk}
+ Thai text
+ \end{otherlanguage}
+
+ ...
+
+`thaicjk' changes the baseline stretch to 1.2, activates \frenchspacing, and
+modifies the \today command to use the proper Thai values and names.
+
+The just sketched outline works without cjk-enc also (but no word breaks are
+inserted automatically); you must then insert
+
+ \addto\extrasthaicjk{\fontencoding{C90}\selectfont}
+
+in the preamble of your document to make Babel switch to Thai font encoding
+on entering the `thaicjk' language environment.
+
+For use of cjk-enc.el please read `cjk-enc.txt'.
+
+
+---End of thaifont.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/doc/vertical.txt b/language/chinese/CJK/cjk-4.8.5/doc/vertical.txt
new file mode 100644
index 0000000000..e9d7c784fd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/doc/vertical.txt
@@ -0,0 +1,120 @@
+This is the file vertical.txt of the CJK macro package ver. 4.8.5
+(16-Oct-2021).
+
+
+Vertical typesetting
+====================
+
+TeX itself can't support vertical typesetting. Nevertheless, it is possible
+to emulate it by rotating glyphs by 90 degrees.
+
+The CJK package supports two different approaches:
+
+o Provide fonts which already contain rotated glyphs. In this case, the
+ only difference to normal typesetting is the emulation of bold
+ characters by printing a character three times with slight vertical
+ offsets instead of horizontal ones. Both hbf2gf and ttf2pk can produce
+ rotated bitmap fonts. The major disadvantage is that it doesn't work
+ well for outline fonts since there is no portable way to implement
+ rotation on the font level which works for both PostScript and PDF
+ output.
+
+ You need a `.fdx' file for this option which at least contains
+ `\CJKvdef{norotate}{}'.
+
+o Use the graphicx package to rotate glyphs. A disadvantage is that
+ processing of a document is much slower and that documents tend to be
+ much larger in size. On the other hand, PDF and PostScript output can be
+ produced from identical sources since graphicx hides the implementation
+ differences.
+
+ This works even without a `.fdx' file in case CJK's default rotation
+ parameters are fine.
+
+
+CJKvert.sty
+-----------
+
+Loading CJKvert.sty activates vertical support. The two commands to be used
+in documents are \CJKvert and \CJKhorz which do the obvious. \CJKvert is
+the default. The two commands act locally, not globally.
+
+Use macro \CJKbaselinestretch to adjust the baseline stretch during vertical
+typesetting. The default value is `1.3'.
+
+Package option `usebaselinestretch' saves the \baselinestretch value set
+before loading CJKvert.sty. If this option is active, then
+
+ new \baselinestretch = \CJKbaselinestretch * \baselinestretch
+
+after issuing \CJKvert. Otherwise, it is simply
+
+ new \baselinestretch = \CJKbaselinestretch
+
+Similarly, \CJKhorz restores the old \baselinestretch value if
+`usebaselinestretch' is active; without the option, \baselinestretch is set
+to `1'.
+
+
+Problems with vertical typesetting
+----------------------------------
+
+Some glyphs can't be used directly for vertical typesetting; a simple
+rotation by 90 degrees would produce ugly results for various reasons:
+
+o Many punctuation characters have special vertical representation forms.
+ Some fonts contain proper vertical glyphs, but many don't. In the latter
+ case it is necessary to provide alternative methods to improve the
+ optical appearance.
+
+o Non-rotated (latin) text within rotated (CJK) text is aligned
+ differently as if text is written horizontally. Rotated glyphs thus must
+ be slightly shifted.
+
+o Some fonts contain CJK glyphs without quadratic bounding boxes but only
+ monospaced advance widths. It is then necessary to provide glyph
+ dimensions to assure monospaced advance heights after rotation.
+
+See the documentation file `fdxfiles.txt' for details on setting up
+extended font definition files which can handle those items.
+
+
+Fonts with vertical representation forms
+----------------------------------------
+
+OpenType fonts intended for vertical typesetting normally contain a GSUB
+feature called `vert' which provides a mapping to vertical instead of
+horizontal representation forms. ttf2tfm automatically takes care of it (see
+below), but if such fonts have been converted to sets of Type 1 subfonts
+this feature is lost.
+
+A solution to this problem is to collect all vertical representation glyphs
+in a special Type 1 subfont. See the scripts vertical.pe, vertref.pe (for
+FontForge), and makefdx.pl (for Perl) in the directory utils/subfonts which
+do that.
+
+At the moment of this writing, only the fonts bsmi00lp.ttf and bkai00mp.ttf
+for traditional Chinese have been transformed to Type 1 subfonts together
+with a font with vertical representation glyphs (bsmilpv.pfb and
+bkaimpv.pfb). They are part of the corresponding CJK font bundles found on
+CTAN. See the file INSTALL for more information.
+
+
+Rotated fonts
+-------------
+
+o To install a rotated font to be handled by hbf2gf, simply proceed as
+ usual, with one difference: You have to add a line
+
+ rotation yes
+
+ to the hbf2gf configuration file of this font. x_offset and y_offset
+ values must be adjusted too. Look at the example configuration file
+ b5kr12.cfg for details---as you can see, the name of the non-rotated
+ font (b5ka12) has been changed to `b5kr12'.
+
+o With ttf2tfm, use the `-x' switch to activate rotation. For details
+ please refer to the man pages of ttf2tfm and ttf2pk.
+
+
+---End of vertical.txt---
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/Big5.tex b/language/chinese/CJK/cjk-4.8.5/examples/Big5.tex
new file mode 100644
index 0000000000..91938c9099
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/Big5.tex
@@ -0,0 +1,35 @@
+% This is the file Big5.tex of the CJK package
+% for testing Chinese (in Big 5 encoding).
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+%
+%
+% process this file with bg5latex (or cjk-enc.el; see cjk-enc.txt)
+
+\documentclass[12pt]{article}
+
+\usepackage{CJK}
+
+
+\begin{document}
+
+\begin{CJK*}{Bg5}{bsmi}
+\CJKtilde
+
+\noindent ¥»±`°Ý°Ýµª¶°~(FAQ list)~¬O±q¤@¨Ç¸g±`³Q°Ý¨ìªº°ÝÃD¤Î¨ä¾A·íªº¸Ñ
+µª¤¤¡A¥H¤è«Kªº§Î¦¡ºK­n¦Ó¥Xªº¡C¸ò¤W¤@ª©¤£¦Pªº¬O¡A¨ä½s±Æµ²ºc¤w¹ý©³§ïÅÜ¡C
+\textbf{¦³Ãö·sµ²ºcªº²Ó¸`¡A¥i°Ñ¦Ò¡u¦p¦ó¾\Ū¥»°Ýµª¶°¤Î¤F¸Ñ¨ä½s±Æµ²ºc¡v¸Ó
+¶µ¤¤ªº»¡©ú¡C}
+
+\end{CJK*}
+
+\end{document}
+
+%%% Local Variables:
+%%% coding: big5
+%%% mode: latex
+%%% TeX-master: t
+%%% TeX-command-default: "CJKLaTeX"
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/Big5vert.tex b/language/chinese/CJK/cjk-4.8.5/examples/Big5vert.tex
new file mode 100644
index 0000000000..57537f3f50
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/Big5vert.tex
@@ -0,0 +1,35 @@
+% This is the file Big5vert.tex of the CJK package
+% for testing vertical typesetting (in Big 5 encoding).
+%
+% process this file with bg5latex (or cjk-enc.el; see cjk-enc.txt)
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\documentclass[12pt]{article}
+
+\usepackage{CJK}
+\usepackage{CJKvert}
+
+
+\begin{document}
+
+\begin{CJK*}{Bg5}{bsmi}
+\CJKtilde
+
+\noindent ¥»±`°Ý°Ýµª¶°~(FAQ list)~¬O±q¤@¨Ç¸g±`³Q°Ý¨ìªº°ÝÃD¤Î¨ä¾A·íªº¸Ñ
+µª¤¤¡A¥H¤è«Kªº§Î¦¡ºK­n¦Ó¥Xªº¡C¸ò¤W¤@ª©¤£¦Pªº¬O¡A¨ä½s±Æµ²ºc¤w¹ý©³§ïÅÜ¡C
+\textbf{¦³Ãö·sµ²ºcªº²Ó¸`¡A¥i°Ñ¦Ò¡u¦p¦ó¾\Ū¥»°Ýµª¶°¤Î¤F¸Ñ¨ä½s±Æµ²ºc¡v¸Ó
+¶µ¤¤ªº»¡©ú¡C}
+
+\end{CJK*}
+
+\end{document}
+
+%%% Local Variables:
+%%% coding: big5
+%%% mode: latex
+%%% TeX-master: t
+%%% TeX-command-default: "CJKLaTeX"
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/CEF_test.tex b/language/chinese/CJK/cjk-4.8.5/examples/CEF_test.tex
new file mode 100644
index 0000000000..f0712449a2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/CEF_test.tex
@@ -0,0 +1,43 @@
+% This is the file CEF_test.tex of the CJK package
+% for testing CEF encoded text with LaTeX2e
+%
+% Version 4.8.5 (16-Oct-2021)
+%
+% process this text with ceflatex
+
+% - requires fonts from the cns package
+
+\documentclass[12pt]{article}
+
+\usepackage[global]{CJK}
+\usepackage{MULEenc}
+
+
+\begin{document}
+
+\begin{CJK}{}{}
+
+\verb|\CJKchar[CNS1]{"5A}{"5A}| \CJKchar[CNS1]{"5A}{"5A}
+\quad \verb|&C1-|\verb|5A5A;| &C1-5A5A;
+
+\verb|\CJKchar[CNS2]{"5A}{"5A}| \CJKchar[CNS2]{"5A}{"5A}
+\quad \verb|&C2-|\verb|5A5A;| &C2-5A5A;
+
+\verb|\CJKchar[CNS3]{"5A}{"5A}| \CJKchar[CNS3]{"5A}{"5A}
+\quad \verb|&C3-|\verb|5A5A;| &C3-5A5A;
+
+\verb|\CJKchar[CNS4]{"5A}{"5A}| \CJKchar[CNS4]{"5A}{"5A}
+\quad \verb|&C4-|\verb|5A5A;| &C4-5A5A;
+
+\verb|\CJKchar[CNS5]{"5A}{"5A}| \CJKchar[CNS5]{"5A}{"5A}
+\quad \verb|&C5-|\verb|5A5A;| &C5-5A5A;
+
+\verb|\CJKchar[CNS6]{"5A}{"5A}| \CJKchar[CNS6]{"5A}{"5A}
+\quad \verb|&C6-|\verb|5A5A;| &C6-5A5A;
+
+\verb|\CJKchar[CNS7]{"5A}{"5A}| \CJKchar[CNS7]{"5A}{"5A}
+\quad \verb|&C7-|\verb|5A5A;| &C7-5A5A;
+
+\end{CJK}
+
+\end{document}
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/CJKbabel.tex b/language/chinese/CJK/cjk-4.8.5/examples/CJKbabel.tex
new file mode 100644
index 0000000000..045465ee6e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/CJKbabel.tex
@@ -0,0 +1,138 @@
+% This is the file CJKbabel.tex of the CJK package
+% for testing text written with Emacs 20 and Babel (starting
+% with version 3.6).
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% You need Emacs 20 to process this file!
+
+% You should load this file into Emacs (C-x C-f) and call
+% `cjk-write-file' (M-x cjk-write-file). Then run LaTeX on the file
+% `CJKbabel.cjk'.
+%
+% `cjk-write-file' will be available after loading cjk-enc.el into
+% Emacs 20 with the commands load-file or load-library.
+%
+% Vietnamese support comes with the VnTeX package.
+% - T2A encoding for Computer Modern Cyrillic requires LH fonts
+% - uses CB Greek fonts and CM-Super fonts
+% - requires cyrillic, greek-fontenc, vntex
+%
+% Read cjk-enc.txt for more details.
+
+\documentclass[12pt]{article}
+
+\usepackage{inputenc} % load it without argument
+ % to avoid Babel warnings
+
+\usepackage[10pt]{type1ec} % use only 10pt fonts
+\usepackage[T1]{fontenc}
+
+\usepackage[german,
+ russian, % T2A font encoding
+ thaicjk, % C90 font encoding
+ greek, % LGR font encoding
+ vietnamese, % T5 font encoding
+ USenglish]{babel}
+
+\usepackage[overlap, CJK]{ruby}
+\usepackage{CJKulem}
+
+\usepackage{pshan} % Korean Wansong PS fonts
+
+\CJKencfamily{Bg5}{bsmi}
+\CJKencfamily{GB}{gbsn}
+\CJKencfamily[dnp]{JIS}{min}
+
+\CJKfontenc{KS}{HL}
+\CJKfontenc{JIS}{dnp}
+
+\renewcommand{\rubysep}{-0.2ex}
+
+
+\begin{document}
+
+\parskip 3ex
+\parindent 0pt
+
+“ÀÌ FAQ “Àº “ÀÚ“ÁÖ “¹Ý“º¹“µÇ“´Â “Áú“¹®“°ú “±×“¿¡ “´ë“ÇÑ “´ë“´ä“À» “°£“´Ü“¸í“·á“ÇÑ “¾ç“½Ä“À¸“·Î
+“¸ð“¾Æ “¿«“¾î“Á³“½À“´Ï“´Ù. \uline{“ÀÌ FAQ “ÀÇ “±¸“Á¶“´Â “Áö“³­ “ÆÇ“¿¡ “ºñ“ÇÏ“¿© “ȹ“±â“Àû“À¸“·Î
+ “º¯“°æ“µÇ“¾ú“½À“´Ï“´Ù.} \textbf{“»ó“¼¼“ÇÑ “°Í“Àº ``“ÀÌ FAQ “À» “¾î“¶»“°Ô “ÀГÀ»
+ “°Í“ÀΓ°¡'' “¶ó“´Â “´ë“¸ñ“À» “Âü“Á¶“ÇÏ“½Ã“±â “¹Ù“¶ø“´Ï“´Ù.}
+
+\begin{otherlanguage}{german}
+ Dieses FAQ wurde erstellt, um häufig gestellte Fragen und ihre
+ Antworten in einer gefälligen Form zusammenzufassen. \uline{Die
+ Struktur dieses FAQ wurde drastisch geändert seit der letzten
+ Version.} \textbf{Für Details siehe den Abschnitt "`Wie lese ich
+ dieses FAQ"'.}
+\end{otherlanguage}
+
+\CJKtilde
+
+‘±¾‘³£‘ÎÊ‘ÎÊ‘´ð‘¼¯~(FAQ list)~‘ÊÇ‘´Ó‘Ò»‘Щ‘¾­‘³£‘±»‘ÎÊ‘µ½‘µÄ‘ÎÊ‘Ì⑼°‘Æä‘ÊÊ‘µ±‘µÄ‘½â‘´ð‘ÖБ£¬‘ÒÔ‘·½
+‘±ã‘µÄ‘ÐΑʽ‘Õª‘Òª‘¶ø‘³ö‘µÄ‘¡£\uline{‘¸ú‘ÉÏ‘Ò»‘°æ‘²»‘ͬ‘µÄ‘ÊÇ‘£¬‘Æ䑱à‘ÅÅ‘½á‘¹¹‘ÒÑ‘³¹‘µ×‘¸Ä‘±ä‘¡£}
+\textbf{‘ÓБ¹Ø‘Б½á‘¹¹‘µÄ‘ϸ‘½Ú‘£¬‘¿É‘²Î‘¿¼‘¡¸‘È瑺ΑÔÄ‘¶Á‘±¾‘ÎÊ‘´ð‘¼¯‘¼°‘ÁË‘½â‘Æ䑱à‘ÅÅ‘½á‘¹¹‘¡¹‘¸Ã
+ ‘Ïî‘ÖБµÄ‘˵‘Ã÷‘¡£}
+
+˜¨Ü˜¼§˜»Ã˜»Ã˜Ã±˜Äö~(FAQ list)~˜³Ó˜¼¸˜¦¢˜­é˜Ç§˜¿¸˜»Ã˜®°˜°ü˜»Ã˜Ù°˜®¨˜Ñ˘Ƕ˜°ü˜È٘ñ˜¦ä˜¡¢˜§é˜§Ê
+˜±î˜°ü˜¬±˜ª£˜Êó˜µÓ˜ªÕ˜§ù˜°ü˜¡¤\uline{˜Èú˜¦¹˜¦¢˜°ë˜¦ã˜©Ò˜°ü˜³Ó˜¡¢˜®¨˜Ð¾˜¼ë˜Ã¹˜Ë­˜¦Ù˜Ê是¶˜¬Ò˜Þɘ¡¤}
+\textbf{˜ªµ˜ÛØƼ˜Ã¹˜Ë­˜°ü˜¾Ù˜Ç蘡¢˜¨¬˜»·˜ªÔ˜¡Ö˜©ò˜ªõ˜Ñæ˜Ýõ˜¨Ü˜»Ã˜Ã±˜Äö˜§°˜¦¨˜ÈÙ˜®¨˜Ð¾˜¼ë˜Ã¹˜Ë­˜¡×˜ÈÛ
+ ˜Äû˜¦ä˜°ü˜Íª˜¯ý˜¡¤}
+
+This FAQ list was made to summarize some frequently asked questions
+and their answers in a convenient form. \uline{The structure of this
+ FAQ list has drastically changed since the last version.}
+\textbf{For details of the new structure, see the entry of `How to
+ read this FAQ and its structure'.}
+
+’¤³’¤Î~FAQ~’¥ê’¥¹’¥È’¤Ï’¡¢’¤è’¤¯’¤¢’¤ë’¼Á’Ì䒤Ȓ¤½’¤Î’Åú’¤ò’½¸’¤á’¡¢’Ìò’¤Ë’Ω’¤Ä’¤è’¤¦’¤Ë’¤·’¤¿’¤â’¤Î
+’¤Ç’¤¹’¡£\uline{’¤³’¤Î~FAQ~’¥ê’¥¹’¥È’¤Î’¹½’¤’¤Ï’¡¢’°Ê’Á°’¤Î’¤â’¤Î’¤È’Èæ’¤Ù’¤Æ’Âç’Éý’¤Ë’ÊÑ’¹¹’¤µ’¤ì
+ ’¤Æ’¤¤’¤Þ’¤¹’¡£}\textbf{\ruby{’¿·}{’¤¢’¤¿’¤é}’¤·’¤¤’¹½’¤’¤Ë’´Ø’¤·’¤Æ’¤Ï’¡¢’¡Ö’¤³’¤Î~FAQ~
+ ’¤Î’ÆÉ’¤ß’Êý’¤È’¤½’¤Î’¹½’¤’¡×’¤Î’¹à’ÌÜ’¤ò\ruby{’»²}{’¤µ’¤ó}\ruby{’¾È}{’¤·’¤ç’¤¦}’¤·’¤Æ’²¼’¤µ
+ ’¤¤’¡£}
+
+\begin{otherlanguage}{vietnamese}
+Phš¢¥n ``Nhš¢æng cš¢âu hš¢öi vš¢à giš¢äi š¢ðš¢áp thš¢ßš¢¶ng gš¢£p'' (viš¢ªt tš¢¡t tš¢× tiš¢ªng Anh
+lš¢à FAQ) š¢ðš¢ßš¢þc nš¢êu ra š¢· š¢ðš¢ây nhš¢¢m mš¢øc š¢ðš¢ích thu thš¢§p nhš¢æng cš¢âu hš¢öi thš¢ßš¢¶ng
+gš¢£p trong thš¢ñc tš¢ª vš¢à nhš¢æng lš¢¶i giš¢äi š¢ðš¢áp thš¢ích hš¢þp nhš¢¤t cš¢üa nš¢ó.
+\uline{Tš¢× lš¢¥n š¢¤n bš¢än cuš¢¯i cš¢ùng š¢ðš¢ªn nay, š¢ðš¢ã cš¢ó nhš¢æng sš¢ñ thay š¢ðš¢±i khš¢á
+ lš¢¾n trong cš¢¤u trš¢úc cš¢üa FAQ.} \textbf{š£ðš¢¬ hiš¢¬u rš¢õ hš¢½n bš¢Õn nš¢ên xem lš¢Õi
+ chš¢ßš¢½ng ``Lš¢àm sao tš¢ôi cš¢ó thš¢¬ š¢ðš¢÷c š¢ðuš¢þc FAQ''.}
+\end{otherlanguage}
+
+\begin{otherlanguage}{russian}
+ ŒÍŒâŒÞŒâ ŒáŒßŒØŒáŒÞŒÚ ŒÑŒëŒÛ ŒáŒÞŒáŒâŒÐŒÒŒÛŒÕŒÝ ŒÔŒÛŒï ŒáŒãŒÜŒÜŒØŒàŒÞŒÒŒÐŒÝŒØŒï ŒÝŒÕŒÚŒÞŒâŒÞŒàŒëŒå ŒçŒÐŒáŒâŒÞ
+ Œ×ŒÐŒÔŒÐŒÒŒÐŒÕŒÜŒëŒå ŒÒŒÞŒßŒàŒÞŒáŒÞŒÒ (FAQ), ŒÒŒÜŒÕŒáŒâŒÕ Œá ŒÞŒâŒÒŒÕŒâŒÐŒÜŒØ ŒÝŒÐ ŒÝŒØŒå, ŒÒ ŒãŒÔŒÞŒÑŒÝŒÞŒÙ
+ ŒäŒÞŒàŒÜŒÕ. \uline{ŒÁŒâŒàŒãŒÚŒâŒãŒàŒÐ ŒíŒâŒÞŒÓŒÞ FAQ ŒÚŒÐŒàŒÔŒØŒÝŒÐŒÛŒìŒÝŒÞ ŒØŒ×ŒÜŒÕŒÝŒØŒÛŒÐŒáŒì ŒßŒÞ
+ ŒáŒàŒÐŒÒŒÝŒÕŒÝŒØŒî Œá ŒßŒÞŒáŒÛŒÕŒÔ\-ŒÝŒÕŒÙ ŒÒŒÕŒàŒáŒØŒÕŒÙ.} \textbf{Œ² ŒàŒÐŒ×ŒÔŒÕŒÛŒÕ `ŒºŒÐŒÚ ŒçŒØŒâŒÐŒâŒì
+ ŒíŒâŒÞŒâ FAQ ŒØ ŒÕŒÓŒÞ ŒáŒâŒàŒãŒÚŒâŒãŒàŒÐ' ŒÞŒÑŒêŒïŒáŒÝŒÕŒÝŒë ŒÔŒÕŒâŒÐŒÛŒØ ŒíŒâŒÞŒÙ ŒÝŒÞŒÒŒÞŒÙ ŒáŒâŒàŒãŒÚŒâŒãŒàŒë.}
+\end{otherlanguage}
+
+\begin{otherlanguage}{thaicjk}
+ …Ã…Ò…Â…¡…Ò…Ã FAQ €¥¹¥Õ¥é…Ê€¥Ã¥é…Ò…§€¥¢¥Ö¥é…¹…à€¥¾¥×¥è…Í…Ê€¥Ã¥Ø…»…¤…Ó…¶…Ò…Á€¥·¥Õ¥è…¶…Ò…Á€¥¡¥Ñ…¹€¥º¥è…Í…Â…¤€¥Ã¥Ñ¥é…§…á…Å…Ð…¤…Ó…µ…Í…º…¤…Ó…¶…Ò…Á…ã…¹€¥Ã¥Ù…»…á…º…º€¥·¥Õ…Ê…Ð…´…Ç…¡.
+ \uline{…â…¤…Ã…§…Ê€¥Ã¥é…Ò…§…¢…Í…§…Ã…Ò…Â…¡…Ò…Ã FAQ €¥¹¥Õ¥é…à…»€¥Å¥Õ¥è…Â…¹…ä…»…Á…Ò…¡€¥µ¥Ñ¥é…§…ဥµ¥è€¥Ã¥Ø¥è…¹€¥·¥Õ¥è…ဥťé…Ç.}
+ \textbf{€¥´¥Ù…Ã…Ò…Â…Å…Ð…à€¥Í¥Õ…Â…´…Ê…Ó…Ë€¥Ã¥Ñ…º…â…¤…Ã…§…Ê€¥Ã¥é…Ò…§…ã…Ë€¥Á¥è…䀥´¥é…¨…Ò…¡€¥ª¥è…Ç…§ ``…â…¤…Ã…§…Ê€¥Ã¥é…Ò…§…á…ŅЀ¥Ç¥Ô€¥¸¥Õ…¡…҅À¥Í¥è…Ò…¹
+ FAQ.''}
+\end{otherlanguage}
+
+\begin{otherlanguage}{greek}
+ †Ç †ë†ß†ó†ô†á †á†õ†ô†Þ †Ó†Ô†Å (†ó†õ†÷†í†Ü †ô†é†è†å†ì†Ý†í†ù†í †å†ñ†ù†ô†Þ†ó†å†ù†í) †Ý†÷†å†é †ó†á†í †ó†ê†ï†ð†ü †í†á
+ †ó†õ†ì†ð†å†ñ†é†ë†Ü†â†å†é †ó†å †å†ý†÷†ñ†ç†ó†ô†ç †ì†ï†ñ†ö†Þ †ê†Ü†ð†ï†é†å†ò †ó†ç†ì†á†í†ô†é†ê†Ý†ò †å†ñ†ù†ô†Þ†ó†å†é†ò †ê†á†é †ô†é†ò
+ †á†ð†á†í†ô†Þ†ó†å†é†ò †ô†ï†õ†ò. \uline{†Ç †ï†ñ†ã†Ü†í†ù†ó†ç †á†õ†ô†Þ†ò †ô†ç†ò †ë†ß†ó†ô†á†ò †Ü†ë†ë†á†î†å
+ †ó†ç†ì†á†í†ô†é†ê†Ü †á†ð†ü †ô†ç†í †ô†å†ë†å†õ†ô†á†ß†á †Ý†ê†ä†ï†ó†Þ †ô†ç†ò †ê†á†é †ì†å†ô†Ü.} \textbf{†Ã†é†á
+ †ë†å†ð†ô†ï†ì†Ý†ñ†å†é†å†ò †ð†Ü†í†ù †ó†ô†ç †í†Ý†á †ï†ñ†ã†Ü†í†ù†ó†ç, †â†ë†Ý†ð†å †ô†ï †ë†Þ†ì†ì†á <<†Ð†þ†ò †í†á
+ †ä†é†á†â†Ü†ó†å†ô†å †á†õ†ô†Þ †ô†ç†í †Ó†Ô†Å †ê†á†é †ð†þ†ò †å†ß†í†á†é †ï†ñ†ã†á†í†ù†ì†Ý†í†ç>>.}
+\end{otherlanguage}
+
+\end{document}
+
+
+%%% Local Variables:
+%%% coding: emacs-mule
+%%% mode: latex
+%%% TeX-master: t
+%%% TeX-command-default: "CJKLaTeX"
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/CJKfntef.tex b/language/chinese/CJK/cjk-4.8.5/examples/CJKfntef.tex
new file mode 100644
index 0000000000..242b0d9ee4
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/CJKfntef.tex
@@ -0,0 +1,90 @@
+% This is the file CJKfntef.tex of the CJK package
+% for testing CJKfntef.sty.
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\documentclass[12pt]{article}
+
+\usepackage{color}
+\usepackage{CJK}
+\usepackage{CJKfntef}
+
+\textwidth 100mm
+\pagestyle{empty}
+
+
+\begin{document}
+
+\baselineskip 15pt
+\parindent 0pt
+\parskip 15pt
+
+\begin{CJK*}{GB}{gbsn}
+
+\verb|CJKfilltwosides environment:|
+
+\begin{CJKfilltwosides}{40mm}
+Á½¶Ë·ÖÉ¢¶ÔÆë\\
+·ÖÉ¢¶ÔÆë \\
+\CJKunderdot{ºº ×Ö ¿É¼Óµã}
+\end{CJKfilltwosides}
+
+\vspace{0.3cm}
+
+\verb|\CJKunderdot{...\CJKunderline{...}}|:\\
+\CJKunderdot{ºº×ּӵ㣬 \CJKunderline{¿Éͬʱ¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}}
+
+\verb|\CJKunderline*{...\CJKunderdot{...}}|:\\
+\CJKunderline*{ºº×ּӵ㣬 \CJKunderdot{¿Éͬʱ¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}}
+
+\verb|\CJKunderdot{...\CJKunderwave{...}}|:\\
+\CJKunderdot{ºº×ּӵ㣬 \CJKunderwave{¿Éͬʱ¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}}
+
+\verb|\CJKunderwave*{...\CJKunderdot{...}}|:\\
+\CJKunderwave*{ºº×ּӵ㣬 \CJKunderdot{¿Éͬʱ¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}}
+
+\verb|\CJKunderdot{...\CJKunderdblline{...}}|:\\
+\CJKunderdot{ºº×ּӵ㣬 \CJKunderdblline{¿Éͬʱ¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}}
+
+\verb|\CJKunderdblline*{...\CJKunderdot{...}}|:\\
+\CJKunderdblline*{ºº×ּӵ㣬 \CJKunderdot{¿Éͬʱ¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}}
+
+\verb|\CJKunderdot{...\CJKsout{...}}|:\\
+\CJKunderdot{ºº×ּӵ㣬 \CJKsout{¿Éͬʱ¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}}
+
+\verb|\CJKsout*{...\CJKunderdot{...}}|:\\
+\CJKsout*{ºº×ּӵ㣬 \CJKunderdot{¿Éͬʱ¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}}
+
+\verb|\CJKunderdot{...\CJKxout{...}}|:\\
+\CJKunderdot{ºº×ּӵ㣬 \CJKxout{¿Éͬʱ¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}}
+
+\verb|\CJKxout*{...\CJKunderdot{...}}|:\\
+\CJKxout*{ºº×ּӵ㣬 \CJKunderdot{¿Éͬʱ¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}}
+
+\newpage
+
+\verb|\CJKunderline{...}\CJKunderline{...}|:\\
+\CJKunderline{ºº×Ö}\CJKunderline{¼Óµã}
+
+\verb|\varCJKunderline{...}\varCJKunderline{...}|:\\
+\varCJKunderline{ºº×Ö}\varCJKunderline{¼Óµã}
+
+\verb|\CJKunderanyline{...}{...}{...}%|\\
+\verb|\CJKunderanyline{...}{...}{...}|:\\
+\CJKunderanyline{0.5em}{-}{ºº×ּӵ㣬 ¿Éͬʱ}%
+\CJKunderanyline{0.5em}{-}{¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}
+
+\verb|\CJKunderanysymbol{...}{...}{...}|:\\
+\CJKunderanysymbol{0.5em}{-}{ºº×ּӵ㣬 ¿Éͬʱ¼ÓÏ»®Ïß¼ÓÏ»®£¬Ïß, ×Ô¶¯»»ÐÐ,}
+
+\end{CJK*}
+
+\end{document}
+
+%%% Local Variables:
+%%% coding: euc-china
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/CJKmixed.tex b/language/chinese/CJK/cjk-4.8.5/examples/CJKmixed.tex
new file mode 100644
index 0000000000..cbcb8796fc
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/CJKmixed.tex
@@ -0,0 +1,81 @@
+% This is the file CJKmixed.tex of the CJK package
+% for testing CJK text written vertically.
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+%
+% Vietnamese support comes with the VnTeX package.
+
+\documentclass[12pt]{article}
+
+\usepackage{CJKutf8}
+\usepackage{CJKvert}
+\usepackage{CJKulem}
+
+\usepackage{inputenc} % load it without argument
+ % to avoid Babel warnings
+
+\usepackage[vietnamese, % T5 font encoding
+ USenglish]{babel}
+
+\newenvironment{TChinese}{%
+ \CJKfamily{bsmi}%
+ \CJKtilde
+ \CJKnospace}{}
+
+
+\begin{document}
+
+\begin{CJK}{UTF8}{}
+
+\CJKhorz
+
+This is a test how CJK scripts can be typeset horizontally and
+vertically at the same time. It is not too difficult to achieve,
+nevertheless it is not trivial. Most importantly, you need a
+\texttt{.fdx} file which corresponds to your CJK font, and which
+defines how to set up the font for vertical typesetting.
+
+\begin{center}
+ \rotatebox[origin=c]{-90}{%
+ \begin{minipage}[c]{8cm}
+ \CJKvert
+ \begin{TChinese}
+ 本常å•å•ç­”集~(FAQ list)~是從一些經常被å•åˆ°çš„å•é¡ŒåŠå…¶é©ç•¶çš„解答
+ 中,以方便的形å¼æ‘˜è¦è€Œå‡ºçš„。\uline{跟上一版ä¸åŒçš„是,其編排çµæ§‹
+ 已徹底改變。} \textbf{有關新çµæ§‹çš„細節,å¯åƒè€ƒã€Œå¦‚何閱讀本å•
+ 答集åŠäº†è§£å…¶ç·¨æŽ’çµæ§‹ã€è©²é …中的說明。}
+ \end{TChinese}
+ \end{minipage}%
+ }%
+ \hspace{0.5cm}%
+ \begin{minipage}[c]{8cm}
+ \begin{otherlanguage}{vietnamese}
+ Phần ``Những câu há»i và giải đáp thÆ°á»ng gặp'' (viết tắt từ tiếng
+ Anh là FAQ) được nêu ra ở đây nhằm mục đích thu thập những câu
+ há»i thÆ°á»ng gặp trong thá»±c tế và những lá»i giải đáp thích hợp
+ nhất của nó. \uline{Từ lần ấn bản cuối cùng đến nay, đã có
+ những sá»± thay đổi khá lá»›n trong cấu trúc của FAQ.} \textbf{Äể
+ hiểu rõ hÆ¡n bạn nên xem lại chÆ°Æ¡ng ``Làm sao tôi có thể Ä‘á»c
+ đuợc FAQ''.}
+ \end{otherlanguage}
+ \end{minipage}
+\end{center}
+
+\begin{TChinese}
+ 本常å•å•ç­”集~(FAQ list)~是從一些經常被å•åˆ°çš„å•é¡ŒåŠå…¶é©ç•¶çš„解答中,以
+ 方便的形å¼æ‘˜è¦è€Œå‡ºçš„。\uline{跟上一版ä¸åŒçš„是,其編排çµæ§‹å·²å¾¹åº•æ”¹è®Šã€‚}
+ \textbf{有關新çµæ§‹çš„細節,å¯åƒè€ƒã€Œå¦‚何閱讀本å•ç­”集åŠäº†è§£å…¶ç·¨æŽ’çµæ§‹ã€
+ 該項中的說明。}
+\end{TChinese}
+
+\end{CJK}
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% coding: utf-8
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/CJKspace.tex b/language/chinese/CJK/cjk-4.8.5/examples/CJKspace.tex
new file mode 100644
index 0000000000..4acfb0230a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/CJKspace.tex
@@ -0,0 +1,41 @@
+% This is the file CJKspace.tex of the CJK package
+% for testing the CJKspace style file.
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+%
+% Read CJKspace.txt for more details.
+
+\documentclass[11pt]{article}
+
+\usepackage{CJK}
+\usepackage{CJKspace}
+
+\begin{document}
+
+\parindent 2em
+
+\begin{CJK*}{UTF8}{gbsn}
+
+ This document shows the effects of \texttt{CJKspace.sty}.
+
+ \verb+CJKspace+ 包仅忽略CJK文字之间的空白而ä¿ç•™ï¼ˆCJK文字与英文之间等)
+ 其它空白。
+
+ 这是 English 中文 \textit{Chinese} 中文 {\itshape Italic} 数学 $x=y$
+ 混排 \verb+anything+
+
+ 混排 \verb+anything+ ä¿æŒ \texttt{spaces} 空格 \LaTeX\ é—´éš”
+ \mbox{boxes} ç›’å­ \hbox{hbox} 中文 123456 æ•°å­—.
+
+\end{CJK*}
+
+\end{document}
+
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/CJKutf8.tex b/language/chinese/CJK/cjk-4.8.5/examples/CJKutf8.tex
new file mode 100644
index 0000000000..f7a6b23ec9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/CJKutf8.tex
@@ -0,0 +1,139 @@
+% This is the file CJKutf8.tex of the CJK package
+% for testing the CJKutf8 style file.
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Vietnamese support comes with the VnTeX package.
+% UTF-8 support for Greek comes with the greek-inputenc package.
+%
+% - T2A encoding for Computer Modern Cyrillic requires LH fonts
+% - uses CB Greek fonts, CM-Super fonts
+% - requires cyrillic, greek-fontenc, greek-inputenc, vntex
+%
+% Read CJKutf8.txt for more details.
+
+\documentclass[12pt]{article}
+
+\usepackage{cmap}
+
+\usepackage[10pt]{type1ec} % use only 10pt fonts
+\usepackage[T1]{fontenc}
+
+\usepackage{CJKutf8} % CJK wrapper of [utf8]{inputenc}
+\usepackage[german,
+ russian, % T2A font encoding
+ vietnamese, % T5 font encoding
+ greek, % LGR font encoding
+ USenglish]{babel}
+
+\usepackage{textalpha} % improved LGR support
+
+\usepackage[overlap, CJK]{ruby}
+\usepackage{CJKulem} % CJK wrapper of {ulem}
+
+\renewcommand{\rubysep}{-0.2ex}
+
+\newenvironment{SChinese}{%
+ \CJKfamily{gbsn}%
+ \CJKtilde
+ \CJKnospace}{}
+\newenvironment{TChinese}{%
+ \CJKfamily{bsmi}%
+ \CJKtilde
+ \CJKnospace}{}
+\newenvironment{Japanese}{%
+ \CJKfamily{min}%
+ \CJKtilde
+ \CJKnospace}{}
+\newenvironment{Korean}{%
+ \CJKfamily{mj}}{}
+
+
+\begin{document}
+
+\parskip 3ex
+\parindent 0pt
+
+\begin{CJK}{UTF8}{}
+
+\begin{Korean}
+ ì´ FAQ ì€ ìžì£¼ 반복ë˜ëŠ” 질문과 ê·¸ì— ëŒ€í•œ ëŒ€ë‹µì„ ê°„ë‹¨ëª…ë£Œí•œ ì–‘ì‹ìœ¼ë¡œ
+ 모아 엮어졌습니다. \uline{ì´ FAQ ì˜ êµ¬ì¡°ëŠ” 지난 íŒì— 비하여
+ íšê¸°ì ìœ¼ë¡œ 변경ë˜ì—ˆìŠµë‹ˆë‹¤.} \textbf{ìƒì„¸í•œ ê²ƒì€ ``ì´ FAQ ì„ ì–´ë–»ê²Œ
+ ì½ì„ 것ì¸ê°€'' ë¼ëŠ” ëŒ€ëª©ì„ ì°¸ì¡°í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.}
+\end{Korean}
+
+\begin{otherlanguage}{german}
+ Dieses FAQ wurde erstellt, um häufig gestellte Fragen und ihre
+ Antworten in einer gefälligen Form zusammenzufassen. \uline{Die
+ Struktur dieses FAQ wurde drastisch geändert seit der letzten
+ Version.} \textbf{Für Details siehe den Abschnitt "`Wie lese ich
+ dieses FAQ"'.}
+\end{otherlanguage}
+
+\begin{SChinese}
+ 本常问问答集~(FAQ list)~是从一些ç»å¸¸è¢«é—®åˆ°çš„问题åŠå…¶é€‚当的解答中,以
+ 方便的形å¼æ‘˜è¦è€Œå‡ºçš„。\uline{跟上一版ä¸åŒçš„是,其编排结构已彻底改å˜ã€‚}
+ \textbf{有关新结构的细节,å¯å‚考「如何阅读本问答集åŠäº†è§£å…¶ç¼–排结构ã€
+ 该项中的说明。}
+\end{SChinese}
+
+\begin{TChinese}
+ 本常å•å•ç­”集~(FAQ list)~是從一些經常被å•åˆ°çš„å•é¡ŒåŠå…¶é©ç•¶çš„解答中,以
+ 方便的形å¼æ‘˜è¦è€Œå‡ºçš„。\uline{跟上一版ä¸åŒçš„是,其編排çµæ§‹å·²å¾¹åº•æ”¹è®Šã€‚}
+ \textbf{有關新çµæ§‹çš„細節,å¯åƒè€ƒã€Œå¦‚何閱讀本å•ç­”集åŠäº†è§£å…¶ç·¨æŽ’çµæ§‹ã€
+ 該項中的說明。}
+\end{TChinese}
+
+This FAQ list was made to summarize some frequently asked questions
+and their answers in a convenient form. \uline{The structure of this
+ FAQ list has drastically changed since the last version.}
+\textbf{For details of the new structure, see the entry of `How to
+ read this FAQ and its structure'.}
+
+\begin{Japanese}
+ ã“ã®~FAQ~リストã¯ã€ã‚ˆãã‚る質å•ã¨ãã®ç­”を集ã‚ã€å½¹ã«ç«‹ã¤ã‚ˆã†ã«ã—ãŸã‚‚ã®
+ ã§ã™ã€‚\uline{ã“ã®~FAQ~リストã®æ§‹é€ ã¯ã€ä»¥å‰ã®ã‚‚ã®ã¨æ¯”ã¹ã¦å¤§å¹…ã«å¤‰æ›´ã•
+ ã‚Œã¦ã„ã¾ã™ã€‚}\textbf{\ruby{æ–°}{ã‚ãŸã‚‰}ã—ã„構造ã«é–¢ã—ã¦ã¯ã€ã€Œã“
+ ã®~FAQ~ ã®èª­ã¿æ–¹ã¨ãã®æ§‹é€ ã€ã®é …目を\ruby{å‚}{ã•ã‚“}\ruby{ç…§}{ã—ょ
+ ã†}ã—ã¦ä¸‹ã•ã„。}
+\end{Japanese}
+
+\begin{otherlanguage}{vietnamese}
+ Phần ``Những câu há»i và giải đáp thÆ°á»ng gặp'' (viết tắt từ tiếng Anh
+ là FAQ) được nêu ra ở đây nhằm mục đích thu thập những câu há»i
+ thÆ°á»ng gặp trong thá»±c tế và những lá»i giải đáp thích hợp nhất của
+ nó. \uline{Từ lần ấn bản cuối cùng đến nay, đã có những sự thay đổi
+ khá lá»›n trong cấu trúc của FAQ.} \textbf{Äể hiểu rõ hÆ¡n bạn nên
+ xem lại chÆ°Æ¡ng ``Làm sao tôi có thể Ä‘á»c Ä‘uợc FAQ''.}
+\end{otherlanguage}
+
+\begin{otherlanguage}{russian}
+ Этот ÑпиÑок был ÑоÑтавлен Ð´Ð»Ñ ÑÑƒÐ¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… чаÑто
+ задаваемых вопроÑов (FAQ), вмеÑте Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°Ð¼Ð¸ на них, в удобной
+ форме. \uline{Структура Ñтого FAQ кардинально изменилаÑÑŒ по
+ Ñравнению Ñ Ð¿Ð¾Ñлед\-ней верÑией.} \textbf{Ð’ разделе `Как читать
+ Ñтот FAQ и его Ñтруктура' объÑÑнены детали Ñтой новой Ñтруктуры.}
+\end{otherlanguage}
+
+\begin{otherlanguage}{greek}
+ Η λίστα αυτή ΣΤΕ (συχνά τιθεμένων εÏωτήσεων) έχει σαν σκοπό να
+ συμπεÏιλάβει σε εÏχÏηστη μοÏφή κάποιες σημαντικές εÏωτήσεις και τις
+ απαντήσεις τους. \uline{Η οÏγάνωση αυτής της λίστας άλλαξε
+ σημαντικά από την τελευταία έκδοσή της και μετά.} \textbf{Για
+ λεπτομέÏειες πάνω στη νέα οÏγάνωση, βλέπε το λήμμα <<Πώς να
+ διαβάσετε αυτή την ΣΤΕ και πώς είναι οÏγανωμένη>>.}
+\end{otherlanguage}
+
+\end{CJK}
+
+\end{document}
+
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/GB.tex b/language/chinese/CJK/cjk-4.8.5/examples/GB.tex
new file mode 100644
index 0000000000..b02a095e24
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/GB.tex
@@ -0,0 +1,31 @@
+% This is the file GB.tex of the CJK package
+% for testing Chinese (in GB encoding).
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\documentclass[12pt]{article}
+
+\usepackage{CJK}
+
+
+\begin{document}
+
+\begin{CJK*}{GB}{gbsn}
+\CJKtilde
+
+\noindent ±¾³£ÎÊÎÊ´ð¼¯~(FAQ list)~ÊÇ´ÓһЩ¾­³£±»Îʵ½µÄÎÊÌâ¼°ÆäÊʵ±µÄ½â
+´ðÖУ¬ÒÔ·½±ãµÄÐÎʽժҪ¶ø³öµÄ¡£¸úÉÏÒ»°æ²»Í¬µÄÊÇ£¬Æä±àÅŽṹÒѳ¹µ×¸Ä±ä¡£
+\textbf{ÓйØнṹµÄϸ½Ú£¬¿É²Î¿¼¡¸ÈçºÎÔĶÁ±¾Îʴ𼯼°Á˽âÆä±àÅŽṹ¡¹¸Ã
+ÏîÖеÄ˵Ã÷¡£}
+
+\end{CJK*}
+
+\end{document}
+
+%%% Local Variables:
+%%% coding: euc-china
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/JIS.tex b/language/chinese/CJK/cjk-4.8.5/examples/JIS.tex
new file mode 100644
index 0000000000..aadea76cb7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/JIS.tex
@@ -0,0 +1,35 @@
+% This is the file JIS.tex of the CJK package
+% for testing Japanese (in JIS encoding).
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\documentclass[12pt]{article}
+
+\usepackage{CJK}
+\usepackage[CJK, overlap]{ruby}
+
+\renewcommand{\rubysep}{-0.2ex}
+
+
+\begin{document}
+
+\begin{CJK*}[dnp]{JIS}{min}
+\CJKtilde
+
+\noindent ¤³¤Î~FAQ~¥ê¥¹¥È¤Ï¡¢¤è¤¯¤¢¤ë¼ÁÌä¤È¤½¤ÎÅú¤ò½¸¤á¡¢Ìò¤ËΩ¤Ä¤è¤¦
+¤Ë¤·¤¿¤â¤Î¤Ç¤¹¡£¤³¤Î~FAQ~¥ê¥¹¥È¤Î¹½Â¤¤Ï¡¢°ÊÁ°¤Î¤â¤Î¤ÈÈæ¤Ù¤ÆÂçÉý¤ËÊѹ¹
+¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\textbf{\ruby{¿·}{¤¢¤¿¤é}¤·¤¤¹½Â¤¤Ë´Ø¤·¤Æ¤Ï¡¢¡Ö¤³¤Î~FAQ~
+¤ÎÆɤßÊý¤È¤½¤Î¹½Â¤¡×¤Î¹àÌܤò\ruby{»²}{¤µ¤ó}\ruby{¾È}{¤·¤ç¤¦}¤·¤Æ²¼¤µ
+¤¤¡£}
+
+\end{CJK*}
+
+\end{document}
+
+%%% Local Variables:
+%%% coding: euc-japan
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/KS.tex b/language/chinese/CJK/cjk-4.8.5/examples/KS.tex
new file mode 100644
index 0000000000..8d0ba7f26b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/KS.tex
@@ -0,0 +1,31 @@
+% This is the file KS.tex of the CJK package
+% for testing Korean (in KS encoding).
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\documentclass[12pt]{article}
+
+\usepackage{CJK}
+\usepackage{pshan}
+
+
+\begin{document}
+
+\begin{CJK}[HL]{KS}{}
+
+\noindent ÀÌ FAQ Àº ÀÚÁÖ ¹Ýº¹µÇ´Â Áú¹®°ú ±×¿¡ ´ëÇÑ ´ë´äÀ» °£´Ü¸í·áÇÑ
+¾ç½ÄÀ¸·Î ¸ð¾Æ ¿«¾îÁ³½À´Ï´Ù. ÀÌ FAQ ÀÇ ±¸Á¶´Â Áö³­ ÆÇ¿¡ ºñÇÏ¿©
+ȹ±âÀûÀ¸·Î º¯°æµÇ¾ú½À´Ï´Ù. \textbf{»ó¼¼ÇÑ °ÍÀº ``ÀÌ FAQ À» ¾î¶»°Ô
+ÀÐÀ» °ÍÀΰ¡'' ¶ó´Â ´ë¸ñÀ» ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.}
+
+\end{CJK}
+
+\end{document}
+
+%%% Local Variables:
+%%% coding: euc-korea
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/README b/language/chinese/CJK/cjk-4.8.5/examples/README
new file mode 100644
index 0000000000..38e932a325
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/README
@@ -0,0 +1,66 @@
+Please note that the used fonts in the example files are set up for the
+TeXLive distribution. Here a listing of some files and the used CJK fonts.
+
+
+ example file font definition file(s) TeX font names font file name(s)
+ ---------------------------------------------------------------------------
+
+ Big5.tex c00bsmi.fd bsmilp01, bsmiu00.pfb,
+ bsmilp02, bsmiu02.pfb,
+ ... (4) ...
+
+ Big5vert.tex c00bsmi.fd (1) bsmilp01, bsmiu00.pfb,
+ bsmilp02, bsmiu02.pfb,
+ ..., ...,
+ bsmilpv (4) bsmiuv.pfb
+
+ CEF_test.tex c31song.fd, c1so1201, cns40-1.hbf,
+ ..., c1so1202, ...,
+ c37song.fd ..., cns40-7.hbf (5)
+ c2so1201,
+ c2so1202,
+ ...
+
+ CJKutf8.txt c70bsmi.fd, bsmiu00,... bsmiu00.pfb,...
+ c70gbsn.fd, gbsnu00,... gbsnu00.pfb,...
+ c70min.fd, (2) udmj00,... (4) dmjsy.pfb,...
+ c70mj.fd uwmj00,... (4,6) umj00.pfb,... (7)
+
+ GB.tex c10gbsn.fd gbsnlp01, gbsnlp01.pfb,
+ gbsnlp02, gbsnlp02.pfb,
+ ... (4) ...
+
+ JIS.tex
+ SJIS.tex c42min.fd (2) dmjsy, dmjsy.pfb,
+ dmjroma, dmjroma.pfb,
+ dmjhira, dmjhira.pfb,
+ ... ...
+
+ KS.tex c63mj.fd wmj0, umj00.pfb,
+ wmj1, umj01.pfb,
+ ... (4) ... (7)
+
+ UTF8.tex c70song.fd (3) cyberb00, cyberbit.ttf
+ cyberb01,
+ ...
+
+
+(1) The glyphs are rotated using the graphicx package.
+
+(2) Font definition files for the Wadalab fonts are in the directory
+ `contrib/wadalab'.
+
+(3) For licensing reasons, TeXLive doesn't contain cyberbit.ttf and
+ corresponding TeX subfont metric files, thus you can't process UTF8.tex
+ without installing this font (or another Unicode font) manually.
+
+(4) These are virtual fonts.
+
+(5) These are bitmap fonts.
+
+(6) Virtual Unicode fonts for Korean (from HLaTeX) are currently only
+ available in the TeXLive distribution.
+
+(7) Korean PS fonts (from HLaTeX) with glyph names compliant to the Adobe
+ Glyph List (AGL) are currently only available in the TeXLive
+ distribution.
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/SJIS.tex b/language/chinese/CJK/cjk-4.8.5/examples/SJIS.tex
new file mode 100644
index 0000000000..5c7417d90b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/SJIS.tex
@@ -0,0 +1,39 @@
+% This is the file SJIS.tex of the CJK package
+% for testing Japanese (in SJIS encoding).
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+%
+%
+% process this file with sjislatex
+
+\documentclass[12pt]{article}
+
+\usepackage{CJK}
+\usepackage[CJK, overlap]{ruby}
+
+\renewcommand{\rubysep}{-0.3ex}
+
+
+\begin{document}
+
+\begin{CJK*}[dnp]{SJIS}{min}
+\CJKtilde
+
+\noindent ‚±‚Ì~FAQ~ƒŠƒXƒg‚ÍA‚æ‚­‚ ‚鎿–â‚Æ‚»‚Ì“š‚ðW‚ßA–ð‚É—§‚‚悤
+‚É‚µ‚½‚à‚Ì‚Å‚·B‚±‚Ì~FAQ~ƒŠƒXƒg‚Ì\‘¢‚ÍAˆÈ‘O‚Ì‚à‚Ì‚Æ”ä‚ׂđ啂ɕÏX
+‚³‚ê‚Ä‚¢‚Ü‚·B\textbf{\ruby{V}{‚ ‚½‚ç}‚µ‚¢\‘¢‚ÉŠÖ‚µ‚Ä‚ÍAu‚±‚Ì~FAQ~
+‚Ì“Ç‚Ý•û‚Æ‚»‚Ì\‘¢v‚Ì€–Ú‚ð\ruby{ŽQ}{‚³‚ñ}\ruby{Æ}{‚µ‚傤}‚µ‚ĉº‚³
+‚¢B}
+
+\end{CJK*}
+
+\end{document}
+
+%%% Local Variables:
+%%% coding: sjis
+%%% mode: latex
+%%% TeX-master: t
+%%% TeX-command-default: "CJKLaTeX"
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/UTF8.tex b/language/chinese/CJK/cjk-4.8.5/examples/UTF8.tex
new file mode 100644
index 0000000000..d2f646f653
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/UTF8.tex
@@ -0,0 +1,48 @@
+% This is the file UTF8.tex of the CJK package
+% for testing UTF 8 encoding.
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\documentclass[12pt]{article}
+
+\usepackage{CJK}
+\usepackage[T1]{fontenc}
+
+
+% WARNING! The font `cyberbit.ttf' is *not* part of TeXLive!
+% Its use is discouraged. If you really want to use it, please
+% follow the instructions given in `font.txt'.
+%
+% Look at the `CJKutf8.tex' example file (and read the
+% `CJKutf8.txt' documentation file) for a better way how to
+% process documents in UTF 8 encoding.
+
+
+% we want the Unicode font for normal text also
+\DeclareFontFamily{T1}{song}{}
+\DeclareFontShape{T1}{song}{m}{n}{<-> cyberb00}{}
+\renewcommand\rmdefault{song}
+
+
+\begin{document}
+
+\begin{CJK}{UTF8}{song}
+
+\noindent Hello World!
+
+\noindent ΚαλημέÏα κόσμε
+
+\CJKnospace
+\noindent ã“ã‚“ã«ã¡ã¯ 世界
+
+\end{CJK}
+
+\end{document}
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/muletest.tex b/language/chinese/CJK/cjk-4.8.5/examples/muletest.tex
new file mode 100644
index 0000000000..572460aae7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/muletest.tex
@@ -0,0 +1,152 @@
+% This is the file muletest.tex of the CJK package
+% for testing text written with Mule and Emacs 20.
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% You need Emacs 20 (or Mule 2.3) to process this file!
+
+% You should load this file into Mule with `*internal*' encoding scheme
+% (C-u C-x C-f) and call `cjk-write-file' (M-x cjk-write-file).
+% Then run LaTeX on the file `muletest.cjk'.
+%
+% Under Emacs 20 type `C-x C-f muletest.tex' to load this file.
+%
+% `cjk-write-file' will be available after loading cjk-enc.el into Mule
+% (Emacs 20) with the commands load-file or load-library.
+%
+% If you don't have german.sty, comment out the `\usepackage{german}'
+% line.
+%
+% The T5 encoding is part of the VnTeX package (available at CTAN) which
+% contains Vietnamese fonts and other support files for both TeX and
+% LaTeX.
+% - T2A encoding for Computer Modern Cyrillic requires LH fonts
+% - uses CB Greek fonts, CM-Super fonts
+% - requires cyrillic, german, greek-fontenc, vntex
+%
+% Read cjk-enc.txt for more details.
+
+\documentclass[12pt]{article}
+
+\usepackage{inputenc} % load it without argument
+ % to avoid Babel warnings
+
+\usepackage[10pt]{type1ec} % use only 10pt fonts
+
+\usepackage{german}
+\usepackage[T5,T2A,LGR,OT1]{fontenc} % T2A is Cyrillic,
+ % LGR is Greek
+ % T5 is Vietnamese
+
+\usepackage[overlap, CJK]{ruby}
+\usepackage{pshan} % Korean Wansong PS fonts
+
+\CJKencfamily{Bg5}{bsmi}
+\CJKencfamily{GB}{gbsn}
+\CJKencfamily[dnp]{JIS}{min}
+
+\CJKfontenc{KS}{HL}
+\CJKfontenc{JIS}{dnp}
+
+\renewcommand{\rubysep}{-0.2ex}
+
+\begin{document}
+
+% suppress hyphenation completely since we don't use Babel and thus
+% don't know which \language corresponds to which hyphenation pattern
+\lefthyphenmin 65
+\raggedright
+
+\noindent “ÀÌ FAQ “Àº “ÀÚ“ÁÖ “¹Ý“º¹“µÇ“´Â “Áú“¹®“°ú “±×“¿¡ “´ë“ÇÑ “´ë“´ä“À» “°£“´Ü“¸í“·á“ÇÑ
+“¾ç“½Ä“À¸“·Î “¸ð“¾Æ “¿«“¾î“Á³“½À“´Ï“´Ù. “ÀÌ FAQ “ÀÇ “±¸“Á¶“´Â “Áö“³­ “ÆÇ“¿¡ “ºñ“ÇÏ“¿©
+“ȹ“±â“Àû“À¸“·Î “º¯“°æ“µÇ“¾ú“½À“´Ï“´Ù. \textbf{“»ó“¼¼“ÇÑ “°Í“Àº ``“ÀÌ FAQ “À» “¾î“¶»“°Ô
+ “ÀГÀ» “°Í“ÀΓ°¡'' “¶ó“´Â “´ë“¸ñ“À» “Âü“Á¶“ÇÏ“½Ã“±â “¹Ù“¶ø“´Ï“´Ù.}
+
+\vspace{0.5cm}
+
+\noindent Dieses FAQ wurde erstellt, um häufig gestellte Fragen und
+ihre Antworten in einer gefälligen Form zusammenzufassen. Die
+Struktur dieses FAQ wurde drastisch geändert seit der letzten Version.
+\textbf{Für Details siehe den Abschnitt "`Wie lese ich dieses FAQ"'.}
+
+\vspace{0.5cm}
+
+\CJKtilde
+
+\noindent ‘±¾‘³£‘ÎÊ‘ÎÊ‘´ð‘¼¯~(FAQ list)~‘ÊÇ‘´Ó‘Ò»‘Щ‘¾­‘³£‘±»‘ÎÊ‘µ½‘µÄ‘ÎÊ‘Ì⑼°‘Æä‘ÊÊ‘µ±‘µÄ‘½â
+‘´ð‘ÖБ£¬‘ÒÔ‘·½‘±ã‘µÄ‘ÐΑʽ‘Õª‘Òª‘¶ø‘³ö‘µÄ‘¡£‘¸ú‘ÉÏ‘Ò»‘°æ‘²»‘ͬ‘µÄ‘ÊÇ‘£¬‘Æ䑱à‘ÅÅ‘½á‘¹¹‘ÒÑ‘³¹‘µ×‘¸Ä‘±ä‘¡£
+\textbf{‘ÓБ¹Ø‘Б½á‘¹¹‘µÄ‘ϸ‘½Ú‘£¬‘¿É‘²Î‘¿¼‘¡¸‘È瑺ΑÔÄ‘¶Á‘±¾‘ÎÊ‘´ð‘¼¯‘¼°‘ÁË‘½â‘Æ䑱à‘ÅÅ‘½á‘¹¹‘¡¹‘¸Ã
+ ‘Ïî‘ÖБµÄ‘˵‘Ã÷‘¡£}
+
+\vspace{0.5cm}
+
+\noindent ˜¨Ü˜¼§˜»Ã˜»Ã˜Ã±˜Äö~(FAQ list)~˜³Ó˜¼¸˜¦¢˜­é˜Ç§˜¿¸˜»Ã˜®°˜°ü˜»Ã˜Ù°˜®¨˜Ñ˘Ƕ˜°ü˜ÈÙ
+˜Ã±˜¦ä˜¡¢˜§é˜§Ê˜±î˜°ü˜¬±˜ª£˜Êó˜µÓ˜ªÕ˜§ù˜°ü˜¡¤˜Èú˜¦¹˜¦¢˜°ë˜¦ã˜©Ò˜°ü˜³Ó˜¡¢˜®¨˜Ð¾˜¼ë˜Ã¹˜Ë­˜¦Ù˜Ê是¶˜¬Ò˜Þɘ¡¤
+\textbf{˜ªµ˜ÛØƼ˜Ã¹˜Ë­˜°ü˜¾Ù˜Ç蘡¢˜¨¬˜»·˜ªÔ˜¡Ö˜©ò˜ªõ˜Ñæ˜Ýõ˜¨Ü˜»Ã˜Ã±˜Äö˜§°˜¦¨˜ÈÙ˜®¨˜Ð¾˜¼ë˜Ã¹˜Ë­˜¡×˜ÈÛ
+ ˜Äû˜¦ä˜°ü˜Íª˜¯ý˜¡¤}
+
+\vspace{0.5cm}
+
+\noindent This FAQ list was made to summarize some frequently asked
+questions and their answers in a convenient form. The structure of
+this FAQ list has drastically changed since the last version.
+\textbf{For details of the new structure, see the entry of `How to
+ read this FAQ and its structure'.}
+
+\vspace{0.5cm}
+
+\noindent ’¤³’¤Î~FAQ~’¥ê’¥¹’¥È’¤Ï’¡¢’¤è’¤¯’¤¢’¤ë’¼Á’Ì䒤Ȓ¤½’¤Î’Åú’¤ò’½¸’¤á’¡¢’Ìò’¤Ë’Ω’¤Ä’¤è’¤¦
+’¤Ë’¤·’¤¿’¤â’¤Î’¤Ç’¤¹’¡£’¤³’¤Î~FAQ~’¥ê’¥¹’¥È’¤Î’¹½’¤’¤Ï’¡¢’°Ê’Á°’¤Î’¤â’¤Î’¤È’Èæ’¤Ù’¤Æ’Âç’Éý’¤Ë’ÊÑ’¹¹
+’¤µ’¤ì’¤Æ’¤¤’¤Þ’¤¹’¡£\textbf{\ruby{’¿·}{’¤¢’¤¿’¤é}’¤·’¤¤’¹½’¤’¤Ë’´Ø’¤·’¤Æ’¤Ï’¡¢’¡Ö’¤³’¤Î~FAQ~
+ ’¤Î’ÆÉ’¤ß’Êý’¤È’¤½’¤Î’¹½’¤’¡×’¤Î’¹à’ÌÜ’¤ò\ruby{’»²}{’¤µ’¤ó}\ruby{’¾È}{’¤·’¤ç’¤¦}’¤·’¤Æ’²¼’¤µ
+ ’¤¤’¡£}
+
+\vspace{0.5cm}
+
+\bgroup
+\fontencoding{T5}\selectfont
+
+\noindent Phš¢¥n ``Nhš¢æng cš¢âu hš¢öi vš¢à giš¢äi š¢ðš¢áp thš¢ßš¢¶ng gš¢£p'' (viš¢ªt tš¢¡t tš¢×
+tiš¢ªng Anh lš¢à FAQ) š¢ðš¢ßš¢þc nš¢êu ra š¢· š¢ðš¢ây nhš¢¢m mš¢øc š¢ðš¢ích thu thš¢§p nhš¢æng cš¢âu
+hš¢öi thš¢ßš¢¶ng gš¢£p trong thš¢ñc tš¢ª vš¢à nhš¢æng lš¢¶i giš¢äi š¢ðš¢áp thš¢ích hš¢þp nhš¢¤t cš¢üa
+nš¢ó. Tš¢× lš¢¥n š¢¤n bš¢än cuš¢¯i cš¢ùng š¢ðš¢ªn nay, š¢ðš¢ã cš¢ó nhš¢æng sš¢ñ thay š¢ðš¢±i khš¢á lš¢¾n
+trong cš¢¤u trš¢úc cš¢üa FAQ. \textbf{š£ðš¢¬ hiš¢¬u rš¢õ hš¢½n bš¢Õn nš¢ên xem lš¢Õi chš¢ßš¢½ng
+ ``Lš¢àm sao tš¢ôi cš¢ó thš¢¬ š¢ðš¢÷c š¢ðuš¢þc FAQ''.}
+\egroup
+
+\vspace{0.5cm}
+
+\bgroup
+\fontencoding{T2A}\selectfont
+
+\noindent ŒÍŒâŒÞŒâ ŒáŒßŒØŒáŒÞŒÚ ŒÑŒëŒÛ ŒáŒÞŒáŒâŒÐŒÒŒÛŒÕŒÝ ŒÔŒÛŒï ŒáŒãŒÜŒÜŒØŒàŒÞŒÒŒÐŒÝŒØŒï ŒÝŒÕŒÚŒÞŒâŒÞŒàŒëŒå ŒçŒÐŒáŒâŒÞ
+Œ×ŒÐŒÔŒÐŒÒŒÐŒÕŒÜŒëŒå ŒÒŒÞŒßŒàŒÞŒáŒÞŒÒ (FAQ), ŒÒŒÜŒÕŒáŒâŒÕ Œá ŒÞŒâŒÒŒÕŒâŒÐŒÜŒØ ŒÝŒÐ ŒÝŒØŒå, ŒÒ ŒãŒÔŒÞŒÑŒÝŒÞŒÙ ŒäŒÞŒàŒÜŒÕ.
+ŒÁŒâŒàŒãŒÚŒâŒãŒàŒÐ ŒíŒâŒÞŒÓŒÞ FAQ ŒÚŒÐŒàŒÔŒØŒÝŒÐŒÛŒìŒÝŒÞ ŒØŒ×ŒÜŒÕŒÝŒØŒÛŒÐŒáŒì ŒßŒÞ ŒáŒàŒÐŒÒŒÝŒÕŒÝŒØŒî Œá ŒßŒÞŒáŒÛŒÕŒÔŒÝŒÕŒÙ
+ŒÒŒÕŒàŒáŒØŒÕŒÙ. \textbf{Œ² ŒàŒÐŒ×ŒÔŒÕŒÛŒÕ `ŒºŒÐŒÚ ŒçŒØŒâŒÐŒâŒì ŒíŒâŒÞŒâ FAQ ŒØ ŒÕŒÓŒÞ ŒáŒâŒàŒãŒÚŒâŒãŒàŒÐ'
+ ŒÞŒÑŒêŒïŒáŒÝŒÕŒÝŒë ŒÔŒÕŒâŒÐŒÛŒØ ŒíŒâŒÞŒÙ ŒÝŒÞŒÒŒÞŒÙ ŒáŒâŒàŒãŒÚŒâŒãŒàŒë.}
+\egroup
+
+\vspace{0.5cm}
+
+\bgroup
+\fontencoding{LGR}\selectfont
+
+\noindent †Ç †ë†ß†ó†ô†á †á†õ†ô†Þ †Ó†Ô†Å (†ó†õ†÷†í†Ü †ô†é†è†å†ì†Ý†í†ù†í †å†ñ†ù†ô†Þ†ó†å†ù†í) †Ý†÷†å†é †ó†á†í †ó†ê†ï†ð†ü
+†í†á †ó†õ†ì†ð†å†ñ†é†ë†Ü†â†å†é †ó†å †å†ý†÷†ñ†ç†ó†ô†ç †ì†ï†ñ†ö†Þ †ê†Ü†ð†ï†é†å†ò †ó†ç†ì†á†í†ô†é†ê†Ý†ò †å†ñ†ù†ô†Þ†ó†å†é†ò †ê†á†é †ô†é†ò
+†á†ð†á†í†ô†Þ†ó†å†é†ò †ô†ï†õ†ò. †Ç †ï†ñ†ã†Ü†í†ù†ó†ç †á†õ†ô†Þ†ò †ô†ç†ò †ë†ß†ó†ô†á†ò †Ü†ë†ë†á†î†å †ó†ç†ì†á†í†ô†é†ê†Ü †á†ð†ü †ô†ç†í
+†ô†å†ë†å†õ†ô†á†ß†á †Ý†ê†ä†ï†ó†Þ †ô†ç†ò †ê†á†é †ì†å†ô†Ü. \textbf{†Ã†é†á †ë†å†ð†ô†ï†ì†Ý†ñ†å†é†å†ò †ð†Ü†í†ù †ó†ô†ç †í†Ý†á
+ †ï†ñ†ã†Ü†í†ù†ó†ç, †â†ë†Ý†ð†å †ô†ï †ë†Þ†ì†ì†á <<†Ð†þ†ò †í†á †ä†é†á†â†Ü†ó†å†ô†å †á†õ†ô†Þ †ô†ç†í †Ó†Ô†Å †ê†á†é †ð†þ†ò
+ †å†ß†í†á†é †ï†ñ†ã†á†í†ù†ì†Ý†í†ç>>.}
+\egroup
+
+\end{document}
+
+
+%%% Local Variables:
+%%% coding: emacs-mule
+%%% mode: latex
+%%% TeX-master: t
+%%% TeX-command-default: "CJKLaTeX"
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/py_test.tex b/language/chinese/CJK/cjk-4.8.5/examples/py_test.tex
new file mode 100644
index 0000000000..9885d62896
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/py_test.tex
@@ -0,0 +1,43 @@
+% This is the file py_test.tex of the CJK package
+% for testing pinyin syllables with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\documentclass{article}
+
+\usepackage{pinyin}
+
+
+\begin{document}
+
+\Huge
+
+{\Wo3 \hen3 \xi3\huan1 \lv3\xing2.}
+
+{\slshape
+ \Wo3 \hen3 \xi3\huan1 \lv3\xing2.}
+
+{\itshape
+ \Wo3 \hen3 \xi3\huan1 \lv3\xing2.}
+
+{\bfseries
+ \Wo3 \hen3 \xi3\huan1 \lv3\xing2.}
+
+{\sffamily
+ \Wo3 \hen3 \xi3\huan1 \lv3\xing2.}
+
+{\ttfamily
+ \Wo3 \hen3 \xi3\huan1 \lv3\xing2.}
+
+{\bfseries\sffamily
+ \Wo3 \hen3 \xi3\huan1 \lv3\xing2.}
+
+\PYdeactivate
+$\Xi, \xi, \Re$
+\PYactivate
+
+\Zhen1de \bu2 \cuo4 ne!
+
+\end{document}
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/rubytest.tex b/language/chinese/CJK/cjk-4.8.5/examples/rubytest.tex
new file mode 100644
index 0000000000..0a03b928b6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/rubytest.tex
@@ -0,0 +1,56 @@
+% This is the file rubytest.tex of the CJK package
+% for testing ruby with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% You need Emacs 20 (or Mule 2.3) to process this file!
+
+% You should load this file into Mule with `*internal*' encoding scheme
+% (C-u C-x C-f) and call `cjk-write-file' (M-x cjk-write-file).
+% Then run LaTeX on the created file `rubytest.cjk'.
+%
+% Under Emacs 20 type `C-x C-f rubytest.tex' to load this file.
+%
+% `cjk-write-file' will be available after loading cjk-enc.el into Mule
+% (Emacs 20) with the commands load-file or load-library.
+
+\documentclass[12pt]{article}
+
+\usepackage[overlap, CJK]{ruby}
+\usepackage{pinyin}
+
+\CJKencfamily{Bg5}{bsmi}
+\CJKencfamily[dnp]{JIS}{min}
+
+\CJKfontenc{JIS}{dnp}
+
+\renewcommand{\rubysep}{-0.3ex}
+
+
+\begin{document}
+
+{
+\rubylatin
+\renewcommand{\rubysize}{1}
+
+\ruby{\wo3}{˜¬½} \ruby{\hen3}{˜³¡} \ruby{\xi3}{˜ÀÆ}\ruby{\huan1}{˜Ýä}
+\ruby{\chi1}{˜©Û} \ruby{\Zhong1}{˜¦ä}\ruby{\guo2}{˜»Ð}
+\ruby{\cai4}{˜Ãí}\ruby{.}{˜¡¤}
+}
+
+\Large
+
+\ruby{’²Ö}{’¤Ï’¤Ê}\ruby{’±à}{’¤¾’¤Î}\ruby{’Âç}{’¤À’¤¤}\ruby{’³Ø}{’¤¬’¤¯}
+
+\ruby{’³¤}{’¤¦’¤ß}’¤È\ruby{’¸Ð}{’¤ß’¤º’¤¦’¤ß}’¤Ø’¹Ô’¤¯’¡£
+
+\end{document}
+
+%%% Local Variables:
+%%% coding: emacs-mule
+%%% mode: latex
+%%% TeX-master: t
+%%% TeX-command-default: "CJKLaTeX"
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/thai.tex b/language/chinese/CJK/cjk-4.8.5/examples/thai.tex
new file mode 100644
index 0000000000..b7302438ae
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/thai.tex
@@ -0,0 +1,43 @@
+% This is the file thai.tex of the CJK package
+% for testing Thai (in TIS-620 encoding).
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% This file must be processed with cjk-enc.el to get
+%
+% . proper word breaks
+% . font switching between Thai and non-Thai
+% . intercharacter glue
+%
+% Please read cjk-enc.txt for usage instructions.
+%
+% To process without cjk-enc.el, comment out the line containing
+% `\extrasthaicjk'. Note, however, that you get overlong lines, and you
+% must manually insert proper Thai word breaks.
+
+
+\documentclass[12pt]{article}
+
+\usepackage[thaicjk]{babel}
+
+% \addto\extrasthaicjk{\fontencoding{C90}\selectfont}
+
+
+\begin{document}
+
+ÃÒ¡Òà FAQ ¹ÕéÊÃéÒ§¢Öé¹à¾×èÍÊÃØ»¤Ó¶ÒÁ·Õè¶ÒÁ¡Ñ¹ºèͤÃÑé§áÅФӵͺ¤Ó¶ÒÁã¹ÃٻẺ·ÕÊдǡ.
+â¤Ã§ÊÃéÒ§¢Í§ÃÒ¡Òà FAQ ¹Õéà»ÅÕè¹ä»ÁÒ¡µÑé§áµèÃØè¹·ÕèáÅéÇ.
+\textbf{´ÙÃÒÂÅÐàÍÕ´ÊÓËÃѺâ¤Ã§ÊÃéÒ§ãËÁèä´é¨Ò¡ªèǧ ``â¤Ã§ÊÃéÒ§áÅÐÇÔ¸Õ¡ÒÃÍèÒ¹
+ FAQ.''}
+
+\end{document}
+
+
+%%% Local Variables:
+%%% coding: thai-tis620
+%%% mode: latex
+%%% TeX-master: t
+%%% TeX-command-default: "CJKLaTeX"
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/examples/thai_utf8.tex b/language/chinese/CJK/cjk-4.8.5/examples/thai_utf8.tex
new file mode 100644
index 0000000000..8933c43e1c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/examples/thai_utf8.tex
@@ -0,0 +1,43 @@
+% This is the file thai_utf8.tex of the CJK package
+% for testing Thai (in utf-8 encoding).
+%
+% written by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% This file must be processed with cjk-enc.el to get
+%
+% . proper word breaks
+% . font switching between Thai and non-Thai
+% . intercharacter glue
+%
+% Please read cjk-enc.txt for usage instructions.
+%
+% To process without cjk-enc.el, comment out the line containing
+% `\extrasthaicjk'. Note, however, that you get overlong lines, and you
+% must manually insert proper Thai word breaks.
+
+
+\documentclass[12pt]{article}
+
+\usepackage[thaicjk]{babel}
+
+% \addto\extrasthaicjk{\fontencoding{C90}\selectfont}
+
+
+\begin{document}
+
+รายà¸à¸²à¸£ FAQ นี้สร้างขึ้นเพื่อสรุปคำถามที่ถามà¸à¸±à¸™à¸šà¹ˆà¸­à¸¢à¸„รั้งà¹à¸¥à¸°à¸„ำตอบคำถามในรูปà¹à¸šà¸šà¸—ีสะดวà¸.
+โครงสร้างของรายà¸à¸²à¸£ FAQ นี้เปลี่ยนไปมาà¸à¸•à¸±à¹‰à¸‡à¹à¸•à¹ˆà¸£à¸¸à¹ˆà¸™à¸—ี่à¹à¸¥à¹‰à¸§.
+\textbf{ดูรายละเอียดสำหรับโครงสร้างใหม่ได้จาà¸à¸Šà¹ˆà¸§à¸‡ ``โครงสร้างà¹à¸¥à¸°à¸§à¸´à¸˜à¸µà¸à¸²à¸£à¸­à¹ˆà¸²à¸™
+ FAQ.''}
+
+\end{document}
+
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% mode: latex
+%%% TeX-master: t
+%%% TeX-command-default: "CJKLaTeX"
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.cap b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.cap
new file mode 100644
index 0000000000..258cc26d57
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.cap
@@ -0,0 +1,86 @@
+% This is the file Bg5.cap of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{Bg5.cap}[\filedate\space\fileversion]
+
+
+% Chinese captions
+%
+% character set: Big 5
+% encoding: Big 5
+
+\renewcommand\contentsname{¥Ø~~¿ý}
+\renewcommand\listfigurename{¹Ï~¥Ø~¿ý}
+\renewcommand\listtablename{ªí~¥Ø~¿ý}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{°Ñ~¦Ò~¸ê~®Æ}
+ %\renewcommand\refname{°Ñ~¦Ò~¤å~Äm}
+ }
+ {\renewcommand\bibname{¤å~~Äm}
+ %\renewcommand\bibname{°Ñ~¦Ò~®Ñ~¥Ø}
+% \newcommand\prechaptername{²Ä}
+% \newcommand\postchaptername{³¹}
+ }
+
+\renewcommand\indexname{¯Á~¤Þ}
+
+\renewcommand\figurename{¹Ï}
+\renewcommand\tablename{ªí}
+
+\newcommand\prepartname{²Ä}
+\newcommand\postpartname{³¡}
+%\newcommand{\postpartname}{³¡¤À}
+\renewcommand\partformat{\prepartname\CJKnumber{\value{part}}\postpartname}
+
+
+% \newcommand\presectionname{²Ä}
+% \newcommand\postsectionname{¸`}
+% \renewcommand\appendixname{ªþ~¿ý}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{ºK~­n}}{}
+
+% \renewcommand\ccname{} % ?
+% \renewcommand\enclname{ªþ¥ó}
+% \newcommand\prepagename{} % ?
+% \newcommand\postpagename{} % ?
+% \renewcommand\headtoname{} % ?
+% \renewcommand\seename{} % ?
+
+\renewcommand{\today}{\number\year ¦~ \number\month ¤ë \number\day ¤é}
+\CJK@ifundefined\CJKnumber
+ {\def\CJKnumber#1{\ifcase #1\or
+ ¤@\or ¤G\or ¤T\or ¥|\or ¤­\or
+ ¤»\or ¤C\or ¤K\or ¤E\or ¤Q\fi}}{}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: big5
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.chr b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.chr
new file mode 100644
index 0000000000..5f6f737f62
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.chr
@@ -0,0 +1,219 @@
+% This is the file Bg5.chr of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{Bg5.chr}[\filedate\space\fileversion]
+
+
+% define macros for handling Big 5 encoded CJK fonts and characters.
+
+\global\@namedef{CJK@Bg5Chr}{
+ \CJK@global\chardef\CJK@gap "0A0\relax
+
+ \CJK@global\def\CJK@char##1##2##3{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##3\relax
+ \ifnum ##3 > \CJK@gap
+ \advance\@tempcnta -34\relax
+ \fi
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% the same, but the plane crosses the font file boundary.
+
+ \CJK@global\def\CJK@charx##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \@tempcntb 256\relax
+ \ifnum ##4 > \CJK@gap
+ \advance\@tempcnta -34\relax
+ \advance\@tempcntb 34\relax
+ \fi
+ \advance\@tempcnta ##3\relax
+ \advance\@tempcntb -##3\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##4 < \@temp
+ \edef\CJK@plane{##1}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##2}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% for punctuation.
+
+ \CJK@global\def\CJK@punctchar##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##4}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{Bg5}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \ifnum ##4 > \CJK@gap
+ \advance\@tempcnta -34\relax
+ \fi
+ \advance\@tempcnta ##3\relax
+ \edef\CJK@plane{##2}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{Bg5}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}
+
+ \CJK@global\def\CJK@punctcharx##1##2##3##4##5{
+ {\ifnum ##5 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##5 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##5}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{Bg5}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##5\relax
+ \@tempcntb 256\relax
+ \ifnum ##5 > \CJK@gap
+ \advance\@tempcnta -34\relax
+ \advance\@tempcntb 34\relax
+ \fi
+ \advance\@tempcnta ##4\relax
+ \advance\@tempcntb -##4\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##5 < \@temp
+ \edef\CJK@plane{##2}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##3}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{Bg5}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.cpx
new file mode 100644
index 0000000000..a92c7310f0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.cpx
@@ -0,0 +1,86 @@
+% This is the file Bg5.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{Bg5.cpx}[\filedate\space\fileversion]
+
+
+% Chinese captions
+%
+% character set: Big 5
+% encoding: Big 5
+%
+% preprocessed
+
+\renewcommand\contentsname{¥216~~¿253}
+\renewcommand\listfigurename{¹207~¥216~¿253}
+\renewcommand\listtablename{ª237~¥216~¿253}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{°209~¦210~¸234~®198}
+ %\renewcommand\refname{°209~¦210~¤229~Ä109}
+ }
+ {
+ \renewcommand\bibname{¤229~~Ä109}
+ %\renewcommand\bibname{°209~¦210~®209~¥216}
+% \newcommand\prechaptername{²196}
+% \newcommand\postchaptername{³185}
+ }
+
+\renewcommand\indexname{¯193~¤222}
+
+\renewcommand\figurename{¹207}
+\renewcommand\tablename{ª237}
+
+\newcommand\prepartname{²196}
+\newcommand\postpartname{³161}
+%\newcommand{\postpartname}{³161¤192}
+\renewcommand\partformat{\prepartname\CJKnumber{\value{part}}\postpartname}
+
+
+% \newcommand\presectionname{²196}
+% \newcommand\postsectionname{¸96}
+% \renewcommand\appendixname{ª254~¿253}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{º75~­110}}{}
+
+% \renewcommand\ccname{} % ?
+% \renewcommand\enclname{ª254¥243}
+% \newcommand\prepagename{} % ?
+% \newcommand\postpagename{} % ?
+% \renewcommand\headtoname{} % ?
+% \renewcommand\seename{} % ?
+
+\renewcommand{\today}{\number\year ¦126
+ \number\month ¤235
+ \number\day ¤233}
+\CJK@ifundefined\CJKnumber
+ {\def\CJKnumber#1{%
+ \ifcase #1\or
+ ¤64\or ¤71\or ¤84\or ¥124\or ¤173\or
+ ¤187\or ¤67\or ¤75\or ¤69\or ¤81\fi}}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.enc b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.enc
new file mode 100644
index 0000000000..624e7ae3b1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/Bg5.enc
@@ -0,0 +1,226 @@
+% This is the file Bg5.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{Bg5.enc}[\filedate\space\fileversion]
+
+
+% Big 5 encoding:
+% the second byte is in the range 0x40 - 0xFE with a gap from 0x7F to
+% 0xA0.
+
+\global\@namedef{CJK@Bg5Encoding}{
+ \CJK@loadChr{Bg5}
+
+ \CJK@namegdef{^^a1}##1{\CJK@disableMakeUppercase
+ \CJK@punctchar {A1}{01}{-64}{##1}}
+ \CJK@namegdef{^^a2}##1{\CJK@disableMakeUppercase
+ \CJK@punctcharx{A2}{01}{02}{93}{##1}}
+ \CJK@namegdef{^^a3}##1{\CJK@disableMakeUppercase
+ \CJK@char {02}{ -6}{##1}}
+ \CJK@namegdef{^^a4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{02}{03}{151}{##1}}
+ \CJK@namegdef{^^a5}##1{\CJK@disableMakeUppercase
+ \CJK@charx{03}{04}{ 52}{##1}}
+ \CJK@namegdef{^^a6}##1{\CJK@disableMakeUppercase
+ \CJK@char {04}{-47}{##1}}
+ \CJK@namegdef{^^a7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{04}{05}{110}{##1}}
+ \CJK@namegdef{^^a8}##1{\CJK@disableMakeUppercase
+ \CJK@char {05}{ 11}{##1}}
+ \CJK@namegdef{^^a9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{05}{06}{168}{##1}}
+ \CJK@namegdef{^^aa}##1{\CJK@disableMakeUppercase
+ \CJK@charx{06}{07}{ 69}{##1}}
+ \CJK@namegdef{^^ab}##1{\CJK@disableMakeUppercase
+ \CJK@char {07}{-30}{##1}}
+ \CJK@namegdef{^^ac}##1{\CJK@disableMakeUppercase
+ \CJK@charx{07}{08}{127}{##1}}
+ \CJK@namegdef{^^ad}##1{\CJK@disableMakeUppercase
+ \CJK@char {08}{28}{##1}}
+ \CJK@namegdef{^^ae}##1{\CJK@disableMakeUppercase
+ \CJK@charx{08}{09}{185}{##1}}
+ \CJK@namegdef{^^af}##1{\CJK@disableMakeUppercase
+ \CJK@charx{09}{10}{ 86}{##1}}
+ \CJK@namegdef{^^b0}##1{\CJK@disableMakeUppercase
+ \CJK@char {10}{-13}{##1}}
+ \CJK@namegdef{^^b1}##1{\CJK@disableMakeUppercase
+ \CJK@charx{10}{11}{144}{##1}}
+ \CJK@namegdef{^^b2}##1{\CJK@disableMakeUppercase
+ \CJK@charx{11}{12}{ 45}{##1}}
+ \CJK@namegdef{^^b3}##1{\CJK@disableMakeUppercase
+ \CJK@char {12}{-54}{##1}}
+ \CJK@namegdef{^^b4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{12}{13}{103}{##1}}
+ \CJK@namegdef{^^b5}##1{\CJK@disableMakeUppercase
+ \CJK@char {13}{ 4}{##1}}
+ \CJK@namegdef{^^b6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{13}{14}{161}{##1}}
+ \CJK@namegdef{^^b7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{14}{15}{ 62}{##1}}
+ \CJK@namegdef{^^b8}##1{\CJK@disableMakeUppercase
+ \CJK@char {15}{-37}{##1}}
+ \CJK@namegdef{^^b9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{15}{16}{120}{##1}}
+ \CJK@namegdef{^^ba}##1{\CJK@disableMakeUppercase
+ \CJK@char {16}{ 21}{##1}}
+ \CJK@namegdef{^^bb}##1{\CJK@disableMakeUppercase
+ \CJK@charx{16}{17}{178}{##1}}
+ \CJK@namegdef{^^bc}##1{\CJK@disableMakeUppercase
+ \CJK@charx{17}{18}{ 79}{##1}}
+ \CJK@namegdef{^^bd}##1{\CJK@disableMakeUppercase
+ \CJK@char {18}{-20}{##1}}
+ \CJK@namegdef{^^be}##1{\CJK@disableMakeUppercase
+ \CJK@charx{18}{19}{137}{##1}}
+ \CJK@namegdef{^^bf}##1{\CJK@disableMakeUppercase
+ \CJK@charx{19}{20}{ 38}{##1}}
+ \CJK@namegdef{^^c0}##1{\CJK@disableMakeUppercase
+ \CJK@char {20}{-61}{##1}}
+ \CJK@namegdef{^^c1}##1{\CJK@disableMakeUppercase
+ \CJK@charx{20}{21}{ 96}{##1}}
+ \CJK@namegdef{^^c2}##1{\CJK@disableMakeUppercase
+ \CJK@char {21}{ -3}{##1}}
+ \CJK@namegdef{^^c3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{21}{22}{154}{##1}}
+ \CJK@namegdef{^^c4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{22}{23}{ 55}{##1}}
+ \CJK@namegdef{^^c5}##1{\CJK@disableMakeUppercase
+ \CJK@char {23}{-44}{##1}}
+ \CJK@namegdef{^^c6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{23}{24}{113}{##1}}
+ \CJK@namegdef{^^c7}##1{\CJK@disableMakeUppercase
+ \CJK@char {24}{ 14}{##1}}
+ \CJK@namegdef{^^c8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{24}{25}{171}{##1}}
+ \CJK@namegdef{^^c9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{25}{26}{ 72}{##1}}
+ \CJK@namegdef{^^ca}##1{\CJK@disableMakeUppercase
+ \CJK@char {26}{-27}{##1}}
+ \CJK@namegdef{^^cb}##1{\CJK@disableMakeUppercase
+ \CJK@charx{26}{27}{130}{##1}}
+ \CJK@namegdef{^^cc}##1{\CJK@disableMakeUppercase
+ \CJK@char {27}{ 31}{##1}}
+ \CJK@namegdef{^^cd}##1{\CJK@disableMakeUppercase
+ \CJK@charx{27}{28}{188}{##1}}
+ \CJK@namegdef{^^ce}##1{\CJK@disableMakeUppercase
+ \CJK@charx{28}{29}{ 89}{##1}}
+ \CJK@namegdef{^^cf}##1{\CJK@disableMakeUppercase
+ \CJK@char {29}{-10}{##1}}
+ \CJK@namegdef{^^d0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{29}{30}{147}{##1}}
+ \CJK@namegdef{^^d1}##1{\CJK@disableMakeUppercase
+ \CJK@charx{30}{31}{ 48}{##1}}
+ \CJK@namegdef{^^d2}##1{\CJK@disableMakeUppercase
+ \CJK@char {31}{-51}{##1}}
+ \CJK@namegdef{^^d3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{31}{32}{106}{##1}}
+ \CJK@namegdef{^^d4}##1{\CJK@disableMakeUppercase
+ \CJK@char {32}{ 7}{##1}}
+ \CJK@namegdef{^^d5}##1{\CJK@disableMakeUppercase
+ \CJK@charx{32}{33}{164}{##1}}
+ \CJK@namegdef{^^d6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{33}{34}{ 65}{##1}}
+ \CJK@namegdef{^^d7}##1{\CJK@disableMakeUppercase
+ \CJK@char {34}{-34}{##1}}
+ \CJK@namegdef{^^d8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{34}{35}{123}{##1}}
+ \CJK@namegdef{^^d9}##1{\CJK@disableMakeUppercase
+ \CJK@char {35}{ 24}{##1}}
+ \CJK@namegdef{^^da}##1{\CJK@disableMakeUppercase
+ \CJK@charx{35}{36}{181}{##1}}
+ \CJK@namegdef{^^db}##1{\CJK@disableMakeUppercase
+ \CJK@charx{36}{37}{ 82}{##1}}
+ \CJK@namegdef{^^dc}##1{\CJK@disableMakeUppercase
+ \CJK@char {37}{-17}{##1}}
+ \CJK@namegdef{^^dd}##1{\CJK@disableMakeUppercase
+ \CJK@charx{37}{38}{140}{##1}}
+ \CJK@namegdef{^^de}##1{\CJK@disableMakeUppercase
+ \CJK@charx{38}{39}{ 41}{##1}}
+ \CJK@namegdef{^^df}##1{\CJK@disableMakeUppercase
+ \CJK@char {39}{-58}{##1}}
+ \CJK@namegdef{^^e0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{39}{40}{ 99}{##1}}
+ \CJK@namegdef{^^e1}##1{\CJK@disableMakeUppercase
+ \CJK@char {40}{ 0}{##1}}
+ \CJK@namegdef{^^e2}##1{\CJK@disableMakeUppercase
+ \CJK@charx{40}{41}{157}{##1}}
+ \CJK@namegdef{^^e3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{41}{42}{ 58}{##1}}
+ \CJK@namegdef{^^e4}##1{\CJK@disableMakeUppercase
+ \CJK@char {42}{-41}{##1}}
+ \CJK@namegdef{^^e5}##1{\CJK@disableMakeUppercase
+ \CJK@charx{42}{43}{116}{##1}}
+ \CJK@namegdef{^^e6}##1{\CJK@disableMakeUppercase
+ \CJK@char {43}{ 17}{##1}}
+ \CJK@namegdef{^^e7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{43}{44}{174}{##1}}
+ \CJK@namegdef{^^e8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{44}{45}{ 75}{##1}}
+ \CJK@namegdef{^^e9}##1{\CJK@disableMakeUppercase
+ \CJK@char {45}{-24}{##1}}
+ \CJK@namegdef{^^ea}##1{\CJK@disableMakeUppercase
+ \CJK@charx{45}{46}{133}{##1}}
+ \CJK@namegdef{^^eb}##1{\CJK@disableMakeUppercase
+ \CJK@char {46}{ 34}{##1}}
+ \CJK@namegdef{^^ec}##1{\CJK@disableMakeUppercase
+ \CJK@charx{46}{47}{191}{##1}}
+ \CJK@namegdef{^^ed}##1{\CJK@disableMakeUppercase
+ \CJK@charx{47}{48}{ 92}{##1}}
+ \CJK@namegdef{^^ee}##1{\CJK@disableMakeUppercase
+ \CJK@char {48}{ -7}{##1}}
+ \CJK@namegdef{^^ef}##1{\CJK@disableMakeUppercase
+ \CJK@charx{48}{49}{150}{##1}}
+ \CJK@namegdef{^^f0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{49}{50}{ 51}{##1}}
+ \CJK@namegdef{^^f1}##1{\CJK@disableMakeUppercase
+ \CJK@char {50}{-48}{##1}}
+ \CJK@namegdef{^^f2}##1{\CJK@disableMakeUppercase
+ \CJK@charx{50}{51}{109}{##1}}
+ \CJK@namegdef{^^f3}##1{\CJK@disableMakeUppercase
+ \CJK@char {51}{ 10}{##1}}
+ \CJK@namegdef{^^f4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{51}{52}{167}{##1}}
+ \CJK@namegdef{^^f5}##1{\CJK@disableMakeUppercase
+ \CJK@charx{52}{53}{ 68}{##1}}
+ \CJK@namegdef{^^f6}##1{\CJK@disableMakeUppercase
+ \CJK@char {53}{-31}{##1}}
+ \CJK@namegdef{^^f7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{53}{54}{126}{##1}}
+ \CJK@namegdef{^^f8}##1{\CJK@disableMakeUppercase
+ \CJK@char {54}{ 27}{##1}}
+ \CJK@namegdef{^^f9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{54}{55}{184}{##1}}
+ \CJK@namegdef{^^fa}##1{\CJK@disableMakeUppercase
+ \CJK@charx{55}{56}{ 85}{##1}}
+ \CJK@namegdef{^^fb}##1{\CJK@disableMakeUppercase
+ \CJK@char {56}{-14}{##1}}
+ \CJK@namegdef{^^fc}##1{\CJK@disableMakeUppercase
+ \CJK@charx{56}{57}{143}{##1}}
+ \CJK@namegdef{^^fd}##1{\CJK@disableMakeUppercase
+ \CJK@charx{57}{58}{ 44}{##1}}
+ \CJK@namegdef{^^fe}##1{\CJK@disableMakeUppercase
+ \CJK@char {58}{-55}{##1}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/HK.enc b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/HK.enc
new file mode 100644
index 0000000000..9f760bf3fe
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/HK.enc
@@ -0,0 +1,276 @@
+% This is the file HK.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{HK.enc}[\filedate\space\fileversion]
+
+
+% HK encoding:
+% this is Big with all user-defined areas
+%
+% the second byte is in the range 0x40 - 0xFE with a gap from 0x7F to
+% 0xA0.
+
+\global\@namedef{CJK@HKEncoding}{
+ \CJK@loadChr{Bg5}
+
+ \CJK@namegdef{^^81}##1{\CJK@disableMakeUppercase
+ \CJK@punctchar {A1}{01}{-64}{##1}}
+ \CJK@namegdef{^^82}##1{\CJK@disableMakeUppercase
+ \CJK@punctcharx{A2}{01}{02}{93}{##1}}
+ \CJK@namegdef{^^83}##1{\CJK@disableMakeUppercase
+ \CJK@char {02}{ -6}{##1}}
+ \CJK@namegdef{^^84}##1{\CJK@disableMakeUppercase
+ \CJK@charx{02}{03}{151}{##1}}
+ \CJK@namegdef{^^85}##1{\CJK@disableMakeUppercase
+ \CJK@charx{03}{04}{ 52}{##1}}
+ \CJK@namegdef{^^86}##1{\CJK@disableMakeUppercase
+ \CJK@char {04}{-47}{##1}}
+ \CJK@namegdef{^^87}##1{\CJK@disableMakeUppercase
+ \CJK@charx{04}{05}{110}{##1}}
+ \CJK@namegdef{^^88}##1{\CJK@disableMakeUppercase
+ \CJK@char {05}{ 11}{##1}}
+ \CJK@namegdef{^^89}##1{\CJK@disableMakeUppercase
+ \CJK@charx{05}{06}{168}{##1}}
+ \CJK@namegdef{^^8a}##1{\CJK@disableMakeUppercase
+ \CJK@charx{06}{07}{ 69}{##1}}
+ \CJK@namegdef{^^8b}##1{\CJK@disableMakeUppercase
+ \CJK@char {07}{-30}{##1}}
+ \CJK@namegdef{^^8c}##1{\CJK@disableMakeUppercase
+ \CJK@charx{07}{08}{127}{##1}}
+ \CJK@namegdef{^^8d}##1{\CJK@disableMakeUppercase
+ \CJK@char {08}{28}{##1}}
+ \CJK@namegdef{^^8e}##1{\CJK@disableMakeUppercase
+ \CJK@charx{08}{09}{185}{##1}}
+ \CJK@namegdef{^^8f}##1{\CJK@disableMakeUppercase
+ \CJK@charx{09}{10}{ 86}{##1}}
+ \CJK@namegdef{^^90}##1{\CJK@disableMakeUppercase
+ \CJK@char {10}{-13}{##1}}
+ \CJK@namegdef{^^91}##1{\CJK@disableMakeUppercase
+ \CJK@charx{10}{11}{144}{##1}}
+ \CJK@namegdef{^^92}##1{\CJK@disableMakeUppercase
+ \CJK@charx{11}{12}{ 45}{##1}}
+ \CJK@namegdef{^^93}##1{\CJK@disableMakeUppercase
+ \CJK@char {12}{-54}{##1}}
+ \CJK@namegdef{^^94}##1{\CJK@disableMakeUppercase
+ \CJK@charx{12}{13}{103}{##1}}
+ \CJK@namegdef{^^95}##1{\CJK@disableMakeUppercase
+ \CJK@char {13}{ 4}{##1}}
+ \CJK@namegdef{^^96}##1{\CJK@disableMakeUppercase
+ \CJK@charx{13}{14}{161}{##1}}
+ \CJK@namegdef{^^97}##1{\CJK@disableMakeUppercase
+ \CJK@charx{14}{15}{ 62}{##1}}
+ \CJK@namegdef{^^98}##1{\CJK@disableMakeUppercase
+ \CJK@char {15}{-37}{##1}}
+ \CJK@namegdef{^^99}##1{\CJK@disableMakeUppercase
+ \CJK@charx{15}{16}{120}{##1}}
+ \CJK@namegdef{^^9a}##1{\CJK@disableMakeUppercase
+ \CJK@char {16}{ 21}{##1}}
+ \CJK@namegdef{^^9b}##1{\CJK@disableMakeUppercase
+ \CJK@charx{16}{17}{178}{##1}}
+ \CJK@namegdef{^^9c}##1{\CJK@disableMakeUppercase
+ \CJK@charx{17}{18}{ 79}{##1}}
+ \CJK@namegdef{^^9d}##1{\CJK@disableMakeUppercase
+ \CJK@char {18}{-20}{##1}}
+ \CJK@namegdef{^^9e}##1{\CJK@disableMakeUppercase
+ \CJK@charx{18}{19}{137}{##1}}
+ \CJK@namegdef{^^9f}##1{\CJK@disableMakeUppercase
+ \CJK@charx{19}{20}{ 38}{##1}}
+ \CJK@namegdef{^^a0}##1{\CJK@disableMakeUppercase
+ \CJK@char {20}{-61}{##1}}
+ \CJK@namegdef{^^a1}##1{\CJK@disableMakeUppercase
+ \CJK@charx{20}{21}{ 96}{##1}}
+ \CJK@namegdef{^^a2}##1{\CJK@disableMakeUppercase
+ \CJK@char {21}{ -3}{##1}}
+ \CJK@namegdef{^^a3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{21}{22}{154}{##1}}
+ \CJK@namegdef{^^a4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{22}{23}{ 55}{##1}}
+ \CJK@namegdef{^^a5}##1{\CJK@disableMakeUppercase
+ \CJK@char {23}{-44}{##1}}
+ \CJK@namegdef{^^a6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{23}{24}{113}{##1}}
+ \CJK@namegdef{^^a7}##1{\CJK@disableMakeUppercase
+ \CJK@char {24}{ 14}{##1}}
+ \CJK@namegdef{^^a8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{24}{25}{171}{##1}}
+ \CJK@namegdef{^^a9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{25}{26}{ 72}{##1}}
+ \CJK@namegdef{^^aa}##1{\CJK@disableMakeUppercase
+ \CJK@char {26}{-27}{##1}}
+ \CJK@namegdef{^^ab}##1{\CJK@disableMakeUppercase
+ \CJK@charx{26}{27}{130}{##1}}
+ \CJK@namegdef{^^ac}##1{\CJK@disableMakeUppercase
+ \CJK@char {27}{ 31}{##1}}
+ \CJK@namegdef{^^ad}##1{\CJK@disableMakeUppercase
+ \CJK@charx{27}{28}{188}{##1}}
+ \CJK@namegdef{^^ae}##1{\CJK@disableMakeUppercase
+ \CJK@charx{28}{29}{ 89}{##1}}
+ \CJK@namegdef{^^af}##1{\CJK@disableMakeUppercase
+ \CJK@char {29}{-10}{##1}}
+ \CJK@namegdef{^^b0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{29}{30}{147}{##1}}
+ \CJK@namegdef{^^b1}##1{\CJK@disableMakeUppercase
+ \CJK@charx{30}{31}{ 48}{##1}}
+ \CJK@namegdef{^^b2}##1{\CJK@disableMakeUppercase
+ \CJK@char {31}{-51}{##1}}
+ \CJK@namegdef{^^b3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{31}{32}{106}{##1}}
+ \CJK@namegdef{^^b4}##1{\CJK@disableMakeUppercase
+ \CJK@char {32}{ 7}{##1}}
+ \CJK@namegdef{^^b5}##1{\CJK@disableMakeUppercase
+ \CJK@charx{32}{33}{164}{##1}}
+ \CJK@namegdef{^^b6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{33}{34}{ 65}{##1}}
+ \CJK@namegdef{^^b7}##1{\CJK@disableMakeUppercase
+ \CJK@char {34}{-34}{##1}}
+ \CJK@namegdef{^^b8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{34}{35}{123}{##1}}
+ \CJK@namegdef{^^b9}##1{\CJK@disableMakeUppercase
+ \CJK@char {35}{ 24}{##1}}
+ \CJK@namegdef{^^ba}##1{\CJK@disableMakeUppercase
+ \CJK@charx{35}{36}{181}{##1}}
+ \CJK@namegdef{^^bb}##1{\CJK@disableMakeUppercase
+ \CJK@charx{36}{37}{ 82}{##1}}
+ \CJK@namegdef{^^bc}##1{\CJK@disableMakeUppercase
+ \CJK@char {37}{-17}{##1}}
+ \CJK@namegdef{^^bd}##1{\CJK@disableMakeUppercase
+ \CJK@charx{37}{38}{140}{##1}}
+ \CJK@namegdef{^^be}##1{\CJK@disableMakeUppercase
+ \CJK@charx{38}{39}{ 41}{##1}}
+ \CJK@namegdef{^^bf}##1{\CJK@disableMakeUppercase
+ \CJK@char {39}{-58}{##1}}
+ \CJK@namegdef{^^c0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{39}{40}{ 99}{##1}}
+ \CJK@namegdef{^^c1}##1{\CJK@disableMakeUppercase
+ \CJK@char {40}{ 0}{##1}}
+ \CJK@namegdef{^^c2}##1{\CJK@disableMakeUppercase
+ \CJK@charx{40}{41}{157}{##1}}
+ \CJK@namegdef{^^c3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{41}{42}{ 58}{##1}}
+ \CJK@namegdef{^^c4}##1{\CJK@disableMakeUppercase
+ \CJK@char {42}{-41}{##1}}
+ \CJK@namegdef{^^c5}##1{\CJK@disableMakeUppercase
+ \CJK@charx{42}{43}{116}{##1}}
+ \CJK@namegdef{^^c6}##1{\CJK@disableMakeUppercase
+ \CJK@char {43}{ 17}{##1}}
+ \CJK@namegdef{^^c7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{43}{44}{174}{##1}}
+ \CJK@namegdef{^^c8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{44}{45}{ 75}{##1}}
+ \CJK@namegdef{^^c9}##1{\CJK@disableMakeUppercase
+ \CJK@char {45}{-24}{##1}}
+ \CJK@namegdef{^^ca}##1{\CJK@disableMakeUppercase
+ \CJK@charx{45}{46}{133}{##1}}
+ \CJK@namegdef{^^cb}##1{\CJK@disableMakeUppercase
+ \CJK@char {46}{ 34}{##1}}
+ \CJK@namegdef{^^cc}##1{\CJK@disableMakeUppercase
+ \CJK@charx{46}{47}{191}{##1}}
+ \CJK@namegdef{^^cd}##1{\CJK@disableMakeUppercase
+ \CJK@charx{47}{48}{ 92}{##1}}
+ \CJK@namegdef{^^ce}##1{\CJK@disableMakeUppercase
+ \CJK@char {48}{ -7}{##1}}
+ \CJK@namegdef{^^cf}##1{\CJK@disableMakeUppercase
+ \CJK@charx{48}{49}{150}{##1}}
+ \CJK@namegdef{^^d0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{49}{50}{ 51}{##1}}
+ \CJK@namegdef{^^d1}##1{\CJK@disableMakeUppercase
+ \CJK@char {50}{-48}{##1}}
+ \CJK@namegdef{^^d2}##1{\CJK@disableMakeUppercase
+ \CJK@charx{50}{51}{109}{##1}}
+ \CJK@namegdef{^^d3}##1{\CJK@disableMakeUppercase
+ \CJK@char {51}{ 10}{##1}}
+ \CJK@namegdef{^^d4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{51}{52}{167}{##1}}
+ \CJK@namegdef{^^d5}##1{\CJK@disableMakeUppercase
+ \CJK@charx{52}{53}{ 68}{##1}}
+ \CJK@namegdef{^^d6}##1{\CJK@disableMakeUppercase
+ \CJK@char {53}{-31}{##1}}
+ \CJK@namegdef{^^d7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{53}{54}{126}{##1}}
+ \CJK@namegdef{^^d8}##1{\CJK@disableMakeUppercase
+ \CJK@char {54}{ 27}{##1}}
+ \CJK@namegdef{^^d9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{54}{55}{184}{##1}}
+ \CJK@namegdef{^^da}##1{\CJK@disableMakeUppercase
+ \CJK@charx{55}{56}{ 85}{##1}}
+ \CJK@namegdef{^^db}##1{\CJK@disableMakeUppercase
+ \CJK@char {56}{-14}{##1}}
+ \CJK@namegdef{^^dc}##1{\CJK@disableMakeUppercase
+ \CJK@charx{56}{57}{143}{##1}}
+ \CJK@namegdef{^^dd}##1{\CJK@disableMakeUppercase
+ \CJK@charx{57}{58}{ 44}{##1}}
+ \CJK@namegdef{^^de}##1{\CJK@disableMakeUppercase
+ \CJK@char {58}{-55}{##1}}}
+ \CJK@namegdef{^^df}##1{\CJK@disableMakeUppercase
+ \CJK@charx{58}{59}{102}{##1}}
+ \CJK@namegdef{^^e0}##1{\CJK@disableMakeUppercase
+ \CJK@char {59}{ 3}{##1}}
+ \CJK@namegdef{^^e1}##1{\CJK@disableMakeUppercase
+ \CJK@charx{59}{60}{160}{##1}}
+ \CJK@namegdef{^^e2}##1{\CJK@disableMakeUppercase
+ \CJK@charx{60}{61}{ 61}{##1}}
+ \CJK@namegdef{^^e3}##1{\CJK@disableMakeUppercase
+ \CJK@char {61}{-38}{##1}}
+ \CJK@namegdef{^^e4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{61}{62}{119}{##1}}
+ \CJK@namegdef{^^e5}##1{\CJK@disableMakeUppercase
+ \CJK@char {62}{ 20}{##1}}
+ \CJK@namegdef{^^e6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{62}{63}{177}{##1}}
+ \CJK@namegdef{^^e7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{63}{64}{ 78}{##1}}
+ \CJK@namegdef{^^e8}##1{\CJK@disableMakeUppercase
+ \CJK@char {64}{-21}{##1}}
+ \CJK@namegdef{^^e9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{64}{65}{136}{##1}}
+ \CJK@namegdef{^^ea}##1{\CJK@disableMakeUppercase
+ \CJK@charx{65}{66}{ 37}{##1}}
+ \CJK@namegdef{^^eb}##1{\CJK@disableMakeUppercase
+ \CJK@char {66}{-62}{##1}}
+ \CJK@namegdef{^^ec}##1{\CJK@disableMakeUppercase
+ \CJK@charx{66}{67}{ 95}{##1}}
+ \CJK@namegdef{^^ed}##1{\CJK@disableMakeUppercase
+ \CJK@char {67}{ -4}{##1}}
+ \CJK@namegdef{^^ee}##1{\CJK@disableMakeUppercase
+ \CJK@charx{67}{68}{153}{##1}}
+ \CJK@namegdef{^^ef}##1{\CJK@disableMakeUppercase
+ \CJK@charx{68}{69}{ 54}{##1}}
+ \CJK@namegdef{^^f0}##1{\CJK@disableMakeUppercase
+ \CJK@char {69}{-45}{##1}}
+ \CJK@namegdef{^^f1}##1{\CJK@disableMakeUppercase
+ \CJK@charx{69}{70}{112}{##1}}
+ \CJK@namegdef{^^f2}##1{\CJK@disableMakeUppercase
+ \CJK@char {70}{ 13}{##1}}
+ \CJK@namegdef{^^f3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{70}{71}{170}{##1}}
+ \CJK@namegdef{^^f4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{71}{72}{ 71}{##1}}
+ \CJK@namegdef{^^f5}##1{\CJK@disableMakeUppercase
+ \CJK@char {72}{-28}{##1}}
+ \CJK@namegdef{^^f6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{72}{73}{129}{##1}}
+ \CJK@namegdef{^^f7}##1{\CJK@disableMakeUppercase
+ \CJK@char {73}{ 30}{##1}}
+ \CJK@namegdef{^^f8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{73}{74}{187}{##1}}
+ \CJK@namegdef{^^f9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{74}{75}{ 88}{##1}}
+ \CJK@namegdef{^^fa}##1{\CJK@disableMakeUppercase
+ \CJK@char {75}{-11}{##1}}
+ \CJK@namegdef{^^fb}##1{\CJK@disableMakeUppercase
+ \CJK@charx{75}{76}{146}{##1}}
+ \CJK@namegdef{^^fc}##1{\CJK@disableMakeUppercase
+ \CJK@charx{76}{77}{ 47}{##1}}
+ \CJK@namegdef{^^fd}##1{\CJK@disableMakeUppercase
+ \CJK@char {77}{-52}{##1}}
+ \CJK@namegdef{^^fe}##1{\CJK@disableMakeUppercase
+ \CJK@charx{77}{78}{105}{##1}}
+
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bkai.fd b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bkai.fd
new file mode 100644
index 0000000000..3a09aef000
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bkai.fd
@@ -0,0 +1,25 @@
+% This is the file c00bkai.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00bkai.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters
+%
+% character set: Big 5
+% font encoding: CJK (Bg5)
+
+% Arphic PL TrueType font AR PL KaitiM Big5 / ZenKai-Medium
+
+\DeclareFontFamily{C00}{bkai}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C00}{bkai}{m}{n}{<-> CJK * bkaimp}{\CJKnormal}
+\DeclareFontShape{C00}{bkai}{bx}{n}{<-> CJKb * bkaimp}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bkai.fdx b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bkai.fdx
new file mode 100644
index 0000000000..18a113872b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bkai.fdx
@@ -0,0 +1,147 @@
+% This is the file c00bkai.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00bkai.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{fullheight}{1em}
+\CJKvdef{height}{.88em}
+\CJKvdef{offset}{.6em}
+
+\CJKvdef{m/n/01/96}{\def\CJK@plane{v}\selectfont\CJKsymbol{0}}
+\CJKvdef{m/n/01/16}{\def\CJK@plane{v}\selectfont\CJKsymbol{1}}
+\CJKvdef{m/n/01/99}{\def\CJK@plane{v}\selectfont\CJKsymbol{2}}
+\CJKvdef{m/n/01/29}{\def\CJK@plane{v}\selectfont\CJKsymbol{3}}
+\CJKvdef{m/n/01/30}{\def\CJK@plane{v}\selectfont\CJKsymbol{4}}
+\CJKvdef{m/n/01/1}{\def\CJK@plane{v}\selectfont\CJKsymbol{5}}
+\CJKvdef{m/n/01/4}{\def\CJK@plane{v}\selectfont\CJKsymbol{6}}
+\CJKvdef{m/n/01/98}{\def\CJK@plane{v}\selectfont\CJKsymbol{9}}
+\CJKvdef{m/n/01/33}{\def\CJK@plane{v}\selectfont\CJKsymbol{10}}
+\CJKvdef{m/n/01/34}{\def\CJK@plane{v}\selectfont\CJKsymbol{11}}
+\CJKvdef{m/n/01/129}{\def\CJK@plane{v}\selectfont\CJKsymbol{12}}
+\CJKvdef{m/n/01/22}{\def\CJK@plane{v}\selectfont\CJKsymbol{13}}
+\CJKvdef{m/n/01/24}{\def\CJK@plane{v}\selectfont\CJKsymbol{14}}
+\CJKvdef{m/n/01/12}{\def\CJK@plane{v}\selectfont\CJKsymbol{15}}
+\CJKvdef{m/n/01/11}{\def\CJK@plane{v}\selectfont\CJKsymbol{16}}
+\CJKvdef{m/n/01/148}{\def\CJK@plane{v}\selectfont\CJKsymbol{17}}
+\CJKvdef{m/n/01/146}{\def\CJK@plane{v}\selectfont\CJKsymbol{18}}
+\CJKvdef{m/n/01/149}{\def\CJK@plane{v}\selectfont\CJKsymbol{19}}
+\CJKvdef{m/n/01/147}{\def\CJK@plane{v}\selectfont\CJKsymbol{20}}
+\CJKvdef{m/n/01/155}{\def\CJK@plane{v}\selectfont\CJKsymbol{21}}
+\CJKvdef{m/n/01/154}{\def\CJK@plane{v}\selectfont\CJKsymbol{22}}
+\CJKvdef{m/n/01/212}{\def\CJK@plane{v}\selectfont\CJKsymbol{23}}
+\CJKvdef{m/n/01/213}{\def\CJK@plane{v}\selectfont\CJKsymbol{24}}
+\CJKvdef{m/n/01/215}{\def\CJK@plane{v}\selectfont\CJKsymbol{25}}
+\CJKvdef{m/n/01/216}{\def\CJK@plane{v}\selectfont\CJKsymbol{26}}
+\CJKvdef{m/n/01/217}{\def\CJK@plane{v}\selectfont\CJKsymbol{27}}
+\CJKvdef{m/n/01/218}{\def\CJK@plane{v}\selectfont\CJKsymbol{28}}
+\CJKvdef{m/n/01/210}{\def\CJK@plane{v}\selectfont\CJKsymbol{29}}
+\CJKvdef{m/n/01/209}{\def\CJK@plane{v}\selectfont\CJKsymbol{30}}
+\CJKvdef{m/n/01/208}{\def\CJK@plane{v}\selectfont\CJKsymbol{31}}
+\CJKvdef{m/n/01/207}{\def\CJK@plane{v}\selectfont\CJKsymbol{32}}
+\CJKvdef{m/n/01/223}{\def\CJK@plane{v}\selectfont\CJKsymbol{33}}
+\CJKvdef{m/n/01/224}{\def\CJK@plane{v}\selectfont\CJKsymbol{47}}
+\CJKvdef{m/n/01/226}{\def\CJK@plane{v}\selectfont\CJKsymbol{50}}
+\CJKvdef{m/n/01/225}{\def\CJK@plane{v}\selectfont\CJKsymbol{59}}
+\CJKvdef{m/n/01/219}{\def\CJK@plane{v}\selectfont\CJKsymbol{61}}
+\CJKvdef{m/n/01/220}{\def\CJK@plane{v}\selectfont\CJKsymbol{62}}
+\CJKvdef{m/n/01/222}{\def\CJK@plane{v}\selectfont\CJKsymbol{63}}
+\CJKvdef{m/n/01/221}{\def\CJK@plane{v}\selectfont\CJKsymbol{64}}
+\CJKvdef{m/n/01/26}{\def\CJK@plane{v}\selectfont\CJKsymbol{65}}
+\CJKvdef{m/n/01/2}{\def\CJK@plane{v}\selectfont\CJKsymbol{66}}
+\CJKvdef{m/n/01/3}{\def\CJK@plane{v}\selectfont\CJKsymbol{67}}
+\CJKvdef{m/n/01/49}{\def\CJK@plane{v}\selectfont\CJKsymbol{68}}
+\CJKvdef{m/n/01/50}{\def\CJK@plane{v}\selectfont\CJKsymbol{69}}
+\CJKvdef{m/n/01/45}{\def\CJK@plane{v}\selectfont\CJKsymbol{70}}
+\CJKvdef{m/n/01/46}{\def\CJK@plane{v}\selectfont\CJKsymbol{71}}
+\CJKvdef{m/n/01/53}{\def\CJK@plane{v}\selectfont\CJKsymbol{72}}
+\CJKvdef{m/n/01/54}{\def\CJK@plane{v}\selectfont\CJKsymbol{73}}
+\CJKvdef{m/n/01/57}{\def\CJK@plane{v}\selectfont\CJKsymbol{74}}
+\CJKvdef{m/n/01/58}{\def\CJK@plane{v}\selectfont\CJKsymbol{75}}
+\CJKvdef{m/n/01/41}{\def\CJK@plane{v}\selectfont\CJKsymbol{76}}
+\CJKvdef{m/n/01/42}{\def\CJK@plane{v}\selectfont\CJKsymbol{77}}
+\CJKvdef{m/n/01/37}{\def\CJK@plane{v}\selectfont\CJKsymbol{78}}
+\CJKvdef{m/n/01/38}{\def\CJK@plane{v}\selectfont\CJKsymbol{79}}
+\CJKvdef{m/n/01/28}{\def\CJK@plane{v}\selectfont\CJKsymbol{80}}
+\CJKvdef{m/n/01/13}{\def\CJK@plane{v}\selectfont\CJKsymbol{81}}
+\CJKvdef{m/n/01/14}{\def\CJK@plane{v}\selectfont\CJKsymbol{82}}
+\CJKvdef{m/n/01/15}{\def\CJK@plane{v}\selectfont\CJKsymbol{83}}
+\CJKvdef{m/n/01/61}{\def\CJK@plane{v}\selectfont\CJKsymbol{84}}
+\CJKvdef{m/n/01/62}{\def\CJK@plane{v}\selectfont\CJKsymbol{85}}
+\CJKvdef{m/n/01/63}{\def\CJK@plane{v}\selectfont\CJKsymbol{86}}
+\CJKvdef{m/n/01/64}{\def\CJK@plane{v}\selectfont\CJKsymbol{87}}
+\CJKvdef{m/n/01/65}{\def\CJK@plane{v}\selectfont\CJKsymbol{88}}
+\CJKvdef{m/n/01/66}{\def\CJK@plane{v}\selectfont\CJKsymbol{89}}
+
+\CJKvlet{bx/n/01/96}{m/n/01/96}
+\CJKvlet{bx/n/01/16}{m/n/01/16}
+\CJKvlet{bx/n/01/99}{m/n/01/99}
+\CJKvlet{bx/n/01/29}{m/n/01/29}
+\CJKvlet{bx/n/01/30}{m/n/01/30}
+\CJKvlet{bx/n/01/1}{m/n/01/1}
+\CJKvlet{bx/n/01/4}{m/n/01/4}
+\CJKvlet{bx/n/01/98}{m/n/01/98}
+\CJKvlet{bx/n/01/33}{m/n/01/33}
+\CJKvlet{bx/n/01/34}{m/n/01/34}
+\CJKvlet{bx/n/01/129}{m/n/01/129}
+\CJKvlet{bx/n/01/22}{m/n/01/22}
+\CJKvlet{bx/n/01/24}{m/n/01/24}
+\CJKvlet{bx/n/01/12}{m/n/01/12}
+\CJKvlet{bx/n/01/11}{m/n/01/11}
+\CJKvlet{bx/n/01/148}{m/n/01/148}
+\CJKvlet{bx/n/01/146}{m/n/01/146}
+\CJKvlet{bx/n/01/149}{m/n/01/149}
+\CJKvlet{bx/n/01/147}{m/n/01/147}
+\CJKvlet{bx/n/01/155}{m/n/01/155}
+\CJKvlet{bx/n/01/154}{m/n/01/154}
+\CJKvlet{bx/n/01/212}{m/n/01/212}
+\CJKvlet{bx/n/01/213}{m/n/01/213}
+\CJKvlet{bx/n/01/215}{m/n/01/215}
+\CJKvlet{bx/n/01/216}{m/n/01/216}
+\CJKvlet{bx/n/01/217}{m/n/01/217}
+\CJKvlet{bx/n/01/218}{m/n/01/218}
+\CJKvlet{bx/n/01/210}{m/n/01/210}
+\CJKvlet{bx/n/01/209}{m/n/01/209}
+\CJKvlet{bx/n/01/208}{m/n/01/208}
+\CJKvlet{bx/n/01/207}{m/n/01/207}
+\CJKvlet{bx/n/01/223}{m/n/01/223}
+\CJKvlet{bx/n/01/224}{m/n/01/224}
+\CJKvlet{bx/n/01/226}{m/n/01/226}
+\CJKvlet{bx/n/01/225}{m/n/01/225}
+\CJKvlet{bx/n/01/219}{m/n/01/219}
+\CJKvlet{bx/n/01/220}{m/n/01/220}
+\CJKvlet{bx/n/01/222}{m/n/01/222}
+\CJKvlet{bx/n/01/221}{m/n/01/221}
+\CJKvlet{bx/n/01/26}{m/n/01/26}
+\CJKvlet{bx/n/01/2}{m/n/01/2}
+\CJKvlet{bx/n/01/3}{m/n/01/3}
+\CJKvlet{bx/n/01/49}{m/n/01/49}
+\CJKvlet{bx/n/01/50}{m/n/01/50}
+\CJKvlet{bx/n/01/45}{m/n/01/45}
+\CJKvlet{bx/n/01/46}{m/n/01/46}
+\CJKvlet{bx/n/01/53}{m/n/01/53}
+\CJKvlet{bx/n/01/54}{m/n/01/54}
+\CJKvlet{bx/n/01/57}{m/n/01/57}
+\CJKvlet{bx/n/01/58}{m/n/01/58}
+\CJKvlet{bx/n/01/41}{m/n/01/41}
+\CJKvlet{bx/n/01/42}{m/n/01/42}
+\CJKvlet{bx/n/01/37}{m/n/01/37}
+\CJKvlet{bx/n/01/38}{m/n/01/38}
+\CJKvlet{bx/n/01/28}{m/n/01/28}
+\CJKvlet{bx/n/01/13}{m/n/01/13}
+\CJKvlet{bx/n/01/14}{m/n/01/14}
+\CJKvlet{bx/n/01/15}{m/n/01/15}
+\CJKvlet{bx/n/01/61}{m/n/01/61}
+\CJKvlet{bx/n/01/62}{m/n/01/62}
+\CJKvlet{bx/n/01/63}{m/n/01/63}
+\CJKvlet{bx/n/01/64}{m/n/01/64}
+\CJKvlet{bx/n/01/65}{m/n/01/65}
+\CJKvlet{bx/n/01/66}{m/n/01/66}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmi.fd b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmi.fd
new file mode 100644
index 0000000000..7f7d6fee79
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmi.fd
@@ -0,0 +1,25 @@
+% This is the file c00bsmi.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00bsmi.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters
+%
+% character set: Big 5
+% font encoding: CJK (Bg5)
+
+% Arphic PL TrueType font AR PL Mingti2L Big5 / ShanHeiSun-Light
+
+\DeclareFontFamily{C00}{bsmi}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C00}{bsmi}{m}{n}{<-> CJK * bsmilp}{\CJKnormal}
+\DeclareFontShape{C00}{bsmi}{bx}{n}{<-> CJKb * bsmilp}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmi.fdx b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmi.fdx
new file mode 100644
index 0000000000..bf861ea8cd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmi.fdx
@@ -0,0 +1,147 @@
+% This is the file c00bsmi.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00bsmi.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{fullheight}{1em}
+\CJKvdef{height}{.88em}
+\CJKvdef{offset}{.6em}
+
+\CJKvdef{m/n/01/96}{\def\CJK@plane{v}\selectfont\CJKsymbol{0}}
+\CJKvdef{m/n/01/16}{\def\CJK@plane{v}\selectfont\CJKsymbol{1}}
+\CJKvdef{m/n/01/99}{\def\CJK@plane{v}\selectfont\CJKsymbol{2}}
+\CJKvdef{m/n/01/29}{\def\CJK@plane{v}\selectfont\CJKsymbol{3}}
+\CJKvdef{m/n/01/30}{\def\CJK@plane{v}\selectfont\CJKsymbol{4}}
+\CJKvdef{m/n/01/1}{\def\CJK@plane{v}\selectfont\CJKsymbol{5}}
+\CJKvdef{m/n/01/4}{\def\CJK@plane{v}\selectfont\CJKsymbol{6}}
+\CJKvdef{m/n/01/98}{\def\CJK@plane{v}\selectfont\CJKsymbol{9}}
+\CJKvdef{m/n/01/33}{\def\CJK@plane{v}\selectfont\CJKsymbol{10}}
+\CJKvdef{m/n/01/34}{\def\CJK@plane{v}\selectfont\CJKsymbol{11}}
+\CJKvdef{m/n/01/129}{\def\CJK@plane{v}\selectfont\CJKsymbol{12}}
+\CJKvdef{m/n/01/22}{\def\CJK@plane{v}\selectfont\CJKsymbol{13}}
+\CJKvdef{m/n/01/24}{\def\CJK@plane{v}\selectfont\CJKsymbol{14}}
+\CJKvdef{m/n/01/12}{\def\CJK@plane{v}\selectfont\CJKsymbol{15}}
+\CJKvdef{m/n/01/11}{\def\CJK@plane{v}\selectfont\CJKsymbol{16}}
+\CJKvdef{m/n/01/148}{\def\CJK@plane{v}\selectfont\CJKsymbol{17}}
+\CJKvdef{m/n/01/146}{\def\CJK@plane{v}\selectfont\CJKsymbol{18}}
+\CJKvdef{m/n/01/149}{\def\CJK@plane{v}\selectfont\CJKsymbol{19}}
+\CJKvdef{m/n/01/147}{\def\CJK@plane{v}\selectfont\CJKsymbol{20}}
+\CJKvdef{m/n/01/155}{\def\CJK@plane{v}\selectfont\CJKsymbol{21}}
+\CJKvdef{m/n/01/154}{\def\CJK@plane{v}\selectfont\CJKsymbol{22}}
+\CJKvdef{m/n/01/212}{\def\CJK@plane{v}\selectfont\CJKsymbol{23}}
+\CJKvdef{m/n/01/213}{\def\CJK@plane{v}\selectfont\CJKsymbol{24}}
+\CJKvdef{m/n/01/215}{\def\CJK@plane{v}\selectfont\CJKsymbol{25}}
+\CJKvdef{m/n/01/216}{\def\CJK@plane{v}\selectfont\CJKsymbol{26}}
+\CJKvdef{m/n/01/217}{\def\CJK@plane{v}\selectfont\CJKsymbol{27}}
+\CJKvdef{m/n/01/218}{\def\CJK@plane{v}\selectfont\CJKsymbol{28}}
+\CJKvdef{m/n/01/210}{\def\CJK@plane{v}\selectfont\CJKsymbol{29}}
+\CJKvdef{m/n/01/209}{\def\CJK@plane{v}\selectfont\CJKsymbol{30}}
+\CJKvdef{m/n/01/208}{\def\CJK@plane{v}\selectfont\CJKsymbol{31}}
+\CJKvdef{m/n/01/207}{\def\CJK@plane{v}\selectfont\CJKsymbol{32}}
+\CJKvdef{m/n/01/223}{\def\CJK@plane{v}\selectfont\CJKsymbol{33}}
+\CJKvdef{m/n/01/224}{\def\CJK@plane{v}\selectfont\CJKsymbol{47}}
+\CJKvdef{m/n/01/226}{\def\CJK@plane{v}\selectfont\CJKsymbol{50}}
+\CJKvdef{m/n/01/225}{\def\CJK@plane{v}\selectfont\CJKsymbol{59}}
+\CJKvdef{m/n/01/219}{\def\CJK@plane{v}\selectfont\CJKsymbol{61}}
+\CJKvdef{m/n/01/220}{\def\CJK@plane{v}\selectfont\CJKsymbol{62}}
+\CJKvdef{m/n/01/222}{\def\CJK@plane{v}\selectfont\CJKsymbol{63}}
+\CJKvdef{m/n/01/221}{\def\CJK@plane{v}\selectfont\CJKsymbol{64}}
+\CJKvdef{m/n/01/26}{\def\CJK@plane{v}\selectfont\CJKsymbol{65}}
+\CJKvdef{m/n/01/2}{\def\CJK@plane{v}\selectfont\CJKsymbol{66}}
+\CJKvdef{m/n/01/3}{\def\CJK@plane{v}\selectfont\CJKsymbol{67}}
+\CJKvdef{m/n/01/49}{\def\CJK@plane{v}\selectfont\CJKsymbol{68}}
+\CJKvdef{m/n/01/50}{\def\CJK@plane{v}\selectfont\CJKsymbol{69}}
+\CJKvdef{m/n/01/45}{\def\CJK@plane{v}\selectfont\CJKsymbol{70}}
+\CJKvdef{m/n/01/46}{\def\CJK@plane{v}\selectfont\CJKsymbol{71}}
+\CJKvdef{m/n/01/53}{\def\CJK@plane{v}\selectfont\CJKsymbol{72}}
+\CJKvdef{m/n/01/54}{\def\CJK@plane{v}\selectfont\CJKsymbol{73}}
+\CJKvdef{m/n/01/57}{\def\CJK@plane{v}\selectfont\CJKsymbol{74}}
+\CJKvdef{m/n/01/58}{\def\CJK@plane{v}\selectfont\CJKsymbol{75}}
+\CJKvdef{m/n/01/41}{\def\CJK@plane{v}\selectfont\CJKsymbol{76}}
+\CJKvdef{m/n/01/42}{\def\CJK@plane{v}\selectfont\CJKsymbol{77}}
+\CJKvdef{m/n/01/37}{\def\CJK@plane{v}\selectfont\CJKsymbol{78}}
+\CJKvdef{m/n/01/38}{\def\CJK@plane{v}\selectfont\CJKsymbol{79}}
+\CJKvdef{m/n/01/28}{\def\CJK@plane{v}\selectfont\CJKsymbol{80}}
+\CJKvdef{m/n/01/13}{\def\CJK@plane{v}\selectfont\CJKsymbol{81}}
+\CJKvdef{m/n/01/14}{\def\CJK@plane{v}\selectfont\CJKsymbol{82}}
+\CJKvdef{m/n/01/15}{\def\CJK@plane{v}\selectfont\CJKsymbol{83}}
+\CJKvdef{m/n/01/61}{\def\CJK@plane{v}\selectfont\CJKsymbol{84}}
+\CJKvdef{m/n/01/62}{\def\CJK@plane{v}\selectfont\CJKsymbol{85}}
+\CJKvdef{m/n/01/63}{\def\CJK@plane{v}\selectfont\CJKsymbol{86}}
+\CJKvdef{m/n/01/64}{\def\CJK@plane{v}\selectfont\CJKsymbol{87}}
+\CJKvdef{m/n/01/65}{\def\CJK@plane{v}\selectfont\CJKsymbol{88}}
+\CJKvdef{m/n/01/66}{\def\CJK@plane{v}\selectfont\CJKsymbol{89}}
+
+\CJKvlet{bx/n/01/96}{m/n/01/96}
+\CJKvlet{bx/n/01/16}{m/n/01/16}
+\CJKvlet{bx/n/01/99}{m/n/01/99}
+\CJKvlet{bx/n/01/29}{m/n/01/29}
+\CJKvlet{bx/n/01/30}{m/n/01/30}
+\CJKvlet{bx/n/01/1}{m/n/01/1}
+\CJKvlet{bx/n/01/4}{m/n/01/4}
+\CJKvlet{bx/n/01/98}{m/n/01/98}
+\CJKvlet{bx/n/01/33}{m/n/01/33}
+\CJKvlet{bx/n/01/34}{m/n/01/34}
+\CJKvlet{bx/n/01/129}{m/n/01/129}
+\CJKvlet{bx/n/01/22}{m/n/01/22}
+\CJKvlet{bx/n/01/24}{m/n/01/24}
+\CJKvlet{bx/n/01/12}{m/n/01/12}
+\CJKvlet{bx/n/01/11}{m/n/01/11}
+\CJKvlet{bx/n/01/148}{m/n/01/148}
+\CJKvlet{bx/n/01/146}{m/n/01/146}
+\CJKvlet{bx/n/01/149}{m/n/01/149}
+\CJKvlet{bx/n/01/147}{m/n/01/147}
+\CJKvlet{bx/n/01/155}{m/n/01/155}
+\CJKvlet{bx/n/01/154}{m/n/01/154}
+\CJKvlet{bx/n/01/212}{m/n/01/212}
+\CJKvlet{bx/n/01/213}{m/n/01/213}
+\CJKvlet{bx/n/01/215}{m/n/01/215}
+\CJKvlet{bx/n/01/216}{m/n/01/216}
+\CJKvlet{bx/n/01/217}{m/n/01/217}
+\CJKvlet{bx/n/01/218}{m/n/01/218}
+\CJKvlet{bx/n/01/210}{m/n/01/210}
+\CJKvlet{bx/n/01/209}{m/n/01/209}
+\CJKvlet{bx/n/01/208}{m/n/01/208}
+\CJKvlet{bx/n/01/207}{m/n/01/207}
+\CJKvlet{bx/n/01/223}{m/n/01/223}
+\CJKvlet{bx/n/01/224}{m/n/01/224}
+\CJKvlet{bx/n/01/226}{m/n/01/226}
+\CJKvlet{bx/n/01/225}{m/n/01/225}
+\CJKvlet{bx/n/01/219}{m/n/01/219}
+\CJKvlet{bx/n/01/220}{m/n/01/220}
+\CJKvlet{bx/n/01/222}{m/n/01/222}
+\CJKvlet{bx/n/01/221}{m/n/01/221}
+\CJKvlet{bx/n/01/26}{m/n/01/26}
+\CJKvlet{bx/n/01/2}{m/n/01/2}
+\CJKvlet{bx/n/01/3}{m/n/01/3}
+\CJKvlet{bx/n/01/49}{m/n/01/49}
+\CJKvlet{bx/n/01/50}{m/n/01/50}
+\CJKvlet{bx/n/01/45}{m/n/01/45}
+\CJKvlet{bx/n/01/46}{m/n/01/46}
+\CJKvlet{bx/n/01/53}{m/n/01/53}
+\CJKvlet{bx/n/01/54}{m/n/01/54}
+\CJKvlet{bx/n/01/57}{m/n/01/57}
+\CJKvlet{bx/n/01/58}{m/n/01/58}
+\CJKvlet{bx/n/01/41}{m/n/01/41}
+\CJKvlet{bx/n/01/42}{m/n/01/42}
+\CJKvlet{bx/n/01/37}{m/n/01/37}
+\CJKvlet{bx/n/01/38}{m/n/01/38}
+\CJKvlet{bx/n/01/28}{m/n/01/28}
+\CJKvlet{bx/n/01/13}{m/n/01/13}
+\CJKvlet{bx/n/01/14}{m/n/01/14}
+\CJKvlet{bx/n/01/15}{m/n/01/15}
+\CJKvlet{bx/n/01/61}{m/n/01/61}
+\CJKvlet{bx/n/01/62}{m/n/01/62}
+\CJKvlet{bx/n/01/63}{m/n/01/63}
+\CJKvlet{bx/n/01/64}{m/n/01/64}
+\CJKvlet{bx/n/01/65}{m/n/01/65}
+\CJKvlet{bx/n/01/66}{m/n/01/66}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmir.fd b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmir.fd
new file mode 100644
index 0000000000..fa10ef0545
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmir.fd
@@ -0,0 +1,25 @@
+% This is the file c00bsmir.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00bsmir.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters
+%
+% character set: Big 5
+% font encoding: CJK (Bg5)
+
+% Arphic GPL font (MingTi) rotated
+
+\DeclareFontFamily{C00}{bsmir}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C00}{bsmir}{m}{n}{<-> CJK * bsmilr}{\CJKnormal}
+\DeclareFontShape{C00}{bsmir}{bx}{n}{<-> CJKb * bsmilr}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmir.fdx b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmir.fdx
new file mode 100644
index 0000000000..cc25893d80
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00bsmir.fdx
@@ -0,0 +1,15 @@
+% This is the file c00bsmir.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00bsmir.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{norotate}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00cns.fd b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00cns.fd
new file mode 100644
index 0000000000..96415d3f20
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00cns.fd
@@ -0,0 +1,25 @@
+% This is the file c00cns.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00cns.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters
+%
+% character set: Big 5
+% font encoding: CJK (Bg5)
+
+% Big 5 encoded CNS pixel font
+
+\DeclareFontFamily{C00}{CNS}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C00}{CNS}{m}{n}{<-> CJK * csso12}{\CJKnormal}
+\DeclareFontShape{C00}{CNS}{bx}{n}{<-> CJKb * csso12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00fs.fd b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00fs.fd
new file mode 100644
index 0000000000..f0ba805e36
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00fs.fd
@@ -0,0 +1,25 @@
+% This is the file c00fs.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00fs.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters in Big 5 encoding scheme.
+%
+% character set: Big 5
+% font encoding: CJK (Bg5)
+
+% NTU TrueType font
+
+\DeclareFontFamily{C00}{fs}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C00}{fs}{m}{n}{<-> CJK * ntufsm}{\CJKnormal}
+\DeclareFontShape{C00}{fs}{bx}{n}{<-> CJKb * ntufsm}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kai.fd b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kai.fd
new file mode 100644
index 0000000000..4e2a853e0b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kai.fd
@@ -0,0 +1,25 @@
+% This is the file c00kai.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00kai.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters
+%
+% character set: Big 5
+% font encoding: CJK (Bg5)
+
+% pixel font
+
+\DeclareFontFamily{C00}{kai}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C00}{kai}{m}{n}{<-> CJK * b5ka12}{\CJKnormal}
+\DeclareFontShape{C00}{kai}{bx}{n}{<-> CJKb * b5ka12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kair.fd b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kair.fd
new file mode 100644
index 0000000000..a449cc6aa9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kair.fd
@@ -0,0 +1,25 @@
+% This is the file c00kair.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00kair.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters in Big 5 encoding scheme.
+%
+% character set: Big 5
+% font encoding: CJK (Bg5)
+
+% ntukai48 pixel font rotated
+
+\DeclareFontFamily{C00}{kair}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C00}{kair}{m}{n}{<-> CJK * b5kr12}{\CJKnormal}
+\DeclareFontShape{C00}{kair}{bx}{n}{<-> CJKb * b5kr12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kair.fdx b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kair.fdx
new file mode 100644
index 0000000000..bbcdc9ecbc
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00kair.fdx
@@ -0,0 +1,15 @@
+% This is the file c00kair.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00kair.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{norotate}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00song.fd
new file mode 100644
index 0000000000..b72cf6b811
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c00song.fd
@@ -0,0 +1,25 @@
+% This is the file c00song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c00song.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters
+%
+% character set: Big 5
+% font encoding: CJK (Bg5)
+
+% pixel font
+
+\DeclareFontFamily{C00}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C00}{song}{m}{n}{<-> CJKsub * kai/m/n}{}
+\DeclareFontShape{C00}{song}{bx}{n}{<-> CJKsub * kai/bx/n}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c01song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c01song.fd
new file mode 100644
index 0000000000..51ed5c16c3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c01song.fd
@@ -0,0 +1,23 @@
+% This is the file c01song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c01song.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters
+%
+% character set: Big 5
+% font encoding: pmC
+
+\DeclareFontFamily{C01}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C01}{song}{m}{n}{<-> sCJKfixed * wcb5}{\CJKnormal}
+\DeclareFontShape{C01}{song}{bx}{n}{<-> sCJKfixedb * wcb5}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c05song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c05song.fd
new file mode 100644
index 0000000000..bc3d18ee85
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c05song.fd
@@ -0,0 +1,25 @@
+% This is the file c00song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c05song.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters
+%
+% character set: Big 5 + HKSCS-2004 (HKSCS-2001)
+% font encoding: CJK (HKSCS)
+
+% pixel font
+
+\DeclareFontFamily{C05}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C05}{song}{m}{n}{<-> CJKsub * kai/m/n}{}
+\DeclareFontShape{C05}{song}{bx}{n}{<-> CJKsub * kai/bx/n}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c09song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c09song.fd
new file mode 100644
index 0000000000..33f6fde8df
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/Bg5/c09song.fd
@@ -0,0 +1,23 @@
+% This is the file c09song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c09song.fd}[\filedate\space\fileversion]
+
+
+% Chinese characters (extension of Big 5)
+%
+% character set: Big 5+
+% font encoding: CJK (extended)
+
+\DeclareFontFamily{C09}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C09}{song}{m}{n}{<-> CJK * bg5p}{\CJKnormal}
+\DeclareFontShape{C09}{song}{bx}{n}{<-> CJKb * bg5p}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CEF/c80song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/CEF/c80song.fd
new file mode 100644
index 0000000000..ef1319aaf8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CEF/c80song.fd
@@ -0,0 +1,34 @@
+% This is the file c80song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c80song.fd}[\filedate\space\fileversion]
+
+
+% CEF reserved font for IRIZ (International Research Institute for Zen
+% Buddhism).
+%
+% character set: IRIZ
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C80}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C80}{song}{m}{n}{
+ <5> <6> <7> CJKfixed * cxso10
+ <8> <9> <10> <10.95> sCJKfixed * cxso10
+ <12> CJKfixed * cxso10
+ <14.4> <17.28> sCJKfixed * cxso17
+ <20.74> <24.88> CJKfixed * cxso17}{\CJKnormal}
+\DeclareFontShape{C80}{song}{bx}{n}{
+ <5> <6> <7> CJKfixedb * cxso10
+ <8> <9> <10> <10.95> sCJKfixedb * cxso10
+ <12> CJKfixedb * cxso10
+ <14.4> <17.28> sCJKfixedb * cxso17
+ <20.74> <24.88> CJKfixedb * cxso17}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CEF/c81song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/CEF/c81song.fd
new file mode 100644
index 0000000000..78985b2ced
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CEF/c81song.fd
@@ -0,0 +1,33 @@
+% This is the file c81song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c81song.fd}[\filedate\space\fileversion]
+
+
+% CEF private font.
+%
+% character set: IRIZ private
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C81}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C81}{song}{m}{n}{
+ <5> <6> <7> CJKfixed * cyso10
+ <8> <9> <10> <10.95> sCJKfixed * cyso10
+ <12> CJKfixed * cyso10
+ <14.4> <17.28> sCJKfixed * cyso17
+ <20.74> <24.88> CJKfixed * cyso17}{\CJKnormal}
+\DeclareFontShape{C81}{song}{bx}{n}{
+ <5> <6> <7> CJKfixedb * cyso10
+ <8> <9> <10> <10.95> sCJKfixedb * cyso10
+ <12> CJKfixedb * cyso10
+ <14.4> <17.28> sCJKfixedb * cyso17
+ <20.74> <24.88> CJKfixedb * cyso17}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CJK.enc b/language/chinese/CJK/cjk-4.8.5/texinput/CJK.enc
new file mode 100644
index 0000000000..af8c8ffd06
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CJK.enc
@@ -0,0 +1,1092 @@
+% This is the file CJK.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{CJK.enc}[\filedate\space\fileversion]
+
+
+% we first define a macro to load an encoding file xxx.enc if
+% \CJK@xxxEncoding is still undefined. \CJK@xxxEncoding will only be
+% executed if it is not the actual encoding.
+
+\edef\CJK@actualEncoding{}
+
+\def\CJK@loadEncoding#1{
+ \expandafter\ifx\csname CJK@#1Encoding\endcsname \relax
+ \CJK@input{#1.enc}
+ \fi
+
+ \edef\CJK@temp{#1}
+ \ifx\CJK@temp \CJK@actualEncoding
+ \else
+ \csname CJK@#1Encoding\endcsname
+ \CJK@global\edef\CJK@actualEncoding{#1}
+ \fi}
+
+% this loads the appropriate xxx.chr file if \CJK@xxxChr is still undefined.
+% \CJK@xxxChr will only be executed if it is not the actual character
+% macro set.
+
+\edef\CJK@actualChr{}
+
+\def\CJK@loadChr#1{
+ \expandafter\ifx\csname CJK@#1Chr\endcsname \relax
+ \CJK@input{#1.chr}
+ \fi
+
+ \edef\CJK@temp{#1}
+ \ifx\CJK@temp \CJK@actualChr
+ \else
+ \csname CJK@#1Chr\endcsname
+ \CJK@global\edef\CJK@actualChr{#1}
+ \fi}
+
+% this loads the appropriate xxx.bdg file if \CJK@xxxBinding is still
+% undefined. \CJK@xxxBinding will only be executed if it is not the
+% actual binding.
+%
+% if the flag \ifCJK@nobind@ is set we do nothing.
+
+\newif\ifCJK@nobind@
+
+\edef\CJK@actualBinding{}
+
+\def\CJK@loadBinding#1{
+ \ifCJK@nobind@
+ \else
+ \expandafter\ifx\csname CJK@#1Binding\endcsname \relax
+ \CJK@input{#1.bdg}
+ \fi
+
+ \edef\CJK@temp{#1}
+ \ifx\CJK@temp \CJK@actualBinding
+ \else
+ \csname CJK@#1Binding\endcsname
+ \CJK@global\edef\CJK@actualBinding{#1}
+ \fi
+ \fi}
+
+
+% define macros for individual characters (i.e. the first byte); each active
+% character selects the appropriate subfont. The assignments actually
+% happen in the encoding specific .enc files.
+
+\def\CJK@namegdef#1{
+ \@tempcnta `#1
+ \edef\CJK@temp{\the\@tempcnta}
+ \expandafter\CJK@global\expandafter\def\csname CJK@\CJK@temp\endcsname}
+
+
+% some encodings can't be reliably processed if \MakeUppercase is active.
+% The following macro disables it. It is used in the encoding specific
+% .enc files.
+
+\ifx\CJKpreproc \relax
+ \def\CJK@disableMakeUppercase{
+ \CJK@global\let\CJKuppercase \MakeUppercase
+ \CJK@global\let\MakeUppercase \relax
+
+ \PackageWarningNoLine{CJK}{
+ `\CJK@actualEncoding' encoding used in non-preprocessed mode.\MessageBreak
+ \protect\MakeUppercase\space disabled}
+ \CJK@global\let\CJK@disableMakeUppercase \relax}
+\else
+ \let\CJK@disableMakeUppercase \relax
+\fi
+
+
+% single shifts (EUC-TW, EUC-JP), three-byte, and four-byte UTF8 values
+% can't be used in preprocessed mode
+
+\def\CJK@shiftError{
+ \PackageError{CJK}{
+ Single shifts in `\CJK@actualEncoding' encoding
+ can't be used in preprocessed mode
+ }
+ {Maybe you've forgotten to change the encoding?}}
+\def\CJK@unicodeError{
+ \PackageError{CJK}{
+ Three-Byte UTF8 values can't be used in preprocessed mode
+ }
+ {Maybe you've forgotten to change the encoding?}}
+\def\CJK@unicodexError{
+ \PackageError{CJK}{
+ Four-Byte UTF8 values can't be used in preprocessed mode
+ }
+ {Maybe you've forgotten to change the encoding?}}
+
+
+% the following macro is used to map the CJK (font) encoding to the
+% corresponding NFSS font encodings. It also registers the encoding;
+% we define an empty macro for the font name in \DeclareFontSubstitution
+% since LaTeX2e tests without a subplane appended.
+
+\def\CJK@mapToNFSS#1#2#3#4#5{
+ \expandafter\edef\csname CJK@#1@nfssenc\endcsname{#2}
+ \DeclareFontEncoding{#2}{}{}
+ \DeclareFontSubstitution{#2}{#3}{#4}{#5}
+ \expandafter\def\csname #2/#3/#4/#5\endcsname{}}
+
+
+% an ugly environment which redefines the characters `\', `{', and `}' to
+% `/', `(', and `)' respectively since some CJK encodings need these
+% characters as second bytes.
+%
+% to include \CJK@global we define the low level environment macros
+% directly.
+
+\def\CJK@makeEnvironment#1{
+ \@ifundefined{#1text}{
+ \CJK@global\@namedef{#1text}{
+ \catcode`\\=12
+ \catcode`\{=12
+ \catcode`\}=12
+ \def\/{/}
+ \def\({(}
+ \def\){)}
+ \catcode`\/=0
+ \catcode`\(=1
+ \catcode`\)=2}
+ \CJK@global\@namedef{end#1text}{}}{}}
+
+
+% here an overview of all encodings/font encodings:
+%
+% Chinese: Bg5 C00
+% Bg5pmC C01
+%
+% HK C05
+%
+% Bg5+ C09
+%
+% GB C10
+% GBpmC C11
+%
+% GBK C19
+%
+% GBt C20
+% GBtpmC C21
+%
+% CNS1-7 C31-37
+%
+% Japanese: JIS C40
+% JISpmC C41
+% JISdnp C42
+% JISwn C43
+%
+% JIS2 C50
+% JIS2dnp C52
+%
+% SJIS -> kana C49
+% SJISdnp -> kana C49
+%
+% Korean: KS -> hanja C60
+% -> hangul C61
+% KSpmC C62
+% KSHL -> hangulHL C63
+% -> symbolHL C64
+% -> hanjaHL C65
+%
+% Unicode: UTF8 C70
+%
+% CEF: CEFX C80
+% CEFY C81
+
+
+% here are the punctuation tables. We suppress spaces additionally in this
+% group.
+
+\begingroup
+ \catcode`\ 9\relax
+
+ \CJK@prePunct {Bg5}{A1}{5D, 5F, 61, 63, 65, 67, 69, 6B, 6D, 6F, 71, 73,
+ 75, 77, 79, 7B, 7D, A1, A3,
+ A5, A7, A9, AB,
+ AD, B1, CC, CD}
+ \CJK@postPunct {Bg5}{A1}{41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 4A, 4B, 4C, 4D, 4E, 4F, 50, 51,
+ 52, 53, 54, 57,
+ 5E, 60, 62, 64, 66, 68, 6A, 6C, 6E, 70, 72, 74,
+ 76, 78, 7A, 7C, 7E, A2, A4,
+ A6, A8, AA, AC}
+ \CJK@prePunct {Bg5}{A2}{43, 44, 45, 46, 47, 49,
+ 4C, 4E}
+ \CJK@postPunct {Bg5}{A2}{48, 4A, 4B, 4D,
+ 4F, 50, 51, 52, 53, 54, 55, 56, 57, 58}
+
+ \CJK@prePunct {GB}{A1}{AE, B0, B2, B4, B6, B8, BA, BC, BE,
+ E7, E8, E9, EA, EC, ED}
+ \CJK@postPunct {GB}{A1}{A2, A3, A4, A9, AD,
+ AF, B1, B3, B5, B7, B9, BB, BD, BF,
+ C3, E3, E4, E5, E6, EB}
+ \CJK@prePunct {GB}{A3}{A3, A4, A8, C0, DB, FB}
+ \CJK@postPunct {GB}{A3}{A1, A5, A9, AC, AE, BA, BB, BF, DD, FD}
+
+ \CJK@prePunct {JIS}{A1}{C6, C8, CA, CC, CE, D0, D2, D4, D6, D8, DA,
+ EF, F0, F1, F2, F4, F7, F8}
+ \CJK@postPunct {JIS}{A1}{A2, A3, A4, A5, A6, A7, A8, A9, AA, AB, AC,
+ B3, B4, B5, B6, B9, BA, BC,
+ C4, C7, C9, CB, CD, CF, D1, D3, D5, D7, D9, DB,
+ EB, EC, ED, EE, F3}
+ \CJK@prePunct {JIS}{A2}{A9}
+% \CJK@postPunct {JIS}{A2}{}
+% \CJK@prePunct {JIS}{A4}{}
+ \CJK@postPunct {JIS}{A4}{A1, A3, A5, A7, A9,
+ C3, E3, E5, E7, EE}
+% \CJK@prePunct {JIS}{A5}{}
+ \CJK@postPunct {JIS}{A5}{A1, A3, A5, A7, A9,
+ C3, E3, E5, E7, EE,
+ F5, F6}
+
+ \CJK@prePunct {SJIS}{81}{65, 67, 69, 6B, 6D, 6F, 71, 73, 75, 77, 79,
+ 8F, 90, 91, 92, 94, 97, 98,
+ A7}
+ \CJK@postPunct{SJIS}{81}{41, 42, 43, 44, 45, 46, 47, 48, 49, 4A, 4B,
+ 52, 53, 54, 55, 58, 59, 5B,
+ 63, 66, 68, 6A, 6C, 6E, 70, 72, 74, 76, 78, 7A,
+ 8B, 8C, 8D, 8E, 93}
+% \CJK@prePunct {SJIS}{82}{}
+ \CJK@postPunct{SJIS}{82}{9F, A1, A3, A5, A7,
+ C1, E1, E3, E5, EC}
+% \CJK@prePunct {SJIS}{83}{}
+ \CJK@postPunct{SJIS}{83}{40, 42, 44, 46, 48,
+ 62, 83, 85, 87, 8E,
+ 95, 96}
+
+ % half-width katakana
+ \CJK@prePunct {C49}{}{A2}
+ \CJK@postPunct {C49}{}{A1, A3, A4, A5, A7, A8, A9, AA, AB, AC, AD, AE, AF,
+ B0, DE, DF}
+
+ \CJK@prePunct {KS}{A1}{AE, B0, B2, B4, B6, B8, BA, BC,
+ CB, CC, CD, D7, EC}
+ \CJK@postPunct {KS}{A1}{A2, A3, A4, A5, A6,
+ AF, B1, B3, B5, B7, B9, BB, BD,
+ C6, C7, C8, C9, ED}
+ \CJK@prePunct {KS}{A3}{A3, A4, A8, C0, DB, DC, FB}
+ \CJK@postPunct {KS}{A3}{A1, A5, A9, AC, AE, BA, BB, BF, DD, FD}
+
+ \xdef\CJK@uniPunct{30, fe, ff} % values must be lowercase for UTF 8
+
+ \CJK@prePunct {UTF8}{30}{08, 0A, 0C, 0E, 10, 12, 14, 16, 18, 1A, 1D, 1F, 36}
+ \CJK@postPunct{UTF8}{30}{01, 02, 05, 06,
+ 09, 0B, 0D, 0F, 11, 15, 17, 19, 1B, 1E,
+ 41, 43, 45, 47, 49, 63, 83, 85, 87, 8E,
+ 9B, 9C, 9D, 9E,
+ A1, A3, A5, A7, A9, C3, E3, E5, E7, EE, F5, F6,
+ FB, FC, FD, FE}
+ \CJK@prePunct {UTF8}{fe}{59, 5B, 5D, 5F, 60, 69, 6B}
+ \CJK@postPunct{UTF8}{fe}{50, 51, 52, 54, 55, 56, 57, 5A, 5C, 5E, 6A}
+ \CJK@prePunct {UTF8}{ff}{03, 04, 08, 20, 3B, 5B, E0, E1, E5, E6}
+ \CJK@postPunct{UTF8}{ff}{01, 05, 09, 0C, 0E, 1A, 1B, 1F, 3D, 5D,
+ 61, 63, 64, 65, 67, 68, 69, 6A, 6B, 6C, 6D, 6E, 6F,
+ 70, 9E, 9F}
+
+ \CJK@prePunct {CNS1}{A1}{BE, C2, C6, CA, CE, D2, D6, DA, DE, E0, E2,
+ E4, E6, E8, EA,
+ EC, F0}
+ \CJK@postPunct{CNS1}{A1}{A2, A3, A4, A5, A6, A7, A8, A9,
+ AA, AC, AD, AE, AF, B0, B1, B2,
+ B3, B4, B5,
+ BF, C3, C7, CB, CF, D3, D7, DB, DF, E1, E3,
+ E5, E7, E9, EB}
+ \CJK@prePunct {CNS1}{A2}{AD, AE, E3, E4, E5, E6, E7, E9,
+ EC, EE}
+ \CJK@postPunct{CNS1}{A2}{E8, EA, EB, ED,
+ EF, F0, F1, F2, F3, F4, F5, F6, F7, F8}
+
+ \CJK@prePunct {GBK}{A1}{AE, B0, B2, B4, B6, B8, BA, BC, BE,
+ E7, E8, E9, EA, EC, ED}
+ \CJK@postPunct {GBK}{A1}{A2, A3, A4, A9, AD,
+ AF, B1, B3, B5, B7, B9, BB, BD, BF,
+ C3, E3, E4, E5, E6, EB}
+ \CJK@prePunct {GBK}{A3}{A3, A4, A8, C0, DB, FB}
+ \CJK@postPunct {GBK}{A3}{A1, A5, A9, AC, AE, BA, BB, BF, DD, FD}
+% \CJK@prePunct {GBK}{A4}{}
+ \CJK@postPunct {GBK}{A4}{A1, A3, A5, A7, A9, C3, E3, E5, E7, EE}
+% \CJK@prePunct {GBK}{A5}{}
+ \CJK@postPunct {GBK}{A5}{A1, A3, A5, A7, A9, C3, E3, E5, E7, EE, F5, F6}
+ \CJK@prePunct {GBK}{A8}{93, 94}
+ \CJK@postPunct {GBK}{A8}{95}
+ \CJK@prePunct {GBK}{A9}{76, 78, 7A, 7C, 7D, 86, 88}
+ \CJK@postPunct {GBK}{A9}{60, 61, 62, 63, 64, 65, 66, 67, 6F,
+ 70, 71, 72, 73, 74, 75, 77, 79, 7B, 87}
+\endgroup
+
+
+% dummy encoding for MULE.
+
+\def\CJK@@enc{\CJK@loadBinding{standard}}
+
+\edef\CJK@@fontenc{}
+
+
+% traditional Chinese characters
+%
+% character set: Big 5
+% encoding: Big 5
+% font encoding: CJK
+
+\CJK@mapToNFSS{Bg5}{C00}{song}{m}{n}
+\CJKencfamily{Bg5}{song}
+\CJKfontenc{Bg5}{}
+\@namedef{CJK@Bg5@hook}{}
+
+\@namedef{CJK@Bg5@enc}{
+ \CJK@makeEnvironment{Bg5}
+
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "040% don't forget `0' before the number,
+ \CJK@global\chardef\CJK@max "0FE% otherwise german.sty will not work.
+
+ \CJK@loadEncoding{Bg5}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"040}}}
+
+% support for Hong Kong
+%
+% character set: Big 5 + HKSCS-2004 (or HKSCS-2001)
+% encoding: Big 5
+% font encoding: CJK
+
+\CJK@mapToNFSS{HK}{C05}{song}{m}{n}
+\CJKencfamily{HK}{song}
+\CJKfontenc{HK}{}
+\@namedef{CJK@HK@hook}{}
+
+\def\CJK@HK@enc{
+ \CJK@makeEnvironment{HK}
+
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "040% don't forget `0' before the number,
+ \CJK@global\chardef\CJK@max "0FE% otherwise german.sty will not work.
+
+ \CJK@loadEncoding{HK}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"040}}}
+
+% Chinese characters (extension of Big 5)
+%
+% character set: Big 5+
+% encoding: extended
+% font encoding: CJK
+
+\CJK@mapToNFSS{Bg5+}{C09}{song}{m}{n}
+\CJKencfamily{Bg5+}{song}
+\CJKfontenc{Bg5+}{}
+\@namedef{CJK@Bg5+@hook}{}
+
+\@namedef{CJK@Bg5+@enc}{
+ \CJK@makeEnvironment{Bg5+}
+
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "040
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{extended}
+
+ \CJK@global\edef\CJK@punctEnc{Bg5}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"040}}}
+
+
+% Chinese characters
+%
+% character set: GB 2312-80
+% encoding: EUC
+% font encoding: CJK
+
+\CJK@mapToNFSS{GB}{C10}{song}{m}{n}
+\CJKencfamily{GB}{song}
+\CJKfontenc{GB}{}
+\def\CJK@GB@hook{}
+
+\def\CJK@GB@enc{
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{standard}
+
+ \CJK@global\edef\CJK@punctEnc{GB}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"0A1}}}
+
+% traditional Chinese characters
+%
+% character set: GB/T 12345-90
+% encoding: EUC
+% font encoding: CJK
+
+\CJK@mapToNFSS{GBt}{C20}{song}{m}{n}
+\CJKencfamily{GBt}{song}
+\CJKfontenc{GBt}{}
+\def\CJK@GBt@hook{}
+
+\let\CJK@GBt@enc \CJK@GB@enc
+
+% Chinese characters (extension of GB 2312)
+%
+% character set: GBK
+% encoding: extended
+% font encoding: CJK
+
+\CJK@mapToNFSS{GBK}{C19}{song}{m}{n}
+\CJKencfamily{GBK}{song}
+\CJKfontenc{GBK}{}
+\def\CJK@GBK@hook{}
+
+\def\CJK@GBK@enc{
+ \CJK@makeEnvironment{GBK}
+
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "040
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{extended}
+
+ \CJK@global\edef\CJK@punctEnc{GBK}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"0A1}}}
+
+
+% Japanese characters
+%
+% character set JIS X 0208:1997
+% encoding: EUC
+% font encoding: CJK
+
+\CJK@mapToNFSS{JIS}{C40}{song}{m}{n}
+\CJKencfamily{JIS}{song}
+\CJKfontenc{JIS}{}
+\def\CJK@JIS@hook{}
+
+\def\CJK@JIS@enc{
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{standard}
+
+ \CJK@global\edef\CJK@punctEnc{JIS}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"0A1}}}
+
+% Japanese characters
+%
+% character set: JIS X 0208:1997
+% encoding: EUC
+% font encoding: DNP
+
+\CJK@mapToNFSS{JISdnp}{C42}{song}{m}{n}
+\CJKencfamily[dnp]{JIS}{song}
+
+\def\CJK@JISdnp@enc{
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{JISdnp}
+
+ \CJK@global\edef\CJK@punctEnc{JIS}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"0A1}}}
+
+% Japanese characters
+%
+% character set: JIS X 0208:1997
+% encoding: EUC
+% font encoding: DNP (watanabe)
+
+\CJK@mapToNFSS{JISwn}{C43}{song}{m}{n}
+\CJKencfamily[wn]{JIS}{song}
+
+\let\CJK@JISwn@enc \CJK@JISdnp@enc
+
+% Japanese supplemental JIS characters
+%
+% character set: JIS X 0212-1990
+% encoding: EUC
+% font encoding: CJK
+
+\CJK@mapToNFSS{JIS2}{C50}{song}{m}{n}
+\CJKencfamily{JIS2}{song}
+\CJKfontenc{JIS2}{}
+\@namedef{CJK@JIS2@hook}{}
+
+\@namedef{CJK@JIS2@enc}{
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{standard}
+
+ \CJK@global\edef\CJK@punctEnc{}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar[JIS]{"0A1}{"0A1}}}
+
+% Japanese supplemental JIS characters
+%
+% character set: JIS X 0212-1990
+% encoding: EUC
+% font encoding: DNP
+
+\CJK@mapToNFSS{JIS2dnp}{C52}{song}{m}{n}
+\CJKencfamily[dnp]{JIS2}{song}
+
+\@namedef{CJK@JIS2dnp@enc}{
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{JISdnp}
+
+ \CJK@global\edef\CJK@punctEnc{}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar[JIS]{"0A1}{"0A1}}}
+
+% Japanese characters
+%
+% character sets: JIS X 0208:1997
+% half-width katakana (JIS X 0201-1997)
+% encoding: SJIS
+% font encoding: CJK
+%
+% Technical note: \CJK@altenc is used for SJIS, \CJK@altEnc for KS.
+
+\CJK@mapToNFSS{kana}{C49}{song}{m}{n}% used internally only
+\CJKencfamily{SJIS}{song}
+\CJKfontenc{SJIS}{}
+\def\CJK@SJIS@hook{}
+
+% the relative order of JIS and SJIS encoded characters are identical
+% except one byte characters.
+
+\def\CJK@@@SJIS@hook{
+ \CJK@global\edef\CJK@enc{\CJK@JIS@nfssenc}
+ \CJK@global\edef\CJK@altenc{\CJK@kana@nfssenc}}
+
+\def\CJK@SJIS@enc{
+ \CJK@makeEnvironment{SJIS}
+
+ \CJK@loadBinding{SJIS}
+
+ \CJK@global\chardef\CJK@min "040
+ \CJK@global\chardef\CJK@max "0FC
+
+ \CJK@loadEncoding{SJIS}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"081}{"040}}}
+
+% Japanese characters
+%
+% character sets: JIS X 0208:1997
+% half-width katakana (JIS X 0201-1997)
+% encoding: SJIS
+% font encoding: DNP
+
+\CJKencfamily[dnp]{SJIS}{song}
+
+% the relative order of JIS and SJIS encoded characters are identical
+% except one byte characters.
+
+\def\CJK@@@SJISdnp@hook{
+ \CJK@global\edef\CJK@enc{\CJK@JISdnp@nfssenc}
+ \CJK@global\edef\CJK@altenc{\CJK@kana@nfssenc}}
+
+\def\CJK@SJISdnp@enc{
+ \CJK@makeEnvironment{SJIS}
+
+ \CJK@loadBinding{SJIS}
+
+ \CJK@global\chardef\CJK@min "040
+ \CJK@global\chardef\CJK@max "0FC
+
+ \CJK@loadEncoding{SJISdnp}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"081}{"040}}}
+
+
+% Korean characters
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: EUC
+% font encoding: CJK
+%
+% the increased \tolerance compensates the lack of \CJKglue for Hangul
+% syllables.
+
+% the following commands choose between C60xxx.fd (for hanja) and C61xxx.fd
+% (for hangul) for the character range 0xB0A1 - 0xC8FE.
+
+\newif\ifCJK@hanja@
+\CJK@hanja@false
+
+\DeclareRobustCommand{\CJKhanja}{
+ \CJK@global\CJK@hanja@true
+ \edef\CJK@temp{KS}
+ \ifx\CJK@temp \CJK@@@enc
+ \edef\CJK@temp{\csname CJK@\CJK@@@enc @fontenc\endcsname}
+ \CJK@global\edef\CJK@altEnc{
+ \csname CJK@hanja\CJK@temp @nfssenc\endcsname}
+ \fi}
+\DeclareRobustCommand{\CJKhangul}{
+ \CJK@global\CJK@hanja@false
+ \edef\CJK@temp{KS}
+ \ifx\CJK@temp \CJK@@@enc
+ \edef\CJK@temp{\csname CJK@\CJK@@@enc @fontenc\endcsname}
+ \CJK@global\edef\CJK@altEnc{
+ \csname CJK@hangul\CJK@temp @nfssenc\endcsname}
+ \fi}
+
+\CJK@mapToNFSS{hanja}{C60}{mj}{m}{n}% used internally only
+\CJK@mapToNFSS{hangul}{C61}{mj}{m}{n}% used internally only
+\CJKencfamily{KS}{mj}
+\CJKfontenc{KS}{}
+\def\CJK@KS@hook{}
+
+\def\CJK@@@KS@hook{
+ \CJK@global\edef\CJK@enc{\CJK@hanja@nfssenc}
+ \ifCJK@hanja@
+ \CJK@global\edef\CJK@altEnc{\CJK@hanja@nfssenc}
+ \else
+ \CJK@global\edef\CJK@altEnc{\CJK@hangul@nfssenc}
+ \fi}
+
+\def\CJK@KS@enc{
+ \CJK@global\def\mj{\protect\CJK@mj}% % from hLaTeX
+ \gdef\CJK@mj{\CJKencfamily{KS}{mj}}
+ \CJK@global\def\gt{\protect\CJK@gt}
+ \gdef\CJK@gt{\CJKencfamily{KS}{gt}}
+ \CJK@global\def\gs{\protect\CJK@gs}
+ \gdef\CJK@gs{\CJKencfamily{KS}{gs}}
+ \CJK@global\def\gr{\protect\CJK@gr}
+ \gdef\CJK@gr{\CJKencfamily{KS}{gr}}
+ \CJK@global\def\dr{\protect\CJK@dr}
+ \gdef\CJK@dr{\CJKencfamily{KS}{dr}}
+
+ \CJK@global\def\hgt{\protect\CJK@hgt}% % from hjTeX
+ \gdef\CJK@hgt{\CJKencfamily{KS}{hgt}}
+ \CJK@global\def\hmj{\protect\CJK@hmj}
+ \gdef\CJK@hmj{\CJKencfamily{KS}{hmj}}
+ \CJK@global\def\hol{\protect\CJK@hol}
+ \gdef\CJK@hol{\CJKencfamily{KS}{hol}}
+ \CJK@global\def\hpg{\protect\CJK@hpg}
+ \gdef\CJK@hpg{\CJKencfamily{KS}{hpg}}
+
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{KS}
+
+ \CJK@global\edef\CJK@punctEnc{KS}
+ \CJK@global\tolerance \CJKtolerance
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"0A1}}}
+
+
+% Korean characters
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: EUC
+% font encoding: HLaTeX (version >= 0.97)
+
+\CJK@mapToNFSS{hangulHL}{C63}{mj}{m}{n}% used internally only
+\CJK@mapToNFSS{symbolHL}{C64}{mj}{m}{n}% used internally only
+\CJK@mapToNFSS{hanjaHL}{C65}{mj}{m}{n}% used internally only
+\CJKencfamily[HL]{KS}{mj}
+
+\def\CJK@@@KSHL@hook{
+ \CJK@global\edef\CJK@enc{\CJK@hanjaHL@nfssenc}
+ \CJK@global\edef\CJK@altEnc{\CJK@hangulHL@nfssenc}
+ \CJK@global\edef\CJK@symbEnc{\CJK@symbolHL@nfssenc}}
+
+\def\CJK@KSHL@enc{
+ \CJK@global\def\bm{\protect\CJK@bm}
+ \gdef\CJK@bm{\CJKencfamily[HL]{KS}{bm}}
+ \CJK@global\def\dn{\protect\CJK@dn}
+ \gdef\CJK@dn{\CJKencfamily[HL]{KS}{dn}}
+ \CJK@global\def\gr{\protect\CJK@gr}
+ \gdef\CJK@gr{\CJKencfamily[HL]{KS}{gr}}
+ \CJK@global\def\gs{\protect\CJK@gs}
+ \gdef\CJK@gs{\CJKencfamily[HL]{KS}{gs}}
+ \CJK@global\def\gt{\protect\CJK@gt}
+ \gdef\CJK@gt{\CJKencfamily[HL]{KS}{gt}}
+ \CJK@global\def\jgt{\protect\CJK@jgt}
+ \gdef\CJK@jgt{\CJKencfamily[HL]{KS}{jgt}}
+ \CJK@global\def\jmj{\protect\CJK@jmj}
+ \gdef\CJK@jmj{\CJKencfamily[HL]{KS}{jmj}}
+ \CJK@global\def\jnv{\protect\CJK@jnv}
+ \gdef\CJK@jnv{\CJKencfamily[HL]{KS}{jnv}}
+ \CJK@global\def\jsr{\protect\CJK@jsr}
+ \gdef\CJK@jsr{\CJKencfamily[HL]{KS}{jsr}}
+ \CJK@global\def\mj{\protect\CJK@mj}
+ \gdef\CJK@mj{\CJKencfamily[HL]{KS}{mj}}
+ \CJK@global\def\ol{\protect\CJK@ol}
+ \gdef\CJK@ol{\CJKencfamily[HL]{KS}{mj}}
+ \CJK@global\def\pg{\protect\CJK@pg}
+ \gdef\CJK@pg{\CJKencfamily[HL]{KS}{pg}}
+ \CJK@global\def\pga{\protect\CJK@pga}
+ \gdef\CJK@pga{\CJKencfamily[HL]{KS}{pga}}
+ \CJK@global\def\ph{\protect\CJK@ph}
+ \gdef\CJK@ph{\CJKencfamily[HL]{KS}{ph}}
+ \CJK@global\def\pn{\protect\CJK@pn}
+ \gdef\CJK@pn{\CJKencfamily[HL]{KS}{pn}}
+ \CJK@global\def\sh{\protect\CJK@sh}
+ \gdef\CJK@sh{\CJKencfamily[HL]{KS}{sh}}
+ \CJK@global\def\sm{\protect\CJK@sm}
+ \gdef\CJK@sm{\CJKencfamily[HL]{KS}{mj}}
+ \CJK@global\def\tz{\protect\CJK@tz}
+ \gdef\CJK@tz{\CJKencfamily[HL]{KS}{tz}}
+ \CJK@global\def\vd{\protect\CJK@vd}
+ \gdef\CJK@vd{\CJKencfamily[HL]{KS}{vd}}
+ \CJK@global\def\yt{\protect\CJK@yt}
+ \gdef\CJK@yt{\CJKencfamily[HL]{KS}{yt}}
+
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{KSHL}
+
+ \CJK@global\edef\CJK@punctEnc{KS}
+ \CJK@global\tolerance \CJKtolerance
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"0A1}}}
+
+
+% Unicode
+%
+% character set: Unicode
+% encoding: UTF 8
+% font encoding: CJK
+
+\CJK@mapToNFSS{UTF8}{C70}{song}{m}{n}
+\CJKencfamily{UTF8}{song}
+\CJKfontenc{UTF8}{}
+\@namedef{CJK@UTF8@hook}{}
+
+\@namedef{CJK@UTF8@enc}{
+ \CJK@loadBinding{UTF8}
+
+ \CJK@global\chardef\CJK@min "080
+ \CJK@global\chardef\CJK@max "0BF
+
+ \CJK@loadEncoding{UTF8}
+
+ \CJK@global\def\CJK@spaceChar{\Unicode{"030}{"000}}}
+
+
+% Chinese characters in CNS encoding.
+%
+% character set: CNS 11643-1992
+% encoding: EUC
+% font encoding: CJK
+
+% please note that internally character codes with the 8th bit set are
+% used, whereas Wittern's CEF use the seven bit form.
+
+% plane 1.
+
+\CJK@mapToNFSS{CNS1}{C31}{song}{m}{n}
+\CJKencfamily{CNS1}{song}
+\CJKfontenc{CNS1}{}
+\@namedef{CJK@CNS1@enc}{}
+
+\@namedef{CJK@CNS1@enc}{
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{standard}
+
+ \CJK@global\edef\CJK@punctEnc{CNS1}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar[CNS1]{"0A1}{"0A1}}}
+
+% plane 2-7.
+
+\CJK@mapToNFSS{CNS2}{C32}{song}{m}{n}
+\CJKencfamily{CNS2}{song}
+\CJKfontenc{CNS2}{}
+\@namedef{CJK@CNS2@hook}{}
+\CJK@mapToNFSS{CNS3}{C33}{song}{m}{n}
+\CJKencfamily{CNS3}{song}
+\CJKfontenc{CNS3}{}
+\@namedef{CJK@CNS3@hook}{}
+\CJK@mapToNFSS{CNS4}{C34}{song}{m}{n}
+\CJKencfamily{CNS4}{song}
+\CJKfontenc{CNS4}{}
+\@namedef{CJK@CNS4@hook}{}
+\CJK@mapToNFSS{CNS5}{C35}{song}{m}{n}
+\CJKencfamily{CNS5}{song}
+\CJKfontenc{CNS5}{}
+\@namedef{CJK@CNS5@hook}{}
+\CJK@mapToNFSS{CNS6}{C36}{song}{m}{n}
+\CJKencfamily{CNS6}{song}
+\CJKfontenc{CNS6}{}
+\@namedef{CJK@CNS6@hook}{}
+\CJK@mapToNFSS{CNS7}{C37}{song}{m}{n}
+\CJKencfamily{CNS7}{song}
+\CJKfontenc{CNS7}{}
+\@namedef{CJK@CNS7@hook}{}
+
+\expandafter\expandafter\expandafter\let
+ \expandafter\csname CJK@CNS2@enc\expandafter\endcsname
+ \csname CJK@JIS2@enc\endcsname
+\expandafter\expandafter\expandafter\let
+ \expandafter\csname CJK@CNS3@enc\expandafter\endcsname
+ \csname CJK@CNS2@enc\endcsname
+\expandafter\expandafter\expandafter\let
+ \expandafter\csname CJK@CNS4@enc\expandafter\endcsname
+ \csname CJK@CNS2@enc\endcsname
+\expandafter\expandafter\expandafter\let
+ \expandafter\csname CJK@CNS5@enc\expandafter\endcsname
+ \csname CJK@CNS2@enc\endcsname
+\expandafter\expandafter\expandafter\let
+ \expandafter\csname CJK@CNS6@enc\expandafter\endcsname
+ \csname CJK@CNS2@enc\endcsname
+\expandafter\expandafter\expandafter\let
+ \expandafter\csname CJK@CNS7@enc\expandafter\endcsname
+ \csname CJK@CNS2@enc\endcsname
+
+
+% special CEF encodings
+
+\CJK@mapToNFSS{CEFX}{C80}{song}{m}{n}
+\CJKencfamily{CEFX}{song}
+\CJKfontenc{CEFX}{}
+\def\CJK@CEFX@hook{}
+\CJK@mapToNFSS{CEFY}{C81}{song}{m}{n}
+\CJKencfamily{CEFY}{song}
+\CJKfontenc{CEFY}{}
+\def\CJK@CEFY@hook{}
+
+\expandafter\let\expandafter\CJK@CEFX@enc \csname CJK@CNS2@enc\endcsname
+\expandafter\let\expandafter\CJK@CEFY@enc \csname CJK@CNS2@enc\endcsname
+
+
+% traditional Chinese characters
+%
+% character set: Big 5
+% encoding: Big 5
+% font encoding: pmC
+
+\CJK@mapToNFSS{Bg5pmC}{C01}{song}{m}{n}
+\CJKencfamily[pmC]{Bg5}{song}
+
+\@namedef{CJK@Bg5pmC@enc}{
+ \CJK@global\def\pmCsmall{\protect\CJK@pmCsmall}
+ \gdef\CJK@pmCsmall{
+ \CJK@loadEncoding{pmCsmall}}
+ \CJK@global\def\pmCbig{\protect\CJK@pmCbig}
+ \gdef\CJK@pmCbig{
+ \PackageError{CJK}{
+ No big font for pmC Big 5 encoding available}{}}
+
+ \CJK@makeEnvironment{Bg5}
+
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "040
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@global\edef\CJK@punctEnc{Bg5}
+
+ \pmCsmall
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"040}}}
+
+% simplified Chinese characters
+%
+% character set: GB 2312-80
+% encoding: EUC
+% font encoding: pmC
+
+\CJK@mapToNFSS{GBpmC}{C11}{song}{m}{n}
+\CJKencfamily[pmC]{GB}{song}
+
+\def\CJK@GBpmC@enc{
+ \CJK@pmC{GB}}
+
+% traditional Chinese characters
+%
+% character set: GB/T 12345-90
+% encoding: EUC
+% font encoding: pmC
+
+\CJK@mapToNFSS{GBtpmC}{C21}{song}{m}{n}
+\CJKencfamily[pmC]{GBt}{song}
+
+\let\CJK@GBtpmC@enc \CJK@GBpmC@enc
+
+% Japanese characters
+%
+% character set: JIS X 0208:1997
+% encoding: EUC
+% font encoding: pmC
+
+\CJK@mapToNFSS{JISpmC}{C41}{song}{m}{n}
+\CJKencfamily[pmC]{JIS}{song}
+
+\def\CJK@JISpmC@enc{
+ \CJK@pmC{JIS}}
+
+% Korean characters
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: EUC
+% font encoding: pmC
+
+\CJK@mapToNFSS{KSpmC}{C62}{song}{m}{n}
+\CJKencfamily[pmC]{KS}{song}
+
+\def\CJK@KSpmC@enc{
+ \CJK@pmC{KS}}
+
+\def\CJK@pmC#1{
+ \CJK@global\def\pmCsmall{\protect\CJK@pmCsmall}
+ \gdef\CJK@pmCsmall{
+ \CJK@loadEncoding{pmCsmall}}
+ \CJK@global\def\pmCbig{\protect\CJK@pmCbig}
+ \gdef\CJK@pmCbig{
+ \CJK@loadEncoding{pmCbig}}
+
+ \CJK@loadBinding{standard}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@global\edef\CJK@punctEnc{#1}
+
+ \pmCsmall
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"0A1}}}
+
+
+% EUC-JP
+%
+% character sets: half-width katakana (JIS X 0201-1997)
+% JIS X 0208:1997
+% JIS X 0212-1992
+% encoding: EUC-JP
+% font encoding: CJK
+%
+% Technical note: JIS X 0212 is directly accessed via
+% \CJKchar[JIS2]{...}{...}
+
+\CJKencfamily{EUC-JP}{song}
+\CJKfontenc{EUC-JP}{}
+\@namedef{CJK@EUC-JP@hook}{}
+
+\@namedef{CJK@@@EUC-JP@hook}{
+ \CJK@global\edef\CJK@enc{\CJK@JIS@nfssenc}
+ \CJK@global\edef\CJK@altenc{\CJK@kana@nfssenc}}
+
+\@namedef{CJK@EUC-JP@enc}{
+ \CJK@loadBinding{EUC-JP}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{EUC-JP}
+
+ \CJK@global\edef\CJK@punctEnc{JIS}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"0A1}}}
+
+
+% EUC-JP
+%
+% character sets: half-width katakana (JIS X 0201-1997)
+% JIS X 0208:1997
+% JIS X 0212-1992
+% encoding: EUC-JP
+% font encoding: dnp
+%
+% Technical note: JIS X 0212 is directly accessed via
+% \CJKchar[JIS2dnp]{...}{...}
+
+\CJKencfamily[dnp]{EUC-JP}{song}
+
+\@namedef{CJK@@@EUC-JPdnp@hook}{
+ \CJK@global\edef\CJK@enc{\CJK@JISdnp@nfssenc}
+ \CJK@global\edef\CJK@altenc{\CJK@kana@nfssenc}}
+
+\@namedef{CJK@EUC-JPdnp@enc}{
+ \CJK@loadBinding{EUC-JP}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{EUC-JPdnp}
+
+ \CJK@global\edef\CJK@punctEnc{JIS}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"0A1}}}
+
+
+% EUC-TW
+%
+% character sets: CNS 11643-1992 planes 1-7
+% encoding: EUC-TW
+% font encoding: CJK
+%
+% Technical note: CNS 11643-1992 planes 2-7 are directly accessed via
+% \CJKchar[CNSx]{...}{...}
+
+\CJKencfamily{EUC-TW}{song}
+\CJKfontenc{EUC-TW}{}
+\@namedef{CJK@EUC-TW@hook}{}
+
+\@namedef{CJK@@@EUC-TW@hook}{
+ \CJK@global\edef\CJK@enc{\csname CJK@CNS1@nfssenc\endcsname}}
+
+\@namedef{CJK@EUC-TW@enc}{
+ \CJK@loadBinding{EUC-TW}
+
+ \CJK@global\chardef\CJK@min "0A1
+ \CJK@global\chardef\CJK@max "0FE
+
+ \CJK@loadEncoding{EUC-TW}
+
+ \CJK@global\edef\CJK@punctEnc{CNS1}
+
+ \CJK@global\def\CJK@spaceChar{\CJKchar{"0A1}{"0A1}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CJK.sty b/language/chinese/CJK/cjk-4.8.5/texinput/CJK.sty
new file mode 100644
index 0000000000..b7e3fcaea5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CJK.sty
@@ -0,0 +1,1136 @@
+% This is the file CJK.sty of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\NeedsTeXFormat{LaTeX2e}[2001/06/01]
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesPackage{CJK}[\filedate\space\fileversion]
+
+\RequirePackage{MULEenc}
+
+\newif\ifCJK@lowercase@
+\CJK@lowercase@false
+\DeclareOption{lowercase}{\CJK@lowercase@true}
+
+\DeclareOption{global}{\let\CJK@global \global
+ \let\CJK@active \global
+ \let\CJK@local \global}
+\DeclareOption{local}{\let\CJK@global \relax
+ \let\CJK@active \global
+ \let\CJK@local \global}
+\DeclareOption{active}{\let\CJK@global \relax
+ \let\CJK@active \relax
+ \let\CJK@local \global}
+\DeclareOption{encapsulated}{\let\CJK@global \relax
+ \let\CJK@active \relax
+ \let\CJK@local \relax}
+
+\ExecuteOptions{local}
+
+\ProcessOptions
+
+
+% we suppress any unwanted spaces produced by linefeeds.
+
+\endlinechar \m@ne
+
+
+% the use of the internal LaTeX macro `\@ifundefined' can be slightly
+% irritating. After it has been called, the tested macro is no
+% longer undefined but expands to \relax. Where possible, we use
+% the following macro which doesn't have this side effect.
+
+\def\CJK@ifundefined#1{
+ \ifx #1\@undefined
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+
+
+% our input macro. For compatibility with ArabTeX, the catcode of `<'
+% is preserved.
+
+\def\CJK@input#1{
+ \makeatletter
+ \edef\CJK@lesscatcode{\noexpand\catcode`< \the\catcode`<}
+ \catcode`\< 12\relax
+ \endlinechar \m@ne
+ \input #1\relax
+ \endlinechar `\^^M
+ \CJK@lesscatcode
+ \makeatother}
+
+
+% our symbol macro. It honours the \ifCJK@bold@ flag (to be set in the .fd
+% files) for producing poor-man's bold fonts; if it is raised we print
+% the character three times with a small horizontal shift.
+%
+% The user commands to set and unset \ifCJK@bold@ are \CJKbold and
+% \CJKnormal respectively.
+%
+% \CJKboldshift defines the shift used to imitate bold fonts.
+
+\newif\ifCJK@bold@
+\newcommand{\CJKbold}{\global\CJK@bold@true}
+\newcommand{\CJKnormal}{\global\CJK@bold@false}
+\newcommand{\CJKboldshift}{0.015em}
+
+\DeclareRobustCommand{\CJKsymbol}[1]{
+ \symbol{#1}
+ \ifCJK@bold@
+ \hbox to \CJKboldshift{\hss\symbol{#1}}
+ \hbox to \CJKboldshift{\hss\symbol{#1}}
+ \fi}
+\let\CJKpunctsymbol\CJKsymbol
+
+% the same for HLaTeX which uses the ligature mechanism
+
+\DeclareRobustCommand{\CJKsymbols}[2]{
+ \char #1\char #2\relax
+ \ifCJK@bold@
+ \hbox to \CJKboldshift{\hss\char #1\char #2}
+ \hbox to \CJKboldshift{\hss\char #1\char #2}
+ \fi}
+
+
+% the auxiliary macro \CJK@numbToHex converts number #2 into a two-digit
+% hex string and assigns it globally to #1.
+
+\def\CJK@numbToHex#1#2{
+ {\count\z@ #2\relax
+ \count\tw@ \count\z@
+ \divide\count\z@ \sixt@@n
+
+ \count@ \count\z@
+ \multiply\count@ \sixt@@n
+ \advance\count\tw@ -\count@
+
+ \xdef#1{
+ \hexnumber@{\count\z@}\hexnumber@{\count\tw@}}}}
+
+
+% the auxiliary macro \CJK@numbxToHex converts number #2 into a four-digit
+% hex string and assigns it globally to #1.
+
+\def\CJK@numbxToHex#1#2{
+ {\count\thr@@ #2\relax
+ \count\tw@ \count\thr@@
+ \divide\count\tw@ \sixt@@n
+ \count\@ne \count\tw@
+ \divide\count\@ne \sixt@@n
+ \count\z@ \count\@ne
+ \divide\count\z@ \sixt@@n
+
+ \count@ \count\tw@
+ \multiply\count@ \sixt@@n
+ \advance\count\thr@@ -\count@
+ \count@ \count\@ne
+ \multiply\count@ \sixt@@n
+ \advance\count\tw@ -\count@
+ \count@ \count\z@
+ \multiply\count@ \sixt@@n
+ \advance\count\@ne -\count@
+
+ \xdef#1{
+ \hexnumber@{\count\z@}
+ \hexnumber@{\count\@ne}
+ \hexnumber@{\count\tw@}
+ \hexnumber@{\count\thr@@}}}}
+
+
+% the encoding of the `UTF8' environment.
+
+\edef\CJK@UnicodeEnc{UTF8}
+
+
+% with \CJKchar you can access a character directly at a low level:
+% the parameters are the first and the second byte of the CJK character
+% code. The second parameter will be ignored if you address one-byte
+% encoded characters in SJIS.
+%
+% the optional parameter selects the encoding (using \CJKenc).
+%
+% for Unicode characters you must select UTF-8 encoding (but enter real
+% Unicode values).
+%
+% you can enter character codes with or without the 8th bit set (GL or
+% GR form) except for SJIS, Bg5 and UTF-8 encodings.
+
+\DeclareRobustCommand{\CJKchar}[3][]{
+ {\CJK@nobind@true
+
+ \edef\CJK@tempenc{#1}
+ \ifx\CJK@tempenc \@empty
+ \else
+ \let\CJK@oldenc \CJK@@@enc
+ \CJKenc{#1}
+ \fi
+
+ \edef\CJK@temp{UTF8}
+ \ifx\CJK@temp \CJK@@@enc
+ \Unicode{#2}{#3}
+ \else
+ \@tempcnta #2
+ \edef\CJK@tempa{#3}
+ \ifx\CJK@tempa \@empty% % test for one-byte SJIS characters
+ \else
+ \@tempcntb #3
+ \ifnum \CJK@min > 160\relax
+ \ifnum\@tempcnta < 128\relax
+ \advance\@tempcnta 128\relax
+ \advance\@tempcntb 128\relax
+ \fi
+ \fi
+ \edef\CJK@tempa{\the\@tempcntb}
+ \fi
+
+ \edef\CJK@temp{\the\@tempcnta}
+ \expandafter\csname CJK@\CJK@temp\expandafter\endcsname
+ \expandafter{\CJK@tempa}
+ \fi
+
+ \ifx\CJK@tempenc \@empty
+ \else
+ \ifx\CJK@global \global
+ \CJKenc{\CJK@oldenc}
+ \fi
+ \fi}
+
+ \CJK@ignorespaces}
+
+
+% with \Unicode you can access a Unicode character directly at a low level:
+% the parameters are the first and the second byte of the Unicode (real
+% Unicode values, not UTF-8).
+%
+% If the Unicode value is greater than U+FFFF, put the first two bytes
+% into #1, and the third byte into #2.
+
+\DeclareRobustCommand{\Unicode}[2]{
+ {\edef\CJK@temp{UTF8}
+ \ifx\CJK@temp \CJK@@@enc
+ \else
+ \PackageError{CJK}{
+ You can't use \protect\Unicode\space here}{
+ You must activate UTF-8 encoding to use \protect\Unicode.}
+ \fi
+ \ifnum #1 > 255\relax
+ \CJK@numbxToHex{\CJK@gtemp}{#1}
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{#1}
+ \fi
+ \def\CJK@tempa##1{
+ \lowercase{\edef\CJK@plane{##1}}}
+ \expandafter\CJK@tempa\expandafter{\CJK@gtemp}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+
+ \edef\CJK@tempa{
+ \curr@fontshape/\CJK@plane/\number #2/\CJK@direction}
+ \expandafter\ifx\csname\CJK@tempa\endcsname \relax
+ \def\CJKtemp{\CJKsymbol{#2}}
+ \else
+ \def\CJKtemp{\csname\CJK@tempa\endcsname}
+ \fi
+
+ \ifCJK@latin@
+ \CJKtemp
+ \else
+ \expandafter\CJK@testInList\expandafter\CJK@uniPunct
+ \expandafter{\CJK@plane}
+ \ifCJK@% % punctuation character
+ \CJK@numbToHex{\CJK@gtemp}{#2}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@@@enc}{\CJK@plane}{\CJK@gtemp}
+ \ifCJK@
+ \ifCJK@CJK@
+ \CJK@nobreakglue
+ \fi
+ \else
+ \ifCJK@hangul@
+ \discretionary{}{}{}
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \fi
+ \ifCJK@CJK@
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+ \fi
+
+ \CJKtemp
+
+ \CJK@testPrePunct{\CJK@@@enc}{\CJK@plane}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \else% % not a punctuation character
+ \CJK@testLastCJK
+ \ifCJK@
+ \ifCJK@hangul@
+ \discretionary{}{}{}
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \ifCJK@CJK@
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+ \fi
+ \CJKtemp
+ \CJK@CJK
+ \fi
+ \fi}
+
+ \CJK@ignorespaces}
+
+
+% the following commands are needed for UTF-8 encoding to select the proper
+% intercharacter glue.
+
+\newif\ifCJK@CJK@
+\newif\ifCJK@hangul@
+\newif\ifCJK@latin@
+
+\newcommand{\CJKCJKchar}{
+ \CJK@global\CJK@CJK@true
+ \CJK@global\CJK@hangul@false
+ \CJK@global\CJK@latin@false}
+
+\newcommand{\CJKhangulchar}{
+ \CJK@global\CJK@CJK@false
+ \CJK@global\CJK@hangul@true
+ \CJK@global\CJK@latin@false}
+
+\newcommand{\CJKlatinchar}{
+ \CJK@global\CJK@CJK@false
+ \CJK@global\CJK@hangul@false
+ \CJK@global\CJK@latin@true}
+
+\CJKCJKchar
+
+
+% the next commands control mapping of half-width katakana to full-width
+% glyphs within SJIS encoding.
+
+\newif\ifCJK@hwkatakana@
+
+\newcommand{\CJKhwkatakana}{\CJK@global\CJK@hwkatakana@true}
+
+\newcommand{\CJKnohwkatakana}{\CJK@global\CJK@hwkatakana@false}
+
+\CJKhwkatakana
+
+
+% you will find the innermost routines of the macros defined above in the
+% xxx.chr files. These routines are
+%
+% \CJK@char, \CJK@charx,
+% \CJK@altchar, \CJK@altcharx,
+% \CJK@punctchar, \CJK@punctcharx,
+% \CJK@sjischar, \CJK@sjispunctchar .
+
+
+% we need to scan comma separated lists of character codes (represented as
+% hexadecimal strings), testing whether a particular character is in the
+% list. The macro \CJK@testInList sets the flag \ifCJK@ globally if true.
+% Parameter #1 is the list, #2 the actual character code to test.
+%
+% see the documentation of the \ifnot@excluded macro in the doc package of
+% the standard LaTeX2e distribution for a detailed explanation of the
+% following tricky definitions.
+
+\newif\ifCJK@
+
+\def\CJK@stop{\CJK@stop}
+
+\def\CJK@testInList#1#2{
+ \def\CJK@tempa##1,#2,##2\CJK@stop{
+ \def\CJK@tempb{##2}
+ \global\CJK@true
+ \ifx\CJK@tempb \@empty
+ \global\CJK@false
+ \fi}
+ \expandafter\CJK@tempa\expandafter,#1,#2,\CJK@stop}
+
+
+% lists defined in CJK.enc for plane yy with encoding xx are assigned to
+% global macros \CJK@xx@yy@prePunct and \CJK@xx@yy@postPunct.
+
+\def\CJK@prePunct#1#2#3{
+ \expandafter\gdef\csname CJK@#1@#2@prePunct\endcsname{#3}}
+
+\def\CJK@postPunct#1#2#3{
+ \expandafter\gdef\csname CJK@#1@#2@postPunct\endcsname{#3}}
+
+
+% the next two functions scan the lists of punctuation characters of a
+% particular plane which should not occur at the beginning or at the end
+% of a line. They will be used in the xxx.chr files. Parameters are the
+% encoding, the plane and the character to be tested. Again these macros
+% raise or lower \ifCJK@.
+
+\def\CJK@testPrePunct#1#2#3{
+ \expandafter\expandafter\expandafter
+ \CJK@testInList
+ \expandafter\csname CJK@#1@#2@prePunct\expandafter\endcsname
+ \expandafter{#3}}
+
+\def\CJK@testPostPunct#1#2#3{
+ \expandafter\expandafter\expandafter
+ \CJK@testInList
+ \expandafter\csname CJK@#1@#2@postPunct\expandafter\endcsname
+ \expandafter{#3}}
+
+
+% the macro \CJKenc changes the encoding inside of a CJK environment. It
+% always uses the fontencoding defined with \CJKfontenc (this
+% behaviour is intentionally different from the similar command pair
+% \CJKfamily and \CJKencfamily).
+
+\DeclareRobustCommand{\CJKenc}[1]{
+ \expandafter\ifx\csname CJK@#1@fontenc\endcsname \relax
+ \PackageError{CJK}{
+ Encoding `#1' is not defined}{}
+ \fi
+
+ \edef\CJK@temp{\csname CJK@#1@fontenc\endcsname}
+
+ \expandafter\ifx\csname CJK@#1\CJK@temp @enc\endcsname \relax
+ \PackageError{CJK}{
+ Encoding `#1\CJK@temp' is not defined}{}
+ \else
+ \CJK@global\edef\CJK@@@enc{#1}
+ \CJK@selectEnc
+ \fi}
+
+\edef\CJK@@@enc{}
+
+% to change a fontencoding yyy for a specific encoding xxx say
+% \CJKfontenc{xxx}{yyy}. If you then change the encoding forth and back,
+% this fontencoding is still valid. You will need this command only in
+% cases where the fonts are not CJK-fontencoded, such as pmC or dnp
+% fontencodings.
+%
+% if you define a new encoding `foo', you *must* supply the command
+% `\CJKfontenc{foo}{}' (note the empty second parameter) since the
+% encoding existence test relies on this.
+
+\DeclareRobustCommand{\CJKfontenc}[2]{
+ \expandafter\CJK@global\expandafter\edef
+ \csname CJK@#1@fontenc\endcsname{#2}
+ \CJK@selectEnc}
+
+% \CJKfamily{xxx} selects the shape xxx for all encodings. It will override
+% \CJKencfamily, i.e., if you change the encoding, the family will be
+% the same. To reactivate \CJKencfamily, say `\CJKfamily{}'.
+%
+% For backward compatibility the macros \CJKshape and \CJKencshape are set
+% to \CJKfamily and \CJKencfamily, respectively.
+
+\DeclareRobustCommand{\CJKfamily}[1]{
+ \CJK@global\edef\CJK@globalfamily{#1}
+ \CJK@selectFamily}
+
+\edef\CJK@globalfamily{}
+
+% to change a family for a specific encoding xxx (and a font encoding yyy),
+% use \CJKencfamily. If you then change the encoding forth and back,
+% this family is still valid. This macro is especially useful with
+% cjk-enc.el since it allows to change the encoding without the need to
+% select a (possibly different) family each time. See the various
+% encoding definitions in CJK.enc for the default values.
+%
+% note that it is equivalent to say \CJKencfamily[yyy]{xxx}{...} and
+% \CJKencfamily{xxxyyy}{...}.
+
+\DeclareRobustCommand{\CJKencfamily}[3][]{
+ \expandafter\CJK@global\expandafter\edef
+ \csname CJK@#2#1@family\endcsname{#3}
+ \CJK@selectFamily}
+
+
+\let\CJKshape \CJKfamily
+\let\CJKencshape \CJKencfamily
+
+
+% the next commands select the actual family and encoding.
+
+\def\CJK@selFam{
+ \edef\CJK@temp{\csname CJK@\CJK@@@enc @fontenc\endcsname}
+
+ \ifx\CJK@globalfamily \@empty
+ \CJK@global\edef\CJK@family{
+ \csname CJK@\CJK@@@enc\CJK@temp @family\endcsname}
+ \else
+ \CJK@global\edef\CJK@family{\CJK@globalfamily}
+ \fi}
+
+
+% \CJK@@@enc is the encoding selected by the user, \CJK@enc will be really
+% used. With the internal hook \CJK@@@xxx@hook we can modify \CJK@enc
+% for the encoding xxx if necessary. With the hook \CJK@xxx@hook other
+% packages can add stuff which should be executed immediately after the
+% encoding has changed.
+
+\def\CJK@selEnc{
+ \edef\CJK@temp{\csname CJK@\CJK@@@enc @fontenc\endcsname}
+
+ \CJK@global\edef\CJK@enc{
+ \csname CJK@\CJK@@@enc\CJK@temp @nfssenc\endcsname}
+ \csname CJK@@@\CJK@@@enc\CJK@temp @hook\endcsname
+
+ \csname CJK@\CJK@@@enc\CJK@temp @enc\endcsname
+ \CJK@selectFamily
+ \csname CJK@\CJK@@@enc @hook\endcsname}
+
+% and here the user-visible macro to add something to the encoding hook.
+% First parameter is the encoding, second parameter the data to be
+% appended.
+
+\def\CJKaddEncHook#1#2{
+ \expandafter\let\expandafter\CJK@temp \csname CJK@#1@hook\endcsname
+ \expandafter\def\expandafter\CJK@temp\expandafter{
+ \CJK@temp #2}
+ \expandafter\let\csname CJK@#1@hook\endcsname \CJK@temp}
+
+
+% we disable \CJK@selectFamily and \CJK@selectEnc until a CJK environment
+% starts to avoid side effects while defining default values for
+% encodings (outside of a CJK environment).
+
+\let\CJK@selectFamily \relax
+\let\CJK@selectEnc \relax
+
+
+% CJK.enc contains the \CJK@...@enc macros and the punctuation lists.
+
+\input CJK.enc
+
+
+% the macros \CJK@testLastKern and \CJK@testLastCJK check the last kern and
+% raise or lower \ifCJK@.
+
+\edef\CJK@kern{\kern -2sp\kern 2sp}
+\edef\CJK@CJK{\kern -1sp\kern 1sp}
+
+\let\CJKkern \CJK@kern
+
+% does previous CJK character request nonbreakable glue?
+
+\def\CJK@testLastKern{
+ \global\CJK@false
+ \ifnum\lastkern = \tw@
+ \global\CJK@true
+ \fi
+ \ifnum\lastkern = 5% % request from ruby.sty
+ \global\CJK@true
+ \fi}
+
+% is previous character a CJK character?
+
+\def\CJK@testLastCJK{
+ \global\CJK@false
+ \ifnum\lastkern = \@ne
+ \global\CJK@true
+ \fi}
+
+
+% we only check for lower and upper bounds, not for possible gaps in the
+% range of the second byte, as it happens for Big5 and SJIS encoding.
+
+\def\CJK@err{
+ \PackageError{CJK}{
+ Invalid character code}{
+ The second byte of the CJK code is out of range.\MessageBreak
+ Do you use the right encoding scheme?}}
+
+\def\CJK@errx{
+ \PackageError{CJK}{
+ Invalid character code}{
+ The third byte of the CJK code is out of range.\MessageBreak
+ Do you use the right encoding scheme?}}
+
+\def\CJK@errxx{
+ \PackageError{CJK}{
+ Invalid character code}{
+ The CJK code is out of range for this font encoding.\MessageBreak
+ Do you use the right encoding scheme?}}
+
+
+% we now define a set of new size functions:
+% `CJK', `sCJK', `CJKfixed', and `sCJKfixed' are similar to `' (empty),
+% `s', `fixed', and `sfixed' except that the value of \CJK@plane is
+% appended to \font@name.
+%
+% `CJKsub', `CJKssub' are similar to `sub' and `ssub' except that the font
+% substitution warning appears only once per CJK fontset.
+%
+% `CJKb', `sCJKb', `CJKfixedb', and `sCJKfixedb' are absolutely identical
+% to the functions without the final `b'; they just exist to overcome
+% a special feature of LaTeX:
+%
+% consider this example:
+%
+% \DeclareFontShape{C00}{kai}{m}{n}{<-> CJK * ntukai}{}
+% \DeclareFontShape{C00}{kai}{bx}{n}{<-> CJK * ntukai}{\CJKbold}
+%
+% the internal name of the macro which executes the last parameter
+% (\CJKbold) is identical to the fifth parameter (without spaces), in
+% this case `<->CJK*ntukai' -- the same name for both font shapes! This
+% means that the latter font shape definition overwrites the former.
+% Thus we have to write
+%
+% \DeclareFontShape{C00}{kai}{bx}{n}{<-> CJKb * ntukai}{\CJKbold}
+%
+% to get a different internal macro name.
+
+\def\CJK@curr@fontshape{CJK@\f@encoding/\f@family/\f@series/\f@shape}
+
+\DeclareSizeFunction{CJK}{\CJK@empty\@font@warning}
+\DeclareSizeFunction{CJKb}{\CJK@empty\@font@warning}
+\DeclareSizeFunction{sCJK}{\CJK@empty\@font@info}
+\DeclareSizeFunction{sCJKb}{\CJK@empty\@font@info}
+
+\def\CJK@empty#1{
+ \@tempdimb \f@size\p@
+ \ifx\optional@arg \@empty
+ \else
+ \expandafter\ifx
+ \csname CJK@\mandatory@arg/\f@size/\the\@tempdimb\endcsname \relax
+ \@tempdimb \optional@arg\@tempdimb
+ #1{Font\space shape\space `\curr@fontshape'\space
+ will\space be\MessageBreak
+ scaled\space to\space size\space \the\@tempdimb}
+ \expandafter
+ \gdef\csname CJK@\mandatory@arg/\f@size/\the\@tempdimb\endcsname{}
+ \fi
+ \fi
+ \edef\external@font{
+ \mandatory@arg\CJK@plane\space at \the\@tempdimb}
+ \xdef\font@name{
+ \csname \curr@fontshape/\f@size/\CJK@plane\endcsname}
+ \expandafter\global\expandafter\let
+ \csname \CJK@curr@fontshape\expandafter\endcsname
+ \csname \curr@fontshape\endcsname}
+
+\DeclareSizeFunction{CJKfixed}{\CJK@fixed\@font@warning}
+\DeclareSizeFunction{CJKfixedb}{\CJK@fixed\@font@warning}
+\DeclareSizeFunction{sCJKfixed}{\CJK@fixed\@font@info}
+\DeclareSizeFunction{sCJKfixedb}{\CJK@fixed\@font@info}
+
+\def\CJK@fixed#1{
+ \ifx\optional@arg \@empty
+ \edef\external@font{
+ \mandatory@arg\CJK@plane}
+ \else
+ \edef\external@font{
+ \mandatory@arg\CJK@plane\space at \optional@arg pt}
+ \fi
+ \xdef\font@name{
+ \csname \curr@fontshape/\f@size/\CJK@plane\endcsname}
+ #1{External\space font\space `\external@font'\space loaded\space
+ for\space size\MessageBreak
+ <\f@size>}
+ \expandafter\global\expandafter\let
+ \csname \CJK@curr@fontshape\expandafter\endcsname
+ \csname \curr@fontshape\endcsname}
+
+\DeclareSizeFunction{CJKsub}{\CJK@sub\@font@warning}
+\DeclareSizeFunction{CJKssub}{\CJK@sub\@font@info}
+
+\def\CJK@sub#1{
+ \edef\mandatory@arg{\f@encoding/\mandatory@arg}
+ \begingroup
+ \expandafter\split@name\mandatory@arg/\@nil
+ \try@load@fontshape
+ \endgroup
+ \let\f@user@size\f@size
+ \expandafter\ifx\csname\mandatory@arg\endcsname \relax
+ \errmessage{No\space declaration\space for\space shape\space
+ \mandatory@arg}
+ \error@fontshape
+ \else
+ \expandafter\ifx\csname CJK@\mandatory@arg/\f@size\endcsname \relax
+ #1{Font\space shape\space `\curr@fontshape'\MessageBreak
+ in\space size\space <\f@size>\space not\space available.\MessageBreak
+ Font\space shape\space `\mandatory@arg'\MessageBreak
+ tried\space instead}
+ \expandafter\gdef\csname CJK@\mandatory@arg/\f@size\endcsname{}
+ \fi
+ \expandafter\split@name\mandatory@arg/\@nil
+ \fi
+ \edef\f@size{\f@user@size}
+ \get@external@font
+ \do@subst@correction
+ \expandafter\global\expandafter\let
+ \csname \CJK@curr@fontshape\expandafter\endcsname
+ \csname \curr@fontshape\endcsname}
+
+% the following size functions are needed for the DNP fonts in JIS encoding.
+% `DNPgen' is similar to `gen' but ignores the optional argument.
+% `DNP' is similar to `gen' but the optional argument is used to
+% indicate the designsize.
+%
+% see the comment above for an explanation of DNPb and DNPgenb.
+
+\DeclareSizeFunction{DNPgen}{\CJK@DNPgen}
+\DeclareSizeFunction{DNPgenb}{\CJK@DNPgen}
+
+\def\CJK@DNPgen{
+ \edef\external@font{
+ \mandatory@arg\CJK@plane\f@size}
+ \xdef\font@name{
+ \csname \curr@fontshape/\f@size/\CJK@plane\endcsname}
+ \expandafter\global\expandafter\let
+ \csname \CJK@curr@fontshape\expandafter\endcsname
+ \csname \curr@fontshape\endcsname}
+
+\DeclareSizeFunction{DNP}{\CJK@DNP}
+\DeclareSizeFunction{DNPb}{\CJK@DNP}
+
+\def\CJK@DNP{
+ \@tempdimb \f@size\p@
+ \edef\external@font{
+ \mandatory@arg\CJK@plane\optional@arg\space at \the\@tempdimb}
+ \xdef\font@name{
+ \csname \curr@fontshape/\f@size/\CJK@plane\endcsname}
+ \expandafter\global\expandafter\let
+ \csname \CJK@curr@fontshape\expandafter\endcsname
+ \csname \curr@fontshape\endcsname}
+
+
+% we also must redefine \pickup@font to append \CJK@plane to the font name
+% if the particular subfont is already known.
+
+\def\pickup@font{
+ \CJK@ifundefined\CJK@plane
+ {\expandafter\ifx\font@name \relax% % old definition
+ \define@newfont
+ \fi}
+ {\expandafter% % CJK extension
+ \ifx\csname \curr@fontshape/\f@size/\CJK@plane\endcsname \relax
+ \define@newfont
+ \else
+ \xdef\font@name{
+ \csname \curr@fontshape/\f@size/\CJK@plane\endcsname}
+ \fi}}
+
+% for older versions of LaTeX2e command we must redefine \selectfont.
+% It will now reset \ifCJK@bold@ and calls \CJK@curr@fontshape
+% additionally (if it exists) to execute the loading-setting
+% parameter of \DeclareFontShape each time we switch to this font.
+% \CJK@curr@fontshape has been defined by the above size functions.
+% For newer versions of LaTeX2e it is sufficient to set a hook for
+% \selectfont.
+%
+% for compatibility with older versions of LaTeX2e we provide a
+% definition of \IfFormatAtLeastTF.
+
+\def\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+
+\IfFormatAtLeastTF{2020-10-01}
+ {\AddToHook{selectfont}{
+ \expandafter
+ \ifx\csname CJK@\curr@fontshape\endcsname \relax
+ \else
+ \CJK@bold@false
+ \csname CJK@\curr@fontshape\endcsname
+ \fi}}
+ {\DeclareRobustCommand{\selectfont}{
+ \ifx\f@linespread \baselinestretch
+ \else
+ \set@fontsize\baselinestretch\f@size\f@baselineskip
+ \fi
+ \xdef\font@name{\csname\curr@fontshape/\f@size\endcsname}
+ \pickup@font
+ \font@name
+ \expandafter% % CJK extension
+ \ifx\csname CJK@\curr@fontshape\endcsname \relax
+ \else
+ \CJK@bold@false
+ \csname CJK@\curr@fontshape\endcsname
+ \fi
+ \size@update
+ \enc@update}}
+
+
+% additional vertical and horizontal information for a font is stored in
+% files with the extension `.fdx'. We extend LaTeX's
+% \try@load@fontshape@ macro to load them.
+%
+% the macros \CJKhdef, \CJKvdef, \CJKhlet and \CJKvlet should be used to
+% handle commands in `.fdx' files.
+
+\def\CJK@load@fdx{
+ \expandafter\ifx\csname \f@encoding+\f@family+x\endcsname \relax
+ \global\expandafter\let\csname \f@encoding+\f@family+x\endcsname \@empty
+ \def\CJKhdef##1##2{
+ \expandafter\gdef\csname \CJK@enc/\CJK@family/##1/h\endcsname{##2}}
+ \def\CJKhlet##1##2{
+ \edef\reserved@a{\CJK@enc/\CJK@family/##1/h}
+ \edef\reserved@b{\CJK@enc/\CJK@family/##2/h}
+ \global\expandafter\let
+ \csname\reserved@a\expandafter\endcsname \csname\reserved@b\endcsname}
+ \def\CJKvdef##1##2{
+ \expandafter\gdef\csname \CJK@enc/\CJK@family/##1/v\endcsname{##2}}
+ \def\CJKvlet##1##2{
+ \edef\reserved@a{\CJK@enc/\CJK@family/##1/v}
+ \edef\reserved@b{\CJK@enc/\CJK@family/##2/v}
+ \global\expandafter\let
+ \csname\reserved@a\expandafter\endcsname \csname\reserved@b\endcsname}
+ \edef\reserved@a{
+ \lowercase{\noexpand\InputIfFileExists{\f@encoding\f@family.fdx}}}
+ \reserved@a{}{}
+ \fi}
+
+\expandafter\def\expandafter\try@load@fontshape\expandafter{
+ \try@load@fontshape
+ \CJK@load@fdx}
+
+
+% \CJKglue defines the stretchability of CJK characters.
+
+\newcommand{\CJKglue}{\hskip \z@ \@plus .08\baselineskip}
+
+\def\CJK@nobreakglue{
+ \nobreak
+ \CJKglue
+ \nobreak}
+
+% if the `verbatim' package is loaded it is possible to improve the output
+% automatically, namely, to avoid breaking of overfull lines in a
+% verbatim environment. The following command will install a hook to
+% suppress insertion of glue between CJK glyphs. MULEenc.sty will extend
+% it for Thai glyphs.
+
+\def\CJK@verbatim{
+ \addto@hook{\every@verbatim}{
+ \renewcommand{\CJKglue}{}}}
+\CJK@ifundefined\mule@verbatim
+ {\mule@verbatim{}}
+ {}
+
+\def\CJKverbatim{
+ \mule@verbatim
+ \CJK@verbatim}
+
+
+% increasing \CJKtolerance will allow more space between Hangul words.
+
+\newcommand{\CJKtolerance}{400}
+
+
+% \CJKtilde changes the definition of the active `~' character to embed
+% non-CJK words into CJK text. The horizontal space defined here has
+% a smaller width than an ordinary space character and is breakable.
+% It will suppress spaces afterwards.
+% The original definition will be preserved within \nbs, which is
+% a shorthand for the LaTeX command \nobreakspace.
+%
+% \standardtilde is the opposite command.
+
+\let\nbs \nobreakspace
+
+\DeclareRobustCommand{\CJKtilde}{
+ \CJK@global\def~{\hspace{0.25em plus 0.125em minus 0.08em}\ignorespaces}}
+\DeclareRobustCommand{\standardtilde}{
+ \CJK@global\def~{\nobreakspace{}}}
+
+
+% \CJKspace and \CJKnospace enables the user to switch between a CJK and a
+% CJK* environment without leaving the actual environment:
+%
+% \CJKnospace switches from CJK to CJK*
+% \CJKspace switches from CJK* to CJK
+%
+% the definitions are in MULEenc.sty also.
+
+\DeclareRobustCommand{\CJKspace}{
+ \CJK@global\let\CJK@ignorespaces \@empty}
+\DeclareRobustCommand{\CJKnospace}{
+ \CJK@global\let\CJK@ignorespaces \ignorespaces}
+
+
+% \CJKindent sets \parindent to two ideographic spaces. \CJK@spaceChar
+% is defined in CJK.enc for all encodings.
+
+\newbox\CJK@indent
+
+\providecommand{\CJKindent}{
+ \setbox\CJK@indent\hbox{\CJK@spaceChar\CJK@spaceChar}
+ \parindent\wd\CJK@indent
+}
+
+
+% make all characters possibly used active so they can become macros.
+
+\def\CJK@makeActive{
+ \@tempcnta "080\relax
+ \loop
+ \CJK@active\catcode\@tempcnta \active
+ \ifnum\@tempcnta < "0FE\relax
+ \advance\@tempcnta \@ne
+ \repeat}
+
+\def\CJK@makeInactive{
+ \@tempcnta "080\relax
+ \loop
+ \CJK@active\catcode\@tempcnta 12\relax
+ \ifnum\@tempcnta < "0FE\relax
+ \advance\@tempcnta \@ne
+ \repeat}
+
+
+% the following macro is a signature for `CJKspace.sty'.
+
+\def\CJK@@@{}
+
+
+% we assign to each active character ^^xx the macro \CJK@XX (if expansion
+% occurs); this will be done in the .bdg files. Then the various .enc
+% files define \CJK@.. (using \CJK@namegdef) with encoding-specific
+% macros.
+
+\def\CJK@namedef#1{
+ \CJK@active\def#1{
+ \CJK@@@
+ \ifx\protect \@typeset@protect
+ \string #1
+ \else
+ \noexpand #1
+ \fi}}
+
+\def\CJK@namepdef#1{
+ \CJK@active\def#1{
+ \CJK@@@
+ \ifx\protect \@typeset@protect
+ \expandafter\expandafter\expandafter\CJK@X
+ \expandafter\string\expandafter#1
+ \else
+ \noexpand #1
+ \fi}}
+
+\def\CJK@nameppdef#1{
+ \CJK@active\def#1{
+ \CJK@@@
+ \ifx\protect \@typeset@protect
+ \expandafter\expandafter\expandafter\CJK@XX
+ \expandafter\string\expandafter#1
+ \else
+ \noexpand #1
+ \fi}}
+
+\def\CJK@namepppdef#1{
+ \CJK@active\def#1{
+ \CJK@@@
+ \ifx\protect \@typeset@protect
+ \expandafter\expandafter\expandafter\CJK@XXX
+ \expandafter\string\expandafter#1
+ \else
+ \noexpand #1
+ \fi}}
+
+\def\CJK@nameppppdef#1{
+ \CJK@active\def#1{
+ \CJK@@@
+ \ifx\protect \@typeset@protect
+ \expandafter\expandafter\expandafter\CJK@XXXX
+ \expandafter\string\expandafter#1
+ \else
+ \noexpand #1
+ \fi}}
+
+
+\def\CJK@X#1{
+ \csname CJK@\number `#1\endcsname\CJK@ignorespaces}
+
+% two possibilities:
+% either \CJK@XX <arg1> <arg2>
+% or \CJK@XX <arg1> \protect <arg2>
+\def\CJK@XX#1#2{
+ \ifx #2\protect
+ \expandafter\CJK@XXp\expandafter#1
+ \else
+ \csname CJK@\number `#1\endcsname{`#2}\CJK@ignorespaces
+ \fi}
+\def\CJK@XXp#1#2{
+ \csname CJK@\number `#1\endcsname{`#2}\CJK@ignorespaces}
+
+% two possibilities:
+% either \CJK@XXX <arg1> <arg2> <arg3>
+% or \CJK@XXX <arg1> \protect <arg2> \protect <arg3>
+\def\CJK@XXX#1#2#3{
+ \ifx #2\protect
+ \expandafter\CJK@XXXp\expandafter#1#3
+ \else
+ \csname CJK@\number `#1\endcsname{`#2}{`#3}\CJK@ignorespaces
+ \fi}
+\def\CJK@XXXp#1#2#3#4{
+ \csname CJK@\number `#1\endcsname{`#2}{`#4}\CJK@ignorespaces}
+
+% two possibilities:
+% either \CJK@XXXX <arg1> <arg2> <arg3> <arg4>
+% or \CJK@XXXX <arg1> \protect <arg2> \protect <arg3> \protect <arg4>
+\def\CJK@XXXX#1#2#3#4{
+ \ifx #2\protect
+ \expandafter\CJK@XXXXp\expandafter#1#3
+ \else
+ \csname CJK@\number `#1\endcsname{`#2}{`#3}{`#4}\CJK@ignorespaces
+ \fi}
+\def\CJK@XXXXp#1#2#3#4#5{
+ \csname CJK@\number `#1\endcsname{`#2}{`#3}{`#5}\CJK@ignorespaces}
+
+
+% these auxiliary macros reset \lccode's and \uccode's of characters
+% 0x80-0xFF. This overrides the values set by LaTeX2e.
+
+\def\CJK@upperReset{
+ \@tempcnta "080\relax
+ \loop
+ \CJK@local\uccode\@tempcnta \z@
+ \ifnum\@tempcnta < "0FF\relax
+ \advance\@tempcnta \@ne
+ \repeat}
+
+\def\CJK@lowerReset{
+ \@tempcnta "080\relax
+ \loop
+ \CJK@local\lccode\@tempcnta \z@
+ \ifnum\@tempcnta < "0FF\relax
+ \advance\@tempcnta \@ne
+ \repeat}
+
+
+% finally come the CJK environments:
+%
+% CJK* will swallow spaces after a CJK character, whereas CJK will not.
+%
+% the first parameter selects the CJK encoding, the second the CJK font
+% family; the optional argument selects the fontencoding.
+%
+% each time a CJK or CJK* environment will be opened the hook \CJKhook will
+% be called (this feature is used by cjk-enc.el).
+%
+% always end the line after saying \begin{CJK} or \begin{CJK*};
+% any characters on the same line will have already been read with
+% their non-CJK meanings.
+
+\def\CJK@envStart#1#2#3{
+ \CJK@upperReset
+ \ifCJK@lowercase@
+ \CJK@lowerReset
+ \fi
+
+ \CJK@makeActive
+
+ % we enable \CJK@selectFamily and \CJK@selectEnc.
+
+ \CJK@global\let\CJK@selectFamily \CJK@selFam
+ \CJK@global\let\CJK@selectEnc \CJK@selEnc
+
+ \def\CJK@@@enc{#2}
+ \ifx\CJK@@@enc \@empty
+ \PackageInfo{CJK}{
+ no encoding parameter given,\MessageBreak
+ waiting for \protect\CJKenc\space commands}
+ \else
+ \CJKenc{#2}
+ \fi
+ \CJKfontenc{#2}{#1}
+ \CJKfamily{#3}
+ \def\CJK@series{\f@series}
+ \def\CJK@shape{\f@shape}
+
+ \csname CJKhook\endcsname}
+
+\def\CJK@envEnd{
+ \ifx\CJK@global \global
+ \CJK@makeInactive
+ \CJK@global\let\CJK@selectFamily \relax
+ \CJK@global\let\CJK@selectEnc \relax
+ \fi}
+
+\newenvironment{CJK}[3][]{
+ \CJKspace
+ \CJK@envStart{#1}{#2}{#3}
+ }{
+ \CJK@envEnd}
+
+\newenvironment{CJK*}[3][]{
+ \CJKnospace
+ \CJK@envStart{#1}{#2}{#3}
+ }{
+ \CJK@envEnd}
+
+
+% \CJKcaption{caption} will test whether we are in a CJK environment; if yes,
+% it tries to load `<caption>.cpx' (this is <caption>.cap in preprocessed
+% mode).
+
+\newcommand{\CJKcaption}[1]{
+ \ifx\CJK@actualBinding \@empty
+ \PackageError{CJK}{
+ You must be inside of a CJK environment to use \protect\CJKcaption}{}
+ \else
+ \makeatletter
+ \InputIfFileExists{#1.cpx}{}{
+ \PackageError{CJK}{
+ Can't find #1.cpx}{
+ The default captions are used if you continue.}}
+ \makeatother
+ \fi}
+
+
+% the writing direction.
+
+\def\CJK@direction{h}
+
+
+% reset endline character.
+
+\endlinechar `\^^M
+
+
+% in case some customization is necessary it should be done in the
+% configuration file `CJK.cfg' and *not* here.
+
+\InputIfFileExists{CJK.cfg}
+ {\typeout{^^J
+ *****************************************^^J
+ * Local configuration file CJK.cfg used *^^J
+ *****************************************^^J}}
+ {}
+
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CJKfntef.sty b/language/chinese/CJK/cjk-4.8.5/texinput/CJKfntef.sty
new file mode 100644
index 0000000000..045380abdf
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CJKfntef.sty
@@ -0,0 +1,509 @@
+% This is the file CJKfntef.sty of the CJK package
+% extending CJKulem.sty with more font effects
+%
+% created by Wenchang Sun <sunwch@hotmail.com>
+% Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+%
+% Macros:
+% \CJKunderdot{...}
+% \CJKunderline[*]{...}
+% \CJKunderdblline[*]{...}
+% \CJKunderwave[*]{...}
+% \CJKsout[*]{...}
+% \CJKxout[*]{...}
+% \varCJKunderline
+% \CJKunderanyline
+% \CJKunderanysymbol
+%
+% The following nesting combinations are allowed:
+%
+% \CJKunderdot{...\CJKunderline[*]{...}...}
+% \CJKunderdot{...\CJKunderdblline[*]{...}...}
+% \CJKunderdot{...\CJKunderwave[*]{...}...}
+% \CJKunderdot{...\CJKsout[*]{...}...}
+% \CJKunderdot{...\CJKxout[*]{...}...}
+%
+% \CJKunderline[*]{...\CJKunderdot{...}...}
+% \CJKunderdblline[*]{...\CJKunderdot{...}...}
+% \CJKunderwave[*]{...\CJKunderdot{...}...}
+% \CJKsout[*]{...\CJKunderdot{...}...}
+% \CJKxout[*]{...\CJKunderdot{...}...}
+%
+% Environment:
+% CJKfilltwosides
+%
+%
+% Here an example which shows how to use \CJKunderanysymbol.
+%
+% \def\varCJKunderdot{%
+% \CJKunderanysymbol{0.5em}{$\cdot$}%
+% }
+%
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\NeedsTeXFormat{LaTeX2e}[1998/06/01]
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesPackage{CJKfntef}[\filedate\space\fileversion]
+
+\RequirePackage{CJK}
+\RequirePackage{CJKulem}
+
+
+\endlinechar \m@ne
+
+
+\ifx\CJKpunctsymbol\undefined
+ \PackageWarning{CJKfntef}{
+ You need to download the last version of the CJK package\MessageBreak
+ to keep CJK punctuation from being underdotted}
+ \let\CJKpunctsymbol\CJKsymbol
+\fi
+
+
+\newskip\CJK@fntefSkip
+\newcount\CJK@nest
+\newdimen\CJK@fntefDimen
+\newbox\CJK@underdotBox
+\newbox\CJK@ULbox
+
+\newif\ifCJK@UL@
+\CJK@UL@false
+\newif\ifCJK@sxout@
+\CJK@sxout@false
+
+
+\newcommand{\CJKunderdotbasesep}{0.05em}
+\newcommand{\CJKunderdotsep}{0.04em}
+\newcommand{\CJKunderlinebasesep}{0.20em}
+\newcommand{\CJKunderlinesep}{0.07em}
+\newcommand{\CJKunderdbllinebasesep}{0.20em}
+\newcommand{\CJKunderdbllinesep}{0.17em}
+\newcommand{\CJKunderwavebasesep}{0.20em}
+\newcommand{\CJKunderwavesep}{0.00em}
+\newcommand{\CJKsoutheight}{0.35em}
+
+\let\CJKf@global\global
+
+\ifx\color\undefined
+ \def\CJKunderdotcolor{}
+ \def\CJKunderwavecolor{}
+ \def\CJKunderlinecolor{}
+ \def\CJKunderdbllinecolor{}
+ \def\CJKsoutcolor{}
+ \def\CJKxoutcolor{}
+\else
+ \def\CJKunderdotcolor{\color{red}}
+ \def\CJKunderwavecolor{\color{blue}}
+ \def\CJKunderlinecolor{\color{blue}}
+ \def\CJKunderdbllinecolor{\color{blue}}
+ \def\CJKsoutcolor{\color{red}}
+ \def\CJKxoutcolor{\color{blue}}
+\fi
+
+
+%
+% \CJKunderdot:
+% Add a dot under every CJK non-punctuation character. The dot position
+% can be controlled by redefining \CJKunderdotsep (for nesting) and
+% \CJKunderdotbasesep.
+%
+% The dot color can be changed by redefining \CJKunderdotcolor.
+%
+\def\CJK@underdotSkip{\z@}
+
+\def\CJK@preUnderdot{
+ \ifnum\CJK@nest = \z@
+ \CJKf@global\advance\CJK@fntefSkip \CJKunderdotbasesep
+ \fi
+ \CJKf@global\advance\CJK@nest \@ne
+
+ \xdef\CJK@underdotSkip{\the\CJK@fntefSkip}
+ \CJKf@global\advance\CJK@fntefSkip \CJKunderdotsep
+
+ \CJKf@global\setbox\CJK@underdotBox\hbox{{
+ \CJKunderdotcolor
+ {$\cdot$}}}
+ \CJKf@global\advance\CJK@fntefSkip \ht\CJK@underdotBox
+ \CJKf@global\advance\CJK@fntefSkip \dp\CJK@underdotBox}
+
+\def\CJK@postUnderdot{
+ \CJKf@global\advance\CJK@fntefSkip -\CJKunderdotsep
+ \CJKf@global\advance\CJK@fntefSkip -\ht\CJK@underdotBox
+ \CJKf@global\advance\CJK@fntefSkip -\dp\CJK@underdotBox
+ \CJKf@global\def\CJK@underdotSkip{\z@}
+
+ \CJKf@global\advance\CJK@nest \m@ne
+ \ifnum\CJK@nest = \z@
+ \CJKf@global\advance\CJK@fntefSkip -\CJKunderdotbasesep
+ \fi}
+
+
+\ifcsname XeTeXinterchartokenstate\endcsname
+ \def\XeTeX@CJKfntef@hook{
+ \XeTeXinterchartokenstate=0}
+\else
+ \let\XeTeX@CJKfntef@hook\relax
+\fi
+
+\newcommand{\CJKunderdot}[1]{
+ \CJK@preUnderdot
+
+ \CJKf@global\let\CJK@underdotSymbol \CJKsymbol
+ \CJKf@global\def\CJKsymbol##1{
+ \CJK@underdotSymbol{##1}
+
+ \settowidth\CJK@fntefDimen{{
+ \XeTeX@CJKfntef@hook
+ \CJK@underdotSymbol{##1}}}
+ \leavevmode
+ \rlap{
+ \vbox to \z@ {
+ \vskip\CJK@underdotSkip
+ \hbox to \z@ {
+ \hskip -\CJK@fntefDimen
+ \hss
+ \copy\CJK@underdotBox
+ \hss}
+ \vss}}}
+ #1
+ \CJKf@global\let\CJKsymbol \CJK@underdotSymbol
+
+ \CJK@postUnderdot
+ \ignorespaces}
+
+
+%
+% Auxiliary macros needed by \CJKunderline and friends.
+%
+\def\UL@CJKpunctnobreakglue{
+ \ifx\ \LA@space
+ \LA@CJKglue
+ \else
+ \egroup
+ \UL@stop
+ \UL@start
+ \bgroup
+ \fi}
+
+\def\CJK@fntefSave{
+ \CJKf@global\let\UL@UL@CJKnobreakglue \UL@CJKnobreakglue
+ \CJKf@global\let\UL@CJKsymbol \CJKsymbol
+ \CJKf@global\let\UL@CJKpunctsymbol \CJKpunctsymbol}
+
+\def\CJK@fntefRestore{
+ \CJKf@global\let\UL@CJKnobreakglue \UL@UL@CJKnobreakglue
+ \CJKf@global\let\CJKsymbol \UL@CJKsymbol
+ \CJKf@global\let\CJKpunctsymbol \UL@CJKpunctsymbol}
+
+\def\CJK@preUL{
+ \ifCJK@UL@
+ \PackageError{CJKfntef}
+ {Nesting error}
+ {Nesting \string\CJKunderwave[*], \string\CJKunderline[*],
+ \string\CJKsout[*], \string\CJKxout[*],\MessageBreak
+ or \string\CJKunderdblline[*] is not supported.}
+ \else
+ \CJKf@global\CJK@UL@true
+ \fi
+ \ifCJK@sxout@
+ \CJKf@global\def\CJK@ULskip{\z@}
+ \else
+ \ifnum\CJK@nest = \z@
+ \CJKf@global\advance\CJK@fntefSkip \CJK@ULbasesep
+ \fi
+ \CJKf@global\advance\CJK@nest \@ne
+
+ \CJKf@global\advance\CJK@fntefSkip \ht\CJK@ULbox
+ \CJKf@global\advance\CJK@fntefSkip \dp\CJK@ULbox
+
+ \xdef\CJK@ULskip{\the\CJK@fntefSkip}
+ \CJKf@global\advance\CJK@fntefSkip \CJK@ULsep
+ \fi}
+
+\def\CJK@postUL{
+ \CJKf@global\CJK@UL@false
+
+ \ifCJK@sxout@
+ \CJKf@global\CJK@sxout@false
+ \else
+ \CJKf@global\advance\CJK@fntefSkip -\CJK@ULsep
+ \CJKf@global\advance\CJK@fntefSkip -\ht\CJK@ULbox
+ \CJKf@global\advance\CJK@fntefSkip -\dp\CJK@ULbox
+
+ \CJKf@global\advance\CJK@nest \m@ne
+ \ifnum\CJK@nest = \z@
+ \CJKf@global\advance\CJK@fntefSkip -\CJK@ULbasesep
+ \fi
+ \fi}
+
+\def\CJK@UL{
+ \CJK@preUL
+ \CJK@fntefSave
+
+ \CJKf@global\let\UL@CJKnobreakglue \UL@CJKpunctnobreakglue
+ \CJKf@global\def\CJKsymbol{
+ \CJKf@global\def\UL@leadtype{\leaders\copy\ULC@box}
+ \UL@CJKsymbol}
+ \CJKf@global\def\CJKpunctsymbol{
+ \CJKf@global\def\UL@leadtype{}
+ \UL@CJKpunctsymbol}
+
+ \bgroup
+ \markoverwith{
+ \lower\CJK@ULskip\copy\CJK@ULbox}
+ \aftergroup\CJK@fntefRestore
+ \aftergroup\CJK@postUL
+ \ULon}
+
+\def\CJK@@UL{
+ \CJK@preUL
+ \bgroup
+ \markoverwith{
+ \lower\CJK@ULskip\copy\CJK@ULbox}
+ \aftergroup\CJK@postUL
+ \ULon}
+
+
+%
+% \CJKunderwave*:
+% The same as \uwave except that the wavy line is colored (you can change
+% the color by redefining \CJKunderwavecolor), and the position can be
+% controlled by redefining \CJKunderwavesep (for nesting) and
+% \CJKunderwavebasesep.
+%
+% \CJKunderwave:
+% The same as \CJKunderwave* but ignoring CJK punctuation characters.
+%
+\newcommand{\CJKunderwave}{
+ \CJKf@global\let\CJK@ULsep \CJKunderwavesep
+ \CJKf@global\let\CJK@ULbasesep \CJKunderwavebasesep
+ \CJKf@global\setbox\CJK@ULbox\hbox{{
+ \CJKunderwavecolor
+ \sixly
+ \char 58}}
+
+ \@ifstar\CJK@@UL\CJK@UL}
+
+
+%
+% \CJKunderline*:
+% The same as \uline except that the line is colored (you can change the
+% color by redefining \CJKunderlinecolor), and the position can be
+% controlled by redefining \CJKunderlinesep (for nesting) and
+% \CJKunderlinebasesep.
+%
+% \CJKunderline:
+% The same as \CJKunderline* but ignoring CJK punctuation characters.
+%
+\newcommand{\CJKunderline}{
+ \CJKf@global\let\CJK@ULsep \CJKunderlinesep
+ \CJKf@global\let\CJK@ULbasesep \CJKunderlinebasesep
+ \CJKf@global\setbox\CJK@ULbox\hbox{{
+ \CJKunderlinecolor
+ \vtop{\hrule \@height \ULthickness \@width .2em}}}
+
+ \@ifstar\CJK@@UL\CJK@UL}
+
+
+%
+% \CJKunderdblline[*]:
+% The same as \CJKunderline[*] except that two lines are used for
+% underlining.
+%
+\newcommand{\CJKunderdblline}{
+ \CJKf@global\let\CJK@ULsep \CJKunderdbllinesep
+ \CJKf@global\let\CJK@ULbasesep \CJKunderdbllinebasesep
+
+ \CJKf@global\setbox\CJK@ULbox\hbox{{
+ \CJKunderdbllinecolor
+ \vtop{
+ \kern -.07em
+ \hrule \@height\ULthickness \@width .2em
+ \kern 1.1\p@
+ \hrule}}}
+
+ \@ifstar\CJK@@UL\CJK@UL}
+
+
+%
+% \CJKsout*:
+% The same as \sout except that the line is colored (you can change the
+% color by redefining \CJKsoutcolor), and the position can be controlled
+% by redefining \CJKsoutheight.
+%
+% \CJKsout:
+% The same as \CJKsout* but ignoring CJK punctuation characters.
+%
+\def\CJKsout{
+ \CJKf@global\CJK@sxout@true
+ \CJKf@global\setbox\CJK@ULbox\hbox{{
+ \CJKsoutcolor
+ \vtop{
+ \kern -\CJKsoutheight
+ \hrule \@height\ULthickness \@width .2em}}}
+
+ \@ifstar\CJK@@UL\CJK@UL}
+
+
+%
+% \CJKxout*:
+% The same as \xout except using colored `/' (you can change the color
+% by redefining \CJKxoutcolor).
+%
+% \CJKxout:
+% The same as \CJKxout* but ignoring CJK punctuation characters.
+%
+\def\CJKxout{
+ \CJKf@global\CJK@sxout@true
+ \CJKf@global\setbox\CJK@ULbox\hbox{{
+ \kern -0.1em
+ {\CJKxoutcolor $/$}
+ \kern -0.1em}}
+
+ \@ifstar\CJK@@UL\CJK@UL}
+
+
+%
+% CJKfilltwosides environment:
+% Align CJK characters to fill two sides.
+%
+% Usage:
+% \begin{CJKfilltwosides}{width}
+% first line \\
+% second line \\
+% ... \\
+% last line
+% \end{CJKfilltwosides}
+%
+\newif\ifCJK@fillbegin@
+\CJKf@global\CJK@fillbegin@false
+\newif\ifCJK@filltwosides@
+\CJKf@global\CJK@filltwosides@false
+
+\newenvironment{CJKfilltwosides}[1]{
+ \leavevmode
+ \vbox\bgroup
+ \CJKf@global\CJK@filltwosides@true
+ \CJKf@global\let\CJK@filltwosidesSymbol \CJKsymbol
+
+ \def\CJK@ftscr{
+ \egroup
+ \CJKf@global\CJK@fillbegin@false
+ \hbox to #1\bgroup
+ \ignorespaces}
+
+ \let\\ \CJK@ftscr
+
+ \def\CJKsymbol##1{
+ \ifCJK@fillbegin@
+ \hfill
+ \CJK@filltwosidesSymbol{##1}
+ \else
+ \CJK@filltwosidesSymbol{##1}
+ \CJKf@global\CJK@fillbegin@true
+ \fi}
+
+ \hbox to #1\bgroup
+ \ignorespaces
+ }{
+ \egroup
+ \egroup
+
+ \CJKf@global\let\CJKsymbol \CJK@filltwosidesSymbol
+ \CJKf@global\CJK@fillbegin@false
+ \CJKf@global\CJK@filltwosides@false}
+
+
+%
+% \varCJKunderline:
+% The same as \CJKunderline but leaving spaces between two consecutive
+% \varCJKunderline calls. The separation on the left and right can be
+% controlled by redefining \CJKulineleftskip and \CJKulinerightskip,
+% respectively.
+%
+\def\CJKulineleftskip{0.2em}
+\def\CJKulinerightskip{0.2em}
+
+\def\varCJKunderline#1{
+ {\null
+ \hskip\CJKulineleftskip}
+ \CJKunderline{
+ {\hskip-\CJKulineleftskip}
+ #1
+ {\hskip-\CJKulinerightskip}}
+ {\hskip\CJKulinerightskip}}
+
+
+%
+% \CJKunderanyline:
+% The same as \varCJKunderline but using a user-defined underline shape.
+% The first argument gives the distance to the baseline, the second
+% argument the object used for underlining.
+%
+\def\CJK@underanyline#1#2{
+ \setbox\UL@box\hbox{{#2}}
+ \bgroup\markoverwith{\lower #1\copy\UL@box}\ULon}
+
+\def\CJKunderanyline#1#2#3{
+ {\null
+ \hskip\CJKulineleftskip}
+ \CJK@underanyline{#1}{#2}{
+ {\hskip-\CJKulineleftskip}
+ #3
+ {\hskip-\CJKulinerightskip}}
+ {\hskip\CJKulinerightskip}}
+
+
+%
+% \CJKunderanysymbol:
+% The same as \CJKunderdot but using a user-defined underline shape.
+% The first argument gives the distance to the baseline, the second
+% argument the object used for `underdotting'.
+%
+\newdimen\CJK@underanyskip
+
+\def\CJKunderanysymbol#1#2#3{{
+ \CJK@underanyskip #1\relax
+ \setbox\CJK@underdotBox\hbox{{#2}}
+ \CJKf@global\let\CJK@underanysymbol\CJKsymbol
+ \CJKf@global\def\CJK@fntefglue{
+ \CJKf@global\let\CJK@fntefglue\CJKglue}
+ \CJKf@global\def\CJKsymbol##1{
+ \CJK@fntefglue
+ \CJK@underanysymbol{##1}
+ \leavevmode
+ \rlap{
+ \lower \CJK@underanyskip
+ \hbox to \z@ {
+ \hskip -1em
+ \hss
+ \copy\CJK@underdotBox
+ \hss}
+ \hskip -1em}
+ \ignorespaces}
+ #3
+ \CJKf@global\let\CJKsymbol\CJK@underanysymbol}}
+
+
+\endlinechar `\^^M
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CJKnumb.sty b/language/chinese/CJK/cjk-4.8.5/texinput/CJKnumb.sty
new file mode 100644
index 0000000000..61c928cf14
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CJKnumb.sty
@@ -0,0 +1,400 @@
+% This is the file CJKnumb.sty of the CJK package
+% for typesetting numbers with CJK glyphs.
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesPackage{CJKnumb}[\filedate\space\fileversion]
+
+\RequirePackage{CJK}[2021/10/16]
+
+
+% we suppress any unwanted spaces produced by linefeeds.
+
+\endlinechar \m@ne
+
+
+% the amount of space to be inserted before and after the circle
+% representing zero
+
+\def\CJKnullspace{0pt}
+
+
+% generic number macros. We add them to the CJK encoding hooks.
+
+\def\CJK@traditionalNumbers{
+ % circle used for zero
+ \def\CJK@null{\kern\CJKnullspace\CJKchar{161}{179}\kern\CJKnullspace}
+ % character used for zero
+ \def\CJK@zero{\CJKchar{185}{115}}
+ \def\CJK@one{\CJKchar{164}{64}}
+ \def\CJK@two{\CJKchar{164}{71}}
+ \def\CJK@three{\CJKchar{164}{84}}
+ \def\CJK@four{\CJKchar{165}{124}}
+ \def\CJK@five{\CJKchar{164}{173}}
+ \def\CJK@six{\CJKchar{164}{187}}
+ \def\CJK@seven{\CJKchar{164}{67}}
+ \def\CJK@eight{\CJKchar{164}{75}}
+ \def\CJK@nine{\CJKchar{164}{69}}
+ \def\CJK@ten{\CJKchar{164}{81}}
+ \def\CJK@hundred{\CJKchar{166}{202}}
+ \def\CJK@thousand{\CJKchar{164}{100}}
+ \def\CJK@tenthousand{\CJKchar{184}{85}}
+ \def\CJK@hundredmillion{\CJKchar{187}{245}}
+
+ \def\CJK@minus{\CJKchar{161}{208}}}
+
+\CJKaddEncHook{Bg5}{\CJK@traditionalNumbers}
+\CJKaddEncHook{Bg5+}{\CJK@traditionalNumbers}
+\CJKaddEncHook{HK}{\CJK@traditionalNumbers}
+
+\def\CJK@simplifiedNumbers{
+ \def\CJK@null{\kern\CJKnullspace\CJKchar{161}{240}\kern\CJKnullspace}
+ \def\CJK@zero{\CJKchar{193}{227}}
+ \def\CJK@one{\CJKchar{210}{187}}
+ \def\CJK@two{\CJKchar{182}{254}}
+ \def\CJK@three{\CJKchar{200}{253}}
+ \def\CJK@four{\CJKchar{203}{196}}
+ \def\CJK@five{\CJKchar{206}{229}}
+ \def\CJK@six{\CJKchar{193}{249}}
+ \def\CJK@seven{\CJKchar{198}{223}}
+ \def\CJK@eight{\CJKchar{176}{203}}
+ \def\CJK@nine{\CJKchar{190}{197}}
+ \def\CJK@ten{\CJKchar{202}{174}}
+ \def\CJK@hundred{\CJKchar{176}{217}}
+ \def\CJK@thousand{\CJKchar{199}{167}}
+ \def\CJK@tenthousand{\CJKchar{205}{242}}
+ \def\CJK@hundredmillion{\CJKchar{210}{218}}
+
+ \def\CJK@minus{\CJKchar{163}{173}}}
+
+\CJKaddEncHook{GB}{\CJK@simplifiedNumbers}
+\CJKaddEncHook{GBK}{\CJK@simplifiedNumbers}
+
+\CJKaddEncHook{JIS}{
+ \def\CJK@null{\kern\CJKnullspace\CJKchar{161}{251}\kern\CJKnullspace}
+ \def\CJK@zero{\CJKchar{206}{237}}
+ \def\CJK@one{\CJKchar{176}{236}}
+ \def\CJK@two{\CJKchar{198}{243}}
+ \def\CJK@three{\CJKchar{187}{176}}
+ \def\CJK@four{\CJKchar{187}{205}}
+ \def\CJK@five{\CJKchar{184}{222}}
+ \def\CJK@six{\CJKchar{207}{187}}
+ \def\CJK@seven{\CJKchar{188}{183}}
+ \def\CJK@eight{\CJKchar{200}{172}}
+ \def\CJK@nine{\CJKchar{182}{229}}
+ \def\CJK@ten{\CJKchar{189}{189}}
+ \def\CJK@hundred{\CJKchar{201}{180}}
+ \def\CJK@thousand{\CJKchar{192}{233}}
+ \def\CJK@tenthousand{\CJKchar{232}{223}}
+ \def\CJK@hundredmillion{\CJKchar{178}{175}}
+
+ \def\CJK@minus{\CJKchar{161}{221}}}
+
+\CJKaddEncHook{KS}{
+ \def\CJK@null{\kern\CJKnullspace\CJKchar{161}{219}\kern\CJKnullspace}
+ \def\CJK@zero{\CJKchar{214}{195}}
+ \def\CJK@one{\CJKchar{236}{233}}
+ \def\CJK@two{\CJKchar{236}{163}}
+ \def\CJK@three{\CJKchar{223}{178}}
+ \def\CJK@four{\CJKchar{222}{204}}
+ \def\CJK@five{\CJKchar{231}{233}}
+ \def\CJK@six{\CJKchar{215}{191}}
+ \def\CJK@seven{\CJKchar{246}{210}}
+ \def\CJK@eight{\CJKchar{248}{162}}
+ \def\CJK@nine{\CJKchar{206}{250}}
+ \def\CJK@ten{\CJKchar{228}{168}}
+ \def\CJK@hundred{\CJKchar{219}{221}}
+ \def\CJK@thousand{\CJKchar{244}{182}}
+ \def\CJK@tenthousand{\CJKchar{216}{191}}
+ \def\CJK@hundredmillion{\CJKchar{229}{226}}
+
+ \def\CJK@minus{\CJKchar{163}{173}}}
+
+\CJKaddEncHook{SJIS}{
+ \def\CJK@null{\kern\CJKnullspace\CJKchar{129}{155}\kern\CJKnullspace}
+ \def\CJK@zero{\CJKchar{151}{235}}
+ \def\CJK@one{\CJKchar{136}{234}}
+ \def\CJK@two{\CJKchar{147}{241}}
+ \def\CJK@three{\CJKchar{142}{79}}
+ \def\CJK@four{\CJKchar{142}{108}}
+ \def\CJK@five{\CJKchar{140}{220}}
+ \def\CJK@six{\CJKchar{152}{90}}
+ \def\CJK@seven{\CJKchar{142}{181}}
+ \def\CJK@eight{\CJKchar{148}{170}}
+ \def\CJK@nine{\CJKchar{139}{227}}
+ \def\CJK@ten{\CJKchar{143}{92}}
+ \def\CJK@hundred{\CJKchar{149}{83}}
+ \def\CJK@thousand{\CJKchar{144}{231}}
+ \def\CJK@tenthousand{\CJKchar{228}{221}}
+ \def\CJK@hundredmillion{\CJKchar{137}{173}}
+
+ \def\CJK@minus{\CJKchar{129}{124}}}
+
+\CJKaddEncHook{\CJK@UnicodeEnc}{
+ \def\CJK@null{\Unicode{48}{7}}
+ \def\CJK@zero{\Unicode{150}{246}}
+ \def\CJK@one{\Unicode{78}{0}}
+ \def\CJK@two{\Unicode{78}{140}}
+ \def\CJK@three{\Unicode{78}{9}}
+ \def\CJK@four{\Unicode{86}{219}}
+ \def\CJK@five{\Unicode{78}{148}}
+ \def\CJK@six{\Unicode{81}{109}}
+ \def\CJK@seven{\Unicode{78}{3}}
+ \def\CJK@eight{\Unicode{81}{107}}
+ \def\CJK@nine{\Unicode{78}{93}}
+ \def\CJK@ten{\Unicode{83}{65}}
+ \def\CJK@hundred{\Unicode{118}{126}}
+ \def\CJK@thousand{\Unicode{83}{67}}
+ \def\CJK@tenthousand{\Unicode{132}{44}}
+ \def\CJK@hundredmillion{\Unicode{81}{4}}
+
+ \def\CJK@minus{\Unicode{255}{13}}}
+
+
+\newif\ifCJK@zero@
+\newif\ifCJK@previous@
+
+\newif\ifCJK@null@
+
+
+\newcount\CJK@q
+\newcount\CJK@r
+
+
+\def\CJK@digit#1{
+ \ifcase #1\relax
+ \ifCJK@null@ \CJK@null \else \CJK@zero \fi \or
+ \CJK@one \or
+ \CJK@two \or
+ \CJK@three \or
+ \CJK@four \or
+ \CJK@five \or
+ \CJK@six \or
+ \CJK@seven \or
+ \CJK@eight \or
+ \CJK@nine
+ \fi}
+
+
+% This macro splits the number in zzyyyyxxxx (2^^31-1 is the largest
+% possible integer in TeX); zz is \CJK@yi, yyyy is \CJK@high, and
+% xxxx is \CJK@low.
+
+\def\CJK@splitnumber#1{
+ \CJK@q #1
+ \CJK@r #1
+
+ \divide\CJK@q \@M
+ \begingroup
+ \multiply\CJK@q \@M
+ \advance\CJK@r -\CJK@q
+ \ifnum\CJK@r = \z@
+ \xdef\CJK@low{}
+ \else
+ \xdef\CJK@low{\number\CJK@r}
+ \fi
+ \endgroup
+
+ \ifnum\CJK@q > \z@
+ \CJK@r \CJK@q
+
+ \divide\CJK@q \@M
+ \begingroup
+ \multiply\CJK@q \@M
+ \advance\CJK@r -\CJK@q
+ \ifnum\CJK@r = \z@
+ \xdef\CJK@high{}
+ \else
+ \xdef\CJK@high{\number\CJK@r}
+ \fi
+ \endgroup
+
+ \ifnum\CJK@q > \z@
+ \xdef\CJK@yi{\number\CJK@q}
+ \else
+ \xdef\CJK@yi{}
+ \fi
+ \else
+ \xdef\CJK@high{}
+ \xdef\CJK@yi{}
+ \fi
+}
+
+% Here we process four digits
+
+\def\CJK@processnumber#1{
+ \CJK@zero@false
+
+ \CJK@q #1
+ \CJK@r #1
+
+ \divide\CJK@q \@m
+ \ifnum\CJK@q = \z@
+ \ifCJK@previous@
+ \CJK@zero@true
+ \fi
+ \else
+ \ifCJK@zero@
+ \CJK@zero
+ \fi
+ \CJK@digit{\CJK@q}
+ \CJK@thousand
+ \CJK@previous@true
+ \CJK@zero@false
+ \fi
+
+ \multiply\CJK@q \@m
+ \advance\CJK@r -\CJK@q
+ \CJK@q \CJK@r
+
+ \divide\CJK@q 100\relax
+ \ifnum\CJK@q = \z@
+ \ifCJK@previous@
+ \CJK@zero@true
+ \fi
+ \else
+ \ifCJK@zero@
+ \CJK@zero
+ \fi
+ \CJK@digit{\CJK@q}
+ \CJK@hundred
+ \CJK@previous@true
+ \CJK@zero@false
+ \fi
+
+ \multiply\CJK@q 100
+ \advance\CJK@r -\CJK@q
+ \CJK@q \CJK@r
+
+ \divide \CJK@q 10\relax
+ \ifnum\CJK@q = \z@
+ \ifCJK@previous@
+ \CJK@zero@true
+ \fi
+ \else
+ \ifCJK@zero@
+ \CJK@zero
+ \fi
+ \ifnum\CJK@q = \@ne
+ \ifCJK@previous@
+ \CJK@one
+ \fi
+ \else
+ \CJK@digit{\CJK@q}
+ \fi
+ \CJK@ten
+ \CJK@previous@true
+ \CJK@zero@false
+ \fi
+
+ \multiply\CJK@q 10
+ \advance\CJK@r -\CJK@q
+
+ \ifnum\CJK@r = \z@
+ \else
+ \ifCJK@zero@
+ \CJK@zero
+ \fi
+ \CJK@digit{\CJK@r}
+ \CJK@previous@true
+ \fi
+}
+
+
+% this command provides a full CJK representation of a number.
+
+\DeclareRobustCommand\CJKnumber[1]{
+ \CJK@null@false
+
+ \CJK@q #1\relax
+
+ \ifnum\CJK@q < \z@
+ \multiply\CJK@q \m@ne
+ \CJK@minus
+ \CJKkern
+ \fi
+
+ \CJK@previous@false
+ \CJK@zero@false
+
+ \ifnum\CJK@q = \z@
+ \CJK@zero
+ \else
+ \CJK@splitnumber{\CJK@q}
+
+ \ifx\CJK@yi \@empty
+ \else
+ \CJK@processnumber{\CJK@yi}
+ \CJK@hundredmillion
+ \fi
+
+ \ifx\CJK@high \@empty
+ \else
+ \CJK@processnumber{\CJK@high}
+ \CJK@tenthousand
+ \fi
+
+ \ifx\CJK@low \@empty
+ \else
+ \ifx\CJK@yi \@empty
+ \else
+ \ifx\CJK@high \@empty
+ \CJK@zero % this catches 100002345
+ \fi
+ \fi
+ \CJK@processnumber{\CJK@low}
+ \fi
+ \fi}
+
+
+% this command simply converts the given string into CJK digits;
+% the starred version uses the traditional glyph for digit zero.
+
+\DeclareRobustCommand\CJKdigits{
+ \@ifstar{\CJK@null@false\CJK@digits}
+ {\CJK@null@true\CJK@digits}}
+
+\def\CJK@digits#1{
+ {\edef\CJK@tempa{}
+ \edef\CJK@tempb{#1}
+ \ifx\CJK@tempb \@empty
+ \else
+ \loop
+ \expandafter\CJK@getDigit\CJK@tempb\CJK@stop
+ \CJK@digit\CJK@tempa
+ \ifx\CJK@tempb \@empty
+ \else
+ \repeat
+ \fi}}
+
+\def\CJK@getDigit#1#2\CJK@stop{
+ \edef\CJK@tempa{#1}
+ \edef\CJK@tempb{#2}}
+
+
+% reset endline character.
+
+\endlinechar `\^^M
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CJKspace.sty b/language/chinese/CJK/cjk-4.8.5/texinput/CJKspace.sty
new file mode 100644
index 0000000000..606e6ba2c9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CJKspace.sty
@@ -0,0 +1,98 @@
+% This is the file CJKspace.sty of the CJK package
+% for suppressing spaces between CJK characters only.
+%
+% created by Wenchang Sun <sunwch@hotmail.com>
+% Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\NeedsTeXFormat{LaTeX2e}[2001/06/01]
+
+\def\fileversion{3.8.0}
+\def\filedate{2021/10/16}
+\ProvidesPackage{CJKspace}[\filedate\space\fileversion]
+
+
+\endlinechar \m@ne
+
+
+% redefine `\CJK@ignorespaces'.
+
+\def\CJK@@ignorespaces{
+ \expandafter\CJK@@@ignorespaces}
+
+\renewenvironment{CJK*}[3][]{
+ \let\CJK@ignorespaces\CJK@@ignorespaces
+ \CJK@envStart{#1}{#2}{#3}}
+ {\CJK@envEnd}
+
+
+\def\CJK@@@ignorespaces{
+ \futurelet\CJK@next@token
+ \CJK@check@next}
+
+\def\CJK@check@next{
+ \ifx\CJK@next@token\@sptoken
+ \expandafter\CJK@@check@next
+ \fi}
+
+{
+ \catcode`\-=11
+
+ \global\let\-empty\@empty
+
+ % define \CJK@@check@next to gobble subsequent space tokens.
+
+ \def\:{\CJK@@check@next}
+ \global\expandafter\def\: {
+ \futurelet\cjk-let-token
+ \cjk---check-next}
+
+ % since characters in the output of \meaning\something have
+ % catcode 12, we have to change the catcodes of `\', `C',
+ % `J', `K', and `@'.
+
+ \catcode`\/=0
+ \catcode`\C=12
+ \catcode`\J=12
+ \catcode`\K=12
+ \catcode`\@=12
+ \catcode`\\=12
+
+ /gdef/cjk---check-next{
+ /expandafter/cjk-get-keystring
+ /meaning/cjk-let-token\CJK@@@/cjk-space-stop
+ /cjk-temp}
+
+ % we check whether we can find the signature `\CJK@@@' at the
+ % beginning of following macro -- only the CJK package
+ % inserts this.
+
+ /long/gdef/cjk-get-keystring#1\CJK@@@#2/cjk-space-stop{
+ /edef/cjk-temp{#2}
+ /ifx/cjk-temp/-empty
+ /def/cjk-temp{ }
+ /else
+ /def/cjk-temp{}
+ /fi}
+}
+
+
+\endlinechar `\^^M
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CJKulem.sty b/language/chinese/CJK/cjk-4.8.5/texinput/CJKulem.sty
new file mode 100644
index 0000000000..202f845df0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CJKulem.sty
@@ -0,0 +1,193 @@
+% This is the file CJKulem.sty of the CJK package
+% for using the `ulem' package CJK characters.
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\NeedsTeXFormat{LaTeX2e}[1996/12/01]
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesPackage{CJKulem}[\filedate\space\fileversion]
+
+\RequirePackage{ulem}[2000/05/26]
+
+\endlinechar \m@ne
+
+\newdimen\UL@lastkern
+\newskip\CJK@skip
+
+
+\def\UL@CJKnobreakglue{
+ \nobreak
+ \LA@CJKglue
+ \nobreak}
+
+
+\def\UL@CJKglue{
+ \ifx\ \LA@space
+ \LA@CJKglue
+ \else
+ \egroup
+ \UL@stop
+ \ifnum\lastkern = \thr@@
+ \LA@hskip \CJK@skip
+ \else
+ \global\UL@skip \CJK@skip
+ \UL@leaders
+ \fi
+ \UL@start
+ \bgroup
+ \fi}
+
+
+\def\UL@Thaiglue{
+ \ifx\ \LA@space
+ \LA@Thaiglue
+ \else
+ \egroup
+ \egroup
+ \egroup
+ \UL@stop
+ \ifnum\lastkern = \thr@@
+ \LA@hskip \CJK@skip
+ \else
+ \global\UL@skip \CJK@skip
+ \UL@leaders
+ \fi
+ \UL@start
+ \bgroup
+ \fontencoding{C90}\selectfont
+ \bgroup
+ \bgroup
+ \fi}
+
+
+\def\UL@Thaibreak{
+ \ifx\ \LA@space
+ \LA@Thaibreak
+ \else
+ \egroup
+ \egroup
+ \egroup
+ \UL@stop
+ \LA@hskip \z@
+ \UL@start
+ \bgroup
+ \fontencoding{C90}\selectfont
+ \bgroup
+ \bgroup
+ \fi}
+
+
+\def\UL@testLastKern{
+ \global\CJK@false
+ \ifnum\lastkern = \thr@@
+ \ifnum\UL@lastkern = \tw@
+ \global\CJK@true
+ \fi
+ \ifnum\UL@lastkern = 5
+ \global\CJK@true
+ \fi
+ \fi
+
+ \ifnum\lastkern = \tw@
+ \global\CJK@true
+ \fi
+ \ifnum\lastkern = 5
+ \global\CJK@true
+ \fi}
+
+
+\def\UL@testLastCJK{
+ \global\CJK@false
+
+ \ifnum\lastkern = \thr@@
+ \ifnum\UL@lastkern = \@ne
+ \global\CJK@true
+ \fi
+ \fi
+
+ \ifnum\lastkern = \@ne
+ \global\CJK@true
+ \fi}
+
+
+\addto@hook\UL@hook{
+ \let\CJK@savehskip \hskip
+ \let\hskip \LA@hskip
+ \CJKglue
+ \CJK@skip\lastskip
+ \unskip
+ \let\hskip \CJK@savehskip
+ \let\LA@CJKglue \CJKglue
+ \let\LA@Thaiglue \Thaiglue
+ \let\LA@Thaibreak \Thaibreak
+ \let\CJK@nobreakglue \UL@CJKnobreakglue
+ \let\CJKglue \UL@CJKglue
+ \let\Thaiglue \UL@Thaiglue
+ \let\Thaibreak \UL@Thaibreak
+ \let\CJK@testLastKern \UL@testLastKern
+ \let\CJK@testLastCJK \UL@testLastCJK}
+
+
+\def\UL@start{
+ \global\UL@lastkern\lastkern
+ \setbox\UL@box\hbox\bgroup
+ \everyhbox{\UL@hrest}
+ \let\UL@start\@empty
+ \def\UL@unegroup{\bgroup\bgroup}
+ \let\UL@leadtype\@empty
+ \bgroup
+ \kern -3sp
+ \kern 3sp
+ \if@ignore
+ \global\@ignorefalse
+ \ignorespaces
+ \fi}
+
+
+\def\UL@stop{
+ \global\UL@pe\lastpenalty
+ \global\UL@lastkern\lastkern
+ \unpenalty
+ \ifnum\lastkern = \thr@@
+ \egroup
+ \egroup
+ \ifdim\wd\UL@box = \z@
+ \else
+ \UL@putbox
+ \fi
+ \else
+ \egroup
+ \egroup
+ \UL@putbox
+ \fi
+ \ifnum\UL@pe = \z@
+ \else
+ \LA@penalty\UL@pe
+ \fi
+ \kern -\UL@lastkern
+ \kern \UL@lastkern
+ \UL@unegroup}
+
+\endlinechar `\^^M
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CJKutf8.sty b/language/chinese/CJK/cjk-4.8.5/texinput/CJKutf8.sty
new file mode 100644
index 0000000000..d1eab65c7e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CJKutf8.sty
@@ -0,0 +1,720 @@
+% This is the file CJKutf8.sty of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+% in UTF-8 encoding.
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\NeedsTeXFormat{LaTeX2e}[2003/12/01]
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesPackage{CJKutf8}[\filedate\space\fileversion]
+
+\RequirePackage{ifpdf}
+\RequirePackage[utf8]{inputenc}
+\RequirePackage[encapsulated]{CJK}
+\RequirePackageWithOptions{fontenc}
+
+\DeclareOption*{\OptionNotUsed}
+
+\ProcessOptions
+
+
+% we suppress any unwanted spaces produced by linefeeds
+
+\endlinechar\m@ne
+
+% We redefine the basic macros for handling multibyte sequences to call
+% a `\u8:...' macro if it has been defined.
+
+\def\CJK@XX#1#2{
+ \ifx #2\protect
+ \expandafter\CJK@XXp\expandafter#1
+ \else
+ \expandafter\ifx\csname u8:\string #1\string #2\endcsname \relax
+ \csname CJK@\number `#1\endcsname{`#2}
+ \expandafter\CJK@ignorespaces
+ \else
+ \csname u8:\string #1\string #2\endcsname
+ \fi
+ \fi}
+\def\CJK@XXp#1#2{
+ \expandafter\ifx\csname u8:\string #1\string #2\endcsname \relax
+ \csname CJK@\number `#1\endcsname{`#2}
+ \expandafter\CJK@ignorespaces
+ \else
+ \csname u8:\string #1\string #2\endcsname
+ \fi}
+
+\def\CJK@XXX#1#2#3{
+ \ifx #2\protect
+ \expandafter\CJK@XXXp\expandafter#1#3
+ \else
+ \expandafter\ifx\csname u8:\string #1\string #2\string #3\endcsname \relax
+ \csname CJK@\number `#1\endcsname{`#2}{`#3}
+ \expandafter\CJK@ignorespaces
+ \else
+ \csname u8:\string #1\string #2\string #3\endcsname
+ \fi
+ \fi}
+\def\CJK@XXXp#1#2#3#4{
+ \expandafter\ifx\csname u8:\string #1\string #2\string #4\endcsname \relax
+ \csname CJK@\number `#1\endcsname{`#2}{`#4}
+ \expandafter\CJK@ignorespaces
+ \else
+ \csname u8:\string #1\string #2\string #4\endcsname
+ \fi}
+
+% If pdftex is used, emit proper \ToUnicode cmaps. This code is based on
+% cjk-unicmap.sty, part of the hangul-ucs package written by KIM Kang-Soo
+% and KIM Do-Hyun.
+
+\ifpdf
+ % Redefine \pickup@font (again).
+ \def\pickup@font{
+ \CJK@ifundefined\CJK@plane
+ {\expandafter\ifx\font@name \relax% % old definition
+ \define@newfont
+ \fi}
+ {\expandafter% % CJK extension
+ \ifx\csname \curr@fontshape/\f@size/\CJK@plane\endcsname \relax
+ \define@newfont
+ \def\CJK@temp{v}
+ \ifx\CJK@temp\CJK@plane
+ \expandafter
+ \ifx\csname CJK@cmap@\f@family\CJK@plane\endcsname \relax
+ \else
+ \csname CJK@cmap@\f@family\CJK@plane\endcsname
+ \fi
+ \else
+ \CJK@addcmap\CJK@plane
+ \fi
+ \else
+ \xdef\font@name{
+ \csname \curr@fontshape/\f@size/\CJK@plane\endcsname}
+ \fi}}
+
+ % Convert a CJK plane #2 to the corresponding surrogate value, if any.
+ % The result is returned in global macro #1.
+ \def\CJK@surr#1#2{
+ {\expandafter\uppercase\expandafter{
+ \expandafter\@tempcnta \expandafter "\expandafter 0#2\relax}
+ \ifnum \@tempcnta > "0FF\relax
+ % prepare for surrogate
+ \advance\@tempcnta -"0100\relax
+
+ % high surrogate value
+ \@tempcntb \@tempcnta
+ \divide\@tempcntb 4\relax
+ \advance\@tempcntb "0D800\relax
+ \CJK@numbxToHex{\CJK@gtemp}{\@tempcntb}
+ \expandafter\toks@\expandafter{\CJK@gtemp}
+
+ % upper byte of low surrogate value
+ \@tempcntb \@tempcnta
+ \divide\@tempcntb 4\relax
+ \multiply\@tempcntb 4\relax
+ \advance\@tempcnta -\@tempcntb
+ \advance\@tempcnta "0DC\relax
+ \CJK@numbToHex{\CJK@gtemp}{\@tempcnta}
+ \xdef#1{\the\toks@\CJK@gtemp}
+ \else
+ \xdef#1{#2}
+ \fi}}
+
+ \def\CJK@addcmap#1{
+ {\expandafter\ifx\csname CJK@CMap@#1\endcsname \relax
+ \CJK@surr{\CJK@gtemp}{#1}
+ \immediate\pdfobj stream {
+ /CIDInit /ProcSet findresource begin %
+ 12 dict begin %
+ begincmap %
+ /CIDSystemInfo << %
+ /Registry (TeX) %
+ /Ordering (Uni#1) %
+ /Supplement 0 >> def %
+ /CMapName /TeX-Uni#1-0 def %
+ 1 begincodespacerange <00> <FF> endcodespacerange %
+ 1 beginbfrange <00> <FF> <\CJK@gtemp 00> endbfrange %
+ endcmap %
+ CMapName currentdict /CMap defineresource %
+ pop %
+ end %
+ end }
+ \expandafter\xdef\csname CJK@CMap@#1\endcsname{
+ \the\pdflastobj}
+ \fi
+ \pdffontattr\font@name{
+ /ToUnicode \csname CJK@CMap@#1\endcsname\space 0 R}}}
+\fi
+
+
+% provide hooks for hyperref.sty to automatically emit UTF-16BE for
+% bookmarks -- note that we must do everything with expansion;
+% only eTeX provides numerical expression handling which works
+% within \xdef.
+
+% 110aaaaa 10bbbbbb
+%
+% aaaaa (two octal digits) is handled by \CJK@UnicodeTwoBytesFirst
+% bbbbbb (two octal digits) is handled by \CJK@UnicodeLast
+%
+%
+% 1110aaaa 10abbbbb 10cccccc
+%
+% aaaaa (two octal digits) is handled by \CJK@UnicodeThreeBytesFirst
+% bbbbbb (two octal digits) is handled by \CJK@UnicodeThreeBytesSecond
+% cccccc (two octal digits) is handled by \CJK@UnicodeLast
+%
+%
+% 11110uuu 10uubbbb 10bbcccc 10dddddd
+%
+% is emitted as a surrogate pair
+%
+% 110110aa aabbbbbb 110111cc ccdddddd
+%
+% (aaaa = uuuuu - 1; 0 < uuuuu <= 10000)
+%
+% 110110aaaa (four octal digits) is handled by \CJK@UnicodeFourBytesFirst
+% bbbbbb (two octal digits) is handled by \CJK@UnicodeFourBytesSecond
+% 110111cccc (four octal digits) is handled by \CJK@UnicodeFourBytesThird
+% dddddd (two octal digits) is handled by \CJK@UnicodeLast
+%
+
+\def\CJK@UnicodeFourBytesFirst#1#2{
+ \33
+
+ \ifnum #2 > '257\relax
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or 0\2\or 1\2\or 2\2\or 3\2
+ \fi
+ \else
+ \ifnum #2 > '237\relax
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or 0\1\or 1\1\or 2\1\or 3\1
+ \fi
+ \else
+ \ifnum #2 > '217\relax
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or 0\0\or 1\0\or 2\0\or 3\0
+ \fi
+ \else
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or 0\3\or 1\3\or 2\3\or 3\3
+ \fi
+ \fi
+ \fi
+ \fi}
+
+\def\CJK@UnicodeFourBytesSecond#1#2{
+ \ifnum #2 > '257\relax
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or 03\or 07\or 13\or 17\or 23\or 27\or 33\or 37
+ \or 43\or 47\or 53\or 57\or 63\or 67\or 73\or 77
+ \or 03\or 07\or 13\or 17\or 23\or 27\or 33\or 37
+ \or 43\or 47\or 53\or 57\or 63\or 67\or 73\or 77
+ \or 03\or 07\or 13\or 17\or 23\or 27\or 33\or 37
+ \or 43\or 47\or 53\or 57\or 63\or 67\or 73\or 77
+ \or 03\or 07\or 13\or 17\or 23\or 27\or 33\or 37
+ \or 43\or 47\or 53\or 57\or 63\or 67\or 73\or 77
+ \fi
+ \else
+ \ifnum #2 > '237\relax
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or 02\or 06\or 12\or 16\or 22\or 26\or 32\or 36
+ \or 42\or 46\or 52\or 56\or 62\or 66\or 72\or 76
+ \or 02\or 06\or 12\or 16\or 22\or 26\or 32\or 36
+ \or 42\or 46\or 52\or 56\or 62\or 66\or 72\or 76
+ \or 02\or 06\or 12\or 16\or 22\or 26\or 32\or 36
+ \or 42\or 46\or 52\or 56\or 62\or 66\or 72\or 76
+ \or 02\or 06\or 12\or 16\or 22\or 26\or 32\or 36
+ \or 42\or 46\or 52\or 56\or 62\or 66\or 72\or 76
+ \fi
+ \else
+ \ifnum #2 > '217\relax
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or 01\or 05\or 11\or 15\or 21\or 25\or 31\or 35
+ \or 41\or 45\or 51\or 55\or 61\or 65\or 71\or 75
+ \or 01\or 05\or 11\or 15\or 21\or 25\or 31\or 35
+ \or 41\or 45\or 51\or 55\or 61\or 65\or 71\or 75
+ \or 01\or 05\or 11\or 15\or 21\or 25\or 31\or 35
+ \or 41\or 45\or 51\or 55\or 61\or 65\or 71\or 75
+ \or 01\or 05\or 11\or 15\or 21\or 25\or 31\or 35
+ \or 41\or 45\or 51\or 55\or 61\or 65\or 71\or 75
+ \fi
+ \else
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or 00\or 04\or 10\or 14\or 20\or 24\or 30\or 34
+ \or 40\or 44\or 50\or 54\or 60\or 64\or 70\or 74
+ \or 00\or 04\or 10\or 14\or 20\or 24\or 30\or 34
+ \or 40\or 44\or 50\or 54\or 60\or 64\or 70\or 74
+ \or 00\or 04\or 10\or 14\or 20\or 24\or 30\or 34
+ \or 40\or 44\or 50\or 54\or 60\or 64\or 70\or 74
+ \or 00\or 04\or 10\or 14\or 20\or 24\or 30\or 34
+ \or 40\or 44\or 50\or 54\or 60\or 64\or 70\or 74
+ \fi
+ \fi
+ \fi
+ \fi}
+
+\def\CJK@UnicodeFourBytesThird#1{
+ \33
+
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or 4\0\or 4\1\or 4\2\or 4\3\or 5\0\or 5\1\or 5\2\or 5\3
+ \or 6\0\or 6\1\or 6\2\or 6\3\or 7\0\or 7\1\or 7\2\or 7\3
+ \or 4\0\or 4\1\or 4\2\or 4\3\or 5\0\or 5\1\or 5\2\or 5\3
+ \or 6\0\or 6\1\or 6\2\or 6\3\or 7\0\or 7\1\or 7\2\or 7\3
+ \or 4\0\or 4\1\or 4\2\or 4\3\or 5\0\or 5\1\or 5\2\or 5\3
+ \or 6\0\or 6\1\or 6\2\or 6\3\or 7\0\or 7\1\or 7\2\or 7\3
+ \or 4\0\or 4\1\or 4\2\or 4\3\or 5\0\or 5\1\or 5\2\or 5\3
+ \or 6\0\or 6\1\or 6\2\or 6\3\or 7\0\or 7\1\or 7\2\or 7\3
+ \fi
+}
+
+\def\CJK@UnicodeThreeBytesFirst#1#2{
+ \ifnum #2 > '237\relax
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \01\or \03\or \05\or \07\or \11\or \13\or \15\or \17
+ \or \21\or \23\or \25\or \27\or \31\or \33\or \35\or \37
+ \fi
+ \else
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \00\or \02\or \04\or \06\or \10\or \12\or \14\or \16
+ \or \20\or \22\or \24\or \26\or \30\or \32\or \34\or \35
+ \fi
+ \fi}
+
+\def\CJK@UnicodeThreeBytesSecond#1{
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or 0\0\or 0\1\or 0\2\or 0\3\or 1\0\or 1\1\or 1\2\or 1\3
+ \or 2\0\or 2\1\or 2\2\or 2\3\or 3\0\or 3\1\or 3\2\or 3\3
+ \or 4\0\or 4\1\or 4\2\or 4\3\or 5\0\or 5\1\or 5\2\or 5\3
+ \or 6\0\or 6\1\or 6\2\or 6\3\or 7\0\or 7\1\or 7\2\or 7\3
+ \or 0\0\or 0\1\or 0\2\or 0\3\or 1\0\or 1\1\or 1\2\or 1\3
+ \or 2\0\or 2\1\or 2\2\or 2\3\or 3\0\or 3\1\or 3\2\or 3\3
+ \or 4\0\or 4\1\or 4\2\or 4\3\or 5\0\or 5\1\or 5\2\or 5\3
+ \or 6\0\or 6\1\or 6\2\or 6\3\or 7\0\or 7\1\or 7\2\or 7\3
+ \fi}
+
+\def\CJK@UnicodeTwoBytesFirst#1{
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \000\0\or \000\1\or \000\2\or \000\3
+ \or \001\0\or \001\1\or \001\2\or \001\3
+ \or \002\0\or \002\1\or \002\2\or \002\3
+ \or \003\0\or \003\1\or \003\2\or \003\3
+ \or \004\0\or \004\1\or \004\2\or \004\3
+ \or \005\0\or \005\1\or \005\2\or \005\3
+ \or \006\0\or \006\1\or \006\2\or \006\3
+ \or \007\0\or \007\1\or \007\2\or \007\3
+ \fi}
+
+\def\CJK@UnicodeLast#1{
+ \ifcase #1
+ \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+ \or \or \or \or \or \or \or \or
+
+ \or 00\or 01\or 02\or 03\or 04\or 05\or 06\or 07
+ \or 10\or 11\or 12\or 13\or 14\or 15\or 16\or 17
+ \or 20\or 21\or 22\or 23\or 24\or 25\or 26\or 27
+ \or 30\or 31\or 32\or 33\or 34\or 35\or 36\or 37
+ \or 40\or 41\or 42\or 43\or 44\or 45\or 46\or 47
+ \or 50\or 51\or 52\or 53\or 54\or 55\or 56\or 57
+ \or 60\or 61\or 62\or 63\or 64\or 65\or 66\or 67
+ \or 70\or 71\or 72\or 73\or 74\or 75\or 76\or 77
+ \fi}
+
+
+\def\CJK@XXpdf#1#2{
+ \CJK@UnicodeTwoBytesFirst{`#1}
+ \CJK@UnicodeLast{`#2}}
+
+\def\CJK@XXXpdf#1#2#3{
+ \CJK@UnicodeThreeBytesFirst{`#1}{`#2}
+ \CJK@UnicodeThreeBytesSecond{`#2}
+ \CJK@UnicodeLast{`#3}}
+
+\def\CJK@XXXXpdf#1#2#3#4{
+ \CJK@UnicodeFourBytesFirst{`#1}{`#2}
+ \CJK@UnicodeFourBytesSecond{`#2}{`#3}
+ \CJK@UnicodeFourBytesThird{`#3}
+ \CJK@UnicodeLast{`#4}}
+
+
+\ifx\pdfstringdefPreHook \undefined
+ \def\pdfstringdefPreHook{}
+\fi
+\g@addto@macro\pdfstringdefPreHook{
+ \let\CJK@XX \CJK@XXpdf
+ \let\CJK@XXX \CJK@XXXpdf
+ \let\CJK@XXXX \CJK@XXXXpdf}
+
+
+% reset endline character
+
+\endlinechar `\^^M
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CJKvert.sty b/language/chinese/CJK/cjk-4.8.5/texinput/CJKvert.sty
new file mode 100644
index 0000000000..d01a689f73
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CJKvert.sty
@@ -0,0 +1,159 @@
+% This is the file CJKvert.sty of the CJK package
+% for vertical typesetting.
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesPackage{CJKvert}[\filedate\space\fileversion]
+
+\RequirePackage{graphicx}
+
+\newif\ifCJK@useBaselinestretch@
+\CJK@useBaselinestretch@false
+
+\DeclareOption{usebaselinestretch}{\CJK@useBaselinestretch@true}
+
+\ProcessOptions
+
+\newcommand{\CJKbaselinestretch}{1.3}
+
+
+% we suppress any unwanted spaces produced by linefeeds.
+
+\endlinechar \m@ne
+
+
+\newif\ifCJK@vertical@
+\CJK@vertical@false
+
+\ifCJK@useBaselinestretch@
+ \edef\CJK@horzBaselinestretch{\baselinestretch}
+\fi
+
+\newcommand{\CJKvert}{
+ \CJK@vertical@true
+ \gdef\CJK@direction{v}
+
+ \ifCJK@useBaselinestretch@
+ \edef\CJK@horzBaselinestretch{\baselinestretch}
+ \dimen@ 1pt
+ \dimen@ \CJK@horzBaselinestretch\dimen@
+ \dimen@ \CJKbaselinestretch\dimen@
+ \edef\baselinestretch{\strip@pt\dimen@}
+ \else
+ \edef\baselinestretch{\CJKbaselinestretch}
+ \fi
+
+ \normalfont}
+
+\newcommand{\CJKhorz}{
+ \CJK@vertical@false
+ \gdef\CJK@direction{h}
+
+ \ifCJK@useBaselinestretch@
+ \edef\baselinestretch{\CJK@horzBaselinestretch}
+ \else
+ \edef\baselinestretch{1}
+ \fi
+
+ \normalfont}
+
+\AtBeginDocument{\CJKvert}
+
+
+% we redefine \CJKsymbol so that pseudo bold characters will be shifted
+% vertically, not horizontally.
+%
+% for fonts without vertical representation forms, some glyphs shouldn't
+% be rotated; \CJKsymbolsimple can be then used for a redefinition in
+% the `.fdx' file.
+
+\newcommand{\CJKsymbolsimple}[1]{
+ \edef\CJK@temp{\csname \CJK@enc/\CJK@family/simpleoffset\endcsname}
+ \expandafter\ifx\CJK@temp \relax
+ \edef\CJK@temp{0pt}
+ \fi
+ \ifCJK@bold@
+ \raise \CJK@temp \hbox{\symbol{#1}}
+ \raise \CJK@temp \hbox to \z@{\hss \raise\CJKboldshift\hbox{\symbol{#1}}}
+ \raise \CJK@temp \hbox to \z@{\hss \raise-\CJKboldshift\hbox{\symbol{#1}}}
+ \else
+ \raise \CJK@temp \hbox{\symbol{#1}}
+ \fi
+}
+
+\DeclareRobustCommand{\CJKsymbol}[1]{
+ \ifCJK@vertical@
+ \expandafter\ifx\csname \CJK@enc/\CJK@family/norotate/v\endcsname \relax
+ \edef\CJK@tempa{\csname \CJK@enc/\CJK@family/offset/v\endcsname}
+ \expandafter\ifx\CJK@tempa \relax
+ \edef\CJK@tempa{0pt}
+ \fi
+ \edef\CJK@tempb{\csname \CJK@enc/\CJK@family/fullheight/v\endcsname}
+ \expandafter\ifx\CJK@tempb \relax
+ \def\CJK@temp{\rotatebox[x=\CJK@tempa]{90}{\symbol{#1}}}
+ \else
+ \edef\CJK@tempc{\csname \CJK@enc/\CJK@family/height/v\endcsname}
+ \expandafter\ifx\CJK@tempc \relax
+ \edef\CJK@tempc{0pt}
+ \fi
+ \setbox\@tempboxa\hbox{\symbol{#1}}
+ \ht\@tempboxa \CJK@tempc
+ \@tempdima\CJK@tempb
+ \advance\@tempdima -\CJK@tempc
+ \dp\@tempboxa \@tempdima
+ \def\CJK@temp{
+ \rotatebox[x=\CJK@tempa]{90}{\copy\@tempboxa}}
+ \fi
+ \else
+ \def\CJK@temp{\symbol{#1}}
+ \fi
+ \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
+ \else
+ \edef\CJK@tempa{\csname \CJK@enc/\CJK@family/offset/h\endcsname}
+ \expandafter\ifx\CJK@tempa \relax
+ \edef\CJK@tempa{0pt}
+ \fi
+ \edef\CJK@temp{\raise\CJK@tempa\hbox{\symbol{#1}}}
+ \leavevmode
+ \ifCJK@bold@
+ \CJK@temp
+ \hbox to \CJKboldshift{\hss\CJK@temp}
+ \hbox to \CJKboldshift{\hss\CJK@temp}
+ \else
+ \CJK@temp
+ \fi
+ \fi}
+
+
+% reset endline character.
+
+\endlinechar `\^^M
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.bdg b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.bdg
new file mode 100644
index 0000000000..0ef5c3b5c7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.bdg
@@ -0,0 +1,130 @@
+% This is the file EUC-TW.bdg of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{EUC-TW.bdg}[\filedate\space\fileversion]
+
+
+% The EUC-TW bindings (with single shift).
+
+\global\@namedef{CJK@EUC-TWBinding}{
+ \CJK@nameppppdef{^^8e}
+
+ \CJK@nameppdef{^^a1}
+ \CJK@nameppdef{^^a2}
+ \CJK@nameppdef{^^a3}
+ \CJK@nameppdef{^^a4}
+ \CJK@nameppdef{^^a5}
+ \CJK@nameppdef{^^a6}
+ \CJK@nameppdef{^^a7}
+ \CJK@nameppdef{^^a8}
+ \CJK@nameppdef{^^a9}
+ \CJK@nameppdef{^^aa}
+ \CJK@nameppdef{^^ab}
+ \CJK@nameppdef{^^ac}
+ \CJK@nameppdef{^^ad}
+ \CJK@nameppdef{^^ae}
+ \CJK@nameppdef{^^af}
+ \CJK@nameppdef{^^b0}
+ \CJK@nameppdef{^^b1}
+ \CJK@nameppdef{^^b2}
+ \CJK@nameppdef{^^b3}
+ \CJK@nameppdef{^^b4}
+ \CJK@nameppdef{^^b5}
+ \CJK@nameppdef{^^b6}
+ \CJK@nameppdef{^^b7}
+ \CJK@nameppdef{^^b8}
+ \CJK@nameppdef{^^b9}
+ \CJK@nameppdef{^^ba}
+ \CJK@nameppdef{^^bb}
+ \CJK@nameppdef{^^bc}
+ \CJK@nameppdef{^^bd}
+ \CJK@nameppdef{^^be}
+ \CJK@nameppdef{^^bf}
+ \CJK@nameppdef{^^c0}
+ \CJK@nameppdef{^^c1}
+ \CJK@nameppdef{^^c2}
+ \CJK@nameppdef{^^c3}
+ \CJK@nameppdef{^^c4}
+ \CJK@nameppdef{^^c5}
+ \CJK@nameppdef{^^c6}
+ \CJK@nameppdef{^^c7}
+ \CJK@nameppdef{^^c8}
+ \CJK@nameppdef{^^c9}
+ \CJK@nameppdef{^^ca}
+ \CJK@nameppdef{^^cb}
+ \CJK@nameppdef{^^cc}
+ \CJK@nameppdef{^^cd}
+ \CJK@nameppdef{^^ce}
+ \CJK@nameppdef{^^cf}
+ \CJK@nameppdef{^^d0}
+ \CJK@nameppdef{^^d1}
+ \CJK@nameppdef{^^d2}
+ \CJK@nameppdef{^^d3}
+ \CJK@nameppdef{^^d4}
+ \CJK@nameppdef{^^d5}
+ \CJK@nameppdef{^^d6}
+ \CJK@nameppdef{^^d7}
+ \CJK@nameppdef{^^d8}
+ \CJK@nameppdef{^^d9}
+ \CJK@nameppdef{^^da}
+ \CJK@nameppdef{^^db}
+ \CJK@nameppdef{^^dc}
+ \CJK@nameppdef{^^dd}
+ \CJK@nameppdef{^^de}
+ \CJK@nameppdef{^^df}
+ \CJK@nameppdef{^^e0}
+ \CJK@nameppdef{^^e1}
+ \CJK@nameppdef{^^e2}
+ \CJK@nameppdef{^^e3}
+ \CJK@nameppdef{^^e4}
+ \CJK@nameppdef{^^e5}
+ \CJK@nameppdef{^^e6}
+ \CJK@nameppdef{^^e7}
+ \CJK@nameppdef{^^e8}
+ \CJK@nameppdef{^^e9}
+ \CJK@nameppdef{^^ea}
+ \CJK@nameppdef{^^eb}
+ \CJK@nameppdef{^^ec}
+ \CJK@nameppdef{^^ed}
+ \CJK@nameppdef{^^ee}
+ \CJK@nameppdef{^^ef}
+ \CJK@nameppdef{^^f0}
+ \CJK@nameppdef{^^f1}
+ \CJK@nameppdef{^^f2}
+ \CJK@nameppdef{^^f3}
+ \CJK@nameppdef{^^f4}
+ \CJK@nameppdef{^^f5}
+ \CJK@nameppdef{^^f6}
+ \CJK@nameppdef{^^f7}
+ \CJK@nameppdef{^^f8}
+ \CJK@nameppdef{^^f9}
+ \CJK@nameppdef{^^fa}
+ \CJK@nameppdef{^^fb}
+ \CJK@nameppdef{^^fc}
+ \CJK@nameppdef{^^fd}
+ \CJK@nameppdef{^^fe}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.chr b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.chr
new file mode 100644
index 0000000000..2bf303aba0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.chr
@@ -0,0 +1,210 @@
+% This is the file EUC-TW.chr of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{EUC-TW.chr}[\filedate\space\fileversion]
+
+
+% define macros for handling characters in EUC-TW encoding.
+
+\global\@namedef{CJK@EUC-TWChr}{
+ \CJK@global\def\CJK@char##1##2##3{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##3\relax
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% the same, but the plane crosses the font file boundary.
+
+ \CJK@global\def\CJK@charx##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \@tempcntb 256\relax
+ \advance\@tempcnta ##3\relax
+ \advance\@tempcntb -##3\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##4 < \@temp
+ \edef\CJK@plane{##1}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##2}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% for punctuation.
+
+ \CJK@global\def\CJK@punctchar##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##4}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \advance\@tempcnta ##3\relax
+ \edef\CJK@plane{##2}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}
+
+ \CJK@global\def\CJK@punctcharx##1##2##3##4##5{
+ {\ifnum ##5 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##5 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##5}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##5\relax
+ \@tempcntb 256\relax
+ \advance\@tempcnta ##4\relax
+ \advance\@tempcntb -##4\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##5 < \@temp
+ \edef\CJK@plane{##2}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##3}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}
+
+% for CNS characters accessed via the SS2 code (0x8E)
+
+ \CJK@global\def\CJK@shiftchar##1##2##3{
+ {\CJK@numbToHex{\CJK@gtemp}{##1}
+ \CJKchar[CNS\expandafter\@secondoftwo\CJK@gtemp]
+ {\number ##2}{\number ##3}}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.enc b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.enc
new file mode 100644
index 0000000000..71b1063cb9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/EUC-TW.enc
@@ -0,0 +1,138 @@
+% This is the file EUC-TW.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{EUC-TW.enc}[\filedate\space\fileversion]
+
+
+% EUC-TW encoding:
+%
+% CNS 11643-1992 planes 1-7 (C31-C37) 0x8EA1A1A1-0x8EA7FEFE
+% CNS 11643-1992 plane 1 (C31) 0xA1A1-0xFEFE
+
+\global\@namedef{CJK@EUC-TWEncoding}{
+ \CJK@loadChr{EUC-TW}
+
+ % if in preprocessed mode, `\@gobble' will be gobbled, and
+ % \CJK@shiftError becomes active
+ \CJK@namegdef{^^8e}##1##2##3{\@gobble\CJK@shiftError
+ \CJK@shiftchar{##1}{##2}{##3}}
+
+ \CJK@namegdef{^^a1}##1{\@empty\CJK@punctchar {A1}{01}{-161}{##1}}
+ \CJK@namegdef{^^a2}##1{\@empty\CJK@punctchar {A2}{01}{ -67}{##1}}
+ \CJK@namegdef{^^a3}##1{\@empty\CJK@punctcharx{A3}{01}{02}{27}{##1}}
+ \CJK@namegdef{^^a4}##1{\@empty\CJK@punctchar {A4}{02}{-135}{##1}}
+ \CJK@namegdef{^^a5}##1{\@empty\CJK@punctchar {A5}{02}{ -41}{##1}}
+ \CJK@namegdef{^^a6}##1{\@empty\CJK@charx{02}{03}{53}{##1}}
+ \CJK@namegdef{^^a7}##1{\@empty\CJK@char {03}{-109}{##1}}
+ \CJK@namegdef{^^a8}##1{\@empty\CJK@char {03}{ -15}{##1}}
+ \CJK@namegdef{^^a9}##1{\@empty\CJK@charx{03}{04}{79}{##1}}
+ \CJK@namegdef{^^aa}##1{\@empty\CJK@char {04}{ -83}{##1}}
+ \CJK@namegdef{^^ab}##1{\@empty\CJK@charx{04}{05}{11}{##1}}
+ \CJK@namegdef{^^ac}##1{\@empty\CJK@char {05}{-151}{##1}}
+ \CJK@namegdef{^^ad}##1{\@empty\CJK@char {05}{ -57}{##1}}
+ \CJK@namegdef{^^ae}##1{\@empty\CJK@charx{05}{06}{37}{##1}}
+ \CJK@namegdef{^^af}##1{\@empty\CJK@char {06}{-125}{##1}}
+ \CJK@namegdef{^^b0}##1{\@empty\CJK@char {06}{ -31}{##1}}
+ \CJK@namegdef{^^b1}##1{\@empty\CJK@charx{06}{07}{63}{##1}}
+ \CJK@namegdef{^^b2}##1{\@empty\CJK@char {07}{ -99}{##1}}
+ \CJK@namegdef{^^b3}##1{\@empty\CJK@char {07}{ -5}{##1}}
+ \CJK@namegdef{^^b4}##1{\@empty\CJK@charx{07}{08}{89}{##1}}
+ \CJK@namegdef{^^b5}##1{\@empty\CJK@char {08}{ -73}{##1}}
+ \CJK@namegdef{^^b6}##1{\@empty\CJK@charx{08}{09}{21}{##1}}
+ \CJK@namegdef{^^b7}##1{\@empty\CJK@char {09}{-141}{##1}}
+ \CJK@namegdef{^^b8}##1{\@empty\CJK@char {09}{ -47}{##1}}
+ \CJK@namegdef{^^b9}##1{\@empty\CJK@charx{09}{10}{47}{##1}}
+ \CJK@namegdef{^^ba}##1{\@empty\CJK@char {10}{-115}{##1}}
+ \CJK@namegdef{^^bb}##1{\@empty\CJK@char {10}{ -21}{##1}}
+ \CJK@namegdef{^^bc}##1{\@empty\CJK@charx{10}{11}{73}{##1}}
+ \CJK@namegdef{^^bd}##1{\@empty\CJK@char {11}{ -89}{##1}}
+ \CJK@namegdef{^^be}##1{\@empty\CJK@charx{11}{12}{ 5}{##1}}
+ \CJK@namegdef{^^bf}##1{\@empty\CJK@char {12}{-157}{##1}}
+ \CJK@namegdef{^^c0}##1{\@empty\CJK@char {12}{ -63}{##1}}
+ \CJK@namegdef{^^c1}##1{\@empty\CJK@charx{12}{13}{31}{##1}}
+ \CJK@namegdef{^^c2}##1{\@empty\CJK@char {13}{-131}{##1}}
+ \CJK@namegdef{^^c3}##1{\@empty\CJK@char {13}{ -37}{##1}}
+ \CJK@namegdef{^^c4}##1{\@empty\CJK@charx{13}{14}{57}{##1}}
+ \CJK@namegdef{^^c5}##1{\@empty\CJK@char {14}{-105}{##1}}
+ \CJK@namegdef{^^c6}##1{\@empty\CJK@char {14}{ -11}{##1}}
+ \CJK@namegdef{^^c7}##1{\@empty\CJK@charx{14}{15}{83}{##1}}
+ \CJK@namegdef{^^c8}##1{\@empty\CJK@char {15}{ -79}{##1}}
+ \CJK@namegdef{^^c9}##1{\@empty\CJK@charx{15}{16}{15}{##1}}
+ \CJK@namegdef{^^ca}##1{\@empty\CJK@char {16}{-147}{##1}}
+ \CJK@namegdef{^^cb}##1{\@empty\CJK@char {16}{ -53}{##1}}
+ \CJK@namegdef{^^cc}##1{\@empty\CJK@charx{16}{17}{41}{##1}}
+ \CJK@namegdef{^^cd}##1{\@empty\CJK@char {17}{-121}{##1}}
+ \CJK@namegdef{^^ce}##1{\@empty\CJK@char {17}{ -27}{##1}}
+ \CJK@namegdef{^^cf}##1{\@empty\CJK@charx{17}{18}{67}{##1}}
+ \CJK@namegdef{^^d0}##1{\@empty\CJK@char {18}{ -95}{##1}}
+ \CJK@namegdef{^^d1}##1{\@empty\CJK@char {18}{ -1}{##1}}
+ \CJK@namegdef{^^d2}##1{\@empty\CJK@charx{18}{19}{93}{##1}}
+ \CJK@namegdef{^^d3}##1{\@empty\CJK@char {19}{ -69}{##1}}
+ \CJK@namegdef{^^d4}##1{\@empty\CJK@charx{19}{20}{25}{##1}}
+ \CJK@namegdef{^^d5}##1{\@empty\CJK@char {20}{-137}{##1}}
+ \CJK@namegdef{^^d6}##1{\@empty\CJK@char {20}{ -43}{##1}}
+ \CJK@namegdef{^^d7}##1{\@empty\CJK@charx{20}{21}{51}{##1}}
+ \CJK@namegdef{^^d8}##1{\@empty\CJK@char {21}{-111}{##1}}
+ \CJK@namegdef{^^d9}##1{\@empty\CJK@char {21}{ -17}{##1}}
+ \CJK@namegdef{^^da}##1{\@empty\CJK@charx{21}{22}{77}{##1}}
+ \CJK@namegdef{^^db}##1{\@empty\CJK@char {22}{ -85}{##1}}
+ \CJK@namegdef{^^dc}##1{\@empty\CJK@charx{22}{23}{ 9}{##1}}
+ \CJK@namegdef{^^dd}##1{\@empty\CJK@char {23}{-153}{##1}}
+ \CJK@namegdef{^^de}##1{\@empty\CJK@char {23}{ -59}{##1}}
+ \CJK@namegdef{^^df}##1{\@empty\CJK@charx{23}{24}{35}{##1}}
+ \CJK@namegdef{^^e0}##1{\@empty\CJK@char {24}{-127}{##1}}
+ \CJK@namegdef{^^e1}##1{\@empty\CJK@char {24}{ -33}{##1}}
+ \CJK@namegdef{^^e2}##1{\@empty\CJK@charx{24}{25}{61}{##1}}
+ \CJK@namegdef{^^e3}##1{\@empty\CJK@char {25}{-101}{##1}}
+ \CJK@namegdef{^^e4}##1{\@empty\CJK@char {25}{ -7}{##1}}
+ \CJK@namegdef{^^e5}##1{\@empty\CJK@charx{25}{26}{87}{##1}}
+ \CJK@namegdef{^^e6}##1{\@empty\CJK@char {26}{ -75}{##1}}
+ \CJK@namegdef{^^e7}##1{\@empty\CJK@charx{26}{27}{19}{##1}}
+ \CJK@namegdef{^^e8}##1{\@empty\CJK@char {27}{-143}{##1}}
+ \CJK@namegdef{^^e9}##1{\@empty\CJK@char {27}{ -49}{##1}}
+ \CJK@namegdef{^^ea}##1{\@empty\CJK@charx{27}{28}{45}{##1}}
+ \CJK@namegdef{^^eb}##1{\@empty\CJK@char {28}{-117}{##1}}
+ \CJK@namegdef{^^ec}##1{\@empty\CJK@char {28}{ -23}{##1}}
+ \CJK@namegdef{^^ed}##1{\@empty\CJK@charx{28}{29}{71}{##1}}
+ \CJK@namegdef{^^ee}##1{\@empty\CJK@char {29}{ -91}{##1}}
+ \CJK@namegdef{^^ef}##1{\@empty\CJK@charx{29}{30}{ 3}{##1}}
+ \CJK@namegdef{^^f0}##1{\@empty\CJK@char {30}{-159}{##1}}
+ \CJK@namegdef{^^f1}##1{\@empty\CJK@char {30}{ -65}{##1}}
+ \CJK@namegdef{^^f2}##1{\@empty\CJK@charx{30}{31}{29}{##1}}
+ \CJK@namegdef{^^f3}##1{\@empty\CJK@char {31}{-133}{##1}}
+ \CJK@namegdef{^^f4}##1{\@empty\CJK@char {31}{ -39}{##1}}
+ \CJK@namegdef{^^f5}##1{\@empty\CJK@charx{31}{32}{55}{##1}}
+ \CJK@namegdef{^^f6}##1{\@empty\CJK@char {32}{-107}{##1}}
+ \CJK@namegdef{^^f7}##1{\@empty\CJK@char {32}{ -13}{##1}}
+ \CJK@namegdef{^^f8}##1{\@empty\CJK@charx{32}{33}{81}{##1}}
+ \CJK@namegdef{^^f9}##1{\@empty\CJK@char {33}{ -81}{##1}}
+ \CJK@namegdef{^^fa}##1{\@empty\CJK@charx{33}{34}{13}{##1}}
+ \CJK@namegdef{^^fb}##1{\@empty\CJK@char {34}{-149}{##1}}
+ \CJK@namegdef{^^fc}##1{\@empty\CJK@char {34}{ -55}{##1}}
+ \CJK@namegdef{^^fd}##1{\@empty\CJK@charx{34}{35}{39}{##1}}
+ \CJK@namegdef{^^fe}##1{\@empty\CJK@char {35}{-123}{##1}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c31song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c31song.fd
new file mode 100644
index 0000000000..b607ff7487
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c31song.fd
@@ -0,0 +1,23 @@
+% This is the file c31song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c31song.fd}[\filedate\space\fileversion]
+
+
+% Chinese traditional characters
+%
+% character set: CNS 11643-1992 plane 1
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C31}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C31}{song}{m}{n}{<-> CJK * c1so12}{\CJKnormal}
+\DeclareFontShape{C31}{song}{bx}{n}{<-> CJKb * c1so12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c32song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c32song.fd
new file mode 100644
index 0000000000..fc215fe051
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c32song.fd
@@ -0,0 +1,23 @@
+% This is the file c32song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c32song.fd}[\filedate\space\fileversion]
+
+
+% Chinese traditional characters
+%
+% character set: CNS 11643-1992 plane 2
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C32}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C32}{song}{m}{n}{<-> CJK * c2so12}{\CJKnormal}
+\DeclareFontShape{C32}{song}{bx}{n}{<-> CJKb * c2so12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c33song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c33song.fd
new file mode 100644
index 0000000000..445f370bbb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c33song.fd
@@ -0,0 +1,23 @@
+% This is the file c33song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c33song.fd}[\filedate\space\fileversion]
+
+
+% Chinese traditional characters
+%
+% character set: CNS 11643-1992 plane 3
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C33}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C33}{song}{m}{n}{<-> CJK * c3so12}{\CJKnormal}
+\DeclareFontShape{C33}{song}{bx}{n}{<-> CJKb * c3so12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c34song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c34song.fd
new file mode 100644
index 0000000000..40eb3c1ee6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c34song.fd
@@ -0,0 +1,23 @@
+% This is the file c34song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c34song.fd}[\filedate\space\fileversion]
+
+
+% Chinese traditional characters
+%
+% character set: CNS 11643-1992 plane 4
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C34}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C34}{song}{m}{n}{<-> CJK * c4so12}{\CJKnormal}
+\DeclareFontShape{C34}{song}{bx}{n}{<-> CJKb * c4so12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c35song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c35song.fd
new file mode 100644
index 0000000000..9f3a3e65d7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c35song.fd
@@ -0,0 +1,23 @@
+% This is the file c35song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c35song.fd}[\filedate\space\fileversion]
+
+
+% Chinese traditional characters
+%
+% character set: CNS 11643-1992 plane 5
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C35}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C35}{song}{m}{n}{<-> CJK * c5so12}{\CJKnormal}
+\DeclareFontShape{C35}{song}{bx}{n}{<-> CJKb * c5so12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c36song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c36song.fd
new file mode 100644
index 0000000000..a576981f5a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c36song.fd
@@ -0,0 +1,23 @@
+% This is the file c36song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c36song.fd}[\filedate\space\fileversion]
+
+
+% Chinese traditional characters
+%
+% character set: CNS 11643-1992 plane 6
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C36}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C36}{song}{m}{n}{<-> CJK * c6so12}{\CJKnormal}
+\DeclareFontShape{C36}{song}{bx}{n}{<-> CJKb * c6so12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c37song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c37song.fd
new file mode 100644
index 0000000000..d8a21bf344
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/CNS/c37song.fd
@@ -0,0 +1,23 @@
+% This is the file c37song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c37song.fd}[\filedate\space\fileversion]
+
+
+% Chinese traditional characters
+%
+% character set: CNS 11643-1992 plane 7
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C37}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C37}{song}{m}{n}{<-> CJK * c7so12}{\CJKnormal}
+\DeclareFontShape{C37}{song}{bx}{n}{<-> CJKb * c7so12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/GB.cap b/language/chinese/CJK/cjk-4.8.5/texinput/GB/GB.cap
new file mode 100644
index 0000000000..f77bfc0da6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/GB.cap
@@ -0,0 +1,86 @@
+% This is the file GB.cap of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{GB.cap}[\filedate\space\fileversion]
+
+
+% Chinese captions
+%
+% character set: GB 2312-80
+% encoding: EUC
+
+\renewcommand\contentsname{Ŀ¼}
+\renewcommand\listfigurename{²åͼ}
+\renewcommand\listtablename{±í¸ñ}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{²Î¿¼ÎÄÏ×}}
+ {\renewcommand\bibname{²Î¿¼ÎÄÏ×}}
+
+\renewcommand\indexname{Ë÷Òý}
+
+\newcommand\prefigurename{µÚ}
+\newcommand\postfigurename{ͼ}
+\renewcommand\figureformat{\prefigurename~\thefigure~\postfigurename}
+
+\newcommand\pretablename{µÚ}
+\newcommand\posttablename{±í}
+\renewcommand\tableformat{\pretablename~\thetable~\posttablename}
+
+\newcommand\prepartname{µÚ}
+\newcommand\postpartname{²¿·Ö}
+\renewcommand\partformat{\prepartname\CJKnumber{\value{part}}\postpartname}
+
+% \newcommand\prechaptername{µÚ}
+% \newcommand\postchaptername{ÕÂ}
+% \newcommand\presectionname{µÚ}
+% \newcommand\postsectionname{½Ú}
+% \newcommand\preappendixname{µÚ}
+% \newcommand\postappendixname{¸½Â¼}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{ÕªÒª}}{}
+
+% \renewcommand\ccname{} % ?
+% \renewcommand\enclname{¸½¼þ}
+% \newcommand\prepagename{} % ?
+% \newcommand\postpagename{} % ?
+% \renewcommand\headtoname{} % ?
+% \renewcommand\seename{} % ?
+
+\renewcommand\today{\number\year Äê\number\month ÔÂ\number\day ÈÕ}
+\CJK@ifundefined\CJKnumber
+ {\def\CJKnumber#1{\ifcase #1\or
+ Ò»\or ¶þ\or Èý\or ËÄ\or Îå\or
+ Áù\or Æß\or °Ë\or ¾Å\or Ê®\fi}}{}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: euc-china
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/GB.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/GB/GB.cpx
new file mode 100644
index 0000000000..d24994ce2b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/GB.cpx
@@ -0,0 +1,84 @@
+% This is the file GB.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{GB.cpx}[\filedate\space\fileversion]
+
+
+% Chinese captions
+%
+% character set: GB 2312-80
+% encoding: EUC
+%
+% preprocessed
+
+\renewcommand\contentsname{Ä191Â188}
+\renewcommand\listfigurename{²229Í188}
+\renewcommand\listtablename{±237¸241}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{²206¿188Î196Ï215}}
+ {\renewcommand\bibname{²206¿188Î196Ï215}}
+
+\renewcommand\indexname{Ë247Ò253}
+
+\newcommand\prefigurename{µ218}
+\newcommand\postfigurename{Í188}
+\renewcommand\figureformat{\prefigurename~\thefigure~\postfigurename}
+
+\newcommand\pretablename{µ218}
+\newcommand\posttablename{±237}
+\renewcommand\tableformat{\pretablename~\thetable~\posttablename}
+
+\newcommand\prepartname{µ218}
+\newcommand\postpartname{²191·214}
+\renewcommand\partformat{\prepartname\CJKnumber{\value{part}}\postpartname}
+
+% \newcommand\prechaptername{µ218}
+% \newcommand\postchaptername{Õ194}
+% \newcommand\presectionname{µ218}
+% \newcommand\postsectionname{½218}
+% \newcommand\preappendixname{µ218}
+% \newcommand\postappendixname{¸189Â188}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{Õ170Ò170}}{}
+
+% \renewcommand\ccname{} % ?
+% \renewcommand\enclname{¸189¼254}
+% \newcommand\prepagename{} % ?
+% \newcommand\postpagename{} % ?
+% \renewcommand\headtoname{} % ?
+% \renewcommand\seename{} % ?
+
+\renewcommand\today{%
+ \number\year Ä234\number\month Ô194\number\day È213}
+\CJK@ifundefined\CJKnumber
+ {\def\CJKnumber#1{%
+ \ifcase #1\or
+ Ò187\or ¶254\or È253\or Ë196\or Î229\or
+ Á249\or Æ223\or °203\or ¾197\or Ê174\fi}}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10fs.fd b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10fs.fd
new file mode 100644
index 0000000000..1ecdbb103d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10fs.fd
@@ -0,0 +1,25 @@
+% This is the file c10fs.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c10fs.fd}[\filedate\space\fileversion]
+
+
+% simplified Chinese characters
+%
+% character set: GB 2312-80
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C10}{fs}{\hyphenchar \font\m@ne}
+
+% jfs56
+
+\DeclareFontShape{C10}{fs}{m}{n}{<-> CJK * gsfs14}{\CJKnormal}
+\DeclareFontShape{C10}{fs}{bx}{n}{<-> CJKb * gsfs14}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gbsn.fd b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gbsn.fd
new file mode 100644
index 0000000000..839cd72e23
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gbsn.fd
@@ -0,0 +1,25 @@
+% This is the file c10gbsn.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c10gbsn.fd}[\filedate\space\fileversion]
+
+
+% simplified Chinese characters
+%
+% character set: GB 2312-80
+% font encoding: CJK (standard)
+
+% Arphic PL TrueType font AR PL SungtiL GB / BousungEG-Light-GB
+
+\DeclareFontFamily{C10}{gbsn}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C10}{gbsn}{m}{n}{<-> CJK * gbsnlp}{\CJKnormal}
+\DeclareFontShape{C10}{gbsn}{bx}{n}{<-> CJKb * gbsnlp}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gbsn.fdx b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gbsn.fdx
new file mode 100644
index 0000000000..d65645ce6c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gbsn.fdx
@@ -0,0 +1,70 @@
+% This is the file c10gbsn.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c10gbsn.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{fullheight}{1em}
+\CJKvdef{height}{.88em}
+\CJKvdef{offset}{.5em}
+\CJKvdef{simpleoffset}{-.1em}
+
+\CJKvdef{m/n/01/1}{\raise .15em \hbox to 1em {\kern -.15em \CJKsymbol{1}\hss}}
+\CJKvdef{m/n/01/2}{\raise .15em \hbox to 1em {\kern -.15em \CJKsymbol{2}\hss}}
+\CJKvdef{m/n/01/17}{\CJKsymbolsimple{17}}
+\CJKvdef{m/n/01/18}{\CJKsymbolsimple{18}}
+\CJKvdef{m/n/01/19}{\CJKsymbolsimple{19}}
+\CJKvdef{m/n/01/20}{\CJKsymbolsimple{20}}
+\CJKvdef{m/n/01/21}{\CJKsymbolsimple{21}}
+\CJKvdef{m/n/01/22}{\CJKsymbolsimple{22}}
+\CJKvdef{m/n/01/23}{\CJKsymbolsimple{23}}
+\CJKvdef{m/n/01/24}{\CJKsymbolsimple{24}}
+\CJKvdef{m/n/01/25}{\CJKsymbolsimple{25}}
+\CJKvdef{m/n/01/26}{\CJKsymbolsimple{26}}
+\CJKvdef{m/n/01/27}{\CJKsymbolsimple{27}}
+\CJKvdef{m/n/01/28}{\CJKsymbolsimple{28}}
+\CJKvdef{m/n/01/29}{\CJKsymbolsimple{29}}
+\CJKvdef{m/n/01/30}{\CJKsymbolsimple{30}}
+\CJKvdef{m/n/01/195}{\CJKsymbolsimple{195}}
+\CJKvdef{m/n/01/196}{\CJKsymbolsimple{196}}
+\CJKvdef{m/n/01/199}{
+ \raise .25em \hbox to 1em {\kern -.35em \CJKsymbol{199}\hss}}
+\CJKvdef{m/n/01/201}{
+ \raise .25em \hbox to 1em {\kern -.35em \CJKsymbol{201}\hss}}
+\CJKvdef{m/n/01/246}{\CJKsymbolsimple{246}}
+\CJKvdef{m/n/01/248}{\CJKsymbolsimple{248}}
+\CJKvdef{m/n/02/22}{\CJKsymbolsimple{22}}
+\CJKvdef{m/n/02/24}{\CJKsymbolsimple{24}}
+
+\CJKvlet{bx/n/01/1}{m/n/01/1}
+\CJKvlet{bx/n/01/2}{m/n/01/2}
+\CJKvlet{bx/n/01/17}{m/n/01/17}
+\CJKvlet{bx/n/01/18}{m/n/01/18}
+\CJKvlet{bx/n/01/19}{m/n/01/19}
+\CJKvlet{bx/n/01/20}{m/n/01/20}
+\CJKvlet{bx/n/01/21}{m/n/01/21}
+\CJKvlet{bx/n/01/22}{m/n/01/22}
+\CJKvlet{bx/n/01/23}{m/n/01/23}
+\CJKvlet{bx/n/01/24}{m/n/01/24}
+\CJKvlet{bx/n/01/25}{m/n/01/25}
+\CJKvlet{bx/n/01/26}{m/n/01/26}
+\CJKvlet{bx/n/01/27}{m/n/01/27}
+\CJKvlet{bx/n/01/28}{m/n/01/28}
+\CJKvlet{bx/n/01/29}{m/n/01/29}
+\CJKvlet{bx/n/01/30}{m/n/01/30}
+\CJKvlet{bx/n/01/195}{m/n/01/195}
+\CJKvlet{bx/n/01/196}{m/n/01/196}
+\CJKvlet{bx/n/01/199}{m/n/01/199}
+\CJKvlet{bx/n/01/201}{m/n/01/201}
+\CJKvlet{bx/n/01/246}{m/n/01/246}
+\CJKvlet{bx/n/01/248}{m/n/01/248}
+\CJKvlet{bx/n/02/22}{m/n/02/22}
+\CJKvlet{bx/n/02/24}{m/n/02/24}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gkai.fd b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gkai.fd
new file mode 100644
index 0000000000..9c5750852a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gkai.fd
@@ -0,0 +1,25 @@
+% This is the file c10gkai.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c10gkai.fd}[\filedate\space\fileversion]
+
+
+% simplified Chinese characters
+%
+% character set: GB 2312-80
+% font encoding: CJK (standard)
+
+% Arphic PL TrueType font AR PL KaitiM GB / GBZenKai-Medium
+
+\DeclareFontFamily{C10}{gkai}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C10}{gkai}{m}{n}{<-> CJK * gkaimp}{\CJKnormal}
+\DeclareFontShape{C10}{gkai}{bx}{n}{<-> CJKb * gkaimp}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gkai.fdx b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gkai.fdx
new file mode 100644
index 0000000000..aab66e85c1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10gkai.fdx
@@ -0,0 +1,70 @@
+% This is the file c10gkai.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c10gkai.fdx}[\filedate\space\fileversion]
+
+
+\CJKvdef{fullheight}{1em}
+\CJKvdef{height}{.88em}
+\CJKvdef{offset}{.5em}
+\CJKvdef{simpleoffset}{-.1em}
+
+\CJKvdef{m/n/01/1}{\raise .15em \hbox to 1em {\kern -.15em \CJKsymbol{1}\hss}}
+\CJKvdef{m/n/01/2}{\raise .15em \hbox to 1em {\kern -.15em \CJKsymbol{2}\hss}}
+\CJKvdef{m/n/01/17}{\CJKsymbolsimple{17}}
+\CJKvdef{m/n/01/18}{\CJKsymbolsimple{18}}
+\CJKvdef{m/n/01/19}{\CJKsymbolsimple{19}}
+\CJKvdef{m/n/01/20}{\CJKsymbolsimple{20}}
+\CJKvdef{m/n/01/21}{\CJKsymbolsimple{21}}
+\CJKvdef{m/n/01/22}{\CJKsymbolsimple{22}}
+\CJKvdef{m/n/01/23}{\CJKsymbolsimple{23}}
+\CJKvdef{m/n/01/24}{\CJKsymbolsimple{24}}
+\CJKvdef{m/n/01/25}{\CJKsymbolsimple{25}}
+\CJKvdef{m/n/01/26}{\CJKsymbolsimple{26}}
+\CJKvdef{m/n/01/27}{\CJKsymbolsimple{27}}
+\CJKvdef{m/n/01/28}{\CJKsymbolsimple{28}}
+\CJKvdef{m/n/01/29}{\CJKsymbolsimple{29}}
+\CJKvdef{m/n/01/30}{\CJKsymbolsimple{30}}
+\CJKvdef{m/n/01/195}{\CJKsymbolsimple{195}}
+\CJKvdef{m/n/01/196}{\CJKsymbolsimple{196}}
+\CJKvdef{m/n/01/199}{
+ \raise .25em \hbox to 1em {\kern -.35em \CJKsymbol{199}\hss}}
+\CJKvdef{m/n/01/201}{
+ \raise .25em \hbox to 1em {\kern -.35em \CJKsymbol{201}\hss}}
+\CJKvdef{m/n/01/246}{\CJKsymbolsimple{246}}
+\CJKvdef{m/n/01/248}{\CJKsymbolsimple{248}}
+\CJKvdef{m/n/02/22}{\CJKsymbolsimple{22}}
+\CJKvdef{m/n/02/24}{\CJKsymbolsimple{24}}
+
+\CJKvlet{bx/n/01/1}{m/n/01/1}
+\CJKvlet{bx/n/01/2}{m/n/01/2}
+\CJKvlet{bx/n/01/17}{m/n/01/17}
+\CJKvlet{bx/n/01/18}{m/n/01/18}
+\CJKvlet{bx/n/01/19}{m/n/01/19}
+\CJKvlet{bx/n/01/20}{m/n/01/20}
+\CJKvlet{bx/n/01/21}{m/n/01/21}
+\CJKvlet{bx/n/01/22}{m/n/01/22}
+\CJKvlet{bx/n/01/23}{m/n/01/23}
+\CJKvlet{bx/n/01/24}{m/n/01/24}
+\CJKvlet{bx/n/01/25}{m/n/01/25}
+\CJKvlet{bx/n/01/26}{m/n/01/26}
+\CJKvlet{bx/n/01/27}{m/n/01/27}
+\CJKvlet{bx/n/01/28}{m/n/01/28}
+\CJKvlet{bx/n/01/29}{m/n/01/29}
+\CJKvlet{bx/n/01/30}{m/n/01/30}
+\CJKvlet{bx/n/01/195}{m/n/01/195}
+\CJKvlet{bx/n/01/196}{m/n/01/196}
+\CJKvlet{bx/n/01/199}{m/n/01/199}
+\CJKvlet{bx/n/01/201}{m/n/01/201}
+\CJKvlet{bx/n/01/246}{m/n/01/246}
+\CJKvlet{bx/n/01/248}{m/n/01/248}
+\CJKvlet{bx/n/02/22}{m/n/02/22}
+\CJKvlet{bx/n/02/24}{m/n/02/24}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10song.fd
new file mode 100644
index 0000000000..df5f591476
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c10song.fd
@@ -0,0 +1,23 @@
+% This is the file c10song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c10song.fd}[\filedate\space\fileversion]
+
+
+% simplified Chinese characters
+%
+% character set: GB 2312-80
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C10}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C10}{song}{m}{n}{<-> CJKsub * fs/m/n}{}
+\DeclareFontShape{C10}{song}{bx}{n}{<-> CJKsub * fs/bx/n}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/c11song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c11song.fd
new file mode 100644
index 0000000000..b0b2939e02
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c11song.fd
@@ -0,0 +1,23 @@
+% This is the file c11song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c11song.fd}[\filedate\space\fileversion]
+
+
+% simplified Chinese characters
+%
+% character set: GB 2312-80
+% font encoding: pmC
+
+\DeclareFontFamily{C11}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C11}{song}{m}{n}{<-> sCJKfixed * wccs}{\CJKnormal}
+\DeclareFontShape{C11}{song}{bx}{n}{<-> sCJKfixedb * wccs}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/c19song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c19song.fd
new file mode 100644
index 0000000000..d543001cd7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c19song.fd
@@ -0,0 +1,23 @@
+% This is the file c19song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c19song.fd}[\filedate\space\fileversion]
+
+
+% Chinese characters (extension of GB 2312)
+%
+% character set: GBK
+% font encoding: CJK (extended)
+
+\DeclareFontFamily{C19}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C19}{song}{m}{n}{<-> CJK * gbk}{\CJKnormal}
+\DeclareFontShape{C19}{song}{bx}{n}{<-> CJKb * gbk}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/c20song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c20song.fd
new file mode 100644
index 0000000000..617b1be7da
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c20song.fd
@@ -0,0 +1,31 @@
+% This is the file c20song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c20song.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters
+%
+% character set: GB/T 12345-90
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C20}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C20}{song}{m}{n}{
+ <5> <6> <7> <8> <9> CJKfixed * gtso12
+ <10> <10.95> <12> sCJKfixed * gtso12
+ <14.4> <17.28> <20.74> sCJKfixed * gtso17
+ <24.88> CJKfixed * gtso17}{\CJKnormal}
+\DeclareFontShape{C20}{song}{bx}{n}{
+ <5> <6> <7> <8> <9> CJKfixedb * gtso12
+ <10> <10.95> <12> sCJKfixedb * gtso12
+ <14.4> <17.28> <20.74> sCJKfixedb * gtso17
+ <24.88> CJKfixedb * gtso17}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/GB/c21song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c21song.fd
new file mode 100644
index 0000000000..f5eed9d80b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/GB/c21song.fd
@@ -0,0 +1,23 @@
+% This is the file c21song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c21song.fd}[\filedate\space\fileversion]
+
+
+% traditional Chinese characters
+%
+% character set: GB/T 12345-90
+% font encoding: pmC
+
+\DeclareFontFamily{C21}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C21}{song}{m}{n}{<-> sCJKfixed * wcct}{\CJKnormal}
+\DeclareFontShape{C21}{song}{bx}{n}{<-> sCJKfixedb * wcct}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.bdg b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.bdg
new file mode 100644
index 0000000000..7d5a0b2f0d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.bdg
@@ -0,0 +1,131 @@
+% This is the file EUC-JP.bdg of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{EUC-JP.bdg}[\filedate\space\fileversion]
+
+
+% The EUC-JP bindings (with single shifts).
+
+\global\@namedef{CJK@EUC-JPBinding}{
+ \CJK@nameppdef{^^8e}
+ \CJK@namepppdef{^^8f}
+
+ \CJK@nameppdef{^^a1}
+ \CJK@nameppdef{^^a2}
+ \CJK@nameppdef{^^a3}
+ \CJK@nameppdef{^^a4}
+ \CJK@nameppdef{^^a5}
+ \CJK@nameppdef{^^a6}
+ \CJK@nameppdef{^^a7}
+ \CJK@nameppdef{^^a8}
+ \CJK@nameppdef{^^a9}
+ \CJK@nameppdef{^^aa}
+ \CJK@nameppdef{^^ab}
+ \CJK@nameppdef{^^ac}
+ \CJK@nameppdef{^^ad}
+ \CJK@nameppdef{^^ae}
+ \CJK@nameppdef{^^af}
+ \CJK@nameppdef{^^b0}
+ \CJK@nameppdef{^^b1}
+ \CJK@nameppdef{^^b2}
+ \CJK@nameppdef{^^b3}
+ \CJK@nameppdef{^^b4}
+ \CJK@nameppdef{^^b5}
+ \CJK@nameppdef{^^b6}
+ \CJK@nameppdef{^^b7}
+ \CJK@nameppdef{^^b8}
+ \CJK@nameppdef{^^b9}
+ \CJK@nameppdef{^^ba}
+ \CJK@nameppdef{^^bb}
+ \CJK@nameppdef{^^bc}
+ \CJK@nameppdef{^^bd}
+ \CJK@nameppdef{^^be}
+ \CJK@nameppdef{^^bf}
+ \CJK@nameppdef{^^c0}
+ \CJK@nameppdef{^^c1}
+ \CJK@nameppdef{^^c2}
+ \CJK@nameppdef{^^c3}
+ \CJK@nameppdef{^^c4}
+ \CJK@nameppdef{^^c5}
+ \CJK@nameppdef{^^c6}
+ \CJK@nameppdef{^^c7}
+ \CJK@nameppdef{^^c8}
+ \CJK@nameppdef{^^c9}
+ \CJK@nameppdef{^^ca}
+ \CJK@nameppdef{^^cb}
+ \CJK@nameppdef{^^cc}
+ \CJK@nameppdef{^^cd}
+ \CJK@nameppdef{^^ce}
+ \CJK@nameppdef{^^cf}
+ \CJK@nameppdef{^^d0}
+ \CJK@nameppdef{^^d1}
+ \CJK@nameppdef{^^d2}
+ \CJK@nameppdef{^^d3}
+ \CJK@nameppdef{^^d4}
+ \CJK@nameppdef{^^d5}
+ \CJK@nameppdef{^^d6}
+ \CJK@nameppdef{^^d7}
+ \CJK@nameppdef{^^d8}
+ \CJK@nameppdef{^^d9}
+ \CJK@nameppdef{^^da}
+ \CJK@nameppdef{^^db}
+ \CJK@nameppdef{^^dc}
+ \CJK@nameppdef{^^dd}
+ \CJK@nameppdef{^^de}
+ \CJK@nameppdef{^^df}
+ \CJK@nameppdef{^^e0}
+ \CJK@nameppdef{^^e1}
+ \CJK@nameppdef{^^e2}
+ \CJK@nameppdef{^^e3}
+ \CJK@nameppdef{^^e4}
+ \CJK@nameppdef{^^e5}
+ \CJK@nameppdef{^^e6}
+ \CJK@nameppdef{^^e7}
+ \CJK@nameppdef{^^e8}
+ \CJK@nameppdef{^^e9}
+ \CJK@nameppdef{^^ea}
+ \CJK@nameppdef{^^eb}
+ \CJK@nameppdef{^^ec}
+ \CJK@nameppdef{^^ed}
+ \CJK@nameppdef{^^ee}
+ \CJK@nameppdef{^^ef}
+ \CJK@nameppdef{^^f0}
+ \CJK@nameppdef{^^f1}
+ \CJK@nameppdef{^^f2}
+ \CJK@nameppdef{^^f3}
+ \CJK@nameppdef{^^f4}
+ \CJK@nameppdef{^^f5}
+ \CJK@nameppdef{^^f6}
+ \CJK@nameppdef{^^f7}
+ \CJK@nameppdef{^^f8}
+ \CJK@nameppdef{^^f9}
+ \CJK@nameppdef{^^fa}
+ \CJK@nameppdef{^^fb}
+ \CJK@nameppdef{^^fc}
+ \CJK@nameppdef{^^fd}
+ \CJK@nameppdef{^^fe}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.chr b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.chr
new file mode 100644
index 0000000000..c317dfae3c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.chr
@@ -0,0 +1,246 @@
+% This is the file EUC-JP.chr of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{EUC-JP.chr}[\filedate\space\fileversion]
+
+
+% define macros for handling characters in EUC-JP encoding.
+
+\global\@namedef{CJK@EUC-JPChr}{
+ \CJK@global\def\CJK@char##1##2##3{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##3\relax
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% the same, but the plane crosses the font file boundary.
+
+ \CJK@global\def\CJK@charx##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \@tempcntb 256\relax
+ \advance\@tempcnta ##3\relax
+ \advance\@tempcntb -##3\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##4 < \@temp
+ \edef\CJK@plane{##1}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##2}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% for punctuation.
+
+ \CJK@global\def\CJK@punctchar##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##4}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \advance\@tempcnta ##3\relax
+ \edef\CJK@plane{##2}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}
+
+ \CJK@global\def\CJK@punctcharx##1##2##3##4##5{
+ {\ifnum ##5 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##5 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##5}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##5\relax
+ \@tempcntb 256\relax
+ \advance\@tempcnta ##4\relax
+ \advance\@tempcntb -##4\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##5 < \@temp
+ \edef\CJK@plane{##2}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##3}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}
+
+% for half-width katakana accessed via the SS2 code (0x8E)
+
+ \CJK@global\def\CJK@shiftchar##1{
+ {\ifnum ##1 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##1 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##1}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@altenc}{}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \def\CJK@plane{}
+ \usefont{\CJK@altenc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\number ##1/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{##1}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@altenc}{}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.enc b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.enc
new file mode 100644
index 0000000000..00fe23c82a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JP.enc
@@ -0,0 +1,141 @@
+% This is the file EUC-JP.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{EUC-JP.enc}[\filedate\space\fileversion]
+
+
+% EUC-JP encoding:
+%
+% Half-width katakana (C49) 0x8EA1-0x8EDF
+% JIS X 0212-1992 (C5x) 0x8FA1A1-0x8FFEFE
+% JIS X 0208:1997 (C4x) 0xA1A1-0xFEFE
+
+\global\@namedef{CJK@EUC-JPEncoding}{
+ \CJK@loadChr{EUC-JP}
+
+ % if in preprocessed mode, `\@gobble' will be gobbled, and
+ % \CJK@shiftError becomes active
+ \CJK@namegdef{^^8e}##1{\@gobble\CJK@shiftError
+ \CJK@shiftchar{##1}}
+ \CJK@namegdef{^^8f}##1##2{\@gobble\CJK@shiftError
+ \CJKchar[JIS2]{\number ##1}{\number ##2}}
+
+ \CJK@namegdef{^^a1}##1{\@empty\CJK@punctchar {A1}{01}{-161}{##1}}
+ \CJK@namegdef{^^a2}##1{\@empty\CJK@punctchar {A2}{01}{ -67}{##1}}
+ \CJK@namegdef{^^a3}##1{\@empty\CJK@punctcharx{A3}{01}{02}{27}{##1}}
+ \CJK@namegdef{^^a4}##1{\@empty\CJK@punctchar {A4}{02}{-135}{##1}}
+ \CJK@namegdef{^^a5}##1{\@empty\CJK@punctchar {A5}{02}{ -41}{##1}}
+ \CJK@namegdef{^^a6}##1{\@empty\CJK@charx{02}{03}{53}{##1}}
+ \CJK@namegdef{^^a7}##1{\@empty\CJK@char {03}{-109}{##1}}
+ \CJK@namegdef{^^a8}##1{\@empty\CJK@char {03}{ -15}{##1}}
+ \CJK@namegdef{^^a9}##1{\@empty\CJK@charx{03}{04}{79}{##1}}
+ \CJK@namegdef{^^aa}##1{\@empty\CJK@char {04}{ -83}{##1}}
+ \CJK@namegdef{^^ab}##1{\@empty\CJK@charx{04}{05}{11}{##1}}
+ \CJK@namegdef{^^ac}##1{\@empty\CJK@char {05}{-151}{##1}}
+ \CJK@namegdef{^^ad}##1{\@empty\CJK@char {05}{ -57}{##1}}
+ \CJK@namegdef{^^ae}##1{\@empty\CJK@charx{05}{06}{37}{##1}}
+ \CJK@namegdef{^^af}##1{\@empty\CJK@char {06}{-125}{##1}}
+ \CJK@namegdef{^^b0}##1{\@empty\CJK@char {06}{ -31}{##1}}
+ \CJK@namegdef{^^b1}##1{\@empty\CJK@charx{06}{07}{63}{##1}}
+ \CJK@namegdef{^^b2}##1{\@empty\CJK@char {07}{ -99}{##1}}
+ \CJK@namegdef{^^b3}##1{\@empty\CJK@char {07}{ -5}{##1}}
+ \CJK@namegdef{^^b4}##1{\@empty\CJK@charx{07}{08}{89}{##1}}
+ \CJK@namegdef{^^b5}##1{\@empty\CJK@char {08}{ -73}{##1}}
+ \CJK@namegdef{^^b6}##1{\@empty\CJK@charx{08}{09}{21}{##1}}
+ \CJK@namegdef{^^b7}##1{\@empty\CJK@char {09}{-141}{##1}}
+ \CJK@namegdef{^^b8}##1{\@empty\CJK@char {09}{ -47}{##1}}
+ \CJK@namegdef{^^b9}##1{\@empty\CJK@charx{09}{10}{47}{##1}}
+ \CJK@namegdef{^^ba}##1{\@empty\CJK@char {10}{-115}{##1}}
+ \CJK@namegdef{^^bb}##1{\@empty\CJK@char {10}{ -21}{##1}}
+ \CJK@namegdef{^^bc}##1{\@empty\CJK@charx{10}{11}{73}{##1}}
+ \CJK@namegdef{^^bd}##1{\@empty\CJK@char {11}{ -89}{##1}}
+ \CJK@namegdef{^^be}##1{\@empty\CJK@charx{11}{12}{ 5}{##1}}
+ \CJK@namegdef{^^bf}##1{\@empty\CJK@char {12}{-157}{##1}}
+ \CJK@namegdef{^^c0}##1{\@empty\CJK@char {12}{ -63}{##1}}
+ \CJK@namegdef{^^c1}##1{\@empty\CJK@charx{12}{13}{31}{##1}}
+ \CJK@namegdef{^^c2}##1{\@empty\CJK@char {13}{-131}{##1}}
+ \CJK@namegdef{^^c3}##1{\@empty\CJK@char {13}{ -37}{##1}}
+ \CJK@namegdef{^^c4}##1{\@empty\CJK@charx{13}{14}{57}{##1}}
+ \CJK@namegdef{^^c5}##1{\@empty\CJK@char {14}{-105}{##1}}
+ \CJK@namegdef{^^c6}##1{\@empty\CJK@char {14}{ -11}{##1}}
+ \CJK@namegdef{^^c7}##1{\@empty\CJK@charx{14}{15}{83}{##1}}
+ \CJK@namegdef{^^c8}##1{\@empty\CJK@char {15}{ -79}{##1}}
+ \CJK@namegdef{^^c9}##1{\@empty\CJK@charx{15}{16}{15}{##1}}
+ \CJK@namegdef{^^ca}##1{\@empty\CJK@char {16}{-147}{##1}}
+ \CJK@namegdef{^^cb}##1{\@empty\CJK@char {16}{ -53}{##1}}
+ \CJK@namegdef{^^cc}##1{\@empty\CJK@charx{16}{17}{41}{##1}}
+ \CJK@namegdef{^^cd}##1{\@empty\CJK@char {17}{-121}{##1}}
+ \CJK@namegdef{^^ce}##1{\@empty\CJK@char {17}{ -27}{##1}}
+ \CJK@namegdef{^^cf}##1{\@empty\CJK@charx{17}{18}{67}{##1}}
+ \CJK@namegdef{^^d0}##1{\@empty\CJK@char {18}{ -95}{##1}}
+ \CJK@namegdef{^^d1}##1{\@empty\CJK@char {18}{ -1}{##1}}
+ \CJK@namegdef{^^d2}##1{\@empty\CJK@charx{18}{19}{93}{##1}}
+ \CJK@namegdef{^^d3}##1{\@empty\CJK@char {19}{ -69}{##1}}
+ \CJK@namegdef{^^d4}##1{\@empty\CJK@charx{19}{20}{25}{##1}}
+ \CJK@namegdef{^^d5}##1{\@empty\CJK@char {20}{-137}{##1}}
+ \CJK@namegdef{^^d6}##1{\@empty\CJK@char {20}{ -43}{##1}}
+ \CJK@namegdef{^^d7}##1{\@empty\CJK@charx{20}{21}{51}{##1}}
+ \CJK@namegdef{^^d8}##1{\@empty\CJK@char {21}{-111}{##1}}
+ \CJK@namegdef{^^d9}##1{\@empty\CJK@char {21}{ -17}{##1}}
+ \CJK@namegdef{^^da}##1{\@empty\CJK@charx{21}{22}{77}{##1}}
+ \CJK@namegdef{^^db}##1{\@empty\CJK@char {22}{ -85}{##1}}
+ \CJK@namegdef{^^dc}##1{\@empty\CJK@charx{22}{23}{ 9}{##1}}
+ \CJK@namegdef{^^dd}##1{\@empty\CJK@char {23}{-153}{##1}}
+ \CJK@namegdef{^^de}##1{\@empty\CJK@char {23}{ -59}{##1}}
+ \CJK@namegdef{^^df}##1{\@empty\CJK@charx{23}{24}{35}{##1}}
+ \CJK@namegdef{^^e0}##1{\@empty\CJK@char {24}{-127}{##1}}
+ \CJK@namegdef{^^e1}##1{\@empty\CJK@char {24}{ -33}{##1}}
+ \CJK@namegdef{^^e2}##1{\@empty\CJK@charx{24}{25}{61}{##1}}
+ \CJK@namegdef{^^e3}##1{\@empty\CJK@char {25}{-101}{##1}}
+ \CJK@namegdef{^^e4}##1{\@empty\CJK@char {25}{ -7}{##1}}
+ \CJK@namegdef{^^e5}##1{\@empty\CJK@charx{25}{26}{87}{##1}}
+ \CJK@namegdef{^^e6}##1{\@empty\CJK@char {26}{ -75}{##1}}
+ \CJK@namegdef{^^e7}##1{\@empty\CJK@charx{26}{27}{19}{##1}}
+ \CJK@namegdef{^^e8}##1{\@empty\CJK@char {27}{-143}{##1}}
+ \CJK@namegdef{^^e9}##1{\@empty\CJK@char {27}{ -49}{##1}}
+ \CJK@namegdef{^^ea}##1{\@empty\CJK@charx{27}{28}{45}{##1}}
+ \CJK@namegdef{^^eb}##1{\@empty\CJK@char {28}{-117}{##1}}
+ \CJK@namegdef{^^ec}##1{\@empty\CJK@char {28}{ -23}{##1}}
+ \CJK@namegdef{^^ed}##1{\@empty\CJK@charx{28}{29}{71}{##1}}
+ \CJK@namegdef{^^ee}##1{\@empty\CJK@char {29}{ -91}{##1}}
+ \CJK@namegdef{^^ef}##1{\@empty\CJK@charx{29}{30}{ 3}{##1}}
+ \CJK@namegdef{^^f0}##1{\@empty\CJK@char {30}{-159}{##1}}
+ \CJK@namegdef{^^f1}##1{\@empty\CJK@char {30}{ -65}{##1}}
+ \CJK@namegdef{^^f2}##1{\@empty\CJK@charx{30}{31}{29}{##1}}
+ \CJK@namegdef{^^f3}##1{\@empty\CJK@char {31}{-133}{##1}}
+ \CJK@namegdef{^^f4}##1{\@empty\CJK@char {31}{ -39}{##1}}
+ \CJK@namegdef{^^f5}##1{\@empty\CJK@charx{31}{32}{55}{##1}}
+ \CJK@namegdef{^^f6}##1{\@empty\CJK@char {32}{-107}{##1}}
+ \CJK@namegdef{^^f7}##1{\@empty\CJK@char {32}{ -13}{##1}}
+ \CJK@namegdef{^^f8}##1{\@empty\CJK@charx{32}{33}{81}{##1}}
+ \CJK@namegdef{^^f9}##1{\@empty\CJK@char {33}{ -81}{##1}}
+ \CJK@namegdef{^^fa}##1{\@empty\CJK@charx{33}{34}{13}{##1}}
+ \CJK@namegdef{^^fb}##1{\@empty\CJK@char {34}{-149}{##1}}
+ \CJK@namegdef{^^fc}##1{\@empty\CJK@char {34}{ -55}{##1}}
+ \CJK@namegdef{^^fd}##1{\@empty\CJK@charx{34}{35}{39}{##1}}
+ \CJK@namegdef{^^fe}##1{\@empty\CJK@char {35}{-123}{##1}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JPdnp.enc b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JPdnp.enc
new file mode 100644
index 0000000000..6d82836884
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/EUC-JPdnp.enc
@@ -0,0 +1,142 @@
+% This is the file EUC-JPdnp.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{EUC-JPdnp.enc}[\filedate\space\fileversion]
+
+
+% EUC-JP encoding with dnp font encoding:
+%
+% Half-width katakana (C49) 0x8EA1-0x8EDF
+% JIS X 0212-1992 (C5x) 0x8FA1A1-0x8FFEFE
+% JIS X 0208:1997 (C4x) 0xA1A1-0xFEFE
+
+\global\@namedef{CJK@EUC-JPdnpEncoding}{
+ \CJK@loadChr{EUC-JP}
+
+ % if in preprocessed mode, `\@gobble' will be gobbled, and
+ % \CJK@shiftError becomes active
+ \CJK@namegdef{^^8e}##1{\@gobble\CJK@shiftError
+ \CJK@shiftchar{##1}}
+ \CJK@namegdef{^^8f}##1##2{\@gobble\CJK@shiftError
+ \CJKchar[JIS2dnp]{\number ##1}{\number ##2}}
+
+ \CJK@namegdef{^^a1}##1{\@empty\CJK@punctchar{A1}{sy}{-160}{##1}}
+ \CJK@namegdef{^^a2}##1{\@empty\CJK@punctchar{A2}{sy}{ -60}{##1}}
+ \CJK@namegdef{^^a3}##1{\@empty\CJK@char {roma}{-128}{##1}}
+ \CJK@namegdef{^^a4}##1{\@empty\CJK@punctchar{A4}{hira}{-160}{##1}}
+ \CJK@namegdef{^^a5}##1{\@empty\CJK@punctchar{A5}{kata}{-160}{##1}}
+ \CJK@namegdef{^^a6}##1{\@empty\CJK@char {greek}{-160}{##1}}
+ \CJK@namegdef{^^a7}##1{\@empty\CJK@char {russian}{-160}{##1}}
+ \CJK@namegdef{^^a8}##1{\@empty\CJK@char {keisen}{-160}{##1}}
+ \CJK@namegdef{^^a9}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^aa}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ab}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ac}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ad}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ae}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^af}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^b0}##1{\@empty\CJK@char {ka}{-161}{##1}}
+ \CJK@namegdef{^^b1}##1{\@empty\CJK@char {ka}{ -67}{##1}}
+ \CJK@namegdef{^^b2}##1{\@empty\CJK@charx{ka}{kb}{27}{##1}}
+ \CJK@namegdef{^^b3}##1{\@empty\CJK@char {kb}{-135}{##1}}
+ \CJK@namegdef{^^b4}##1{\@empty\CJK@char {kb}{ -41}{##1}}
+ \CJK@namegdef{^^b5}##1{\@empty\CJK@charx{kb}{kc}{53}{##1}}
+ \CJK@namegdef{^^b6}##1{\@empty\CJK@char {kc}{-109}{##1}}
+ \CJK@namegdef{^^b7}##1{\@empty\CJK@char {kc}{ -15}{##1}}
+ \CJK@namegdef{^^b8}##1{\@empty\CJK@charx{kc}{kd}{79}{##1}}
+ \CJK@namegdef{^^b9}##1{\@empty\CJK@char {kd}{ -83}{##1}}
+ \CJK@namegdef{^^ba}##1{\@empty\CJK@charx{kd}{ke}{11}{##1}}
+ \CJK@namegdef{^^bb}##1{\@empty\CJK@char {ke}{-151}{##1}}
+ \CJK@namegdef{^^bc}##1{\@empty\CJK@char {ke}{ -57}{##1}}
+ \CJK@namegdef{^^bd}##1{\@empty\CJK@charx{ke}{kf}{37}{##1}}
+ \CJK@namegdef{^^be}##1{\@empty\CJK@char {kf}{-125}{##1}}
+ \CJK@namegdef{^^bf}##1{\@empty\CJK@char {kf}{ -31}{##1}}
+ \CJK@namegdef{^^c0}##1{\@empty\CJK@charx{kf}{kg}{63}{##1}}
+ \CJK@namegdef{^^c1}##1{\@empty\CJK@char {kg}{ -99}{##1}}
+ \CJK@namegdef{^^c2}##1{\@empty\CJK@char {kg}{ -5}{##1}}
+ \CJK@namegdef{^^c3}##1{\@empty\CJK@charx{kg}{kh}{89}{##1}}
+ \CJK@namegdef{^^c4}##1{\@empty\CJK@char {kh}{ -73}{##1}}
+ \CJK@namegdef{^^c5}##1{\@empty\CJK@charx{kh}{ki}{21}{##1}}
+ \CJK@namegdef{^^c6}##1{\@empty\CJK@char {ki}{-141}{##1}}
+ \CJK@namegdef{^^c7}##1{\@empty\CJK@char {ki}{ -47}{##1}}
+ \CJK@namegdef{^^c8}##1{\@empty\CJK@charx{ki}{kj}{47}{##1}}
+ \CJK@namegdef{^^c9}##1{\@empty\CJK@char {kj}{-115}{##1}}
+ \CJK@namegdef{^^ca}##1{\@empty\CJK@char {kj}{ -21}{##1}}
+ \CJK@namegdef{^^cb}##1{\@empty\CJK@charx{kj}{kk}{73}{##1}}
+ \CJK@namegdef{^^cc}##1{\@empty\CJK@char {kk}{ -89}{##1}}
+ \CJK@namegdef{^^cd}##1{\@empty\CJK@charx{kk}{kl}{ 5}{##1}}
+ \CJK@namegdef{^^ce}##1{\@empty\CJK@char {kl}{-157}{##1}}
+ \CJK@namegdef{^^cf}##1{\@empty\CJK@char {kl}{-63}{##1}}
+ \CJK@namegdef{^^d0}##1{\@empty\CJK@char {km}{-161}{##1}}
+ \CJK@namegdef{^^d1}##1{\@empty\CJK@char {km}{ -67}{##1}}
+ \CJK@namegdef{^^d2}##1{\@empty\CJK@charx{km}{kn}{27}{##1}}
+ \CJK@namegdef{^^d3}##1{\@empty\CJK@char {kn}{-135}{##1}}
+ \CJK@namegdef{^^d4}##1{\@empty\CJK@char {kn}{ -41}{##1}}
+ \CJK@namegdef{^^d5}##1{\@empty\CJK@charx{kn}{ko}{53}{##1}}
+ \CJK@namegdef{^^d6}##1{\@empty\CJK@char {ko}{-109}{##1}}
+ \CJK@namegdef{^^d7}##1{\@empty\CJK@char {ko}{ -15}{##1}}
+ \CJK@namegdef{^^d8}##1{\@empty\CJK@charx{ko}{kp}{79}{##1}}
+ \CJK@namegdef{^^d9}##1{\@empty\CJK@char {kp}{ -83}{##1}}
+ \CJK@namegdef{^^da}##1{\@empty\CJK@charx{kp}{kq}{11}{##1}}
+ \CJK@namegdef{^^db}##1{\@empty\CJK@char {kq}{-151}{##1}}
+ \CJK@namegdef{^^dc}##1{\@empty\CJK@char {kq}{ -57}{##1}}
+ \CJK@namegdef{^^dd}##1{\@empty\CJK@charx{kq}{kr}{37}{##1}}
+ \CJK@namegdef{^^de}##1{\@empty\CJK@char {kr}{-125}{##1}}
+ \CJK@namegdef{^^df}##1{\@empty\CJK@char {kr}{ -31}{##1}}
+ \CJK@namegdef{^^e0}##1{\@empty\CJK@charx{kr}{ks}{63}{##1}}
+ \CJK@namegdef{^^e1}##1{\@empty\CJK@char {ks}{ -99}{##1}}
+ \CJK@namegdef{^^e2}##1{\@empty\CJK@char {ks}{ -5}{##1}}
+ \CJK@namegdef{^^e3}##1{\@empty\CJK@charx{ks}{kt}{89}{##1}}
+ \CJK@namegdef{^^e4}##1{\@empty\CJK@char {kt}{ -73}{##1}}
+ \CJK@namegdef{^^e5}##1{\@empty\CJK@charx{kt}{ku}{21}{##1}}
+ \CJK@namegdef{^^e6}##1{\@empty\CJK@char {ku}{-141}{##1}}
+ \CJK@namegdef{^^e7}##1{\@empty\CJK@char {ku}{ -47}{##1}}
+ \CJK@namegdef{^^e8}##1{\@empty\CJK@charx{ku}{kv}{47}{##1}}
+ \CJK@namegdef{^^e9}##1{\@empty\CJK@char {kv}{-115}{##1}}
+ \CJK@namegdef{^^ea}##1{\@empty\CJK@char {kv}{ -21}{##1}}
+ \CJK@namegdef{^^eb}##1{\@empty\CJK@charx{kv}{kw}{73}{##1}}
+ \CJK@namegdef{^^ec}##1{\@empty\CJK@char {kw}{ -89}{##1}}
+ \CJK@namegdef{^^ed}##1{\@empty\CJK@charx{kw}{kx}{ 5}{##1}}
+ \CJK@namegdef{^^ee}##1{\@empty\CJK@char {kx}{-157}{##1}}
+ \CJK@namegdef{^^ef}##1{\@empty\CJK@char {kx}{ -63}{##1}}
+ \CJK@namegdef{^^f0}##1{\@empty\CJK@charx{kx}{ky}{31}{##1}}
+ \CJK@namegdef{^^f1}##1{\@empty\CJK@char {ky}{-131}{##1}}
+ \CJK@namegdef{^^f2}##1{\@empty\CJK@char {ky}{ -37}{##1}}
+ \CJK@namegdef{^^f3}##1{\@empty\CJK@charx{ky}{kz}{57}{##1}}
+ \CJK@namegdef{^^f4}##1{\@empty\CJK@char {kz}{-105}{##1}}
+ \CJK@namegdef{^^f5}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^f6}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^f7}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^f8}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^f9}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^fa}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^fb}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^fc}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^fd}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^fe}##1{\@empty\CJK@errxx}
+}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/JIS.cap b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/JIS.cap
new file mode 100644
index 0000000000..2343a53afa
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/JIS.cap
@@ -0,0 +1,83 @@
+% This is the file JIS.cap of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{JIS.cap}[\filedate\space\fileversion]
+
+
+% Japanese captions
+%
+% character set: JIS X 0208:1997 (or JIS X 0208-1990)
+% encoding: EUC
+
+\newif\ifheisei
+\let\ifheisei=\iffalse
+\def\heisei{\let\ifheisei=\iftrue}
+
+\renewcommand\contentsname{Ìܼ¡}
+
+\renewcommand\listfigurename{¿ÞÌܼ¡}
+% \newcommand\listfigurename{¿Þ°ìÍ÷}
+
+\renewcommand\listtablename{ɽÌܼ¡}
+% \newcommand\listtablename{ɽ°ìÍ÷}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{»²¹Íʸ¸¥}
+ }
+ {\renewcommand\bibname{´ØÏ¢½ñÀÒ}
+% \renewcommand\bibname{»²¹Íʸ¸¥}
+ }
+\renewcommand\indexname{º÷°ú}
+
+\renewcommand\figurename{¿Þ}
+\renewcommand\tablename{ɽ}
+
+\newcommand\prepartname{Âè}
+\newcommand\postpartname{Éô}
+\renewcommand\partformat{\prepartname\CJKnumber{\value{part}}\postpartname}
+
+% \renewcommand{\appendixname}{ÉíÏ¿}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{Í×»Ý}}{}
+
+\renewcommand\today{{\ifheisei\count0=\year\else\count0=\year
+ \advance\count0 -1988 Ê¿À®\,\fi
+ \ifnum\count0=1 ¸µ\else\number\count0\fi
+ \,ǯ\hspace{.5em}\nobreak\number\month
+ \,·î\hspace{.5em}\nobreak\number\day\,Æü}}
+\CJK@ifundefined\CJKnumber
+ {\def\CJKnumber#1{\ifcase #1\or
+ °ì\or Æó\or »°\or »Í\or ¸Þ\or
+ Ï»\or ¼·\or Ȭ\or ¶å\or ½½\fi}}{}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: euc-japan
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/JIS.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/JIS.cpx
new file mode 100644
index 0000000000..a0cf83415e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/JIS.cpx
@@ -0,0 +1,80 @@
+% This is the file JIS.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{JIS.cpx}[\filedate\space\fileversion]
+
+
+% Japanese captions
+%
+% character set: JIS X 0208:1997 (or JIS X 0208-1990)
+% encoding: EUC
+%
+% preprocessed
+
+\newif\ifheisei
+\let\ifheisei=\iffalse
+\def\heisei{\let\ifheisei=\iftrue}
+
+\renewcommand\contentsname{Ì220¼161}
+
+\renewcommand\listfigurename{¿222Ì220¼161}
+% \newcommand\listfigurename{¿222°236Í247}
+
+\renewcommand\listtablename{É189Ì220¼161}
+% \newcommand\listtablename{É189°236Í247}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{»178¹205Ê184¸165}
+ }
+ {\renewcommand\bibname{´216Ï162½241À210}
+% \renewcommand\bibname{»178¹205Ê184¸165}
+ }
+\renewcommand\indexname{º247°250}
+
+\renewcommand\figurename{¿222}
+\renewcommand\tablename{É189}
+
+\newcommand\prepartname{Â232}
+\newcommand\postpartname{É244}
+\renewcommand\partformat{\prepartname\CJKnumber{\value{part}}\postpartname}
+
+% \renewcommand{\appendixname}{É237Ï191}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{Í215»221}}{}
+
+\renewcommand\today{{\ifheisei\count0=\year\else\count0=\year
+ \advance\count0 -1988 Ê191À174\,\fi
+ \ifnum\count0=1 ¸181\else\number\count0\fi
+ \,Ç175\hspace{.5em}\nobreak\number\month
+ \,·238\hspace{.5em}\nobreak\number\day\,Æ252}}
+\CJK@ifundefined\CJKnumber
+ {\def\CJKnumber#1{%
+ \ifcase #1\or
+ °236\or Æ243\or »176\or »205\or ¸222\or
+ Ï187\or ¼183\or È172\or ¶229\or ½189\fi}}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/JISdnp.enc b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/JISdnp.enc
new file mode 100644
index 0000000000..b888ac61bf
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/JISdnp.enc
@@ -0,0 +1,132 @@
+% This is the file JISdnp.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{JISdnp.enc}[\filedate\space\fileversion]
+
+
+% JIS encoding for DNP fonts:
+% each plane has 94 characters (GB, JIS etc.) (0xA1 - 0xFE).
+
+\global\@namedef{CJK@JISdnpEncoding}{
+ \CJK@loadChr{standard}
+
+ \CJK@namegdef{^^a1}##1{\@empty\CJK@punctchar{A1}{sy}{-160}{##1}}
+ \CJK@namegdef{^^a2}##1{\@empty\CJK@punctchar{A2}{sy}{ -60}{##1}}
+ \CJK@namegdef{^^a3}##1{\@empty\CJK@char {roma}{-128}{##1}}
+ \CJK@namegdef{^^a4}##1{\@empty\CJK@punctchar{A4}{hira}{-160}{##1}}
+ \CJK@namegdef{^^a5}##1{\@empty\CJK@punctchar{A5}{kata}{-160}{##1}}
+ \CJK@namegdef{^^a6}##1{\@empty\CJK@char {greek}{-160}{##1}}
+ \CJK@namegdef{^^a7}##1{\@empty\CJK@char {russian}{-160}{##1}}
+ \CJK@namegdef{^^a8}##1{\@empty\CJK@char {keisen}{-160}{##1}}
+ \CJK@namegdef{^^a9}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^aa}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ab}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ac}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ad}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ae}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^af}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^b0}##1{\@empty\CJK@char {ka}{-161}{##1}}
+ \CJK@namegdef{^^b1}##1{\@empty\CJK@char {ka}{ -67}{##1}}
+ \CJK@namegdef{^^b2}##1{\@empty\CJK@charx{ka}{kb}{27}{##1}}
+ \CJK@namegdef{^^b3}##1{\@empty\CJK@char {kb}{-135}{##1}}
+ \CJK@namegdef{^^b4}##1{\@empty\CJK@char {kb}{ -41}{##1}}
+ \CJK@namegdef{^^b5}##1{\@empty\CJK@charx{kb}{kc}{53}{##1}}
+ \CJK@namegdef{^^b6}##1{\@empty\CJK@char {kc}{-109}{##1}}
+ \CJK@namegdef{^^b7}##1{\@empty\CJK@char {kc}{ -15}{##1}}
+ \CJK@namegdef{^^b8}##1{\@empty\CJK@charx{kc}{kd}{79}{##1}}
+ \CJK@namegdef{^^b9}##1{\@empty\CJK@char {kd}{ -83}{##1}}
+ \CJK@namegdef{^^ba}##1{\@empty\CJK@charx{kd}{ke}{11}{##1}}
+ \CJK@namegdef{^^bb}##1{\@empty\CJK@char {ke}{-151}{##1}}
+ \CJK@namegdef{^^bc}##1{\@empty\CJK@char {ke}{ -57}{##1}}
+ \CJK@namegdef{^^bd}##1{\@empty\CJK@charx{ke}{kf}{37}{##1}}
+ \CJK@namegdef{^^be}##1{\@empty\CJK@char {kf}{-125}{##1}}
+ \CJK@namegdef{^^bf}##1{\@empty\CJK@char {kf}{ -31}{##1}}
+ \CJK@namegdef{^^c0}##1{\@empty\CJK@charx{kf}{kg}{63}{##1}}
+ \CJK@namegdef{^^c1}##1{\@empty\CJK@char {kg}{ -99}{##1}}
+ \CJK@namegdef{^^c2}##1{\@empty\CJK@char {kg}{ -5}{##1}}
+ \CJK@namegdef{^^c3}##1{\@empty\CJK@charx{kg}{kh}{89}{##1}}
+ \CJK@namegdef{^^c4}##1{\@empty\CJK@char {kh}{ -73}{##1}}
+ \CJK@namegdef{^^c5}##1{\@empty\CJK@charx{kh}{ki}{21}{##1}}
+ \CJK@namegdef{^^c6}##1{\@empty\CJK@char {ki}{-141}{##1}}
+ \CJK@namegdef{^^c7}##1{\@empty\CJK@char {ki}{ -47}{##1}}
+ \CJK@namegdef{^^c8}##1{\@empty\CJK@charx{ki}{kj}{47}{##1}}
+ \CJK@namegdef{^^c9}##1{\@empty\CJK@char {kj}{-115}{##1}}
+ \CJK@namegdef{^^ca}##1{\@empty\CJK@char {kj}{ -21}{##1}}
+ \CJK@namegdef{^^cb}##1{\@empty\CJK@charx{kj}{kk}{73}{##1}}
+ \CJK@namegdef{^^cc}##1{\@empty\CJK@char {kk}{ -89}{##1}}
+ \CJK@namegdef{^^cd}##1{\@empty\CJK@charx{kk}{kl}{ 5}{##1}}
+ \CJK@namegdef{^^ce}##1{\@empty\CJK@char {kl}{-157}{##1}}
+ \CJK@namegdef{^^cf}##1{\@empty\CJK@char {kl}{-63}{##1}}
+ \CJK@namegdef{^^d0}##1{\@empty\CJK@char {km}{-161}{##1}}
+ \CJK@namegdef{^^d1}##1{\@empty\CJK@char {km}{ -67}{##1}}
+ \CJK@namegdef{^^d2}##1{\@empty\CJK@charx{km}{kn}{27}{##1}}
+ \CJK@namegdef{^^d3}##1{\@empty\CJK@char {kn}{-135}{##1}}
+ \CJK@namegdef{^^d4}##1{\@empty\CJK@char {kn}{ -41}{##1}}
+ \CJK@namegdef{^^d5}##1{\@empty\CJK@charx{kn}{ko}{53}{##1}}
+ \CJK@namegdef{^^d6}##1{\@empty\CJK@char {ko}{-109}{##1}}
+ \CJK@namegdef{^^d7}##1{\@empty\CJK@char {ko}{ -15}{##1}}
+ \CJK@namegdef{^^d8}##1{\@empty\CJK@charx{ko}{kp}{79}{##1}}
+ \CJK@namegdef{^^d9}##1{\@empty\CJK@char {kp}{ -83}{##1}}
+ \CJK@namegdef{^^da}##1{\@empty\CJK@charx{kp}{kq}{11}{##1}}
+ \CJK@namegdef{^^db}##1{\@empty\CJK@char {kq}{-151}{##1}}
+ \CJK@namegdef{^^dc}##1{\@empty\CJK@char {kq}{ -57}{##1}}
+ \CJK@namegdef{^^dd}##1{\@empty\CJK@charx{kq}{kr}{37}{##1}}
+ \CJK@namegdef{^^de}##1{\@empty\CJK@char {kr}{-125}{##1}}
+ \CJK@namegdef{^^df}##1{\@empty\CJK@char {kr}{ -31}{##1}}
+ \CJK@namegdef{^^e0}##1{\@empty\CJK@charx{kr}{ks}{63}{##1}}
+ \CJK@namegdef{^^e1}##1{\@empty\CJK@char {ks}{ -99}{##1}}
+ \CJK@namegdef{^^e2}##1{\@empty\CJK@char {ks}{ -5}{##1}}
+ \CJK@namegdef{^^e3}##1{\@empty\CJK@charx{ks}{kt}{89}{##1}}
+ \CJK@namegdef{^^e4}##1{\@empty\CJK@char {kt}{ -73}{##1}}
+ \CJK@namegdef{^^e5}##1{\@empty\CJK@charx{kt}{ku}{21}{##1}}
+ \CJK@namegdef{^^e6}##1{\@empty\CJK@char {ku}{-141}{##1}}
+ \CJK@namegdef{^^e7}##1{\@empty\CJK@char {ku}{ -47}{##1}}
+ \CJK@namegdef{^^e8}##1{\@empty\CJK@charx{ku}{kv}{47}{##1}}
+ \CJK@namegdef{^^e9}##1{\@empty\CJK@char {kv}{-115}{##1}}
+ \CJK@namegdef{^^ea}##1{\@empty\CJK@char {kv}{ -21}{##1}}
+ \CJK@namegdef{^^eb}##1{\@empty\CJK@charx{kv}{kw}{73}{##1}}
+ \CJK@namegdef{^^ec}##1{\@empty\CJK@char {kw}{ -89}{##1}}
+ \CJK@namegdef{^^ed}##1{\@empty\CJK@charx{kw}{kx}{ 5}{##1}}
+ \CJK@namegdef{^^ee}##1{\@empty\CJK@char {kx}{-157}{##1}}
+ \CJK@namegdef{^^ef}##1{\@empty\CJK@char {kx}{ -63}{##1}}
+ \CJK@namegdef{^^f0}##1{\@empty\CJK@charx{kx}{ky}{31}{##1}}
+ \CJK@namegdef{^^f1}##1{\@empty\CJK@char {ky}{-131}{##1}}
+ \CJK@namegdef{^^f2}##1{\@empty\CJK@char {ky}{ -37}{##1}}
+ \CJK@namegdef{^^f3}##1{\@empty\CJK@charx{ky}{kz}{57}{##1}}
+ \CJK@namegdef{^^f4}##1{\@empty\CJK@char {kz}{-105}{##1}}
+ \CJK@namegdef{^^f5}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^f6}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^f7}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^f8}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^f9}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^fa}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^fb}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^fc}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^fd}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^fe}##1{\@empty\CJK@errxx}
+}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c40song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c40song.fd
new file mode 100644
index 0000000000..d02c88a18c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c40song.fd
@@ -0,0 +1,25 @@
+% This is the file c40song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c40song.fd}[\filedate\space\fileversion]
+
+
+% Japanese characters
+%
+% character set: JIS X 0208:1997 (or JIS X 0208-1990)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C40}{song}{\hyphenchar \font\m@ne}
+
+% kanji48
+
+\DeclareFontShape{C40}{song}{m}{n}{<-> CJK * jsso12}{\CJKnormal}
+\DeclareFontShape{C40}{song}{bx}{n}{<-> CJKb * jsso12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c41song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c41song.fd
new file mode 100644
index 0000000000..3ccf078edc
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c41song.fd
@@ -0,0 +1,23 @@
+% This is the file c41song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c41song.fd}[\filedate\space\fileversion]
+
+
+% Japanese characters
+%
+% character set: JIS X 0208:1997 (or JIS X 0208-1990)
+% font encoding: pmC
+
+\DeclareFontFamily{C41}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C41}{song}{m}{n}{<-> sCJKfixed * wjis}{\CJKnormal}
+\DeclareFontShape{C41}{song}{bx}{n}{<-> sCJKfixedb * wjis}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c42song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c42song.fd
new file mode 100644
index 0000000000..04efcc35df
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c42song.fd
@@ -0,0 +1,28 @@
+% This is the file c42song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c42song.fd}[\filedate\space\fileversion]
+
+
+% Japanese characters in JIS encoding scheme using DNP fonts.
+% Japanese characters
+%
+% character set: JIS X 0208:1997 (or JIS X 0208-1990)
+% font encoding: DNP
+
+\DeclareFontFamily{C42}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C42}{song}{m}{n}
+ {<5> <6> <7> <8> <9> <10> <12> DNPgen * dmj
+ <10.95><14.4><17.28><20.74><24.88> DNP *[10] dmj}{}
+\DeclareFontShape{C42}{song}{bx}{n}
+ {<5> <6> <7> <8> <9> <10> <12> DNPgen * dgj
+ <10.95><14.4><17.28><20.74><24.88> DNP *[10] dgj}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c43song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c43song.fd
new file mode 100644
index 0000000000..42479c424e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c43song.fd
@@ -0,0 +1,27 @@
+% This is the file c43song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c43song.fd}[\filedate\space\fileversion]
+
+
+% Japanese characters
+%
+% character set: JIS X 0208:1997 (or JIS X 0208-1990)
+% font encoding: DNP
+
+\DeclareFontFamily{C43}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C43}{song}{m}{n}
+ {<5> <6> <7> <8> <9> <10> <12>
+ <10.95><14.4><17.28><20.74><24.88> DNP * mj}{}
+\DeclareFontShape{C43}{song}{bx}{n}
+ {<5> <6> <7> <8> <9> <10> <12>
+ <10.95><14.4><17.28><20.74><24.88> DNP * bj}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c50song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c50song.fd
new file mode 100644
index 0000000000..279a838e40
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/JIS/c50song.fd
@@ -0,0 +1,26 @@
+% This is the file c50song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c50song.fd}[\filedate\space\fileversion]
+
+
+% Japanese characters in JIS supplement encoding scheme.
+% Japanese characters
+%
+% character set: JIS X 0212-1990
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C50}{song}{\hyphenchar \font\m@ne}
+
+% kanjix48
+
+\DeclareFontShape{C50}{song}{m}{n}{<-> CJK * j2so12}{\CJKnormal}
+\DeclareFontShape{C50}{song}{bx}{n}{<-> CJKb * j2so12}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/HLaTeX.chr b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/HLaTeX.chr
new file mode 100644
index 0000000000..40a6c602be
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/HLaTeX.chr
@@ -0,0 +1,229 @@
+% This is the file HLaTeX.chr of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{HLaTeX.chr}[\filedate\space\fileversion]
+
+
+% define macros for handling hangul fonts and characters.
+
+\gdef\CJK@HLaTeXChr{
+
+% KS symbols -- for Hiragana and Katagana, no kinsoku shori is provided!
+
+ \CJK@global\def\CJK@symbA##1##2##3{
+ {\CJK@testLastCJK
+ \ifCJK@
+ \discretionary{}{}{}
+ \fi
+
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@symbEnc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\number ##2/\number ##3/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbols{##2}{##3}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK}}
+
+ \CJK@global\def\CJK@symbB##1{
+ {\CJK@numbToHex{\CJK@gtemp}{##1}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{KS}{A3}{\CJK@gtemp}
+ \ifCJK@
+ \else
+ \discretionary{}{}{}
+ \fi
+ \fi
+
+ \ifnum ##1 = 220\relax
+ \edef\CJK@plane{04}
+ \else
+ \edef\CJK@plane{07}
+ \fi
+ \usefont{\CJK@symbEnc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/163/\number ##1/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbols{163}{##1}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{KS}{A3}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi}}
+
+ \CJK@global\def\CJK@symbC##1##2##3{
+ {\CJK@testLastCJK
+ \ifCJK@
+ \discretionary{}{}{}
+ \fi
+
+ \ifnum ##3 < ##1\relax
+ \edef\CJK@plane{07}
+ \else
+ \ifnum ##3 > 245\relax
+ \edef\CJK@plane{06}
+ \else
+ \edef\CJK@plane{04}
+ \fi
+ \fi
+ \usefont{\CJK@symbEnc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\number ##2/\number ##3/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbols{##2}{##3}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK}}
+
+ \CJK@global\def\CJK@symbD##1{
+ {\CJK@numbToHex{\CJK@gtemp}{##1}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{KS}{A1}{\CJK@gtemp}
+ \ifCJK@
+ \else
+ \discretionary{}{}{}
+ \fi
+ \fi
+
+ \edef\CJK@plane{05}
+ \usefont{\CJK@symbEnc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/161/\number ##1/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbols{161}{##1}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{KS}{A1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi}}
+
+
+% Hangul syllables
+
+ \CJK@global\def\CJK@altchar##1##2##3{
+ {\CJK@testLastCJK
+ \ifCJK@
+ \discretionary{}{}{}
+ \fi
+
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@altEnc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\number ##2/\number ##3/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbols{##2}{##3}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK}}
+
+% the same, but the plane crosses the font file boundary.
+
+ \CJK@global\def\CJK@altcharx##1##2##3##4##5{
+ {\CJK@testLastCJK
+ \ifCJK@
+ \discretionary{}{}{}
+ \fi
+
+ \ifnum ##5 < ##3\relax
+ \edef\CJK@plane{##1}
+ \else
+ \edef\CJK@plane{##2}
+ \fi
+ \usefont{\CJK@altEnc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\number ##4/\number ##5/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbols{##4}{##5}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK}}
+
+% Hanja
+
+ \CJK@global\def\CJK@char##1##2##3{
+ {\CJK@testLastCJK
+ \ifCJK@
+ \discretionary{}{}{}
+ \fi
+
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\number ##2/\number ##3/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbols{##2}{##3}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK}}
+
+% the same, but the plane crosses the font file boundary.
+
+ \CJK@global\def\CJK@charx##1##2##3##4##5{
+ {\CJK@testLastCJK
+ \ifCJK@
+ \discretionary{}{}{}
+ \fi
+
+ \ifnum ##5 < ##3\relax
+ \edef\CJK@plane{##1}
+ \else
+ \edef\CJK@plane{##2}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\number ##4/\number ##5/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbols{##4}{##5}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/KSHL.enc b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/KSHL.enc
new file mode 100644
index 0000000000..5ce501024b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/KSHL.enc
@@ -0,0 +1,134 @@
+% This is the file KSHL.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{KSHL.enc}[\filedate\space\fileversion]
+
+
+% KS encoding for HLaTeX >= 0.97 fonts:
+% each plane has 94 characters (but 256 characters per subfont);
+% Hangul subfonts have the postfixes 0 - 9
+% Hanja subfonts have the postfixes 10 - 29
+% Symbol subfonts have the postfixes 04 - 07
+
+\gdef\CJK@KSHLEncoding{
+ \CJK@loadChr{HLaTeX}
+
+ \CJK@namegdef{^^a1}##1{\@empty\CJK@symbD{##1}}% Symbols
+ \CJK@namegdef{^^a2}##1{\@empty\CJK@symbA{05}{162}{##1}}
+ \CJK@namegdef{^^a3}##1{\@empty\CJK@symbB{##1}}
+ \CJK@namegdef{^^a4}##1{\@empty\CJK@symbA{04}{164}{##1}}
+ \CJK@namegdef{^^a5}##1{\@empty\CJK@symbA{07}{165}{##1}}
+ \CJK@namegdef{^^a6}##1{\@empty\CJK@symbA{06}{166}{##1}}
+ \CJK@namegdef{^^a7}##1{\@empty\CJK@symbA{05}{167}{##1}}
+ \CJK@namegdef{^^a8}##1{\@empty\CJK@symbC{176}{168}{##1}}
+ \CJK@namegdef{^^a9}##1{\@empty\CJK@symbC{177}{169}{##1}}
+ \CJK@namegdef{^^aa}##1{\@empty\CJK@symbA{06}{170}{##1}}
+ \CJK@namegdef{^^ab}##1{\@empty\CJK@symbA{06}{171}{##1}}
+ \CJK@namegdef{^^ac}##1{\@empty\CJK@symbA{07}{172}{##1}}
+ \CJK@namegdef{^^ad}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ae}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^af}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^b0}##1{\@empty\CJK@altchar {0}{176}{##1}}% Hangul syllables
+ \CJK@namegdef{^^b1}##1{\@empty\CJK@altchar {0}{177}{##1}}
+ \CJK@namegdef{^^b2}##1{\@empty\CJK@altcharx{0}{1}{229}{178}{##1}}
+ \CJK@namegdef{^^b3}##1{\@empty\CJK@altchar {1}{179}{##1}}
+ \CJK@namegdef{^^b4}##1{\@empty\CJK@altchar {1}{180}{##1}}
+ \CJK@namegdef{^^b5}##1{\@empty\CJK@altcharx{1}{2}{203}{181}{##1}}
+ \CJK@namegdef{^^b6}##1{\@empty\CJK@altchar {2}{182}{##1}}
+ \CJK@namegdef{^^b7}##1{\@empty\CJK@altchar {2}{183}{##1}}
+ \CJK@namegdef{^^b8}##1{\@empty\CJK@altcharx{2}{3}{177}{184}{##1}}
+ \CJK@namegdef{^^b9}##1{\@empty\CJK@altchar {3}{185}{##1}}
+ \CJK@namegdef{^^ba}##1{\@empty\CJK@altcharx{3}{4}{245}{186}{##1}}
+ \CJK@namegdef{^^bb}##1{\@empty\CJK@altchar {4}{187}{##1}}
+ \CJK@namegdef{^^bc}##1{\@empty\CJK@altchar {4}{188}{##1}}
+ \CJK@namegdef{^^bd}##1{\@empty\CJK@altcharx{4}{5}{219}{189}{##1}}
+ \CJK@namegdef{^^be}##1{\@empty\CJK@altchar {5}{190}{##1}}
+ \CJK@namegdef{^^bf}##1{\@empty\CJK@altchar {5}{191}{##1}}
+ \CJK@namegdef{^^c0}##1{\@empty\CJK@altcharx{5}{6}{193}{192}{##1}}
+ \CJK@namegdef{^^c1}##1{\@empty\CJK@altchar {6}{193}{##1}}
+ \CJK@namegdef{^^c2}##1{\@empty\CJK@altchar {6}{194}{##1}}
+ \CJK@namegdef{^^c3}##1{\@empty\CJK@altcharx{6}{7}{167}{195}{##1}}
+ \CJK@namegdef{^^c4}##1{\@empty\CJK@altchar {7}{196}{##1}}
+ \CJK@namegdef{^^c5}##1{\@empty\CJK@altcharx{7}{8}{235}{197}{##1}}
+ \CJK@namegdef{^^c6}##1{\@empty\CJK@altchar {8}{198}{##1}}
+ \CJK@namegdef{^^c7}##1{\@empty\CJK@altchar {8}{199}{##1}}
+ \CJK@namegdef{^^c8}##1{\@empty\CJK@altcharx{8}{9}{209}{200}{##1}}
+ \CJK@namegdef{^^c9}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ca}##1{\@empty\CJK@char {10}{202}{##1}}% Hanja
+ \CJK@namegdef{^^cb}##1{\@empty\CJK@char {10}{203}{##1}}
+ \CJK@namegdef{^^cc}##1{\@empty\CJK@charx{10}{11}{229}{204}{##1}}
+ \CJK@namegdef{^^cd}##1{\@empty\CJK@char {11}{205}{##1}}
+ \CJK@namegdef{^^ce}##1{\@empty\CJK@char {11}{206}{##1}}
+ \CJK@namegdef{^^cf}##1{\@empty\CJK@charx{11}{12}{203}{207}{##1}}
+ \CJK@namegdef{^^d0}##1{\@empty\CJK@char {12}{208}{##1}}
+ \CJK@namegdef{^^d1}##1{\@empty\CJK@char {12}{209}{##1}}
+ \CJK@namegdef{^^d2}##1{\@empty\CJK@charx{12}{13}{177}{210}{##1}}
+ \CJK@namegdef{^^d3}##1{\@empty\CJK@char {13}{211}{##1}}
+ \CJK@namegdef{^^d4}##1{\@empty\CJK@charx{13}{14}{245}{212}{##1}}
+ \CJK@namegdef{^^d5}##1{\@empty\CJK@char {14}{213}{##1}}
+ \CJK@namegdef{^^d6}##1{\@empty\CJK@char {14}{214}{##1}}
+ \CJK@namegdef{^^d7}##1{\@empty\CJK@charx{14}{15}{219}{215}{##1}}
+ \CJK@namegdef{^^d8}##1{\@empty\CJK@char {15}{216}{##1}}
+ \CJK@namegdef{^^d9}##1{\@empty\CJK@char {15}{217}{##1}}
+ \CJK@namegdef{^^da}##1{\@empty\CJK@charx{15}{16}{193}{218}{##1}}
+ \CJK@namegdef{^^db}##1{\@empty\CJK@char {16}{219}{##1}}
+ \CJK@namegdef{^^dc}##1{\@empty\CJK@char {16}{220}{##1}}
+ \CJK@namegdef{^^dd}##1{\@empty\CJK@charx{16}{17}{167}{221}{##1}}
+ \CJK@namegdef{^^de}##1{\@empty\CJK@char {17}{222}{##1}}
+ \CJK@namegdef{^^df}##1{\@empty\CJK@charx{17}{18}{235}{223}{##1}}
+ \CJK@namegdef{^^e0}##1{\@empty\CJK@char {18}{224}{##1}}
+ \CJK@namegdef{^^e1}##1{\@empty\CJK@char {18}{225}{##1}}
+ \CJK@namegdef{^^e2}##1{\@empty\CJK@charx{18}{19}{209}{226}{##1}}
+ \CJK@namegdef{^^e3}##1{\@empty\CJK@char {19}{227}{##1}}
+ \CJK@namegdef{^^e4}##1{\@empty\CJK@char {19}{228}{##1}}
+ \CJK@namegdef{^^e5}##1{\@empty\CJK@charx{19}{20}{183}{229}{##1}}
+ \CJK@namegdef{^^e6}##1{\@empty\CJK@char {20}{230}{##1}}
+ \CJK@namegdef{^^e7}##1{\@empty\CJK@charx{20}{21}{251}{231}{##1}}
+ \CJK@namegdef{^^e8}##1{\@empty\CJK@char {21}{232}{##1}}
+ \CJK@namegdef{^^e9}##1{\@empty\CJK@char {21}{233}{##1}}
+ \CJK@namegdef{^^ea}##1{\@empty\CJK@charx{21}{22}{225}{234}{##1}}
+ \CJK@namegdef{^^eb}##1{\@empty\CJK@char {22}{235}{##1}}
+ \CJK@namegdef{^^ec}##1{\@empty\CJK@char {22}{236}{##1}}
+ \CJK@namegdef{^^ed}##1{\@empty\CJK@charx{22}{23}{199}{237}{##1}}
+ \CJK@namegdef{^^ee}##1{\@empty\CJK@char {23}{238}{##1}}
+ \CJK@namegdef{^^ef}##1{\@empty\CJK@char {23}{239}{##1}}
+ \CJK@namegdef{^^f0}##1{\@empty\CJK@charx{23}{24}{173}{240}{##1}}
+ \CJK@namegdef{^^f1}##1{\@empty\CJK@char {24}{241}{##1}}
+ \CJK@namegdef{^^f2}##1{\@empty\CJK@charx{24}{25}{241}{242}{##1}}
+ \CJK@namegdef{^^f3}##1{\@empty\CJK@char {25}{243}{##1}}
+ \CJK@namegdef{^^f4}##1{\@empty\CJK@char {25}{244}{##1}}
+ \CJK@namegdef{^^f5}##1{\@empty\CJK@charx{25}{26}{215}{245}{##1}}
+ \CJK@namegdef{^^f6}##1{\@empty\CJK@char {26}{246}{##1}}
+ \CJK@namegdef{^^f7}##1{\@empty\CJK@char {26}{247}{##1}}
+ \CJK@namegdef{^^f8}##1{\@empty\CJK@charx{26}{27}{189}{248}{##1}}
+ \CJK@namegdef{^^f9}##1{\@empty\CJK@char {27}{249}{##1}}
+ \CJK@namegdef{^^fa}##1{\@empty\CJK@char {27}{250}{##1}}
+ \CJK@namegdef{^^fb}##1{\@empty\CJK@charx{27}{28}{163}{251}{##1}}
+ \CJK@namegdef{^^fc}##1{\@empty\CJK@char {28}{252}{##1}}
+ \CJK@namegdef{^^fd}##1{\@empty\CJK@charx{28}{29}{231}{253}{##1}}
+}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63bm.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63bm.fd
new file mode 100644
index 0000000000..53a54b72c7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63bm.fd
@@ -0,0 +1,53 @@
+% This is file c63bm.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63bm.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcBom
+
+\DeclareFontFamily{C63}{bm}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{bm}{c}{n}{<-> CJK * wbmc}{}
+\DeclareFontShape{C63}{bm}{c}{sl}{<-> CJK * wbmco}{}
+\DeclareFontShape{C63}{bm}{c}{it}{<-> CJKssub * bm/c/sl}{}
+
+\DeclareFontShape{C63}{bm}{m}{n}{<-> CJK * wbm}{}
+\DeclareFontShape{C63}{bm}{m}{sl}{<-> CJK * wbmo}{}
+\DeclareFontShape{C63}{bm}{m}{it}{<-> CJKssub * bm/m/sl}{}
+
+\DeclareFontShape{C63}{bm}{x}{n}{<-> CJK * wbmx}{}
+\DeclareFontShape{C63}{bm}{x}{sl}{<-> CJK * wbmxo}{}
+\DeclareFontShape{C63}{bm}{x}{it}{<-> CJKssub * bm/x/sl}{}
+
+\DeclareFontShape{C63}{bm}{ux}{n}{<-> CJK * wbmu}{}
+\DeclareFontShape{C63}{bm}{ux}{sl}{<-> CJK * wbmuo}{}
+\DeclareFontShape{C63}{bm}{ux}{it}{<-> CJKssub * bm/ux/sl}{}
+
+\DeclareFontShape{C63}{bm}{bc}{n}{<-> CJKb * wbmc}{\CJKbold}
+\DeclareFontShape{C63}{bm}{bc}{sl}{<-> CJKb * wbmco}{\CJKbold}
+\DeclareFontShape{C63}{bm}{bc}{it}{<-> CJKssub * bm/bc/sl}{}
+
+\DeclareFontShape{C63}{bm}{b}{n}{<-> CJKb * wbm}{\CJKbold}
+\DeclareFontShape{C63}{bm}{b}{sl}{<-> CJKb * wbmo}{\CJKbold}
+\DeclareFontShape{C63}{bm}{b}{it}{<-> CJKssub * bm/b/sl}{}
+
+\DeclareFontShape{C63}{bm}{bx}{n}{<-> CJKb * wbmx}{\CJKbold}
+\DeclareFontShape{C63}{bm}{bx}{sl}{<-> CJKb * wbmxo}{\CJKbold}
+\DeclareFontShape{C63}{bm}{bx}{it}{<-> CJKssub * bm/bx/sl}{}
+
+\DeclareFontShape{C63}{bm}{bux}{n}{<-> CJKb * wbmu}{\CJKbold}
+\DeclareFontShape{C63}{bm}{bux}{sl}{<-> CJKb * wbmuo}{\CJKbold}
+\DeclareFontShape{C63}{bm}{bux}{it}{<-> CJKssub * bm/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63dn.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63dn.fd
new file mode 100644
index 0000000000..1bf465aa6e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63dn.fd
@@ -0,0 +1,69 @@
+% This is file c63dn.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63dn.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcDinaru
+
+\DeclareFontFamily{C63}{dn}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{dn}{c}{n}{<-> CJK * wdnc}{}
+\DeclareFontShape{C63}{dn}{c}{sl}{<-> CJK * wdnco}{}
+\DeclareFontShape{C63}{dn}{c}{it}{<-> CJKssub * dn/c/sl}{}
+
+\DeclareFontShape{C63}{dn}{m}{n}{<-> CJK * wdn}{}
+\DeclareFontShape{C63}{dn}{m}{sl}{<-> CJK * wdno}{}
+\DeclareFontShape{C63}{dn}{m}{it}{<-> CJKssub * dn/m/sl}{}
+
+\DeclareFontShape{C63}{dn}{x}{n}{<-> CJK * wdnx}{}
+\DeclareFontShape{C63}{dn}{x}{sl}{<-> CJK * wdnxo}{}
+\DeclareFontShape{C63}{dn}{x}{it}{<-> CJKssub * dn/x/sl}{}
+
+\DeclareFontShape{C63}{dn}{ux}{n}{<-> CJK * wdnu}{}
+\DeclareFontShape{C63}{dn}{ux}{sl}{<-> CJK * wdnuo}{}
+\DeclareFontShape{C63}{dn}{ux}{it}{<-> CJKssub * dn/ux/sl}{}
+
+\DeclareFontShape{C63}{dn}{bc}{n}{<-> CJK * wdnbc}{}
+\DeclareFontShape{C63}{dn}{bc}{sl}{<-> CJK * wdnbco}{}
+\DeclareFontShape{C63}{dn}{bc}{it}{<-> CJKssub * dn/bc/sl}{}
+
+\DeclareFontShape{C63}{dn}{b}{n}{<-> CJK * wdnb}{}
+\DeclareFontShape{C63}{dn}{b}{sl}{<-> CJK * wdnbo}{}
+\DeclareFontShape{C63}{dn}{b}{it}{<-> CJKssub * dn/b/sl}{}
+
+\DeclareFontShape{C63}{dn}{bx}{n}{<-> CJK * wdnbx}{}
+\DeclareFontShape{C63}{dn}{bx}{sl}{<-> CJK * wdnbxo}{}
+\DeclareFontShape{C63}{dn}{bx}{it}{<-> CJKssub * dn/bx/sl}{}
+
+\DeclareFontShape{C63}{dn}{bux}{n}{<-> CJK * wdnbu}{}
+\DeclareFontShape{C63}{dn}{bux}{sl}{<-> CJK * wdnbuo}{}
+\DeclareFontShape{C63}{dn}{bux}{it}{<-> CJKssub * dn/bux/sl}{}
+
+\DeclareFontShape{C63}{dn}{lc}{n}{<-> CJK * wdnlc}{}
+\DeclareFontShape{C63}{dn}{lc}{sl}{<-> CJK * wdnlco}{}
+\DeclareFontShape{C63}{dn}{lc}{it}{<-> CJKssub * dn/lc/sl}{}
+
+\DeclareFontShape{C63}{dn}{l}{n}{<-> CJK * wdnl}{}
+\DeclareFontShape{C63}{dn}{l}{sl}{<-> CJK * wdnlo}{}
+\DeclareFontShape{C63}{dn}{l}{it}{<-> CJKssub * dn/l/sl}{}
+
+\DeclareFontShape{C63}{dn}{lx}{n}{<-> CJK * wdnlx}{}
+\DeclareFontShape{C63}{dn}{lx}{sl}{<-> CJK * wdnlxo}{}
+\DeclareFontShape{C63}{dn}{lx}{it}{<-> CJKssub * dn/lx/sl}{}
+
+\DeclareFontShape{C63}{dn}{lux}{n}{<-> CJK * wdnlu}{}
+\DeclareFontShape{C63}{dn}{lux}{sl}{<-> CJK * wdnluo}{}
+\DeclareFontShape{C63}{dn}{lux}{it}{<-> CJKssub * dn/lux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gr.fd
new file mode 100644
index 0000000000..4bd21a106a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gr.fd
@@ -0,0 +1,53 @@
+% This is file c63gr.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63gr.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcGraphic
+
+\DeclareFontFamily{C63}{gr}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{gr}{c}{n}{<-> CJK * wgrc}{}
+\DeclareFontShape{C63}{gr}{c}{sl}{<-> CJK * wgrco}{}
+\DeclareFontShape{C63}{gr}{c}{it}{<-> CJKssub * gr/c/sl}{}
+
+\DeclareFontShape{C63}{gr}{m}{n}{<-> CJK * wgr}{}
+\DeclareFontShape{C63}{gr}{m}{sl}{<-> CJK * wgro}{}
+\DeclareFontShape{C63}{gr}{m}{it}{<-> CJKssub * gr/m/sl}{}
+
+\DeclareFontShape{C63}{gr}{x}{n}{<-> CJK * wgrx}{}
+\DeclareFontShape{C63}{gr}{x}{sl}{<-> CJK * wgrxo}{}
+\DeclareFontShape{C63}{gr}{x}{it}{<-> CJKssub * gr/x/sl}{}
+
+\DeclareFontShape{C63}{gr}{ux}{n}{<-> CJK * wgru}{}
+\DeclareFontShape{C63}{gr}{ux}{sl}{<-> CJK * wgruo}{}
+\DeclareFontShape{C63}{gr}{ux}{it}{<-> CJKssub * gr/ux/sl}{}
+
+\DeclareFontShape{C63}{gr}{bc}{n}{<-> CJK * wgrbc}{}
+\DeclareFontShape{C63}{gr}{bc}{sl}{<-> CJK * wgrbco}{}
+\DeclareFontShape{C63}{gr}{bc}{it}{<-> CJKssub * gr/bc/sl}{}
+
+\DeclareFontShape{C63}{gr}{b}{n}{<-> CJK * wgrb}{}
+\DeclareFontShape{C63}{gr}{b}{sl}{<-> CJK * wgrbo}{}
+\DeclareFontShape{C63}{gr}{b}{it}{<-> CJKssub * gr/b/sl}{}
+
+\DeclareFontShape{C63}{gr}{bx}{n}{<-> CJK * wgrbx}{}
+\DeclareFontShape{C63}{gr}{bx}{sl}{<-> CJK * wgrbxo}{}
+\DeclareFontShape{C63}{gr}{bx}{it}{<-> CJKssub * gr/bx/sl}{}
+
+\DeclareFontShape{C63}{gr}{bux}{n}{<-> CJK * wgrbu}{}
+\DeclareFontShape{C63}{gr}{bux}{sl}{<-> CJK * wgrbuo}{}
+\DeclareFontShape{C63}{gr}{bux}{it}{<-> CJKssub * gr/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gs.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gs.fd
new file mode 100644
index 0000000000..1dbb1fd71c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gs.fd
@@ -0,0 +1,53 @@
+% This is file c63gs.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63gs.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcGungseo
+
+\DeclareFontFamily{C63}{gs}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{gs}{bc}{n}{<-> CJK * wgsc}{}
+\DeclareFontShape{C63}{gs}{bc}{sl}{<-> CJK * wgsco}{}
+\DeclareFontShape{C63}{gs}{bc}{it}{<-> CJKssub * gs/bc/sl}{}
+
+\DeclareFontShape{C63}{gs}{b}{n}{<-> CJK * wgs}{}
+\DeclareFontShape{C63}{gs}{b}{sl}{<-> CJK * wgso}{}
+\DeclareFontShape{C63}{gs}{b}{it}{<-> CJKssub * gs/b/sl}{}
+
+\DeclareFontShape{C63}{gs}{bx}{n}{<-> CJK * wgsx}{}
+\DeclareFontShape{C63}{gs}{bx}{sl}{<-> CJK * wgsxo}{}
+\DeclareFontShape{C63}{gs}{bx}{it}{<-> CJKssub * gs/bx/sl}{}
+
+\DeclareFontShape{C63}{gs}{bux}{n}{<-> CJK * wgsu}{}
+\DeclareFontShape{C63}{gs}{bux}{sl}{<-> CJK * wgsuo}{}
+\DeclareFontShape{C63}{gs}{bux}{it}{<-> CJKssub * gs/bux/sl}{}
+
+\DeclareFontShape{C63}{gs}{c}{n}{<-> CJKssub * gs/bc/n}{}
+\DeclareFontShape{C63}{gs}{c}{sl}{<-> CJKssub * gs/bc/sl}{}
+\DeclareFontShape{C63}{gs}{c}{it}{<-> CJKssub * gs/bc/sl}{}
+
+\DeclareFontShape{C63}{gs}{m}{n}{<-> CJKssub * gs/b/n}{}
+\DeclareFontShape{C63}{gs}{m}{sl}{<-> CJKssub * gs/b/sl}{}
+\DeclareFontShape{C63}{gs}{m}{it}{<-> CJKssub * gs/b/sl}{}
+
+\DeclareFontShape{C63}{gs}{x}{n}{<-> CJKssub * gs/bx/n}{}
+\DeclareFontShape{C63}{gs}{x}{sl}{<-> CJKssub * gs/bx/sl}{}
+\DeclareFontShape{C63}{gs}{x}{it}{<-> CJKssub * gs/bx/sl}{}
+
+\DeclareFontShape{C63}{gs}{ux}{n}{<-> CJKssub * gs/bux/n}{}
+\DeclareFontShape{C63}{gs}{ux}{sl}{<-> CJKssub * gs/bux/sl}{}
+\DeclareFontShape{C63}{gs}{ux}{it}{<-> CJKssub * gs/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gt.fd
new file mode 100644
index 0000000000..a31e213745
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63gt.fd
@@ -0,0 +1,53 @@
+% This is file c63gt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63gt.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcGothic
+
+\DeclareFontFamily{C63}{gt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{gt}{c}{n}{<-> CJK * wgtc}{}
+\DeclareFontShape{C63}{gt}{c}{sl}{<-> CJK * wgtco}{}
+\DeclareFontShape{C63}{gt}{c}{it}{<-> CJKssub * gt/c/sl}{}
+
+\DeclareFontShape{C63}{gt}{m}{n}{<-> CJK * wgt}{}
+\DeclareFontShape{C63}{gt}{m}{sl}{<-> CJK * wgto}{}
+\DeclareFontShape{C63}{gt}{m}{it}{<-> CJKssub * gt/m/sl}{}
+
+\DeclareFontShape{C63}{gt}{x}{n}{<-> CJK * wgtx}{}
+\DeclareFontShape{C63}{gt}{x}{sl}{<-> CJK * wgtxo}{}
+\DeclareFontShape{C63}{gt}{x}{it}{<-> CJKssub * gt/x/sl}{}
+
+\DeclareFontShape{C63}{gt}{ux}{n}{<-> CJK * wgtu}{}
+\DeclareFontShape{C63}{gt}{ux}{sl}{<-> CJK * wgtuo}{}
+\DeclareFontShape{C63}{gt}{ux}{it}{<-> CJKssub * gt/ux/sl}{}
+
+\DeclareFontShape{C63}{gt}{bc}{n}{<-> CJK * wgtbc}{}
+\DeclareFontShape{C63}{gt}{bc}{sl}{<-> CJK * wgtbco}{}
+\DeclareFontShape{C63}{gt}{bc}{it}{<-> CJKssub * gt/bc/sl}{}
+
+\DeclareFontShape{C63}{gt}{b}{n}{<-> CJK * wgtb}{}
+\DeclareFontShape{C63}{gt}{b}{sl}{<-> CJK * wgtbo}{}
+\DeclareFontShape{C63}{gt}{b}{it}{<-> CJKssub * gt/b/sl}{}
+
+\DeclareFontShape{C63}{gt}{bx}{n}{<-> CJK * wgtbx}{}
+\DeclareFontShape{C63}{gt}{bx}{sl}{<-> CJK * wgtbxo}{}
+\DeclareFontShape{C63}{gt}{bx}{it}{<-> CJKssub * gt/bx/sl}{}
+
+\DeclareFontShape{C63}{gt}{bux}{n}{<-> CJK * wgtbu}{}
+\DeclareFontShape{C63}{gt}{bux}{sl}{<-> CJK * wgtbuo}{}
+\DeclareFontShape{C63}{gt}{bux}{it}{<-> CJKssub * gt/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jgt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jgt.fd
new file mode 100644
index 0000000000..ef1fa5cea3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jgt.fd
@@ -0,0 +1,53 @@
+% This is file c63jgt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63jgt.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoGothic
+
+\DeclareFontFamily{C63}{jgt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{jgt}{c}{n}{<-> CJK * wjgtc}{}
+\DeclareFontShape{C63}{jgt}{c}{sl}{<-> CJK * wjgtco}{}
+\DeclareFontShape{C63}{jgt}{c}{it}{<-> CJKssub * jgt/c/sl}{}
+
+\DeclareFontShape{C63}{jgt}{m}{n}{<-> CJK * wjgt}{}
+\DeclareFontShape{C63}{jgt}{m}{sl}{<-> CJK * wjgto}{}
+\DeclareFontShape{C63}{jgt}{m}{it}{<-> CJKssub * jgt/m/sl}{}
+
+\DeclareFontShape{C63}{jgt}{x}{n}{<-> CJK * wjgtx}{}
+\DeclareFontShape{C63}{jgt}{x}{sl}{<-> CJK * wjgtxo}{}
+\DeclareFontShape{C63}{jgt}{x}{it}{<-> CJKssub * jgt/x/sl}{}
+
+\DeclareFontShape{C63}{jgt}{ux}{n}{<-> CJK * wjgtu}{}
+\DeclareFontShape{C63}{jgt}{ux}{sl}{<-> CJK * wjgtuo}{}
+\DeclareFontShape{C63}{jgt}{ux}{it}{<-> CJKssub * jgt/ux/sl}{}
+
+\DeclareFontShape{C63}{jgt}{bc}{n}{<-> CJKb * wjgtc}{\CJKbold}
+\DeclareFontShape{C63}{jgt}{bc}{sl}{<-> CJKb * wjgtco}{\CJKbold}
+\DeclareFontShape{C63}{jgt}{bc}{it}{<-> CJKssub * jgt/bc/sl}{}
+
+\DeclareFontShape{C63}{jgt}{b}{n}{<-> CJKb * wjgt}{\CJKbold}
+\DeclareFontShape{C63}{jgt}{b}{sl}{<-> CJKb * wjgto}{\CJKbold}
+\DeclareFontShape{C63}{jgt}{b}{it}{<-> CJKssub * jgt/b/sl}{}
+
+\DeclareFontShape{C63}{jgt}{bx}{n}{<-> CJKb * wjgtx}{\CJKbold}
+\DeclareFontShape{C63}{jgt}{bx}{sl}{<-> CJKb * wjgtxo}{\CJKbold}
+\DeclareFontShape{C63}{jgt}{bx}{it}{<-> CJKssub * jgt/bx/sl}{}
+
+\DeclareFontShape{C63}{jgt}{bux}{n}{<-> CJKb * wjgtu}{\CJKbold}
+\DeclareFontShape{C63}{jgt}{bux}{sl}{<-> CJKb * wjgtuo}{\CJKbold}
+\DeclareFontShape{C63}{jgt}{bux}{it}{<-> CJKssub * jgt/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jmj.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jmj.fd
new file mode 100644
index 0000000000..2e1a2bfb0f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jmj.fd
@@ -0,0 +1,53 @@
+% This is file c63jmj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63jmj.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoMyoungjo
+
+\DeclareFontFamily{C63}{jmj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{jmj}{c}{n}{<-> CJK * wjmjc}{}
+\DeclareFontShape{C63}{jmj}{c}{sl}{<-> CJK * wjmjco}{}
+\DeclareFontShape{C63}{jmj}{c}{it}{<-> CJKssub * jmj/c/sl}{}
+
+\DeclareFontShape{C63}{jmj}{m}{n}{<-> CJK * wjmj}{}
+\DeclareFontShape{C63}{jmj}{m}{sl}{<-> CJK * wjmjo}{}
+\DeclareFontShape{C63}{jmj}{m}{it}{<-> CJKssub * jmj/m/sl}{}
+
+\DeclareFontShape{C63}{jmj}{x}{n}{<-> CJK * wjmjx}{}
+\DeclareFontShape{C63}{jmj}{x}{sl}{<-> CJK * wjmjxo}{}
+\DeclareFontShape{C63}{jmj}{x}{it}{<-> CJKssub * jmj/x/sl}{}
+
+\DeclareFontShape{C63}{jmj}{ux}{n}{<-> CJK * wjmju}{}
+\DeclareFontShape{C63}{jmj}{ux}{sl}{<-> CJK * wjmjuo}{}
+\DeclareFontShape{C63}{jmj}{ux}{it}{<-> CJKssub * jmj/ux/sl}{}
+
+\DeclareFontShape{C63}{jmj}{bc}{n}{<-> CJKb * wjmjc}{\CJKbold}
+\DeclareFontShape{C63}{jmj}{bc}{sl}{<-> CJKb * wjmjco}{\CJKbold}
+\DeclareFontShape{C63}{jmj}{bc}{it}{<-> CJKssub * jmj/bc/sl}{}
+
+\DeclareFontShape{C63}{jmj}{b}{n}{<-> CJKb * wjmj}{\CJKbold}
+\DeclareFontShape{C63}{jmj}{b}{sl}{<-> CJKb * wjmjo}{\CJKbold}
+\DeclareFontShape{C63}{jmj}{b}{it}{<-> CJKssub * jmj/b/sl}{}
+
+\DeclareFontShape{C63}{jmj}{bx}{n}{<-> CJKb * wjmjx}{\CJKbold}
+\DeclareFontShape{C63}{jmj}{bx}{sl}{<-> CJKb * wjmjxo}{\CJKbold}
+\DeclareFontShape{C63}{jmj}{bx}{it}{<-> CJKssub * jmj/bx/sl}{}
+
+\DeclareFontShape{C63}{jmj}{bux}{n}{<-> CJKb * wjmju}{\CJKbold}
+\DeclareFontShape{C63}{jmj}{bux}{sl}{<-> CJKb * wjmjuo}{\CJKbold}
+\DeclareFontShape{C63}{jmj}{bux}{it}{<-> CJKssub * jmj/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jnv.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jnv.fd
new file mode 100644
index 0000000000..4bc3278c91
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jnv.fd
@@ -0,0 +1,53 @@
+% This is file c63jnv.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63jnv.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoNovel
+
+\DeclareFontFamily{C63}{jnv}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{jnv}{c}{n}{<-> CJK * wjnvc}{}
+\DeclareFontShape{C63}{jnv}{c}{sl}{<-> CJK * wjnvco}{}
+\DeclareFontShape{C63}{jnv}{c}{it}{<-> CJKssub * jnv/c/sl}{}
+
+\DeclareFontShape{C63}{jnv}{m}{n}{<-> CJK * wjnv}{}
+\DeclareFontShape{C63}{jnv}{m}{sl}{<-> CJK * wjnvo}{}
+\DeclareFontShape{C63}{jnv}{m}{it}{<-> CJKssub * jnv/m/sl}{}
+
+\DeclareFontShape{C63}{jnv}{x}{n}{<-> CJK * wjnvx}{}
+\DeclareFontShape{C63}{jnv}{x}{sl}{<-> CJK * wjnvxo}{}
+\DeclareFontShape{C63}{jnv}{x}{it}{<-> CJKssub * jnv/x/sl}{}
+
+\DeclareFontShape{C63}{jnv}{ux}{n}{<-> CJK * wjnvu}{}
+\DeclareFontShape{C63}{jnv}{ux}{sl}{<-> CJK * wjnvuo}{}
+\DeclareFontShape{C63}{jnv}{ux}{it}{<-> CJKssub * jnv/ux/sl}{}
+
+\DeclareFontShape{C63}{jnv}{bc}{n}{<-> CJKb * wjnvc}{\CJKbold}
+\DeclareFontShape{C63}{jnv}{bc}{sl}{<-> CJKb * wjnvco}{\CJKbold}
+\DeclareFontShape{C63}{jnv}{bc}{it}{<-> CJKssub * jnv/bc/sl}{}
+
+\DeclareFontShape{C63}{jnv}{b}{n}{<-> CJKb * wjnv}{\CJKbold}
+\DeclareFontShape{C63}{jnv}{b}{sl}{<-> CJKb * wjnvo}{\CJKbold}
+\DeclareFontShape{C63}{jnv}{b}{it}{<-> CJKssub * jnv/b/sl}{}
+
+\DeclareFontShape{C63}{jnv}{bx}{n}{<-> CJKb * wjnvx}{\CJKbold}
+\DeclareFontShape{C63}{jnv}{bx}{sl}{<-> CJKb * wjnvxo}{\CJKbold}
+\DeclareFontShape{C63}{jnv}{bx}{it}{<-> CJKssub * jnv/bx/sl}{}
+
+\DeclareFontShape{C63}{jnv}{bux}{n}{<-> CJKb * wjnvu}{\CJKbold}
+\DeclareFontShape{C63}{jnv}{bux}{sl}{<-> CJKb * wjnvuo}{\CJKbold}
+\DeclareFontShape{C63}{jnv}{bux}{it}{<-> CJKssub * jnv/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jsr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jsr.fd
new file mode 100644
index 0000000000..80d4631a65
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63jsr.fd
@@ -0,0 +1,53 @@
+% This is file c63jsr.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63jsr.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoSora
+
+\DeclareFontFamily{C63}{jsr}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{jsr}{c}{n}{<-> CJK * wjsrc}{}
+\DeclareFontShape{C63}{jsr}{c}{sl}{<-> CJK * wjsrco}{}
+\DeclareFontShape{C63}{jsr}{c}{it}{<-> CJKssub * jsr/c/sl}{}
+
+\DeclareFontShape{C63}{jsr}{m}{n}{<-> CJK * wjsr}{}
+\DeclareFontShape{C63}{jsr}{m}{sl}{<-> CJK * wjsro}{}
+\DeclareFontShape{C63}{jsr}{m}{it}{<-> CJKssub * jsr/m/sl}{}
+
+\DeclareFontShape{C63}{jsr}{x}{n}{<-> CJK * wjsrx}{}
+\DeclareFontShape{C63}{jsr}{x}{sl}{<-> CJK * wjsrxo}{}
+\DeclareFontShape{C63}{jsr}{x}{it}{<-> CJKssub * jsr/x/sl}{}
+
+\DeclareFontShape{C63}{jsr}{ux}{n}{<-> CJK * wjsru}{}
+\DeclareFontShape{C63}{jsr}{ux}{sl}{<-> CJK * wjsruo}{}
+\DeclareFontShape{C63}{jsr}{ux}{it}{<-> CJKssub * jsr/ux/sl}{}
+
+\DeclareFontShape{C63}{jsr}{bc}{n}{<-> CJKb * wjsrc}{\CJKbold}
+\DeclareFontShape{C63}{jsr}{bc}{sl}{<-> CJKb * wjsrco}{\CJKbold}
+\DeclareFontShape{C63}{jsr}{bc}{it}{<-> CJKssub * jsr/bc/sl}{}
+
+\DeclareFontShape{C63}{jsr}{b}{n}{<-> CJKb * wjsr}{\CJKbold}
+\DeclareFontShape{C63}{jsr}{b}{sl}{<-> CJKb * wjsro}{\CJKbold}
+\DeclareFontShape{C63}{jsr}{b}{it}{<-> CJKssub * jsr/b/sl}{}
+
+\DeclareFontShape{C63}{jsr}{bx}{n}{<-> CJKb * wjsrx}{\CJKbold}
+\DeclareFontShape{C63}{jsr}{bx}{sl}{<-> CJKb * wjsrxo}{\CJKbold}
+\DeclareFontShape{C63}{jsr}{bx}{it}{<-> CJKssub * jsr/bx/sl}{}
+
+\DeclareFontShape{C63}{jsr}{bux}{n}{<-> CJKb * wjsru}{\CJKbold}
+\DeclareFontShape{C63}{jsr}{bux}{sl}{<-> CJKb * wjsruo}{\CJKbold}
+\DeclareFontShape{C63}{jsr}{bux}{it}{<-> CJKssub * jsr/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63mj.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63mj.fd
new file mode 100644
index 0000000000..cd99102f69
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63mj.fd
@@ -0,0 +1,53 @@
+% This is file c63mj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63mj.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcMyoungjo
+
+\DeclareFontFamily{C63}{mj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{mj}{c}{n}{<-> CJK * wmjc}{}
+\DeclareFontShape{C63}{mj}{c}{sl}{<-> CJK * wmjco}{}
+\DeclareFontShape{C63}{mj}{c}{it}{<-> CJKssub * mj/c/sl}{}
+
+\DeclareFontShape{C63}{mj}{m}{n}{<-> CJK * wmj}{}
+\DeclareFontShape{C63}{mj}{m}{sl}{<-> CJK * wmjo}{}
+\DeclareFontShape{C63}{mj}{m}{it}{<-> CJKssub * mj/m/sl}{}
+
+\DeclareFontShape{C63}{mj}{x}{n}{<-> CJK * wmjx}{}
+\DeclareFontShape{C63}{mj}{x}{sl}{<-> CJK * wmjxo}{}
+\DeclareFontShape{C63}{mj}{x}{it}{<-> CJKssub * mj/x/sl}{}
+
+\DeclareFontShape{C63}{mj}{ux}{n}{<-> CJK * wmju}{}
+\DeclareFontShape{C63}{mj}{ux}{sl}{<-> CJK * wmjuo}{}
+\DeclareFontShape{C63}{mj}{ux}{it}{<-> CJKssub * mj/ux/sl}{}
+
+\DeclareFontShape{C63}{mj}{bc}{n}{<-> CJK * wmjbc}{}
+\DeclareFontShape{C63}{mj}{bc}{sl}{<-> CJK * wmjbco}{}
+\DeclareFontShape{C63}{mj}{bc}{it}{<-> CJKssub * mj/bc/sl}{}
+
+\DeclareFontShape{C63}{mj}{b}{n}{<-> CJK * wmjb}{}
+\DeclareFontShape{C63}{mj}{b}{sl}{<-> CJK * wmjbo}{}
+\DeclareFontShape{C63}{mj}{b}{it}{<-> CJKssub * mj/b/sl}{}
+
+\DeclareFontShape{C63}{mj}{bx}{n}{<-> CJK * wmjbx}{}
+\DeclareFontShape{C63}{mj}{bx}{sl}{<-> CJK * wmjbxo}{}
+\DeclareFontShape{C63}{mj}{bx}{it}{<-> CJKssub * mj/bx/sl}{}
+
+\DeclareFontShape{C63}{mj}{bux}{n}{<-> CJK * wmjbu}{}
+\DeclareFontShape{C63}{mj}{bux}{sl}{<-> CJK * wmjbuo}{}
+\DeclareFontShape{C63}{mj}{bux}{it}{<-> CJKssub * mj/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pg.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pg.fd
new file mode 100644
index 0000000000..24a2c021d0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pg.fd
@@ -0,0 +1,53 @@
+% This is file c63pg.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63pg.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPilgi
+
+\DeclareFontFamily{C63}{pg}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{pg}{c}{n}{<-> CJK * wpgc}{}
+\DeclareFontShape{C63}{pg}{c}{sl}{<-> CJK * wpgco}{}
+\DeclareFontShape{C63}{pg}{c}{it}{<-> CJKssub * wwpg/c/sl}{}
+
+\DeclareFontShape{C63}{pg}{m}{n}{<-> CJK * wpg}{}
+\DeclareFontShape{C63}{pg}{m}{sl}{<-> CJK * wpgo}{}
+\DeclareFontShape{C63}{pg}{m}{it}{<-> CJKssub * wwpg/m/sl}{}
+
+\DeclareFontShape{C63}{pg}{x}{n}{<-> CJK * wpgx}{}
+\DeclareFontShape{C63}{pg}{x}{sl}{<-> CJK * wpgxo}{}
+\DeclareFontShape{C63}{pg}{x}{it}{<-> CJKssub * wwpg/x/sl}{}
+
+\DeclareFontShape{C63}{pg}{ux}{n}{<-> CJK * wpgu}{}
+\DeclareFontShape{C63}{pg}{ux}{sl}{<-> CJK * wpguo}{}
+\DeclareFontShape{C63}{pg}{ux}{it}{<-> CJKssub * wwpg/ux/sl}{}
+
+\DeclareFontShape{C63}{pg}{bc}{n}{<-> CJK * wpgbc}{}
+\DeclareFontShape{C63}{pg}{bc}{sl}{<-> CJK * wpgbco}{}
+\DeclareFontShape{C63}{pg}{bc}{it}{<-> CJKssub * wwpg/bc/sl}{}
+
+\DeclareFontShape{C63}{pg}{b}{n}{<-> CJK * wpgb}{}
+\DeclareFontShape{C63}{pg}{b}{sl}{<-> CJK * wpgbo}{}
+\DeclareFontShape{C63}{pg}{b}{it}{<-> CJKssub * wwpg/b/sl}{}
+
+\DeclareFontShape{C63}{pg}{bx}{n}{<-> CJK * wpgbx}{}
+\DeclareFontShape{C63}{pg}{bx}{sl}{<-> CJK * wpgbxo}{}
+\DeclareFontShape{C63}{pg}{bx}{it}{<-> CJKssub * wwpg/bx/sl}{}
+
+\DeclareFontShape{C63}{pg}{bux}{n}{<-> CJK * wpgbu}{}
+\DeclareFontShape{C63}{pg}{bux}{sl}{<-> CJK * wpgbuo}{}
+\DeclareFontShape{C63}{pg}{bux}{it}{<-> CJKssub * wwpg/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pga.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pga.fd
new file mode 100644
index 0000000000..7f795391f8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pga.fd
@@ -0,0 +1,53 @@
+% This is file c63pga.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63pga.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPilgia
+
+\DeclareFontFamily{C63}{pga}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{pga}{c}{n}{<-> CJK * wpgac}{}
+\DeclareFontShape{C63}{pga}{c}{sl}{<-> CJK * wpgaco}{}
+\DeclareFontShape{C63}{pga}{c}{it}{<-> CJKssub * pga/c/sl}{}
+
+\DeclareFontShape{C63}{pga}{m}{n}{<-> CJK * wpga}{}
+\DeclareFontShape{C63}{pga}{m}{sl}{<-> CJK * wpgao}{}
+\DeclareFontShape{C63}{pga}{m}{it}{<-> CJKssub * pga/m/sl}{}
+
+\DeclareFontShape{C63}{pga}{x}{n}{<-> CJK * wpgax}{}
+\DeclareFontShape{C63}{pga}{x}{sl}{<-> CJK * wpgaxo}{}
+\DeclareFontShape{C63}{pga}{x}{it}{<-> CJKssub * pga/x/sl}{}
+
+\DeclareFontShape{C63}{pga}{ux}{n}{<-> CJK * wpgau}{}
+\DeclareFontShape{C63}{pga}{ux}{sl}{<-> CJK * wpgauo}{}
+\DeclareFontShape{C63}{pga}{ux}{it}{<-> CJKssub * pga/ux/sl}{}
+
+\DeclareFontShape{C63}{pga}{bc}{n}{<-> CJKb * wpgac}{\CJKbold}
+\DeclareFontShape{C63}{pga}{bc}{sl}{<-> CJKb * wpgaco}{\CJKbold}
+\DeclareFontShape{C63}{pga}{bc}{it}{<-> CJKssub * pga/bc/sl}{}
+
+\DeclareFontShape{C63}{pga}{b}{n}{<-> CJKb * wpga}{\CJKbold}
+\DeclareFontShape{C63}{pga}{b}{sl}{<-> CJKb * wpgao}{\CJKbold}
+\DeclareFontShape{C63}{pga}{b}{it}{<-> CJKssub * pga/b/sl}{}
+
+\DeclareFontShape{C63}{pga}{bx}{n}{<-> CJKb * wpgax}{\CJKbold}
+\DeclareFontShape{C63}{pga}{bx}{sl}{<-> CJKb * wpgaxo}{\CJKbold}
+\DeclareFontShape{C63}{pga}{bx}{it}{<-> CJKssub * pga/bx/sl}{}
+
+\DeclareFontShape{C63}{pga}{bux}{n}{<-> CJKb * wpgau}{\CJKbold}
+\DeclareFontShape{C63}{pga}{bux}{sl}{<-> CJKb * wpgauo}{\CJKbold}
+\DeclareFontShape{C63}{pga}{bux}{it}{<-> CJKssub * pga/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63ph.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63ph.fd
new file mode 100644
index 0000000000..7cd0996fda
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63ph.fd
@@ -0,0 +1,53 @@
+% This is file c63ph.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63ph.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPenHeulim
+
+\DeclareFontFamily{C63}{ph}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{ph}{c}{n}{<-> CJK * wphc}{}
+\DeclareFontShape{C63}{ph}{c}{sl}{<-> CJK * wphco}{}
+\DeclareFontShape{C63}{ph}{c}{it}{<-> CJKssub * ph/c/sl}{}
+
+\DeclareFontShape{C63}{ph}{m}{n}{<-> CJK * wph}{}
+\DeclareFontShape{C63}{ph}{m}{sl}{<-> CJK * wpho}{}
+\DeclareFontShape{C63}{ph}{m}{it}{<-> CJKssub * ph/m/sl}{}
+
+\DeclareFontShape{C63}{ph}{x}{n}{<-> CJK * wphx}{}
+\DeclareFontShape{C63}{ph}{x}{sl}{<-> CJK * wphxo}{}
+\DeclareFontShape{C63}{ph}{x}{it}{<-> CJKssub * ph/x/sl}{}
+
+\DeclareFontShape{C63}{ph}{ux}{n}{<-> CJK * wphu}{}
+\DeclareFontShape{C63}{ph}{ux}{sl}{<-> CJK * wphuo}{}
+\DeclareFontShape{C63}{ph}{ux}{it}{<-> CJKssub * ph/ux/sl}{}
+
+\DeclareFontShape{C63}{ph}{bc}{n}{<-> CJKb * wphc}{\CJKbold}
+\DeclareFontShape{C63}{ph}{bc}{sl}{<-> CJKb * wphco}{\CJKbold}
+\DeclareFontShape{C63}{ph}{bc}{it}{<-> CJKssub * ph/bc/sl}{}
+
+\DeclareFontShape{C63}{ph}{b}{n}{<-> CJKb * wph}{\CJKbold}
+\DeclareFontShape{C63}{ph}{b}{sl}{<-> CJKb * wpho}{\CJKbold}
+\DeclareFontShape{C63}{ph}{b}{it}{<-> CJKssub * ph/b/sl}{}
+
+\DeclareFontShape{C63}{ph}{bx}{n}{<-> CJKb * wphx}{\CJKbold}
+\DeclareFontShape{C63}{ph}{bx}{sl}{<-> CJKb * wphxo}{\CJKbold}
+\DeclareFontShape{C63}{ph}{bx}{it}{<-> CJKssub * ph/bx/sl}{}
+
+\DeclareFontShape{C63}{ph}{bux}{n}{<-> CJKb * wphu}{\CJKbold}
+\DeclareFontShape{C63}{ph}{bux}{sl}{<-> CJKb * wphuo}{\CJKbold}
+\DeclareFontShape{C63}{ph}{bux}{it}{<-> CJKssub * ph/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pn.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pn.fd
new file mode 100644
index 0000000000..e4a979077f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63pn.fd
@@ -0,0 +1,53 @@
+% This is file c63pn.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63pn.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPen
+
+\DeclareFontFamily{C63}{pn}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{pn}{c}{n}{<-> CJK * wpnc}{}
+\DeclareFontShape{C63}{pn}{c}{sl}{<-> CJK * wpnco}{}
+\DeclareFontShape{C63}{pn}{c}{it}{<-> CJKssub * pn/c/sl}{}
+
+\DeclareFontShape{C63}{pn}{m}{n}{<-> CJK * wpn}{}
+\DeclareFontShape{C63}{pn}{m}{sl}{<-> CJK * wpno}{}
+\DeclareFontShape{C63}{pn}{m}{it}{<-> CJKssub * pn/m/sl}{}
+
+\DeclareFontShape{C63}{pn}{x}{n}{<-> CJK * wpnx}{}
+\DeclareFontShape{C63}{pn}{x}{sl}{<-> CJK * wpnxo}{}
+\DeclareFontShape{C63}{pn}{x}{it}{<-> CJKssub * pn/x/sl}{}
+
+\DeclareFontShape{C63}{pn}{ux}{n}{<-> CJK * wpnu}{}
+\DeclareFontShape{C63}{pn}{ux}{sl}{<-> CJK * wpnuo}{}
+\DeclareFontShape{C63}{pn}{ux}{it}{<-> CJKssub * pn/ux/sl}{}
+
+\DeclareFontShape{C63}{pn}{bc}{n}{<-> CJKb * wpnc}{\CJKbold}
+\DeclareFontShape{C63}{pn}{bc}{sl}{<-> CJKb * wpnco}{\CJKbold}
+\DeclareFontShape{C63}{pn}{bc}{it}{<-> CJKssub * pn/bc/sl}{}
+
+\DeclareFontShape{C63}{pn}{b}{n}{<-> CJKb * wpn}{\CJKbold}
+\DeclareFontShape{C63}{pn}{b}{sl}{<-> CJKb * wpno}{\CJKbold}
+\DeclareFontShape{C63}{pn}{b}{it}{<-> CJKssub * pn/b/sl}{}
+
+\DeclareFontShape{C63}{pn}{bx}{n}{<-> CJKb * wpnx}{\CJKbold}
+\DeclareFontShape{C63}{pn}{bx}{sl}{<-> CJKb * wpnxo}{\CJKbold}
+\DeclareFontShape{C63}{pn}{bx}{it}{<-> CJKssub * pn/bx/sl}{}
+
+\DeclareFontShape{C63}{pn}{bux}{n}{<-> CJKb * wpnu}{\CJKbold}
+\DeclareFontShape{C63}{pn}{bux}{sl}{<-> CJKb * wpnuo}{\CJKbold}
+\DeclareFontShape{C63}{pn}{bux}{it}{<-> CJKssub * pn/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63sh.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63sh.fd
new file mode 100644
index 0000000000..62b984d6d1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63sh.fd
@@ -0,0 +1,53 @@
+% This is file c63sh.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63sh.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcShinmunMyoungjo
+
+\DeclareFontFamily{C63}{hwsh}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{sh}{c}{n}{<-> CJK * wshc}{}
+\DeclareFontShape{C63}{sh}{c}{sl}{<-> CJK * wshco}{}
+\DeclareFontShape{C63}{sh}{c}{it}{<-> CJKssub * sh/c/sl}{}
+
+\DeclareFontShape{C63}{sh}{m}{n}{<-> CJK * wsh}{}
+\DeclareFontShape{C63}{sh}{m}{sl}{<-> CJK * wsho}{}
+\DeclareFontShape{C63}{sh}{m}{it}{<-> CJKssub * sh/m/sl}{}
+
+\DeclareFontShape{C63}{sh}{x}{n}{<-> CJK * wshx}{}
+\DeclareFontShape{C63}{sh}{x}{sl}{<-> CJK * wshxo}{}
+\DeclareFontShape{C63}{sh}{x}{it}{<-> CJKssub * sh/x/sl}{}
+
+\DeclareFontShape{C63}{sh}{ux}{n}{<-> CJK * wshu}{}
+\DeclareFontShape{C63}{sh}{ux}{sl}{<-> CJK * wshuo}{}
+\DeclareFontShape{C63}{sh}{ux}{it}{<-> CJKssub * sh/ux/sl}{}
+
+\DeclareFontShape{C63}{sh}{bc}{n}{<-> CJKssub * sh/c/n}{}
+\DeclareFontShape{C63}{sh}{bc}{sl}{<-> CJKssub * sh/c/sl}{}
+\DeclareFontShape{C63}{sh}{bc}{it}{<-> CJKssub * sh/bc/sl}{}
+
+\DeclareFontShape{C63}{sh}{b}{n}{<-> CJKssub * sh/m/n}{}
+\DeclareFontShape{C63}{sh}{b}{sl}{<-> CJKssub * sh/m/sl}{}
+\DeclareFontShape{C63}{sh}{b}{it}{<-> CJKssub * sh/b/sl}{}
+
+\DeclareFontShape{C63}{sh}{bx}{n}{<-> CJKssub * sh/x/n}{}
+\DeclareFontShape{C63}{sh}{bx}{sl}{<-> CJKssub * sh/x/sl}{}
+\DeclareFontShape{C63}{sh}{bx}{it}{<-> CJKssub * sh/bx/sl}{}
+
+\DeclareFontShape{C63}{sh}{bux}{n}{<-> CJKssub * sh/ux/n}{}
+\DeclareFontShape{C63}{sh}{bux}{sl}{<-> CJKssub * sh/ux/sl}{}
+\DeclareFontShape{C63}{sh}{bux}{it}{<-> CJKssub * sh/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63tz.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63tz.fd
new file mode 100644
index 0000000000..a0f8c67af9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63tz.fd
@@ -0,0 +1,53 @@
+% This is file c63tz.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63tz.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcTypewriter
+
+\DeclareFontFamily{C63}{tz}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{tz}{c}{n}{<-> CJK * wttc}{}
+\DeclareFontShape{C63}{tz}{c}{sl}{<-> CJK * wttco}{}
+\DeclareFontShape{C63}{tz}{c}{it}{<-> CJKssub * tz/c/sl}{}
+
+\DeclareFontShape{C63}{tz}{m}{n}{<-> CJK * wtt}{}
+\DeclareFontShape{C63}{tz}{m}{sl}{<-> CJK * wtto}{}
+\DeclareFontShape{C63}{tz}{m}{it}{<-> CJKssub * tz/m/sl}{}
+
+\DeclareFontShape{C63}{tz}{x}{n}{<-> CJK * wttx}{}
+\DeclareFontShape{C63}{tz}{x}{sl}{<-> CJK * wttxo}{}
+\DeclareFontShape{C63}{tz}{x}{it}{<-> CJKssub * tz/x/sl}{}
+
+\DeclareFontShape{C63}{tz}{ux}{n}{<-> CJK * wttu}{}
+\DeclareFontShape{C63}{tz}{ux}{sl}{<-> CJK * wttuo}{}
+\DeclareFontShape{C63}{tz}{ux}{it}{<-> CJKssub * tz/ux/sl}{}
+
+\DeclareFontShape{C63}{tz}{bc}{n}{<-> CJKb * wttc}{\CJKbold}
+\DeclareFontShape{C63}{tz}{bc}{sl}{<-> CJKb * wttco}{\CJKbold}
+\DeclareFontShape{C63}{tz}{bc}{it}{<-> CJKssub * tz/bc/sl}{}
+
+\DeclareFontShape{C63}{tz}{b}{n}{<-> CJKb * wtt}{\CJKbold}
+\DeclareFontShape{C63}{tz}{b}{sl}{<-> CJKb * wtto}{\CJKbold}
+\DeclareFontShape{C63}{tz}{b}{it}{<-> CJKssub * tz/b/sl}{}
+
+\DeclareFontShape{C63}{tz}{bx}{n}{<-> CJKb * wttx}{\CJKbold}
+\DeclareFontShape{C63}{tz}{bx}{sl}{<-> CJKb * wttxo}{\CJKbold}
+\DeclareFontShape{C63}{tz}{bx}{it}{<-> CJKssub * tz/bx/sl}{}
+
+\DeclareFontShape{C63}{tz}{bux}{n}{<-> CJKb * wttu}{\CJKbold}
+\DeclareFontShape{C63}{tz}{bux}{sl}{<-> CJKb * wttuo}{\CJKbold}
+\DeclareFontShape{C63}{tz}{bux}{it}{<-> CJKssub * tz/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63vd.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63vd.fd
new file mode 100644
index 0000000000..66cc912c0f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63vd.fd
@@ -0,0 +1,53 @@
+% This is file c63vd.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63vd.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcVada
+
+\DeclareFontFamily{C63}{vd}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{vd}{c}{n}{<-> CJK * wvdc}{}
+\DeclareFontShape{C63}{vd}{c}{sl}{<-> CJK * wvdco}{}
+\DeclareFontShape{C63}{vd}{c}{it}{<-> CJKssub * vd/c/sl}{}
+
+\DeclareFontShape{C63}{vd}{m}{n}{<-> CJK * wvd}{}
+\DeclareFontShape{C63}{vd}{m}{sl}{<-> CJK * wvdo}{}
+\DeclareFontShape{C63}{vd}{m}{it}{<-> CJKssub * vd/m/sl}{}
+
+\DeclareFontShape{C63}{vd}{x}{n}{<-> CJK * wvdx}{}
+\DeclareFontShape{C63}{vd}{x}{sl}{<-> CJK * wvdxo}{}
+\DeclareFontShape{C63}{vd}{x}{it}{<-> CJKssub * vd/x/sl}{}
+
+\DeclareFontShape{C63}{vd}{ux}{n}{<-> CJK * wvdu}{}
+\DeclareFontShape{C63}{vd}{ux}{sl}{<-> CJK * wvduo}{}
+\DeclareFontShape{C63}{vd}{ux}{it}{<-> CJKssub * vd/ux/sl}{}
+
+\DeclareFontShape{C63}{vd}{bc}{n}{<-> CJKb * wvdc}{\CJKbold}
+\DeclareFontShape{C63}{vd}{bc}{sl}{<-> CJKb * wvdco}{\CJKbold}
+\DeclareFontShape{C63}{vd}{bc}{it}{<-> CJKssub * vd/bc/sl}{}
+
+\DeclareFontShape{C63}{vd}{b}{n}{<-> CJKb * wvd}{\CJKbold}
+\DeclareFontShape{C63}{vd}{b}{sl}{<-> CJKb * wvdo}{\CJKbold}
+\DeclareFontShape{C63}{vd}{b}{it}{<-> CJKssub * vd/b/sl}{}
+
+\DeclareFontShape{C63}{vd}{bx}{n}{<-> CJKb * wvdx}{\CJKbold}
+\DeclareFontShape{C63}{vd}{bx}{sl}{<-> CJKb * wvdxo}{\CJKbold}
+\DeclareFontShape{C63}{vd}{bx}{it}{<-> CJKssub * vd/bx/sl}{}
+
+\DeclareFontShape{C63}{vd}{bux}{n}{<-> CJKb * wvdu}{\CJKbold}
+\DeclareFontShape{C63}{vd}{bux}{sl}{<-> CJKb * wvduo}{\CJKbold}
+\DeclareFontShape{C63}{vd}{bux}{it}{<-> CJKssub * vd/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63yt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63yt.fd
new file mode 100644
index 0000000000..11b979a2d8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c63yt.fd
@@ -0,0 +1,53 @@
+% This is file c63yt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63yt.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcYetgul
+
+\DeclareFontFamily{C63}{yt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{yt}{c}{n}{<-> CJK * wytc}{}
+\DeclareFontShape{C63}{yt}{c}{sl}{<-> CJK * wytco}{}
+\DeclareFontShape{C63}{yt}{c}{it}{<-> CJKssub * yt/c/sl}{}
+
+\DeclareFontShape{C63}{yt}{m}{n}{<-> CJK * wyt}{}
+\DeclareFontShape{C63}{yt}{m}{sl}{<-> CJK * wyto}{}
+\DeclareFontShape{C63}{yt}{m}{it}{<-> CJKssub * yt/m/sl}{}
+
+\DeclareFontShape{C63}{yt}{x}{n}{<-> CJK * wytx}{}
+\DeclareFontShape{C63}{yt}{x}{sl}{<-> CJK * wytxo}{}
+\DeclareFontShape{C63}{yt}{x}{it}{<-> CJKssub * yt/x/sl}{}
+
+\DeclareFontShape{C63}{yt}{ux}{n}{<-> CJK * wytu}{}
+\DeclareFontShape{C63}{yt}{ux}{sl}{<-> CJK * wytuo}{}
+\DeclareFontShape{C63}{yt}{ux}{it}{<-> CJKssub * yt/ux/sl}{}
+
+\DeclareFontShape{C63}{yt}{bc}{n}{<-> CJKb * wytc}{\CJKbold}
+\DeclareFontShape{C63}{yt}{bc}{sl}{<-> CJKb * wytco}{\CJKbold}
+\DeclareFontShape{C63}{yt}{bc}{it}{<-> CJKssub * yt/bc/sl}{}
+
+\DeclareFontShape{C63}{yt}{b}{n}{<-> CJKb * wyt}{\CJKbold}
+\DeclareFontShape{C63}{yt}{b}{sl}{<-> CJKb * wyto}{\CJKbold}
+\DeclareFontShape{C63}{yt}{b}{it}{<-> CJKssub * yt/b/sl}{}
+
+\DeclareFontShape{C63}{yt}{bx}{n}{<-> CJKb * wytx}{\CJKbold}
+\DeclareFontShape{C63}{yt}{bx}{sl}{<-> CJKb * wytxo}{\CJKbold}
+\DeclareFontShape{C63}{yt}{bx}{it}{<-> CJKssub * yt/bx/sl}{}
+
+\DeclareFontShape{C63}{yt}{bux}{n}{<-> CJKb * wytu}{\CJKbold}
+\DeclareFontShape{C63}{yt}{bux}{sl}{<-> CJKb * wytuo}{\CJKbold}
+\DeclareFontShape{C63}{yt}{bux}{it}{<-> CJKssub * yt/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64bm.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64bm.fd
new file mode 100644
index 0000000000..35dbc4e552
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64bm.fd
@@ -0,0 +1,53 @@
+% This is file c64bm.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64bm.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcBom
+
+\DeclareFontFamily{C64}{bm}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{bm}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C64}{bm}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C64}{bm}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C64}{bm}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C64}{bm}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C64}{bm}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C64}{bm}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C64}{bm}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C64}{bm}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C64}{bm}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C64}{bm}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C64}{bm}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C64}{bm}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C64}{bm}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C64}{bm}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C64}{bm}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C64}{bm}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C64}{bm}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C64}{bm}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C64}{bm}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C64}{bm}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C64}{bm}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C64}{bm}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C64}{bm}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64dn.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64dn.fd
new file mode 100644
index 0000000000..e699a8fcdf
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64dn.fd
@@ -0,0 +1,69 @@
+% This is file c64dn.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64dn.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcDinaru
+
+\DeclareFontFamily{C64}{dn}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{dn}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C64}{dn}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C64}{dn}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C64}{dn}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C64}{dn}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C64}{dn}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C64}{dn}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C64}{dn}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C64}{dn}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C64}{dn}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C64}{dn}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C64}{dn}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C64}{dn}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C64}{dn}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C64}{dn}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C64}{dn}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C64}{dn}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C64}{dn}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C64}{dn}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C64}{dn}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C64}{dn}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C64}{dn}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C64}{dn}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C64}{dn}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\DeclareFontShape{C64}{dn}{lc}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C64}{dn}{lc}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C64}{dn}{lc}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C64}{dn}{l}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C64}{dn}{l}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C64}{dn}{l}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C64}{dn}{lx}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C64}{dn}{lx}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C64}{dn}{lx}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C64}{dn}{lux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C64}{dn}{lux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C64}{dn}{lux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gr.fd
new file mode 100644
index 0000000000..e8da5452bf
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gr.fd
@@ -0,0 +1,53 @@
+% This is file c64gr.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64gr.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcGraphic
+
+\DeclareFontFamily{C64}{gr}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{gr}{c}{n}{<-> CJK * wgrc}{}
+\DeclareFontShape{C64}{gr}{c}{sl}{<-> CJK * wgrco}{}
+\DeclareFontShape{C64}{gr}{c}{it}{<-> CJKssub * gr/c/sl}{}
+
+\DeclareFontShape{C64}{gr}{m}{n}{<-> CJK * wgr}{}
+\DeclareFontShape{C64}{gr}{m}{sl}{<-> CJK * wgro}{}
+\DeclareFontShape{C64}{gr}{m}{it}{<-> CJKssub * gr/m/sl}{}
+
+\DeclareFontShape{C64}{gr}{x}{n}{<-> CJK * wgrx}{}
+\DeclareFontShape{C64}{gr}{x}{sl}{<-> CJK * wgrxo}{}
+\DeclareFontShape{C64}{gr}{x}{it}{<-> CJKssub * gr/x/sl}{}
+
+\DeclareFontShape{C64}{gr}{ux}{n}{<-> CJK * wgru}{}
+\DeclareFontShape{C64}{gr}{ux}{sl}{<-> CJK * wgruo}{}
+\DeclareFontShape{C64}{gr}{ux}{it}{<-> CJKssub * gr/ux/sl}{}
+
+\DeclareFontShape{C64}{gr}{bc}{n}{<-> CJK * wgrbc}{}
+\DeclareFontShape{C64}{gr}{bc}{sl}{<-> CJK * wgrbco}{}
+\DeclareFontShape{C64}{gr}{bc}{it}{<-> CJKssub * gr/bc/sl}{}
+
+\DeclareFontShape{C64}{gr}{b}{n}{<-> CJK * wgrb}{}
+\DeclareFontShape{C64}{gr}{b}{sl}{<-> CJK * wgrbo}{}
+\DeclareFontShape{C64}{gr}{b}{it}{<-> CJKssub * gr/b/sl}{}
+
+\DeclareFontShape{C64}{gr}{bx}{n}{<-> CJK * wgrbx}{}
+\DeclareFontShape{C64}{gr}{bx}{sl}{<-> CJK * wgrbxo}{}
+\DeclareFontShape{C64}{gr}{bx}{it}{<-> CJKssub * gr/bx/sl}{}
+
+\DeclareFontShape{C64}{gr}{bux}{n}{<-> CJK * wgrbu}{}
+\DeclareFontShape{C64}{gr}{bux}{sl}{<-> CJK * wgrbuo}{}
+\DeclareFontShape{C64}{gr}{bux}{it}{<-> CJKssub * gr/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gs.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gs.fd
new file mode 100644
index 0000000000..fc0d18f5fa
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gs.fd
@@ -0,0 +1,53 @@
+% This is file c64gs.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64gs.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcGungseo
+
+\DeclareFontFamily{C64}{gs}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{gs}{bc}{n}{<-> CJK * wgsc}{}
+\DeclareFontShape{C64}{gs}{bc}{sl}{<-> CJK * wgsco}{}
+\DeclareFontShape{C64}{gs}{bc}{it}{<-> CJKssub * gs/bc/sl}{}
+
+\DeclareFontShape{C64}{gs}{b}{n}{<-> CJK * wgs}{}
+\DeclareFontShape{C64}{gs}{b}{sl}{<-> CJK * wgso}{}
+\DeclareFontShape{C64}{gs}{b}{it}{<-> CJKssub * gs/b/sl}{}
+
+\DeclareFontShape{C64}{gs}{bx}{n}{<-> CJK * wgsx}{}
+\DeclareFontShape{C64}{gs}{bx}{sl}{<-> CJK * wgsxo}{}
+\DeclareFontShape{C64}{gs}{bx}{it}{<-> CJKssub * gs/bx/sl}{}
+
+\DeclareFontShape{C64}{gs}{bux}{n}{<-> CJK * wgsu}{}
+\DeclareFontShape{C64}{gs}{bux}{sl}{<-> CJK * wgsuo}{}
+\DeclareFontShape{C64}{gs}{bux}{it}{<-> CJKssub * gs/bux/sl}{}
+
+\DeclareFontShape{C64}{gs}{c}{n}{<-> CJKssub * gs/bc/n}{}
+\DeclareFontShape{C64}{gs}{c}{sl}{<-> CJKssub * gs/bc/sl}{}
+\DeclareFontShape{C64}{gs}{c}{it}{<-> CJKssub * gs/bc/sl}{}
+
+\DeclareFontShape{C64}{gs}{m}{n}{<-> CJKssub * gs/b/n}{}
+\DeclareFontShape{C64}{gs}{m}{sl}{<-> CJKssub * gs/b/sl}{}
+\DeclareFontShape{C64}{gs}{m}{it}{<-> CJKssub * gs/b/sl}{}
+
+\DeclareFontShape{C64}{gs}{x}{n}{<-> CJKssub * gs/bx/n}{}
+\DeclareFontShape{C64}{gs}{x}{sl}{<-> CJKssub * gs/bx/sl}{}
+\DeclareFontShape{C64}{gs}{x}{it}{<-> CJKssub * gs/bx/sl}{}
+
+\DeclareFontShape{C64}{gs}{ux}{n}{<-> CJKssub * gs/bux/n}{}
+\DeclareFontShape{C64}{gs}{ux}{sl}{<-> CJKssub * gs/bux/sl}{}
+\DeclareFontShape{C64}{gs}{ux}{it}{<-> CJKssub * gs/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gt.fd
new file mode 100644
index 0000000000..b95b54b5ec
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64gt.fd
@@ -0,0 +1,53 @@
+% This is file c64gt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64gt.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcGothic
+
+\DeclareFontFamily{C64}{gt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{gt}{c}{n}{<-> CJK * wgtc}{}
+\DeclareFontShape{C64}{gt}{c}{sl}{<-> CJK * wgtco}{}
+\DeclareFontShape{C64}{gt}{c}{it}{<-> CJKssub * gt/c/sl}{}
+
+\DeclareFontShape{C64}{gt}{m}{n}{<-> CJK * wgt}{}
+\DeclareFontShape{C64}{gt}{m}{sl}{<-> CJK * wgto}{}
+\DeclareFontShape{C64}{gt}{m}{it}{<-> CJKssub * gt/m/sl}{}
+
+\DeclareFontShape{C64}{gt}{x}{n}{<-> CJK * wgtx}{}
+\DeclareFontShape{C64}{gt}{x}{sl}{<-> CJK * wgtxo}{}
+\DeclareFontShape{C64}{gt}{x}{it}{<-> CJKssub * gt/x/sl}{}
+
+\DeclareFontShape{C64}{gt}{ux}{n}{<-> CJK * wgtu}{}
+\DeclareFontShape{C64}{gt}{ux}{sl}{<-> CJK * wgtuo}{}
+\DeclareFontShape{C64}{gt}{ux}{it}{<-> CJKssub * gt/ux/sl}{}
+
+\DeclareFontShape{C64}{gt}{bc}{n}{<-> CJK * wgtbc}{}
+\DeclareFontShape{C64}{gt}{bc}{sl}{<-> CJK * wgtbco}{}
+\DeclareFontShape{C64}{gt}{bc}{it}{<-> CJKssub * gt/bc/sl}{}
+
+\DeclareFontShape{C64}{gt}{b}{n}{<-> CJK * wgtb}{}
+\DeclareFontShape{C64}{gt}{b}{sl}{<-> CJK * wgtbo}{}
+\DeclareFontShape{C64}{gt}{b}{it}{<-> CJKssub * gt/b/sl}{}
+
+\DeclareFontShape{C64}{gt}{bx}{n}{<-> CJK * wgtbx}{}
+\DeclareFontShape{C64}{gt}{bx}{sl}{<-> CJK * wgtbxo}{}
+\DeclareFontShape{C64}{gt}{bx}{it}{<-> CJKssub * gt/bx/sl}{}
+
+\DeclareFontShape{C64}{gt}{bux}{n}{<-> CJK * wgtbu}{}
+\DeclareFontShape{C64}{gt}{bux}{sl}{<-> CJK * wgtbuo}{}
+\DeclareFontShape{C64}{gt}{bux}{it}{<-> CJKssub * gt/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jgt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jgt.fd
new file mode 100644
index 0000000000..2804b4082b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jgt.fd
@@ -0,0 +1,53 @@
+% This is file c64jgt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64jgt.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoGothic
+
+\DeclareFontFamily{C64}{jgt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{jgt}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C64}{jgt}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C64}{jgt}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C64}{jgt}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C64}{jgt}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C64}{jgt}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C64}{jgt}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C64}{jgt}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C64}{jgt}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C64}{jgt}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C64}{jgt}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C64}{jgt}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C64}{jgt}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C64}{jgt}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C64}{jgt}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C64}{jgt}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C64}{jgt}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C64}{jgt}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C64}{jgt}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C64}{jgt}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C64}{jgt}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C64}{jgt}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C64}{jgt}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C64}{jgt}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jmj.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jmj.fd
new file mode 100644
index 0000000000..fc5c42355d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jmj.fd
@@ -0,0 +1,53 @@
+% This is file c64jmj.fd of the CJK package
+% for using Asian logograjmjs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64jmj.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoMyoungjo
+
+\DeclareFontFamily{C64}{jmj}{\hyjmjenchar \font\m@ne}
+
+\DeclareFontShape{C64}{jmj}{c}{n}{<-> CJKssub * mj/c/n}{}
+\DeclareFontShape{C64}{jmj}{c}{sl}{<-> CJKssub * mj/c/sl}{}
+\DeclareFontShape{C64}{jmj}{c}{it}{<-> CJKssub * mj/c/it}{}
+
+\DeclareFontShape{C64}{jmj}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C64}{jmj}{m}{sl}{<-> CJKssub * mj/m/sl}{}
+\DeclareFontShape{C64}{jmj}{m}{it}{<-> CJKssub * mj/m/it}{}
+
+\DeclareFontShape{C64}{jmj}{x}{n}{<-> CJKssub * mj/x/n}{}
+\DeclareFontShape{C64}{jmj}{x}{sl}{<-> CJKssub * mj/x/sl}{}
+\DeclareFontShape{C64}{jmj}{x}{it}{<-> CJKssub * mj/x/it}{}
+
+\DeclareFontShape{C64}{jmj}{ux}{n}{<-> CJKssub * mj/ux/n}{}
+\DeclareFontShape{C64}{jmj}{ux}{sl}{<-> CJKssub * mj/ux/sl}{}
+\DeclareFontShape{C64}{jmj}{ux}{it}{<-> CJKssub * mj/ux/it}{}
+
+\DeclareFontShape{C64}{jmj}{bc}{n}{<-> CJKssub * mj/bc/n}{}
+\DeclareFontShape{C64}{jmj}{bc}{sl}{<-> CJKssub * mj/bc/sl}{}
+\DeclareFontShape{C64}{jmj}{bc}{it}{<-> CJKssub * mj/bc/it}{}
+
+\DeclareFontShape{C64}{jmj}{b}{n}{<-> CJKssub * mj/b/n}{}
+\DeclareFontShape{C64}{jmj}{b}{sl}{<-> CJKssub * mj/b/sl}{}
+\DeclareFontShape{C64}{jmj}{b}{it}{<-> CJKssub * mj/b/it}{}
+
+\DeclareFontShape{C64}{jmj}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+\DeclareFontShape{C64}{jmj}{bx}{sl}{<-> CJKssub * mj/bx/sl}{}
+\DeclareFontShape{C64}{jmj}{bx}{it}{<-> CJKssub * mj/bx/it}{}
+
+\DeclareFontShape{C64}{jmj}{bux}{n}{<-> CJKssub * mj/bux/n}{}
+\DeclareFontShape{C64}{jmj}{bux}{sl}{<-> CJKssub * mj/bux/sl}{}
+\DeclareFontShape{C64}{jmj}{bux}{it}{<-> CJKssub * mj/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jnv.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jnv.fd
new file mode 100644
index 0000000000..9fec493b1b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jnv.fd
@@ -0,0 +1,53 @@
+% This is file c64jnv.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64jnv.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoNovel
+
+\DeclareFontFamily{C64}{jnv}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{jnv}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C64}{jnv}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C64}{jnv}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C64}{jnv}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C64}{jnv}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C64}{jnv}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C64}{jnv}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C64}{jnv}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C64}{jnv}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C64}{jnv}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C64}{jnv}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C64}{jnv}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C64}{jnv}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C64}{jnv}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C64}{jnv}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C64}{jnv}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C64}{jnv}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C64}{jnv}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C64}{jnv}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C64}{jnv}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C64}{jnv}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C64}{jnv}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C64}{jnv}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C64}{jnv}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jsr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jsr.fd
new file mode 100644
index 0000000000..d6f34f8e7b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64jsr.fd
@@ -0,0 +1,53 @@
+% This is file c64jsr.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64jsr.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoSora
+
+\DeclareFontFamily{C64}{jsr}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{jsr}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C64}{jsr}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C64}{jsr}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C64}{jsr}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C64}{jsr}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C64}{jsr}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C64}{jsr}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C64}{jsr}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C64}{jsr}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C64}{jsr}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C64}{jsr}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C64}{jsr}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C64}{jsr}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C64}{jsr}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C64}{jsr}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C64}{jsr}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C64}{jsr}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C64}{jsr}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C64}{jsr}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C64}{jsr}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C64}{jsr}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C64}{jsr}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C64}{jsr}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C64}{jsr}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64mj.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64mj.fd
new file mode 100644
index 0000000000..1673eaa14b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64mj.fd
@@ -0,0 +1,53 @@
+% This is file c64mj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64mj.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcMyoungjo
+
+\DeclareFontFamily{C64}{mj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{mj}{c}{n}{<-> CJK * wmjc}{}
+\DeclareFontShape{C64}{mj}{c}{sl}{<-> CJK * wmjco}{}
+\DeclareFontShape{C64}{mj}{c}{it}{<-> CJKssub * mj/c/sl}{}
+
+\DeclareFontShape{C64}{mj}{m}{n}{<-> CJK * wmj}{}
+\DeclareFontShape{C64}{mj}{m}{sl}{<-> CJK * wmjo}{}
+\DeclareFontShape{C64}{mj}{m}{it}{<-> CJKssub * mj/m/sl}{}
+
+\DeclareFontShape{C64}{mj}{x}{n}{<-> CJK * wmjx}{}
+\DeclareFontShape{C64}{mj}{x}{sl}{<-> CJK * wmjxo}{}
+\DeclareFontShape{C64}{mj}{x}{it}{<-> CJKssub * mj/x/sl}{}
+
+\DeclareFontShape{C64}{mj}{ux}{n}{<-> CJK * wmju}{}
+\DeclareFontShape{C64}{mj}{ux}{sl}{<-> CJK * wmjuo}{}
+\DeclareFontShape{C64}{mj}{ux}{it}{<-> CJKssub * mj/ux/sl}{}
+
+\DeclareFontShape{C64}{mj}{bc}{n}{<-> CJK * wmjbc}{}
+\DeclareFontShape{C64}{mj}{bc}{sl}{<-> CJK * wmjbco}{}
+\DeclareFontShape{C64}{mj}{bc}{it}{<-> CJKssub * mj/bc/sl}{}
+
+\DeclareFontShape{C64}{mj}{b}{n}{<-> CJK * wmjb}{}
+\DeclareFontShape{C64}{mj}{b}{sl}{<-> CJK * wmjbo}{}
+\DeclareFontShape{C64}{mj}{b}{it}{<-> CJKssub * mj/b/sl}{}
+
+\DeclareFontShape{C64}{mj}{bx}{n}{<-> CJK * wmjbx}{}
+\DeclareFontShape{C64}{mj}{bx}{sl}{<-> CJK * wmjbxo}{}
+\DeclareFontShape{C64}{mj}{bx}{it}{<-> CJKssub * mj/bx/sl}{}
+
+\DeclareFontShape{C64}{mj}{bux}{n}{<-> CJK * wmjbu}{}
+\DeclareFontShape{C64}{mj}{bux}{sl}{<-> CJK * wmjbuo}{}
+\DeclareFontShape{C64}{mj}{bux}{it}{<-> CJKssub * mj/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pg.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pg.fd
new file mode 100644
index 0000000000..96e6c1264b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pg.fd
@@ -0,0 +1,53 @@
+% This is file c64pg.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64pg.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPilgi
+
+\DeclareFontFamily{C64}{pg}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{pg}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C64}{pg}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C64}{pg}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C64}{pg}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C64}{pg}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C64}{pg}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C64}{pg}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C64}{pg}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C64}{pg}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C64}{pg}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C64}{pg}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C64}{pg}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C64}{pg}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C64}{pg}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C64}{pg}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C64}{pg}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C64}{pg}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C64}{pg}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C64}{pg}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C64}{pg}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C64}{pg}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C64}{pg}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C64}{pg}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C64}{pg}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pga.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pga.fd
new file mode 100644
index 0000000000..56058915cc
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pga.fd
@@ -0,0 +1,53 @@
+% This is file c64pga.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64pga.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPilgia
+
+\DeclareFontFamily{C64}{pga}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{pga}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C64}{pga}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C64}{pga}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C64}{pga}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C64}{pga}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C64}{pga}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C64}{pga}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C64}{pga}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C64}{pga}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C64}{pga}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C64}{pga}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C64}{pga}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C64}{pga}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C64}{pga}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C64}{pga}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C64}{pga}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C64}{pga}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C64}{pga}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C64}{pga}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C64}{pga}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C64}{pga}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C64}{pga}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C64}{pga}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C64}{pga}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64ph.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64ph.fd
new file mode 100644
index 0000000000..7f5cb9fc6c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64ph.fd
@@ -0,0 +1,53 @@
+% This is file c64ph.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64ph.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPenHeulim
+
+\DeclareFontFamily{C64}{ph}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{ph}{c}{n}{<-> CJKssub * mj/c/n}{}
+\DeclareFontShape{C64}{ph}{c}{sl}{<-> CJKssub * mj/c/sl}{}
+\DeclareFontShape{C64}{ph}{c}{it}{<-> CJKssub * mj/c/it}{}
+
+\DeclareFontShape{C64}{ph}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C64}{ph}{m}{sl}{<-> CJKssub * mj/m/sl}{}
+\DeclareFontShape{C64}{ph}{m}{it}{<-> CJKssub * mj/m/it}{}
+
+\DeclareFontShape{C64}{ph}{x}{n}{<-> CJKssub * mj/x/n}{}
+\DeclareFontShape{C64}{ph}{x}{sl}{<-> CJKssub * mj/x/sl}{}
+\DeclareFontShape{C64}{ph}{x}{it}{<-> CJKssub * mj/x/it}{}
+
+\DeclareFontShape{C64}{ph}{ux}{n}{<-> CJKssub * mj/ux/n}{}
+\DeclareFontShape{C64}{ph}{ux}{sl}{<-> CJKssub * mj/ux/sl}{}
+\DeclareFontShape{C64}{ph}{ux}{it}{<-> CJKssub * mj/ux/it}{}
+
+\DeclareFontShape{C64}{ph}{bc}{n}{<-> CJKssub * mj/bc/n}{}
+\DeclareFontShape{C64}{ph}{bc}{sl}{<-> CJKssub * mj/bc/sl}{}
+\DeclareFontShape{C64}{ph}{bc}{it}{<-> CJKssub * mj/bc/it}{}
+
+\DeclareFontShape{C64}{ph}{b}{n}{<-> CJKssub * mj/b/n}{}
+\DeclareFontShape{C64}{ph}{b}{sl}{<-> CJKssub * mj/b/sl}{}
+\DeclareFontShape{C64}{ph}{b}{it}{<-> CJKssub * mj/b/it}{}
+
+\DeclareFontShape{C64}{ph}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+\DeclareFontShape{C64}{ph}{bx}{sl}{<-> CJKssub * mj/bx/sl}{}
+\DeclareFontShape{C64}{ph}{bx}{it}{<-> CJKssub * mj/bx/it}{}
+
+\DeclareFontShape{C64}{ph}{bux}{n}{<-> CJKssub * mj/bux/n}{}
+\DeclareFontShape{C64}{ph}{bux}{sl}{<-> CJKssub * mj/bux/sl}{}
+\DeclareFontShape{C64}{ph}{bux}{it}{<-> CJKssub * mj/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pn.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pn.fd
new file mode 100644
index 0000000000..a5348103df
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64pn.fd
@@ -0,0 +1,53 @@
+% This is file c64pn.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64pn.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPen
+
+\DeclareFontFamily{C64}{pn}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{pn}{c}{n}{<-> CJKssub * mj/c/n}{}
+\DeclareFontShape{C64}{pn}{c}{sl}{<-> CJKssub * mj/c/sl}{}
+\DeclareFontShape{C64}{pn}{c}{it}{<-> CJKssub * mj/c/it}{}
+
+\DeclareFontShape{C64}{pn}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C64}{pn}{m}{sl}{<-> CJKssub * mj/m/sl}{}
+\DeclareFontShape{C64}{pn}{m}{it}{<-> CJKssub * mj/m/it}{}
+
+\DeclareFontShape{C64}{pn}{x}{n}{<-> CJKssub * mj/x/n}{}
+\DeclareFontShape{C64}{pn}{x}{sl}{<-> CJKssub * mj/x/sl}{}
+\DeclareFontShape{C64}{pn}{x}{it}{<-> CJKssub * mj/x/it}{}
+
+\DeclareFontShape{C64}{pn}{ux}{n}{<-> CJKssub * mj/ux/n}{}
+\DeclareFontShape{C64}{pn}{ux}{sl}{<-> CJKssub * mj/ux/sl}{}
+\DeclareFontShape{C64}{pn}{ux}{it}{<-> CJKssub * mj/ux/it}{}
+
+\DeclareFontShape{C64}{pn}{bc}{n}{<-> CJKssub * mj/bc/n}{}
+\DeclareFontShape{C64}{pn}{bc}{sl}{<-> CJKssub * mj/bc/sl}{}
+\DeclareFontShape{C64}{pn}{bc}{it}{<-> CJKssub * mj/bc/it}{}
+
+\DeclareFontShape{C64}{pn}{b}{n}{<-> CJKssub * mj/b/n}{}
+\DeclareFontShape{C64}{pn}{b}{sl}{<-> CJKssub * mj/b/sl}{}
+\DeclareFontShape{C64}{pn}{b}{it}{<-> CJKssub * mj/b/it}{}
+
+\DeclareFontShape{C64}{pn}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+\DeclareFontShape{C64}{pn}{bx}{sl}{<-> CJKssub * mj/bx/sl}{}
+\DeclareFontShape{C64}{pn}{bx}{it}{<-> CJKssub * mj/bx/it}{}
+
+\DeclareFontShape{C64}{pn}{bux}{n}{<-> CJKssub * mj/bux/n}{}
+\DeclareFontShape{C64}{pn}{bux}{sl}{<-> CJKssub * mj/bux/sl}{}
+\DeclareFontShape{C64}{pn}{bux}{it}{<-> CJKssub * mj/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64sh.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64sh.fd
new file mode 100644
index 0000000000..348f2f34d4
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64sh.fd
@@ -0,0 +1,53 @@
+% This is file c64sh.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64sh.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcShinmunMyoungjo
+
+\DeclareFontFamily{C64}{hwsh}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{sh}{c}{n}{<-> CJK * wshc}{}
+\DeclareFontShape{C64}{sh}{c}{sl}{<-> CJK * wshco}{}
+\DeclareFontShape{C64}{sh}{c}{it}{<-> CJKssub * sh/c/sl}{}
+
+\DeclareFontShape{C64}{sh}{m}{n}{<-> CJK * wsh}{}
+\DeclareFontShape{C64}{sh}{m}{sl}{<-> CJK * wsho}{}
+\DeclareFontShape{C64}{sh}{m}{it}{<-> CJKssub * sh/m/sl}{}
+
+\DeclareFontShape{C64}{sh}{x}{n}{<-> CJK * wshx}{}
+\DeclareFontShape{C64}{sh}{x}{sl}{<-> CJK * wshxo}{}
+\DeclareFontShape{C64}{sh}{x}{it}{<-> CJKssub * sh/x/sl}{}
+
+\DeclareFontShape{C64}{sh}{ux}{n}{<-> CJK * wshu}{}
+\DeclareFontShape{C64}{sh}{ux}{sl}{<-> CJK * wshuo}{}
+\DeclareFontShape{C64}{sh}{ux}{it}{<-> CJKssub * sh/ux/sl}{}
+
+\DeclareFontShape{C64}{sh}{bc}{n}{<-> CJKssub * sh/c/n}{}
+\DeclareFontShape{C64}{sh}{bc}{sl}{<-> CJKssub * sh/c/sl}{}
+\DeclareFontShape{C64}{sh}{bc}{it}{<-> CJKssub * sh/bc/sl}{}
+
+\DeclareFontShape{C64}{sh}{b}{n}{<-> CJKssub * sh/m/n}{}
+\DeclareFontShape{C64}{sh}{b}{sl}{<-> CJKssub * sh/m/sl}{}
+\DeclareFontShape{C64}{sh}{b}{it}{<-> CJKssub * sh/b/sl}{}
+
+\DeclareFontShape{C64}{sh}{bx}{n}{<-> CJKssub * sh/x/n}{}
+\DeclareFontShape{C64}{sh}{bx}{sl}{<-> CJKssub * sh/x/sl}{}
+\DeclareFontShape{C64}{sh}{bx}{it}{<-> CJKssub * sh/bx/sl}{}
+
+\DeclareFontShape{C64}{sh}{bux}{n}{<-> CJKssub * sh/ux/n}{}
+\DeclareFontShape{C64}{sh}{bux}{sl}{<-> CJKssub * sh/ux/sl}{}
+\DeclareFontShape{C64}{sh}{bux}{it}{<-> CJKssub * sh/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64tz.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64tz.fd
new file mode 100644
index 0000000000..ce174378c2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64tz.fd
@@ -0,0 +1,53 @@
+% This is file c64tz.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64tz.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcTypewriter
+
+\DeclareFontFamily{C64}{tz}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{tz}{c}{n}{<-> CJK * wttc}{}
+\DeclareFontShape{C64}{tz}{c}{sl}{<-> CJK * wttco}{}
+\DeclareFontShape{C64}{tz}{c}{it}{<-> CJKssub * tz/c/sl}{}
+
+\DeclareFontShape{C64}{tz}{m}{n}{<-> CJK * wtt}{}
+\DeclareFontShape{C64}{tz}{m}{sl}{<-> CJK * wtto}{}
+\DeclareFontShape{C64}{tz}{m}{it}{<-> CJKssub * tz/m/sl}{}
+
+\DeclareFontShape{C64}{tz}{x}{n}{<-> CJK * wttx}{}
+\DeclareFontShape{C64}{tz}{x}{sl}{<-> CJK * wttxo}{}
+\DeclareFontShape{C64}{tz}{x}{it}{<-> CJKssub * tz/x/sl}{}
+
+\DeclareFontShape{C64}{tz}{ux}{n}{<-> CJK * wttu}{}
+\DeclareFontShape{C64}{tz}{ux}{sl}{<-> CJK * wttuo}{}
+\DeclareFontShape{C64}{tz}{ux}{it}{<-> CJKssub * tz/ux/sl}{}
+
+\DeclareFontShape{C64}{tz}{bc}{n}{<-> CJKb * wttc}{\CJKbold}
+\DeclareFontShape{C64}{tz}{bc}{sl}{<-> CJKb * wttco}{\CJKbold}
+\DeclareFontShape{C64}{tz}{bc}{it}{<-> CJKssub * tz/bc/sl}{}
+
+\DeclareFontShape{C64}{tz}{bm}{n}{<-> CJKb * wtt}{\CJKbold}
+\DeclareFontShape{C64}{tz}{bm}{sl}{<-> CJKb * wtto}{\CJKbold}
+\DeclareFontShape{C64}{tz}{bm}{it}{<-> CJKssub * tz/b/sl}{}
+
+\DeclareFontShape{C64}{tz}{bx}{n}{<-> CJKb * wttx}{\CJKbold}
+\DeclareFontShape{C64}{tz}{bx}{sl}{<-> CJKb * wttxo}{\CJKbold}
+\DeclareFontShape{C64}{tz}{bx}{it}{<-> CJKssub * tz/bx/sl}{}
+
+\DeclareFontShape{C64}{tz}{bux}{n}{<-> CJKb * wttu}{\CJKbold}
+\DeclareFontShape{C64}{tz}{bux}{sl}{<-> CJKb * wttuo}{\CJKbold}
+\DeclareFontShape{C64}{tz}{bux}{it}{<-> CJKssub * tz/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64vd.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64vd.fd
new file mode 100644
index 0000000000..c7fb764ba3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64vd.fd
@@ -0,0 +1,53 @@
+% This is file c64vd.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64vd.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcVada
+
+\DeclareFontFamily{C64}{vd}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{vd}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C64}{vd}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C64}{vd}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C64}{vd}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C64}{vd}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C64}{vd}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C64}{vd}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C64}{vd}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C64}{vd}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C64}{vd}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C64}{vd}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C64}{vd}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C64}{vd}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C64}{vd}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C64}{vd}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C64}{vd}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C64}{vd}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C64}{vd}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C64}{vd}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C64}{vd}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C64}{vd}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C64}{vd}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C64}{vd}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C64}{vd}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64yt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64yt.fd
new file mode 100644
index 0000000000..e122637fbd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c64yt.fd
@@ -0,0 +1,53 @@
+% This is file c64yt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64yt.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcYetgul
+
+\DeclareFontFamily{C64}{yt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{yt}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C64}{yt}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C64}{yt}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C64}{yt}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C64}{yt}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C64}{yt}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C64}{yt}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C64}{yt}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C64}{yt}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C64}{yt}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C64}{yt}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C64}{yt}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C64}{yt}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C64}{yt}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C64}{yt}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C64}{yt}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C64}{yt}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C64}{yt}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C64}{yt}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C64}{yt}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C64}{yt}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C64}{yt}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C64}{yt}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C64}{yt}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65bm.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65bm.fd
new file mode 100644
index 0000000000..c526f709c1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65bm.fd
@@ -0,0 +1,53 @@
+% This is file c65bm.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65bm.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcBom
+
+\DeclareFontFamily{C65}{bm}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{bm}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C65}{bm}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C65}{bm}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C65}{bm}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C65}{bm}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C65}{bm}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C65}{bm}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C65}{bm}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C65}{bm}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C65}{bm}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C65}{bm}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C65}{bm}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C65}{bm}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C65}{bm}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C65}{bm}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C65}{bm}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C65}{bm}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C65}{bm}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C65}{bm}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C65}{bm}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C65}{bm}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C65}{bm}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C65}{bm}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C65}{bm}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65dn.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65dn.fd
new file mode 100644
index 0000000000..4b6d776b70
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65dn.fd
@@ -0,0 +1,69 @@
+% This is file c65dn.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65dn.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcDinaru
+
+\DeclareFontFamily{C65}{dn}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{dn}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C65}{dn}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C65}{dn}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C65}{dn}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C65}{dn}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C65}{dn}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C65}{dn}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C65}{dn}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C65}{dn}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C65}{dn}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C65}{dn}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C65}{dn}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C65}{dn}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C65}{dn}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C65}{dn}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C65}{dn}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C65}{dn}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C65}{dn}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C65}{dn}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C65}{dn}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C65}{dn}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C65}{dn}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C65}{dn}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C65}{dn}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\DeclareFontShape{C65}{dn}{lc}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C65}{dn}{lc}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C65}{dn}{lc}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C65}{dn}{l}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C65}{dn}{l}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C65}{dn}{l}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C65}{dn}{lx}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C65}{dn}{lx}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C65}{dn}{lx}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C65}{dn}{lux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C65}{dn}{lux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C65}{dn}{lux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gr.fd
new file mode 100644
index 0000000000..df5308f99f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gr.fd
@@ -0,0 +1,53 @@
+% This is file c65gr.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65gr.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcGraphic
+
+\DeclareFontFamily{C65}{gr}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{gr}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C65}{gr}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C65}{gr}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C65}{gr}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C65}{gr}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C65}{gr}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C65}{gr}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C65}{gr}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C65}{gr}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C65}{gr}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C65}{gr}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C65}{gr}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C65}{gr}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C65}{gr}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C65}{gr}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C65}{gr}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C65}{gr}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C65}{gr}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C65}{gr}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C65}{gr}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C65}{gr}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C65}{gr}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C65}{gr}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C65}{gr}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gs.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gs.fd
new file mode 100644
index 0000000000..f6fcb6fa8d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gs.fd
@@ -0,0 +1,53 @@
+% This is file c65gs.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65gs.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcGungseo
+
+\DeclareFontFamily{C65}{gs}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{gs}{bc}{n}{<-> CJK * wgsc}{}
+\DeclareFontShape{C65}{gs}{bc}{sl}{<-> CJK * wgsco}{}
+\DeclareFontShape{C65}{gs}{bc}{it}{<-> CJKssub * gs/bc/sl}{}
+
+\DeclareFontShape{C65}{gs}{b}{n}{<-> CJK * wgs}{}
+\DeclareFontShape{C65}{gs}{b}{sl}{<-> CJK * wgso}{}
+\DeclareFontShape{C65}{gs}{b}{it}{<-> CJKssub * gs/b/sl}{}
+
+\DeclareFontShape{C65}{gs}{bx}{n}{<-> CJK * wgsx}{}
+\DeclareFontShape{C65}{gs}{bx}{sl}{<-> CJK * wgsxo}{}
+\DeclareFontShape{C65}{gs}{bx}{it}{<-> CJKssub * gs/bx/sl}{}
+
+\DeclareFontShape{C65}{gs}{bux}{n}{<-> CJK * wgsu}{}
+\DeclareFontShape{C65}{gs}{bux}{sl}{<-> CJK * wgsuo}{}
+\DeclareFontShape{C65}{gs}{bux}{it}{<-> CJKssub * gs/bux/sl}{}
+
+\DeclareFontShape{C65}{gs}{c}{n}{<-> CJKssub * gs/bc/n}{}
+\DeclareFontShape{C65}{gs}{c}{sl}{<-> CJKssub * gs/bc/sl}{}
+\DeclareFontShape{C65}{gs}{c}{it}{<-> CJKssub * gs/bc/sl}{}
+
+\DeclareFontShape{C65}{gs}{m}{n}{<-> CJKssub * gs/b/n}{}
+\DeclareFontShape{C65}{gs}{m}{sl}{<-> CJKssub * gs/b/sl}{}
+\DeclareFontShape{C65}{gs}{m}{it}{<-> CJKssub * gs/b/sl}{}
+
+\DeclareFontShape{C65}{gs}{x}{n}{<-> CJKssub * gs/bx/n}{}
+\DeclareFontShape{C65}{gs}{x}{sl}{<-> CJKssub * gs/bx/sl}{}
+\DeclareFontShape{C65}{gs}{x}{it}{<-> CJKssub * gs/bx/sl}{}
+
+\DeclareFontShape{C65}{gs}{ux}{n}{<-> CJKssub * gs/bux/n}{}
+\DeclareFontShape{C65}{gs}{ux}{sl}{<-> CJKssub * gs/bux/sl}{}
+\DeclareFontShape{C65}{gs}{ux}{it}{<-> CJKssub * gs/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gt.fd
new file mode 100644
index 0000000000..98a7055472
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65gt.fd
@@ -0,0 +1,53 @@
+% This is file c65gt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65gt.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcGothic
+
+\DeclareFontFamily{C65}{gt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{gt}{c}{n}{<-> CJK * wgtc}{}
+\DeclareFontShape{C65}{gt}{c}{sl}{<-> CJK * wgtco}{}
+\DeclareFontShape{C65}{gt}{c}{it}{<-> CJKssub * gt/c/sl}{}
+
+\DeclareFontShape{C65}{gt}{m}{n}{<-> CJK * wgt}{}
+\DeclareFontShape{C65}{gt}{m}{sl}{<-> CJK * wgto}{}
+\DeclareFontShape{C65}{gt}{m}{it}{<-> CJKssub * gt/m/sl}{}
+
+\DeclareFontShape{C65}{gt}{x}{n}{<-> CJK * wgtx}{}
+\DeclareFontShape{C65}{gt}{x}{sl}{<-> CJK * wgtxo}{}
+\DeclareFontShape{C65}{gt}{x}{it}{<-> CJKssub * gt/x/sl}{}
+
+\DeclareFontShape{C65}{gt}{ux}{n}{<-> CJK * wgtu}{}
+\DeclareFontShape{C65}{gt}{ux}{sl}{<-> CJK * wgtuo}{}
+\DeclareFontShape{C65}{gt}{ux}{it}{<-> CJKssub * gt/ux/sl}{}
+
+\DeclareFontShape{C65}{gt}{bc}{n}{<-> CJK * wgtbc}{}
+\DeclareFontShape{C65}{gt}{bc}{sl}{<-> CJK * wgtbco}{}
+\DeclareFontShape{C65}{gt}{bc}{it}{<-> CJKssub * gt/bc/sl}{}
+
+\DeclareFontShape{C65}{gt}{b}{n}{<-> CJK * wgtb}{}
+\DeclareFontShape{C65}{gt}{b}{sl}{<-> CJK * wgtbo}{}
+\DeclareFontShape{C65}{gt}{b}{it}{<-> CJKssub * gt/b/sl}{}
+
+\DeclareFontShape{C65}{gt}{bx}{n}{<-> CJK * wgtbx}{}
+\DeclareFontShape{C65}{gt}{bx}{sl}{<-> CJK * wgtbxo}{}
+\DeclareFontShape{C65}{gt}{bx}{it}{<-> CJKssub * gt/bx/sl}{}
+
+\DeclareFontShape{C65}{gt}{bux}{n}{<-> CJK * wgtbu}{}
+\DeclareFontShape{C65}{gt}{bux}{sl}{<-> CJK * wgtbuo}{}
+\DeclareFontShape{C65}{gt}{bux}{it}{<-> CJKssub * gt/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jgt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jgt.fd
new file mode 100644
index 0000000000..0267e5b19c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jgt.fd
@@ -0,0 +1,53 @@
+% This is file c65jgt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65jgt.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoGothic
+
+\DeclareFontFamily{C65}{jgt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{jgt}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C65}{jgt}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C65}{jgt}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C65}{jgt}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C65}{jgt}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C65}{jgt}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C65}{jgt}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C65}{jgt}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C65}{jgt}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C65}{jgt}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C65}{jgt}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C65}{jgt}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C65}{jgt}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C65}{jgt}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C65}{jgt}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C65}{jgt}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C65}{jgt}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C65}{jgt}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C65}{jgt}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C65}{jgt}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C65}{jgt}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C65}{jgt}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C65}{jgt}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C65}{jgt}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jmj.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jmj.fd
new file mode 100644
index 0000000000..38250f043d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jmj.fd
@@ -0,0 +1,53 @@
+% This is file c65jmj.fd of the CJK package
+% for using Asian logograjmjs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65jmj.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoMyoungjo
+
+\DeclareFontFamily{C65}{jmj}{\hyjmjenchar \font\m@ne}
+
+\DeclareFontShape{C65}{jmj}{c}{n}{<-> CJKssub * mj/c/n}{}
+\DeclareFontShape{C65}{jmj}{c}{sl}{<-> CJKssub * mj/c/sl}{}
+\DeclareFontShape{C65}{jmj}{c}{it}{<-> CJKssub * mj/c/it}{}
+
+\DeclareFontShape{C65}{jmj}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C65}{jmj}{m}{sl}{<-> CJKssub * mj/m/sl}{}
+\DeclareFontShape{C65}{jmj}{m}{it}{<-> CJKssub * mj/m/it}{}
+
+\DeclareFontShape{C65}{jmj}{x}{n}{<-> CJKssub * mj/x/n}{}
+\DeclareFontShape{C65}{jmj}{x}{sl}{<-> CJKssub * mj/x/sl}{}
+\DeclareFontShape{C65}{jmj}{x}{it}{<-> CJKssub * mj/x/it}{}
+
+\DeclareFontShape{C65}{jmj}{ux}{n}{<-> CJKssub * mj/ux/n}{}
+\DeclareFontShape{C65}{jmj}{ux}{sl}{<-> CJKssub * mj/ux/sl}{}
+\DeclareFontShape{C65}{jmj}{ux}{it}{<-> CJKssub * mj/ux/it}{}
+
+\DeclareFontShape{C65}{jmj}{bc}{n}{<-> CJKssub * mj/bc/n}{}
+\DeclareFontShape{C65}{jmj}{bc}{sl}{<-> CJKssub * mj/bc/sl}{}
+\DeclareFontShape{C65}{jmj}{bc}{it}{<-> CJKssub * mj/bc/it}{}
+
+\DeclareFontShape{C65}{jmj}{b}{n}{<-> CJKssub * mj/b/n}{}
+\DeclareFontShape{C65}{jmj}{b}{sl}{<-> CJKssub * mj/b/sl}{}
+\DeclareFontShape{C65}{jmj}{b}{it}{<-> CJKssub * mj/b/it}{}
+
+\DeclareFontShape{C65}{jmj}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+\DeclareFontShape{C65}{jmj}{bx}{sl}{<-> CJKssub * mj/bx/sl}{}
+\DeclareFontShape{C65}{jmj}{bx}{it}{<-> CJKssub * mj/bx/it}{}
+
+\DeclareFontShape{C65}{jmj}{bux}{n}{<-> CJKssub * mj/bux/n}{}
+\DeclareFontShape{C65}{jmj}{bux}{sl}{<-> CJKssub * mj/bux/sl}{}
+\DeclareFontShape{C65}{jmj}{bux}{it}{<-> CJKssub * mj/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jnv.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jnv.fd
new file mode 100644
index 0000000000..973211bc7b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jnv.fd
@@ -0,0 +1,53 @@
+% This is file c65jnv.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65jnv.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoNovel
+
+\DeclareFontFamily{C65}{jnv}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{jnv}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C65}{jnv}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C65}{jnv}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C65}{jnv}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C65}{jnv}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C65}{jnv}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C65}{jnv}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C65}{jnv}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C65}{jnv}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C65}{jnv}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C65}{jnv}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C65}{jnv}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C65}{jnv}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C65}{jnv}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C65}{jnv}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C65}{jnv}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C65}{jnv}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C65}{jnv}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C65}{jnv}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C65}{jnv}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C65}{jnv}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C65}{jnv}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C65}{jnv}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C65}{jnv}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jsr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jsr.fd
new file mode 100644
index 0000000000..df55d6f9e2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65jsr.fd
@@ -0,0 +1,53 @@
+% This is file c65jsr.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65jsr.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcJamoSora
+
+\DeclareFontFamily{C65}{jsr}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{jsr}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C65}{jsr}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C65}{jsr}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C65}{jsr}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C65}{jsr}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C65}{jsr}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C65}{jsr}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C65}{jsr}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C65}{jsr}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C65}{jsr}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C65}{jsr}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C65}{jsr}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C65}{jsr}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C65}{jsr}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C65}{jsr}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C65}{jsr}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C65}{jsr}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C65}{jsr}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C65}{jsr}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C65}{jsr}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C65}{jsr}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C65}{jsr}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C65}{jsr}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C65}{jsr}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65mj.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65mj.fd
new file mode 100644
index 0000000000..6e998adf3f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65mj.fd
@@ -0,0 +1,53 @@
+% This is file c65mj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65mj.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcMyoungjo
+
+\DeclareFontFamily{C65}{mj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{mj}{c}{n}{<-> CJK * wmjc}{}
+\DeclareFontShape{C65}{mj}{c}{sl}{<-> CJK * wmjco}{}
+\DeclareFontShape{C65}{mj}{c}{it}{<-> CJKssub * mj/c/sl}{}
+
+\DeclareFontShape{C65}{mj}{m}{n}{<-> CJK * wmj}{}
+\DeclareFontShape{C65}{mj}{m}{sl}{<-> CJK * wmjo}{}
+\DeclareFontShape{C65}{mj}{m}{it}{<-> CJKssub * mj/m/sl}{}
+
+\DeclareFontShape{C65}{mj}{x}{n}{<-> CJK * wmjx}{}
+\DeclareFontShape{C65}{mj}{x}{sl}{<-> CJK * wmjxo}{}
+\DeclareFontShape{C65}{mj}{x}{it}{<-> CJKssub * mj/x/sl}{}
+
+\DeclareFontShape{C65}{mj}{ux}{n}{<-> CJK * wmju}{}
+\DeclareFontShape{C65}{mj}{ux}{sl}{<-> CJK * wmjuo}{}
+\DeclareFontShape{C65}{mj}{ux}{it}{<-> CJKssub * mj/ux/sl}{}
+
+\DeclareFontShape{C65}{mj}{bc}{n}{<-> CJK * wmjbc}{}
+\DeclareFontShape{C65}{mj}{bc}{sl}{<-> CJK * wmjbco}{}
+\DeclareFontShape{C65}{mj}{bc}{it}{<-> CJKssub * mj/bc/sl}{}
+
+\DeclareFontShape{C65}{mj}{b}{n}{<-> CJK * wmjb}{}
+\DeclareFontShape{C65}{mj}{b}{sl}{<-> CJK * wmjbo}{}
+\DeclareFontShape{C65}{mj}{b}{it}{<-> CJKssub * mj/b/sl}{}
+
+\DeclareFontShape{C65}{mj}{bx}{n}{<-> CJK * wmjbx}{}
+\DeclareFontShape{C65}{mj}{bx}{sl}{<-> CJK * wmjbxo}{}
+\DeclareFontShape{C65}{mj}{bx}{it}{<-> CJKssub * mj/bx/sl}{}
+
+\DeclareFontShape{C65}{mj}{bux}{n}{<-> CJK * wmjbu}{}
+\DeclareFontShape{C65}{mj}{bux}{sl}{<-> CJK * wmjbuo}{}
+\DeclareFontShape{C65}{mj}{bux}{it}{<-> CJKssub * mj/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pg.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pg.fd
new file mode 100644
index 0000000000..fc5fe9004b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pg.fd
@@ -0,0 +1,53 @@
+% This is file c65pg.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65pg.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPilgi
+
+\DeclareFontFamily{C65}{pg}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{pg}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C65}{pg}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C65}{pg}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C65}{pg}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C65}{pg}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C65}{pg}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C65}{pg}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C65}{pg}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C65}{pg}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C65}{pg}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C65}{pg}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C65}{pg}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C65}{pg}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C65}{pg}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C65}{pg}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C65}{pg}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C65}{pg}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C65}{pg}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C65}{pg}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C65}{pg}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C65}{pg}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C65}{pg}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C65}{pg}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C65}{pg}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pga.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pga.fd
new file mode 100644
index 0000000000..2234820a6b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pga.fd
@@ -0,0 +1,53 @@
+% This is file c65pga.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65pga.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPilgia
+
+\DeclareFontFamily{C65}{pga}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{pga}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C65}{pga}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C65}{pga}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C65}{pga}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C65}{pga}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C65}{pga}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C65}{pga}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C65}{pga}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C65}{pga}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C65}{pga}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C65}{pga}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C65}{pga}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C65}{pga}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C65}{pga}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C65}{pga}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C65}{pga}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C65}{pga}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C65}{pga}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C65}{pga}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C65}{pga}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C65}{pga}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C65}{pga}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C65}{pga}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C65}{pga}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65ph.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65ph.fd
new file mode 100644
index 0000000000..2b3a8d93a1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65ph.fd
@@ -0,0 +1,53 @@
+% This is file c65ph.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65ph.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPenHeulim
+
+\DeclareFontFamily{C65}{ph}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{ph}{c}{n}{<-> CJKssub * mj/c/n}{}
+\DeclareFontShape{C65}{ph}{c}{sl}{<-> CJKssub * mj/c/sl}{}
+\DeclareFontShape{C65}{ph}{c}{it}{<-> CJKssub * mj/c/it}{}
+
+\DeclareFontShape{C65}{ph}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C65}{ph}{m}{sl}{<-> CJKssub * mj/m/sl}{}
+\DeclareFontShape{C65}{ph}{m}{it}{<-> CJKssub * mj/m/it}{}
+
+\DeclareFontShape{C65}{ph}{x}{n}{<-> CJKssub * mj/x/n}{}
+\DeclareFontShape{C65}{ph}{x}{sl}{<-> CJKssub * mj/x/sl}{}
+\DeclareFontShape{C65}{ph}{x}{it}{<-> CJKssub * mj/x/it}{}
+
+\DeclareFontShape{C65}{ph}{ux}{n}{<-> CJKssub * mj/ux/n}{}
+\DeclareFontShape{C65}{ph}{ux}{sl}{<-> CJKssub * mj/ux/sl}{}
+\DeclareFontShape{C65}{ph}{ux}{it}{<-> CJKssub * mj/ux/it}{}
+
+\DeclareFontShape{C65}{ph}{bc}{n}{<-> CJKssub * mj/bc/n}{}
+\DeclareFontShape{C65}{ph}{bc}{sl}{<-> CJKssub * mj/bc/sl}{}
+\DeclareFontShape{C65}{ph}{bc}{it}{<-> CJKssub * mj/bc/it}{}
+
+\DeclareFontShape{C65}{ph}{b}{n}{<-> CJKssub * mj/b/n}{}
+\DeclareFontShape{C65}{ph}{b}{sl}{<-> CJKssub * mj/b/sl}{}
+\DeclareFontShape{C65}{ph}{b}{it}{<-> CJKssub * mj/b/it}{}
+
+\DeclareFontShape{C65}{ph}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+\DeclareFontShape{C65}{ph}{bx}{sl}{<-> CJKssub * mj/bx/sl}{}
+\DeclareFontShape{C65}{ph}{bx}{it}{<-> CJKssub * mj/bx/it}{}
+
+\DeclareFontShape{C65}{ph}{bux}{n}{<-> CJKssub * mj/bux/n}{}
+\DeclareFontShape{C65}{ph}{bux}{sl}{<-> CJKssub * mj/bux/sl}{}
+\DeclareFontShape{C65}{ph}{bux}{it}{<-> CJKssub * mj/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pn.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pn.fd
new file mode 100644
index 0000000000..8d77ed1c1a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65pn.fd
@@ -0,0 +1,53 @@
+% This is file c65pn.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65pn.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcPen
+
+\DeclareFontFamily{C65}{pn}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{pn}{c}{n}{<-> CJKssub* mj/c/n}{}
+\DeclareFontShape{C65}{pn}{c}{sl}{<-> CJKssub* mj/c/sl}{}
+\DeclareFontShape{C65}{pn}{c}{it}{<-> CJKssub * mj/c/it}{}
+
+\DeclareFontShape{C65}{pn}{m}{n}{<-> CJKssub* mj/m/n}{}
+\DeclareFontShape{C65}{pn}{m}{sl}{<-> CJKssub* mj/m/sl}{}
+\DeclareFontShape{C65}{pn}{m}{it}{<-> CJKssub * mj/m/it}{}
+
+\DeclareFontShape{C65}{pn}{x}{n}{<-> CJKssub* mj/x/n}{}
+\DeclareFontShape{C65}{pn}{x}{sl}{<-> CJKssub* mj/x/sl}{}
+\DeclareFontShape{C65}{pn}{x}{it}{<-> CJKssub * mj/x/it}{}
+
+\DeclareFontShape{C65}{pn}{ux}{n}{<-> CJKssub* mj/ux/n}{}
+\DeclareFontShape{C65}{pn}{ux}{sl}{<-> CJKssub* mj/ux/sl}{}
+\DeclareFontShape{C65}{pn}{ux}{it}{<-> CJKssub * mj/ux/it}{}
+
+\DeclareFontShape{C65}{pn}{bc}{n}{<-> CJKssub * mj/bc/n}{}
+\DeclareFontShape{C65}{pn}{bc}{sl}{<-> CJKssub * mj/bc/sl}{}
+\DeclareFontShape{C65}{pn}{bc}{it}{<-> CJKssub * mj/bc/it}{}
+
+\DeclareFontShape{C65}{pn}{b}{n}{<-> CJKssub * mj/b/n}{}
+\DeclareFontShape{C65}{pn}{b}{sl}{<-> CJKssub * mj/b/sl}{}
+\DeclareFontShape{C65}{pn}{b}{it}{<-> CJKssub * mj/b/it}{}
+
+\DeclareFontShape{C65}{pn}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+\DeclareFontShape{C65}{pn}{bx}{sl}{<-> CJKssub * mj/bx/sl}{}
+\DeclareFontShape{C65}{pn}{bx}{it}{<-> CJKssub * mj/bx/it}{}
+
+\DeclareFontShape{C65}{pn}{bux}{n}{<-> CJKssub * mj/bux/n}{}
+\DeclareFontShape{C65}{pn}{bux}{sl}{<-> CJKssub * mj/bux/sl}{}
+\DeclareFontShape{C65}{pn}{bux}{it}{<-> CJKssub * mj/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65sh.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65sh.fd
new file mode 100644
index 0000000000..0cb3a621e8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65sh.fd
@@ -0,0 +1,53 @@
+% This is file c65sh.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65sh.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcShinmunMyoungjo
+
+\DeclareFontFamily{C65}{hwsh}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{sh}{c}{n}{<-> CJK * wshc}{}
+\DeclareFontShape{C65}{sh}{c}{sl}{<-> CJK * wshco}{}
+\DeclareFontShape{C65}{sh}{c}{it}{<-> CJKssub * sh/c/sl}{}
+
+\DeclareFontShape{C65}{sh}{m}{n}{<-> CJK * wsh}{}
+\DeclareFontShape{C65}{sh}{m}{sl}{<-> CJK * wsho}{}
+\DeclareFontShape{C65}{sh}{m}{it}{<-> CJKssub * sh/m/sl}{}
+
+\DeclareFontShape{C65}{sh}{x}{n}{<-> CJK * wshx}{}
+\DeclareFontShape{C65}{sh}{x}{sl}{<-> CJK * wshxo}{}
+\DeclareFontShape{C65}{sh}{x}{it}{<-> CJKssub * sh/x/sl}{}
+
+\DeclareFontShape{C65}{sh}{ux}{n}{<-> CJK * wshu}{}
+\DeclareFontShape{C65}{sh}{ux}{sl}{<-> CJK * wshuo}{}
+\DeclareFontShape{C65}{sh}{ux}{it}{<-> CJKssub * sh/ux/sl}{}
+
+\DeclareFontShape{C65}{sh}{bc}{n}{<-> CJKssub * sh/c/n}{}
+\DeclareFontShape{C65}{sh}{bc}{sl}{<-> CJKssub * sh/c/sl}{}
+\DeclareFontShape{C65}{sh}{bc}{it}{<-> CJKssub * sh/bc/sl}{}
+
+\DeclareFontShape{C65}{sh}{b}{n}{<-> CJKssub * sh/m/n}{}
+\DeclareFontShape{C65}{sh}{b}{sl}{<-> CJKssub * sh/m/sl}{}
+\DeclareFontShape{C65}{sh}{b}{it}{<-> CJKssub * sh/b/sl}{}
+
+\DeclareFontShape{C65}{sh}{bx}{n}{<-> CJKssub * sh/x/n}{}
+\DeclareFontShape{C65}{sh}{bx}{sl}{<-> CJKssub * sh/x/sl}{}
+\DeclareFontShape{C65}{sh}{bx}{it}{<-> CJKssub * sh/bx/sl}{}
+
+\DeclareFontShape{C65}{sh}{bux}{n}{<-> CJKssub * sh/ux/n}{}
+\DeclareFontShape{C65}{sh}{bux}{sl}{<-> CJKssub * sh/ux/sl}{}
+\DeclareFontShape{C65}{sh}{bux}{it}{<-> CJKssub * sh/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65tz.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65tz.fd
new file mode 100644
index 0000000000..d353019683
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65tz.fd
@@ -0,0 +1,53 @@
+% This is file c65tz.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65tz.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcTypewriter
+
+\DeclareFontFamily{C65}{tz}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{tz}{c}{n}{<-> CJK * wttc}{}
+\DeclareFontShape{C65}{tz}{c}{sl}{<-> CJK * wttco}{}
+\DeclareFontShape{C65}{tz}{c}{it}{<-> CJKssub * tz/c/sl}{}
+
+\DeclareFontShape{C65}{tz}{m}{n}{<-> CJK * wtt}{}
+\DeclareFontShape{C65}{tz}{m}{sl}{<-> CJK * wtto}{}
+\DeclareFontShape{C65}{tz}{m}{it}{<-> CJKssub * tz/m/sl}{}
+
+\DeclareFontShape{C65}{tz}{x}{n}{<-> CJK * wttx}{}
+\DeclareFontShape{C65}{tz}{x}{sl}{<-> CJK * wttxo}{}
+\DeclareFontShape{C65}{tz}{x}{it}{<-> CJKssub * tz/x/sl}{}
+
+\DeclareFontShape{C65}{tz}{ux}{n}{<-> CJK * wttu}{}
+\DeclareFontShape{C65}{tz}{ux}{sl}{<-> CJK * wttuo}{}
+\DeclareFontShape{C65}{tz}{ux}{it}{<-> CJKssub * tz/ux/sl}{}
+
+\DeclareFontShape{C65}{tz}{bc}{n}{<-> CJKb * wttc}{\CJKbold}
+\DeclareFontShape{C65}{tz}{bc}{sl}{<-> CJKb * wttco}{\CJKbold}
+\DeclareFontShape{C65}{tz}{bc}{it}{<-> CJKssub * tz/bc/sl}{}
+
+\DeclareFontShape{C65}{tz}{b}{n}{<-> CJKb * wtt}{\CJKbold}
+\DeclareFontShape{C65}{tz}{b}{sl}{<-> CJKb * wtto}{\CJKbold}
+\DeclareFontShape{C65}{tz}{b}{it}{<-> CJKssub * tz/b/sl}{}
+
+\DeclareFontShape{C65}{tz}{bx}{n}{<-> CJKb * wttx}{\CJKbold}
+\DeclareFontShape{C65}{tz}{bx}{sl}{<-> CJKb * wttxo}{\CJKbold}
+\DeclareFontShape{C65}{tz}{bx}{it}{<-> CJKssub * tz/bx/sl}{}
+
+\DeclareFontShape{C65}{tz}{bux}{n}{<-> CJKb * wttu}{\CJKbold}
+\DeclareFontShape{C65}{tz}{bux}{sl}{<-> CJKb * wttuo}{\CJKbold}
+\DeclareFontShape{C65}{tz}{bux}{it}{<-> CJKssub * tz/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65vd.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65vd.fd
new file mode 100644
index 0000000000..efe297ef8b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65vd.fd
@@ -0,0 +1,53 @@
+% This is file c65vd.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65vd.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcVada
+
+\DeclareFontFamily{C65}{vd}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{vd}{c}{n}{<-> CJKssub * gt/c/n}{}
+\DeclareFontShape{C65}{vd}{c}{sl}{<-> CJKssub * gt/c/sl}{}
+\DeclareFontShape{C65}{vd}{c}{it}{<-> CJKssub * gt/c/it}{}
+
+\DeclareFontShape{C65}{vd}{m}{n}{<-> CJKssub * gt/m/n}{}
+\DeclareFontShape{C65}{vd}{m}{sl}{<-> CJKssub * gt/m/sl}{}
+\DeclareFontShape{C65}{vd}{m}{it}{<-> CJKssub * gt/m/it}{}
+
+\DeclareFontShape{C65}{vd}{x}{n}{<-> CJKssub * gt/x/n}{}
+\DeclareFontShape{C65}{vd}{x}{sl}{<-> CJKssub * gt/x/sl}{}
+\DeclareFontShape{C65}{vd}{x}{it}{<-> CJKssub * gt/x/it}{}
+
+\DeclareFontShape{C65}{vd}{ux}{n}{<-> CJKssub * gt/ux/n}{}
+\DeclareFontShape{C65}{vd}{ux}{sl}{<-> CJKssub * gt/ux/sl}{}
+\DeclareFontShape{C65}{vd}{ux}{it}{<-> CJKssub * gt/ux/it}{}
+
+\DeclareFontShape{C65}{vd}{bc}{n}{<-> CJKssub * gt/bc/n}{}
+\DeclareFontShape{C65}{vd}{bc}{sl}{<-> CJKssub * gt/bc/sl}{}
+\DeclareFontShape{C65}{vd}{bc}{it}{<-> CJKssub * gt/bc/it}{}
+
+\DeclareFontShape{C65}{vd}{b}{n}{<-> CJKssub * gt/b/n}{}
+\DeclareFontShape{C65}{vd}{b}{sl}{<-> CJKssub * gt/b/sl}{}
+\DeclareFontShape{C65}{vd}{b}{it}{<-> CJKssub * gt/b/it}{}
+
+\DeclareFontShape{C65}{vd}{bx}{n}{<-> CJKssub * gt/bx/n}{}
+\DeclareFontShape{C65}{vd}{bx}{sl}{<-> CJKssub * gt/bx/sl}{}
+\DeclareFontShape{C65}{vd}{bx}{it}{<-> CJKssub * gt/bx/it}{}
+
+\DeclareFontShape{C65}{vd}{bux}{n}{<-> CJKssub * gt/bux/n}{}
+\DeclareFontShape{C65}{vd}{bux}{sl}{<-> CJKssub * gt/bux/sl}{}
+\DeclareFontShape{C65}{vd}{bux}{it}{<-> CJKssub * gt/bux/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65yt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65yt.fd
new file mode 100644
index 0000000000..0aa4975cab
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/c65yt.fd
@@ -0,0 +1,53 @@
+% This is file c65yt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65yt.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcYetgul
+
+\DeclareFontFamily{C65}{yt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{yt}{c}{n}{<-> CJK * wytc}{}
+\DeclareFontShape{C65}{yt}{c}{sl}{<-> CJK * wytco}{}
+\DeclareFontShape{C65}{yt}{c}{it}{<-> CJKssub * yt/c/sl}{}
+
+\DeclareFontShape{C65}{yt}{m}{n}{<-> CJK * wyt}{}
+\DeclareFontShape{C65}{yt}{m}{sl}{<-> CJK * wyto}{}
+\DeclareFontShape{C65}{yt}{m}{it}{<-> CJKssub * yt/m/sl}{}
+
+\DeclareFontShape{C65}{yt}{x}{n}{<-> CJK * wytx}{}
+\DeclareFontShape{C65}{yt}{x}{sl}{<-> CJK * wytxo}{}
+\DeclareFontShape{C65}{yt}{x}{it}{<-> CJKssub * yt/x/sl}{}
+
+\DeclareFontShape{C65}{yt}{ux}{n}{<-> CJK * wytu}{}
+\DeclareFontShape{C65}{yt}{ux}{sl}{<-> CJK * wytuo}{}
+\DeclareFontShape{C65}{yt}{ux}{it}{<-> CJKssub * yt/ux/sl}{}
+
+\DeclareFontShape{C65}{yt}{bc}{n}{<-> CJKb * wytc}{\CJKbold}
+\DeclareFontShape{C65}{yt}{bc}{sl}{<-> CJKb * wytco}{\CJKbold}
+\DeclareFontShape{C65}{yt}{bc}{it}{<-> CJKssub * yt/bc/sl}{}
+
+\DeclareFontShape{C65}{yt}{b}{n}{<-> CJKb * wyt}{\CJKbold}
+\DeclareFontShape{C65}{yt}{b}{sl}{<-> CJKb * wyto}{\CJKbold}
+\DeclareFontShape{C65}{yt}{b}{it}{<-> CJKssub * yt/b/sl}{}
+
+\DeclareFontShape{C65}{yt}{bx}{n}{<-> CJKb * wytx}{\CJKbold}
+\DeclareFontShape{C65}{yt}{bx}{sl}{<-> CJKb * wytxo}{\CJKbold}
+\DeclareFontShape{C65}{yt}{bx}{it}{<-> CJKssub * yt/bx/sl}{}
+
+\DeclareFontShape{C65}{yt}{bux}{n}{<-> CJKb * wytu}{\CJKbold}
+\DeclareFontShape{C65}{yt}{bux}{sl}{<-> CJKb * wytuo}{\CJKbold}
+\DeclareFontShape{C65}{yt}{bux}{it}{<-> CJKssub * yt/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/pshan.sty b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/pshan.sty
new file mode 100644
index 0000000000..67c4c5fb4d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/HLaTeX/pshan.sty
@@ -0,0 +1,29 @@
+% This is the file pshan.sty of the CJK package
+% for using HLaTeX's PostScript fonts.
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesPackage{pshan}[\filedate\space\fileversion]
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/KS.chr b/language/chinese/CJK/cjk-4.8.5/texinput/KS/KS.chr
new file mode 100644
index 0000000000..924b9792e5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/KS.chr
@@ -0,0 +1,251 @@
+% This is the file KS.chr of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{KS.chr}[\filedate\space\fileversion]
+
+
+% define macros for handling hangul fonts and characters.
+
+\gdef\CJK@KSChr{
+ \CJK@global\def\CJK@altchar##1##2##3{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \discretionary{}{}{}
+ \fi
+
+ \@tempcnta ##3\relax
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@altEnc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% the same, but the plane crosses the font file boundary.
+
+ \CJK@global\def\CJK@altcharx##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \discretionary{}{}{}
+ \fi
+
+ \@tempcnta ##4\relax
+ \@tempcntb 256\relax
+ \advance\@tempcnta ##3\relax
+ \advance\@tempcntb -##3\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##4 < \@temp
+ \edef\CJK@plane{##1}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##2}
+ \fi
+ \usefont{\CJK@altEnc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+ \CJK@global\def\CJK@char##1##2##3{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \discretionary{}{}{}
+ \fi
+
+ \@tempcnta ##3\relax
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% the same, but the plane crosses the font file boundary.
+
+ \CJK@global\def\CJK@charx##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \discretionary{}{}{}
+ \fi
+
+ \@tempcnta ##4\relax
+ \@tempcntb 256\relax
+ \advance\@tempcnta ##3\relax
+ \advance\@tempcntb -##3\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##4 < \@temp
+ \edef\CJK@plane{##1}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##2}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% for punctuation.
+
+ \CJK@global\def\CJK@punctchar##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##4}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \else
+ \discretionary{}{}{}
+ \fi
+ \fi
+
+ \@tempcnta ##4\relax
+ \advance\@tempcnta ##3\relax
+ \edef\CJK@plane{##2}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}
+
+ \CJK@global\def\CJK@punctcharx##1##2##3##4##5{
+ {\ifnum ##5 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##5 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##5}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \else
+ \discretionary{}{}{}
+ \fi
+ \fi
+
+ \@tempcnta ##5\relax
+ \@tempcntb 256\relax
+ \advance\@tempcnta ##4\relax
+ \advance\@tempcntb -##4\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##5 < \@temp
+ \edef\CJK@plane{##2}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##3}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/KS.enc b/language/chinese/CJK/cjk-4.8.5/texinput/KS/KS.enc
new file mode 100644
index 0000000000..bd3246e246
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/KS.enc
@@ -0,0 +1,114 @@
+% This is the file KS.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{KS.enc}[\filedate\space\fileversion]
+
+
+% KS encoding:
+% each plane has 94 characters; Hangul elements (Jaso) and Hangul
+% syllables are overlaid with a second CJK font.
+
+\gdef\CJK@KSEncoding{
+ \CJK@loadChr{KS}
+
+ \CJK@namegdef{^^a1}##1{\@empty\CJK@punctchar{A1}{01}{-161}{##1}}
+ \CJK@namegdef{^^a2}##1{\@empty\CJK@char {01}{ -67}{##1}}
+ \CJK@namegdef{^^a3}##1{\@empty\CJK@punctcharx{A3}{01}{02}{27}{##1}}
+ \CJK@namegdef{^^a4}##1{\@empty\CJK@altchar {02}{-135}{##1}}% Hangul elements
+ \CJK@namegdef{^^a5}##1{\@empty\CJK@char {02}{ -41}{##1}}
+ \CJK@namegdef{^^a6}##1{\@empty\CJK@charx{02}{03}{53}{##1}}
+ \CJK@namegdef{^^a7}##1{\@empty\CJK@char {03}{-109}{##1}}
+ \CJK@namegdef{^^a8}##1{\@empty\CJK@char {03}{ -15}{##1}}
+ \CJK@namegdef{^^a9}##1{\@empty\CJK@charx{03}{04}{79}{##1}}
+ \CJK@namegdef{^^aa}##1{\@empty\CJK@char {04}{ -83}{##1}}
+ \CJK@namegdef{^^ab}##1{\@empty\CJK@charx{04}{05}{11}{##1}}
+ \CJK@namegdef{^^ac}##1{\@empty\CJK@char {05}{-151}{##1}}
+ \CJK@namegdef{^^ad}##1{\@empty\CJK@char {05}{ -57}{##1}}
+ \CJK@namegdef{^^ae}##1{\@empty\CJK@charx{05}{06}{37}{##1}}
+ \CJK@namegdef{^^af}##1{\@empty\CJK@char {06}{-125}{##1}}
+ \CJK@namegdef{^^b0}##1{\@empty\CJK@altchar {06}{ -31}{##1}}% Hangul syllables
+ \CJK@namegdef{^^b1}##1{\@empty\CJK@altcharx{06}{07}{63}{##1}}
+ \CJK@namegdef{^^b2}##1{\@empty\CJK@altchar {07}{ -99}{##1}}
+ \CJK@namegdef{^^b3}##1{\@empty\CJK@altchar {07}{ -5}{##1}}
+ \CJK@namegdef{^^b4}##1{\@empty\CJK@altcharx{07}{08}{89}{##1}}
+ \CJK@namegdef{^^b5}##1{\@empty\CJK@altchar {08}{ -73}{##1}}
+ \CJK@namegdef{^^b6}##1{\@empty\CJK@altcharx{08}{09}{21}{##1}}
+ \CJK@namegdef{^^b7}##1{\@empty\CJK@altchar {09}{-141}{##1}}
+ \CJK@namegdef{^^b8}##1{\@empty\CJK@altchar {09}{ -47}{##1}}
+ \CJK@namegdef{^^b9}##1{\@empty\CJK@altcharx{09}{10}{47}{##1}}
+ \CJK@namegdef{^^ba}##1{\@empty\CJK@altchar {10}{-115}{##1}}
+ \CJK@namegdef{^^bb}##1{\@empty\CJK@altchar {10}{ -21}{##1}}
+ \CJK@namegdef{^^bc}##1{\@empty\CJK@altcharx{10}{11}{73}{##1}}
+ \CJK@namegdef{^^bd}##1{\@empty\CJK@altchar {11}{ -89}{##1}}
+ \CJK@namegdef{^^be}##1{\@empty\CJK@altcharx{11}{12}{ 5}{##1}}
+ \CJK@namegdef{^^bf}##1{\@empty\CJK@altchar {12}{-157}{##1}}
+ \CJK@namegdef{^^c0}##1{\@empty\CJK@altchar {12}{ -63}{##1}}
+ \CJK@namegdef{^^c1}##1{\@empty\CJK@altcharx{12}{13}{31}{##1}}
+ \CJK@namegdef{^^c2}##1{\@empty\CJK@altchar {13}{-131}{##1}}
+ \CJK@namegdef{^^c3}##1{\@empty\CJK@altchar {13}{ -37}{##1}}
+ \CJK@namegdef{^^c4}##1{\@empty\CJK@altcharx{13}{14}{57}{##1}}
+ \CJK@namegdef{^^c5}##1{\@empty\CJK@altchar {14}{-105}{##1}}
+ \CJK@namegdef{^^c6}##1{\@empty\CJK@altchar {14}{ -11}{##1}}
+ \CJK@namegdef{^^c7}##1{\@empty\CJK@altcharx{14}{15}{83}{##1}}
+ \CJK@namegdef{^^c8}##1{\@empty\CJK@altchar {15}{ -79}{##1}}
+ \CJK@namegdef{^^c9}##1{\@empty\CJK@charx{15}{16}{15}{##1}}% Hanja
+ \CJK@namegdef{^^ca}##1{\@empty\CJK@char {16}{-147}{##1}}
+ \CJK@namegdef{^^cb}##1{\@empty\CJK@char {16}{ -53}{##1}}
+ \CJK@namegdef{^^cc}##1{\@empty\CJK@charx{16}{17}{41}{##1}}
+ \CJK@namegdef{^^cd}##1{\@empty\CJK@char {17}{-121}{##1}}
+ \CJK@namegdef{^^ce}##1{\@empty\CJK@char {17}{ -27}{##1}}
+ \CJK@namegdef{^^cf}##1{\@empty\CJK@charx{17}{18}{67}{##1}}
+ \CJK@namegdef{^^d0}##1{\@empty\CJK@char {18}{ -95}{##1}}
+ \CJK@namegdef{^^d1}##1{\@empty\CJK@char {18}{ -1}{##1}}
+ \CJK@namegdef{^^d2}##1{\@empty\CJK@charx{18}{19}{93}{##1}}
+ \CJK@namegdef{^^d3}##1{\@empty\CJK@char {19}{ -69}{##1}}
+ \CJK@namegdef{^^d4}##1{\@empty\CJK@charx{19}{20}{25}{##1}}
+ \CJK@namegdef{^^d5}##1{\@empty\CJK@char {20}{-137}{##1}}
+ \CJK@namegdef{^^d6}##1{\@empty\CJK@char {20}{ -43}{##1}}
+ \CJK@namegdef{^^d7}##1{\@empty\CJK@charx{20}{21}{51}{##1}}
+ \CJK@namegdef{^^d8}##1{\@empty\CJK@char {21}{-111}{##1}}
+ \CJK@namegdef{^^d9}##1{\@empty\CJK@char {21}{ -17}{##1}}
+ \CJK@namegdef{^^da}##1{\@empty\CJK@charx{21}{22}{77}{##1}}
+ \CJK@namegdef{^^db}##1{\@empty\CJK@char {22}{ -85}{##1}}
+ \CJK@namegdef{^^dc}##1{\@empty\CJK@charx{22}{23}{ 9}{##1}}
+ \CJK@namegdef{^^dd}##1{\@empty\CJK@char {23}{-153}{##1}}
+ \CJK@namegdef{^^de}##1{\@empty\CJK@char {23}{ -59}{##1}}
+ \CJK@namegdef{^^df}##1{\@empty\CJK@charx{23}{24}{35}{##1}}
+ \CJK@namegdef{^^e0}##1{\@empty\CJK@char {24}{-127}{##1}}
+ \CJK@namegdef{^^e1}##1{\@empty\CJK@char {24}{ -33}{##1}}
+ \CJK@namegdef{^^e2}##1{\@empty\CJK@charx{24}{25}{61}{##1}}
+ \CJK@namegdef{^^e3}##1{\@empty\CJK@char {25}{-101}{##1}}
+ \CJK@namegdef{^^e4}##1{\@empty\CJK@char {25}{ -7}{##1}}
+ \CJK@namegdef{^^e5}##1{\@empty\CJK@charx{25}{26}{87}{##1}}
+ \CJK@namegdef{^^e6}##1{\@empty\CJK@char {26}{ -75}{##1}}
+ \CJK@namegdef{^^e7}##1{\@empty\CJK@charx{26}{27}{19}{##1}}
+ \CJK@namegdef{^^e8}##1{\@empty\CJK@char {27}{-143}{##1}}
+ \CJK@namegdef{^^e9}##1{\@empty\CJK@char {27}{ -49}{##1}}
+ \CJK@namegdef{^^ea}##1{\@empty\CJK@charx{27}{28}{45}{##1}}
+ \CJK@namegdef{^^eb}##1{\@empty\CJK@char {28}{-117}{##1}}
+ \CJK@namegdef{^^ec}##1{\@empty\CJK@char {28}{ -23}{##1}}
+ \CJK@namegdef{^^ed}##1{\@empty\CJK@charx{28}{29}{71}{##1}}
+ \CJK@namegdef{^^ee}##1{\@empty\CJK@char {29}{ -91}{##1}}
+ \CJK@namegdef{^^ef}##1{\@empty\CJK@charx{29}{30}{ 3}{##1}}
+ \CJK@namegdef{^^f0}##1{\@empty\CJK@char {30}{-159}{##1}}
+ \CJK@namegdef{^^f1}##1{\@empty\CJK@char {30}{ -65}{##1}}
+ \CJK@namegdef{^^f2}##1{\@empty\CJK@charx{30}{31}{29}{##1}}
+ \CJK@namegdef{^^f3}##1{\@empty\CJK@char {31}{-133}{##1}}
+ \CJK@namegdef{^^f4}##1{\@empty\CJK@char {31}{ -39}{##1}}
+ \CJK@namegdef{^^f5}##1{\@empty\CJK@charx{31}{32}{55}{##1}}
+ \CJK@namegdef{^^f6}##1{\@empty\CJK@char {32}{-107}{##1}}
+ \CJK@namegdef{^^f7}##1{\@empty\CJK@char {32}{ -13}{##1}}
+ \CJK@namegdef{^^f8}##1{\@empty\CJK@charx{32}{33}{81}{##1}}
+ \CJK@namegdef{^^f9}##1{\@empty\CJK@char {33}{ -81}{##1}}
+ \CJK@namegdef{^^fa}##1{\@empty\CJK@charx{33}{34}{13}{##1}}
+ \CJK@namegdef{^^fb}##1{\@empty\CJK@char {34}{-149}{##1}}
+ \CJK@namegdef{^^fc}##1{\@empty\CJK@char {34}{ -55}{##1}}
+ \CJK@namegdef{^^fd}##1{\@empty\CJK@charx{34}{35}{39}{##1}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60dr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60dr.fd
new file mode 100644
index 0000000000..83d0bd611d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60dr.fd
@@ -0,0 +1,22 @@
+% This is the file c60dr.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c60dr.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C60}{dr}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C60}{dr}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C60}{dr}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gr.fd
new file mode 100644
index 0000000000..b2e908ac5d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gr.fd
@@ -0,0 +1,22 @@
+% This is the file c60gr.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c60gr.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C60}{gr}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C60}{gr}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C60}{gr}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gs.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gs.fd
new file mode 100644
index 0000000000..cb8e012255
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gs.fd
@@ -0,0 +1,22 @@
+% This is the file c60gs.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c60gs.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C60}{gs}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C60}{gs}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C60}{gs}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gt.fd
new file mode 100644
index 0000000000..fc54bfded7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60gt.fd
@@ -0,0 +1,22 @@
+% This is the file c60gt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c60gt.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C60}{gt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C60}{gt}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C60}{gt}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hgt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hgt.fd
new file mode 100644
index 0000000000..4291ae4361
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hgt.fd
@@ -0,0 +1,22 @@
+% This is the file c60hgt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c60hgt.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C60}{hgt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C60}{hgt}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C60}{hgt}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hmj.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hmj.fd
new file mode 100644
index 0000000000..a2bea6c9a1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hmj.fd
@@ -0,0 +1,22 @@
+% This is the file c60hmj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c60hmj.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C60}{hmj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C60}{hmj}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C60}{hmj}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hol.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hol.fd
new file mode 100644
index 0000000000..1c1e16b12b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hol.fd
@@ -0,0 +1,22 @@
+% This is the file c60hol.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c60hol.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C60}{hol}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C60}{hol}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C60}{hol}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hpg.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hpg.fd
new file mode 100644
index 0000000000..d581cebaf8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60hpg.fd
@@ -0,0 +1,22 @@
+% This is the file c60hpg.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c60hpg.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C60}{hpg}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C60}{hpg}{m}{n}{<-> CJKssub * mj/m/n}{}
+\DeclareFontShape{C60}{hpg}{bx}{n}{<-> CJKssub * mj/bx/n}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60mj.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60mj.fd
new file mode 100644
index 0000000000..1c86c18335
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c60mj.fd
@@ -0,0 +1,22 @@
+% This is the file c60mj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c60mj.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C60}{mj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C60}{mj}{m}{n}{<-> CJK * ksso17}{\CJKnormal}
+\DeclareFontShape{C60}{mj}{bx}{n}{<-> CJKb * ksso17}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61dr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61dr.fd
new file mode 100644
index 0000000000..09e246a7e8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61dr.fd
@@ -0,0 +1,27 @@
+% This is the file c61dr.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c61dr.fd}[\filedate\space\fileversion]
+
+
+% Korean syllables (Hangul) and elements (Jaso)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C61}{dr}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C61}{dr}{m}{n}{
+ <5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * kdr}{\CJKnormal}
+\DeclareFontShape{C61}{dr}{bx}{n}{
+ <5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJKb * kdr}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gr.fd
new file mode 100644
index 0000000000..32acdfb66c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gr.fd
@@ -0,0 +1,26 @@
+% This is the file c61gr.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c61gr.fd}[\filedate\space\fileversion]
+
+% Korean syllables (Hangul) and elements (Jaso)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C61}{gr}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C61}{gr}{m}{n}{
+ <5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * kgr}{\CJKnormal}
+\DeclareFontShape{C61}{gr}{bx}{n}{
+ <5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJKb * kgr}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gs.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gs.fd
new file mode 100644
index 0000000000..0eae709b0a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gs.fd
@@ -0,0 +1,26 @@
+% This is the file c61gs.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c61gs.fd}[\filedate\space\fileversion]
+
+% Korean syllables (Hangul) and elements (Jaso)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C61}{gs}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C61}{gs}{m}{n}{
+ <5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * kgs}{\CJKnormal}
+\DeclareFontShape{C61}{gs}{bx}{n}{
+ <5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJKb * kgs}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gt.fd
new file mode 100644
index 0000000000..53b4084ebb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61gt.fd
@@ -0,0 +1,26 @@
+% This is the file c61gt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c61gt.fd}[\filedate\space\fileversion]
+
+% Korean syllables (Hangul) and elements (Jaso)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C61}{gt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C61}{gt}{m}{n}{
+ <5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * kgt}{\CJKnormal}
+\DeclareFontShape{C61}{gt}{bx}{n}{
+ <5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJKb * kgt}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hgt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hgt.fd
new file mode 100644
index 0000000000..7a1af915c1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hgt.fd
@@ -0,0 +1,24 @@
+% This is the file c61hgt.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c61hgt.fd}[\filedate\space\fileversion]
+
+% Korean syllables (Hangul) and elements (Jaso)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C61}{hgt}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C61}{hgt}{m}{n}{<5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * hgtm}{}
+\DeclareFontShape{C61}{hgt}{bx}{n}{<5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * hgtb}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hmj.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hmj.fd
new file mode 100644
index 0000000000..a38b4ebde6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hmj.fd
@@ -0,0 +1,24 @@
+% This is the file c61hmj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c61hmj.fd}[\filedate\space\fileversion]
+
+% Korean syllables (Hangul) and elements (Jaso)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C61}{hmj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C61}{hmj}{m}{n}{<5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * hmjm}{}
+\DeclareFontShape{C61}{hmj}{bx}{n}{<5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * hmjb}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hol.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hol.fd
new file mode 100644
index 0000000000..9221a5257c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hol.fd
@@ -0,0 +1,26 @@
+% This is the file c61hol.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c61hol.fd}[\filedate\space\fileversion]
+
+% Korean syllables (Hangul) and elements (Jaso)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C61}{hol}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C61}{hol}{m}{n}{
+ <5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * hol}{\CJKnormal}
+\DeclareFontShape{C61}{hol}{bx}{n}{
+ <5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJKb * hol}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hpg.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hpg.fd
new file mode 100644
index 0000000000..3f5b9ea9d6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61hpg.fd
@@ -0,0 +1,24 @@
+% This is the file c61hpg.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c61hpg.fd}[\filedate\space\fileversion]
+
+% Korean syllables (Hangul) and elements (Jaso)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C61}{hpg}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C61}{hpg}{m}{n}{<5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * hpgm}{}
+\DeclareFontShape{C61}{hpg}{bx}{n}{<5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * hpgb}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61mj.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61mj.fd
new file mode 100644
index 0000000000..3ce385d014
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c61mj.fd
@@ -0,0 +1,24 @@
+% This is the file c61mj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c61mj.fd}[\filedate\space\fileversion]
+
+% Korean syllables (Hangul) and elements (Jaso)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: CJK (standard)
+
+\DeclareFontFamily{C61}{mj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C61}{mj}{m}{n}{<5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * kmj}{}
+\DeclareFontShape{C61}{mj}{bx}{n}{<5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * kmjb}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/c62song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c62song.fd
new file mode 100644
index 0000000000..d25d0d2e0d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/c62song.fd
@@ -0,0 +1,22 @@
+% This is the file c62song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c62song.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: pmC
+
+\DeclareFontFamily{C62}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C62}{song}{m}{n}{<-> sCJKfixed * wcks}{\CJKnormal}
+\DeclareFontShape{C62}{song}{bx}{n}{<-> sCJKfixedb * wcks}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul.cap b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul.cap
new file mode 100644
index 0000000000..f1ccedf8f7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul.cap
@@ -0,0 +1,74 @@
+% This is the file hangul.cap of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{hangul.cap}[\filedate\space\fileversion]
+
+
+% Hangul captions
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: EUC (=Wansung)
+
+\renewcommand\contentsname{¸ñÂ÷}
+\renewcommand\listfigurename{±×¸²~¸ñÂ÷}
+\renewcommand\listtablename{Ç¥~¸ñÂ÷}
+\renewcommand\indexname{»öÀÎ}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{Âü°í~¼­Àû}}
+ {\renewcommand\bibname{Âü°í~¹®Çå}}
+
+\renewcommand\figurename{±×¸²}
+\renewcommand\tablename{Ç¥}
+
+\newcommand\prepartname{Á¦}
+\newcommand\postpartname{ºÎ}
+\renewcommand\partformat{\prepartname~\thepart~\postpartname}
+
+% \newcommand\prechaptername{Á¦}
+% \newcommand\postchaptername{Àå}
+% \newcommand\presectionname{Á¦}
+% \newcommand\postsectionname{Àý}
+% \renewcommand\appendixname{ºÎ·Ï}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{¿ä¾à}}{}
+
+% \renewcommand\ccname{»çº»}
+% \renewcommand\enclname{÷ºÎ¹°}% ȤÀº µ¿ºÀ¹°
+% \renewcommand\pagename{ÆäÀÌÁö~}
+% \renewcommand\headtoname{¹Þ´ÂÀÌ}
+% \renewcommand\seename{ÂüÁ¶}
+
+\renewcommand{\today}{\number\year ³â~\number\month ¿ù~\number\day ÀÏ}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: euc-korea
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul.cpx
new file mode 100644
index 0000000000..1050f74589
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul.cpx
@@ -0,0 +1,71 @@
+% This is the file hangul.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{hangul.cpx}[\filedate\space\fileversion]
+
+
+% Hangul captions
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: EUC (=Wansung)
+%
+% preprocessed
+
+\renewcommand\contentsname{¸241Â247}
+\renewcommand\listfigurename{±215¸178~¸241Â247}
+\renewcommand\listtablename{Ç165~¸241Â247}
+\renewcommand\indexname{»246À206}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{Â252°237~¼173À251}}
+ {\renewcommand\bibname{Â252°237~¹174Ç229}}
+
+\renewcommand\figurename{±215¸178}
+\renewcommand\tablename{Ç165}
+
+\newcommand\prepartname{Á166}
+\newcommand\postpartname{º206}
+\renewcommand\partformat{\prepartname~\thepart~\postpartname}
+
+% \newcommand\prechaptername{Á166}
+% \newcommand\postchaptername{À229}
+% \newcommand\presectionname{Á166}
+% \newcommand\postsectionname{À253}
+% \renewcommand\appendixname{º206·207}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{¿228¾224}}{}
+
+% \renewcommand\ccname{»231º187}
+% \renewcommand\enclname{Ã183º206¹176}% ȤÀº µ¿ºÀ¹°
+% \renewcommand\pagename{Æ228À204Á246~}
+% \renewcommand\headtoname{¹222´194À204}
+% \renewcommand\seename{Â252Á182}
+
+\renewcommand{\today}{%
+ \number\year ³226~\number\month ¿249~\number\day À207}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul2.cap b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul2.cap
new file mode 100644
index 0000000000..98dbb26600
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul2.cap
@@ -0,0 +1,74 @@
+% This is the file hangul2.cap of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{hangul2.cap}[\filedate\space\fileversion]
+
+
+% Hangul captions set 2
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: EUC (=Wansung)
+
+\renewcommand\contentsname{Â÷·Ê}
+\renewcommand\listfigurename{±×¸²~Â÷·Ê}
+\renewcommand\listtablename{Ç¥~Â÷·Ê}
+\renewcommand\indexname{ã¾Æº¸±â}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{Âü°í~¼­Àû}}
+ {\renewcommand\bibname{Âü°í~¹®Çå}}
+
+\renewcommand\figurename{±×¸²}
+\renewcommand\tablename{Ç¥}
+
+\newcommand\prepartname{Á¦}
+\newcommand\postpartname{ºÎ}
+\renewcommand\partformat{\prepartname~\thepart~\postpartname}
+
+% \newcommand\prechaptername{Á¦}
+% \newcommand\postchaptername{Àå}
+% \newcommand\presectionname{Á¦}
+% \newcommand\postsectionname{Àý}
+% \renewcommand\appendixname{ºÎ·Ï}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{¿ä¾à}}{}
+
+% \renewcommand\ccname{»çº»}
+% \renewcommand\enclname{÷ºÎ¹°}% ȤÀº µ¿ºÀ¹°
+% \renewcommand\pagename{ÆäÀÌÁö~}
+% \renewcommand\headtoname{¹Þ´ÂÀÌ}
+% \renewcommand\seename{ÂüÁ¶}
+
+\renewcommand{\today}{\number\year ³â~\number\month ¿ù~\number\day ÀÏ}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: euc-korea
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul2.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul2.cpx
new file mode 100644
index 0000000000..ce3250733c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hangul2.cpx
@@ -0,0 +1,71 @@
+% This is the file hangul2.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{hangul2.cpx}[\filedate\space\fileversion]
+
+
+% Hangul captions set 2
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: EUC (=Wansung)
+%
+% preprocessed
+
+\renewcommand\contentsname{Â247·202}
+\renewcommand\listfigurename{±215¸178~Â247·202}
+\renewcommand\listtablename{Ç165~Â247·202}
+\renewcommand\indexname{Ã163¾198º184±226}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{Â252°237~¼173À251}}
+ {\renewcommand\bibname{Â252°237~¹174Ç229}}
+
+\renewcommand\figurename{±215¸178}
+\renewcommand\tablename{Ç165}
+
+\newcommand\prepartname{Á166}
+\newcommand\postpartname{º206}
+\renewcommand\partformat{\prepartname~\thepart~\postpartname}
+
+% \newcommand\prechaptername{Á166}
+% \newcommand\postchaptername{À229}
+% \newcommand\presectionname{Á166}
+% \newcommand\postsectionname{À253}
+% \renewcommand\appendixname{º206·207}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{¿228¾224}}{}
+
+% \renewcommand\ccname{»231º187}
+% \renewcommand\enclname{Ã183º206¹176}% ȤÀº µ¿ºÀ¹°
+% \renewcommand\pagename{Æ228À204Á246~}
+% \renewcommand\headtoname{¹222´194À204}
+% \renewcommand\seename{Â252Á182}
+
+\renewcommand{\today}{%
+ \number\year ³226~\number\month ¿249~\number\day À207}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/hanja.cap b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hanja.cap
new file mode 100644
index 0000000000..7eb1832cde
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hanja.cap
@@ -0,0 +1,74 @@
+% This is the file hanja.cap of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <a7971428@unet.univie.ac.at>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{hanja.cap}[\filedate\space\fileversion]
+
+
+% Hanja captions
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: EUC (=Wansung)
+
+\renewcommand\contentsname{ÙÍó­}
+\renewcommand\listfigurename{±×¸²~ÙÍó­}
+\renewcommand\listtablename{øú~ÙÍó­}
+\renewcommand\indexname{ßãìÚ}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{óÑÍÅ~ßöîß}}
+ {\renewcommand\bibname{óÑÍÅ~ÙþúÌ}}
+
+\renewcommand\figurename{±×¸²}
+\renewcommand\tablename{øú}
+
+\newcommand\prepartname{ð¯}
+\newcommand\postpartname{ø¹}
+\renewcommand\partformat{\prepartname~\thepart~\postpartname}
+
+% \newcommand\prechaptername{ð¯}
+% \newcommand\postchaptername{íñ}
+% \newcommand\presectionname{ð¯}
+% \newcommand\postsectionname{ï½}
+% \newcommand\appendixname{ݾÖâ}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{é©~å³}}{}
+
+% \renewcommand\ccname{ÞÐÜâ}
+% \renewcommand\enclname{ôÕݾڪ}% ȤÀº µ¿ºÀ¹°
+% \renewcommand\pagename{ÆäÀÌÁö}
+% \renewcommand\headtoname{áôãáìÑ}
+% \renewcommand\seename{óÑðÎ}
+
+\renewcommand{\today}{\number\year Ò´~\number\month êÅ~\number\day ìí}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: euc-korea
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/KS/hanja.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hanja.cpx
new file mode 100644
index 0000000000..39e2a02cf4
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/KS/hanja.cpx
@@ -0,0 +1,71 @@
+% This is the file hanja.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{hanja.cpx}[\filedate\space\fileversion]
+
+
+% Hanja captions
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: EUC (=Wansung)
+%
+% preprocessed
+
+\renewcommand\contentsname{Ù205ó173}
+\renewcommand\listfigurename{±215¸178~Ù205ó173}
+\renewcommand\listtablename{ø250~Ù205ó173}
+\renewcommand\indexname{ß227ì218}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{ó209Í197~ß246î223}}
+ {\renewcommand\bibname{ó209Í197~Ù254ú204}}
+
+\renewcommand\figurename{±215¸178}
+\renewcommand\tablename{ø250}
+
+\newcommand\prepartname{ð175}
+\newcommand\postpartname{ø185}
+\renewcommand\partformat{\prepartname~\thepart~\postpartname}
+
+% \newcommand\prechaptername{ð175}
+% \newcommand\postchaptername{í241}
+% \newcommand\presectionname{ð175}
+% \newcommand\postsectionname{ï189}
+% \newcommand\appendixname{Ý190Ö226}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{é169~å179}}{}
+
+% \renewcommand\ccname{Þ208Ü226}
+% \renewcommand\enclname{ô213Ý190Ú170}% ȤÀº µ¿ºÀ¹°
+% \renewcommand\pagename{Æ228À204Á246}
+% \renewcommand\headtoname{á244ã225ì209}
+% \renewcommand\seename{ó209ð206}
+
+\renewcommand{\today}{%
+ \number\year Ò180~\number\month ê197~\number\day ì237}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.bdg b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.bdg
new file mode 100644
index 0000000000..3d5b0299af
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.bdg
@@ -0,0 +1,162 @@
+% This is the file SJIS.bdg of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{SJIS.bdg}[\filedate\space\fileversion]
+
+
+% The bindings for SJIS encoding.
+
+\gdef\CJK@SJISBinding{
+% 80
+ \CJK@nameppdef{^^81}
+ \CJK@nameppdef{^^82}
+ \CJK@nameppdef{^^83}
+ \CJK@nameppdef{^^84}
+ \CJK@nameppdef{^^85}
+ \CJK@nameppdef{^^86}
+ \CJK@nameppdef{^^87}
+ \CJK@nameppdef{^^88}
+ \CJK@nameppdef{^^89}
+ \CJK@nameppdef{^^8a}
+ \CJK@nameppdef{^^8b}
+ \CJK@nameppdef{^^8c}
+ \CJK@nameppdef{^^8d}
+ \CJK@nameppdef{^^8e}
+ \CJK@nameppdef{^^8f}
+ \CJK@nameppdef{^^90}
+ \CJK@nameppdef{^^91}
+ \CJK@nameppdef{^^92}
+ \CJK@nameppdef{^^93}
+ \CJK@nameppdef{^^94}
+ \CJK@nameppdef{^^95}
+ \CJK@nameppdef{^^96}
+ \CJK@nameppdef{^^97}
+ \CJK@nameppdef{^^98}
+ \CJK@nameppdef{^^99}
+ \CJK@nameppdef{^^9a}
+ \CJK@nameppdef{^^9b}
+ \CJK@nameppdef{^^9c}
+ \CJK@nameppdef{^^9d}
+ \CJK@nameppdef{^^9e}
+ \CJK@nameppdef{^^9f}
+% A0
+ \CJK@namepdef{^^a1}
+ \CJK@namepdef{^^a2}
+ \CJK@namepdef{^^a3}
+ \CJK@namepdef{^^a4}
+ \CJK@namepdef{^^a5}
+ \CJK@namepdef{^^a6}
+ \CJK@namepdef{^^a7}
+ \CJK@namepdef{^^a8}
+ \CJK@namepdef{^^a9}
+ \CJK@namepdef{^^aa}
+ \CJK@namepdef{^^ab}
+ \CJK@namepdef{^^ac}
+ \CJK@namepdef{^^ad}
+ \CJK@namepdef{^^ae}
+ \CJK@namepdef{^^af}
+ \CJK@namepdef{^^b0}
+ \CJK@namepdef{^^b1}
+ \CJK@namepdef{^^b2}
+ \CJK@namepdef{^^b3}
+ \CJK@namepdef{^^b4}
+ \CJK@namepdef{^^b5}
+ \CJK@namepdef{^^b6}
+ \CJK@namepdef{^^b7}
+ \CJK@namepdef{^^b8}
+ \CJK@namepdef{^^b9}
+ \CJK@namepdef{^^ba}
+ \CJK@namepdef{^^bb}
+ \CJK@namepdef{^^bc}
+ \CJK@namepdef{^^bd}
+ \CJK@namepdef{^^be}
+ \CJK@namepdef{^^bf}
+ \CJK@namepdef{^^c0}
+ \CJK@namepdef{^^c1}
+ \CJK@namepdef{^^c2}
+ \CJK@namepdef{^^c3}
+ \CJK@namepdef{^^c4}
+ \CJK@namepdef{^^c5}
+ \CJK@namepdef{^^c6}
+ \CJK@namepdef{^^c7}
+ \CJK@namepdef{^^c8}
+ \CJK@namepdef{^^c9}
+ \CJK@namepdef{^^ca}
+ \CJK@namepdef{^^cb}
+ \CJK@namepdef{^^cc}
+ \CJK@namepdef{^^cd}
+ \CJK@namepdef{^^ce}
+ \CJK@namepdef{^^cf}
+ \CJK@namepdef{^^d0}
+ \CJK@namepdef{^^d1}
+ \CJK@namepdef{^^d2}
+ \CJK@namepdef{^^d3}
+ \CJK@namepdef{^^d4}
+ \CJK@namepdef{^^d5}
+ \CJK@namepdef{^^d6}
+ \CJK@namepdef{^^d7}
+ \CJK@namepdef{^^d8}
+ \CJK@namepdef{^^d9}
+ \CJK@namepdef{^^da}
+ \CJK@namepdef{^^db}
+ \CJK@namepdef{^^dc}
+ \CJK@namepdef{^^dd}
+ \CJK@namepdef{^^de}
+ \CJK@namepdef{^^df}
+
+ \CJK@nameppdef{^^e0}
+ \CJK@nameppdef{^^e1}
+ \CJK@nameppdef{^^e2}
+ \CJK@nameppdef{^^e3}
+ \CJK@nameppdef{^^e4}
+ \CJK@nameppdef{^^e5}
+ \CJK@nameppdef{^^e6}
+ \CJK@nameppdef{^^e7}
+ \CJK@nameppdef{^^e8}
+ \CJK@nameppdef{^^e9}
+ \CJK@nameppdef{^^ea}
+ \CJK@nameppdef{^^eb}
+ \CJK@nameppdef{^^ec}
+ \CJK@nameppdef{^^ed}
+ \CJK@nameppdef{^^ee}
+ \CJK@nameppdef{^^ef}
+ \CJK@nameppdef{^^f0}
+ \CJK@nameppdef{^^f1}
+ \CJK@nameppdef{^^f2}
+ \CJK@nameppdef{^^f3}
+ \CJK@nameppdef{^^f4}
+ \CJK@nameppdef{^^f5}
+ \CJK@nameppdef{^^f6}
+ \CJK@nameppdef{^^f7}
+ \CJK@nameppdef{^^f8}
+ \CJK@nameppdef{^^f9}
+ \CJK@nameppdef{^^fa}
+ \CJK@nameppdef{^^fb}
+ \CJK@nameppdef{^^fc}
+ \CJK@nameppdef{^^fd}
+ \CJK@nameppdef{^^fe}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.cap b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.cap
new file mode 100644
index 0000000000..3b62a9802b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.cap
@@ -0,0 +1,84 @@
+% This is the file SJIS.cap of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{SJIS.cap}[\filedate\space\fileversion]
+
+
+% Japanese captions
+%
+% character set: JIS X 0208:1997 (or JIS X 0208-1990)
+% encoding: SJIS
+
+\newif\ifheisei
+\let\ifheisei=\iffalse
+\def\heisei{\let\ifheisei=\iftrue}
+
+\renewcommand\contentsname{–ÚŽŸ}
+
+\renewcommand\listfigurename{\CJKchar{"090}{"07D}–ÚŽŸ}
+% \renewcommand\listfigurename{\CJKchar{"090}{"07D}ˆê——}
+
+\renewcommand\listtablename{\CJKchar{"095}{"05C}–ÚŽŸ}
+% \renewcommand\listtablename{\CJKchar{"095}{"05C}ˆê——}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{ŽQl•¶Œ£}
+ }
+ {\renewcommand\bibname{ŠÖ˜A‘Ð}
+% \renewcommand\bibname{ŽQl•¶Œ£}
+ }
+
+\renewcommand\indexname{õˆø}
+
+\renewcommand\figurename{\CJKchar{"090}{"07D}}
+\renewcommand\tablename{\CJKchar{"095}{"05C}}
+
+\newcommand\prepartname{‘æ}
+\newcommand\postpartname{•”}
+\renewcommand\partformat{\prepartname\CJKnumber{\value{part}}\postpartname}
+
+% \renewcommand{\appendixname}{•˜^}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{—vŽ|}}{}
+
+\renewcommand\today{{\ifheisei\count0=\year\else\count0=\year
+ \advance\count0 -1988 •½¬\,\fi
+ \ifnum\count0=1 Œ³\else\number\count0\fi
+ \,”N\hspace{.5em}\nobreak\number\month
+ \,ŒŽ\hspace{.5em}\nobreak\number\day\,“ú}}
+\CJK@ifundefined\CJKnumber
+ {\def\CJKnumber#1{\ifcase #1\or
+ ˆê\or “ñ\or ŽO\or Žl\or ŒÜ\or
+ ˜Z\or Žµ\or ”ª\or ‹ã\or\CJKchar{"08F}{"05C}\fi}}{}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: sjis
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.chr b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.chr
new file mode 100644
index 0000000000..cb17c2ff0c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.chr
@@ -0,0 +1,260 @@
+% This is the file SJIS.chr of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{SJIS.chr}[\filedate\space\fileversion]
+
+
+% define macros for handling SJIS encoded CJK fonts and characters.
+
+% two byte encoded characters.
+
+\gdef\CJK@SJISChr{
+ \CJK@global\chardef\CJK@gap "07F\relax
+
+ \CJK@global\def\CJK@char##1##2##3{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##3\relax
+ \ifnum ##3 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \fi
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% the same, but the plane crosses the font file boundary.
+
+ \CJK@global\def\CJK@charx##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \@tempcntb 256\relax
+ \ifnum ##4 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \advance\@tempcntb \@ne
+ \fi
+ \advance\@tempcnta ##3\relax
+ \advance\@tempcntb -##3\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##4 < \@temp
+ \edef\CJK@plane{##1}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##2}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% for punctuation.
+
+ \CJK@global\def\CJK@punctchar##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##4}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{SJIS}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \ifnum ##4 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \fi
+ \advance\@tempcnta ##3\relax
+ \edef\CJK@plane{##2}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{SJIS}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}
+
+ \CJK@global\def\CJK@punctcharx##1##2##3##4##5{
+ {\ifnum ##5 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##5 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##5}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{SJIS}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##5\relax
+ \@tempcntb 256\relax
+ \ifnum ##5 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \advance\@tempcntb \@ne
+ \fi
+ \advance\@tempcnta ##4\relax
+ \advance\@tempcntb -##4\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##5 < \@temp
+ \edef\CJK@plane{##2}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##3}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{SJIS}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}
+
+
+% one byte encoded characters.
+
+ \CJK@global\def\CJK@sjischar##1##2##3{
+ \ifCJK@hwkatakana@
+ {\CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@altenc}{}{##1}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \edef\CJK@plane{}
+ \usefont{\CJK@altenc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\number "0##1/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{"0##1}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@altenc}{}{##1}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi}
+ \else
+ \csname CJK@##2\endcsname{"0##3}
+ \fi}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.cpx
new file mode 100644
index 0000000000..e68f47b273
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.cpx
@@ -0,0 +1,81 @@
+% This is the file SJIS.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{SJIS.cpx}[\filedate\space\fileversion]
+
+
+% Japanese captions
+%
+% character set: JIS X 0208:1997 (or JIS X 0208-1990)
+% encoding: SJIS
+%
+% preprocessed
+
+\newif\ifheisei
+\let\ifheisei=\iffalse
+\def\heisei{\let\ifheisei=\iftrue}
+
+\renewcommand\contentsname{–218Ž159}
+
+\renewcommand\listfigurename{125–218Ž159}
+% \renewcommand\listfigurename{125ˆ234—151}
+
+\renewcommand\listtablename{•92–218Ž159}
+% \renewcommand\listtablename{•92ˆ234—151}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{Ž81108•182Œ163}
+ }
+ {\renewcommand\bibname{Š214˜65145208}
+% \renewcommand\bibname{Ž81108•182Œ163}
+ }
+
+\renewcommand\indexname{245ˆ248}
+
+\renewcommand\figurename{125}
+\renewcommand\tablename{•92}
+
+\newcommand\prepartname{‘230}
+\newcommand\postpartname{•148}
+\renewcommand\partformat{\prepartname\CJKnumber{\value{part}}\postpartname}
+
+% \renewcommand{\appendixname}{•141˜94}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{—118Ž124}}{}
+
+\renewcommand\today{{\ifheisei\count0=\year\else\count0=\year
+ \advance\count0 -1988 •189172\,\fi
+ \ifnum\count0=1 Œ179\else\number\count0\fi
+ \,”78\hspace{.5em}\nobreak\number\month
+ \,Œ142\hspace{.5em}\nobreak\number\day\,“250}}
+\CJK@ifundefined\CJKnumber
+ {\def\CJKnumber#1{%
+ \ifcase #1\or
+ ˆ234\or “241\or Ž79\or Ž108\or Œ220\or
+ ˜90\or Ž181\or ”170\or ‹227\or 92\fi}}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.enc b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.enc
new file mode 100644
index 0000000000..e20ffa821b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJIS.enc
@@ -0,0 +1,199 @@
+% This is the file SJIS.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{SJIS.enc}[\filedate\space\fileversion]
+
+
+% SJIS encoding (JIS X 0208:1997):
+% it uses a one byte encoding (for half-width Katakana) from 0xA1 to
+% 0xDF, and a two byte encoding for the remaining coding space (kanji,
+% kana, and symbols).
+% The first byte of the two byte encoding is in the ranges 0x81-0x9F and
+% 0xE0-0xEF; the second byte is in the range 0x40 - 0xFC with a gap at
+% 0x7F.
+
+\global\@namedef{CJK@SJISEncoding}{
+ \CJK@loadChr{SJIS}
+
+ \CJK@namegdef{^^81}##1{\CJK@disableMakeUppercase
+ \CJK@punctchar {81}{01}{-64}{##1}}
+ \CJK@namegdef{^^82}##1{\CJK@disableMakeUppercase
+ \CJK@punctcharx{82}{01}{02}{124}{##1}}
+ \CJK@namegdef{^^83}##1{\CJK@disableMakeUppercase
+ \CJK@punctcharx{83}{02}{03}{ 56}{##1}}
+ \CJK@namegdef{^^84}##1{\CJK@disableMakeUppercase
+ \CJK@char {03}{-12}{##1}}
+ \CJK@namegdef{^^85}##1{\CJK@disableMakeUppercase
+ \CJK@charx{03}{04}{176}{##1}}
+ \CJK@namegdef{^^86}##1{\CJK@disableMakeUppercase
+ \CJK@charx{04}{05}{108}{##1}}
+ \CJK@namegdef{^^87}##1{\CJK@disableMakeUppercase
+ \CJK@charx{05}{06}{ 40}{##1}}
+ \CJK@namegdef{^^88}##1{\CJK@disableMakeUppercase
+ \CJK@char {06}{-28}{##1}}
+ \CJK@namegdef{^^89}##1{\CJK@disableMakeUppercase
+ \CJK@charx{06}{07}{160}{##1}}
+ \CJK@namegdef{^^8a}##1{\CJK@disableMakeUppercase
+ \CJK@charx{07}{08}{ 92}{##1}}
+ \CJK@namegdef{^^8b}##1{\CJK@disableMakeUppercase
+ \CJK@charx{08}{09}{ 24}{##1}}
+ \CJK@namegdef{^^8c}##1{\CJK@disableMakeUppercase
+ \CJK@char {09}{-44}{##1}}
+ \CJK@namegdef{^^8d}##1{\CJK@disableMakeUppercase
+ \CJK@charx{09}{10}{144}{##1}}
+ \CJK@namegdef{^^8e}##1{\CJK@disableMakeUppercase
+ \CJK@charx{10}{11}{ 76}{##1}}
+ \CJK@namegdef{^^8f}##1{\CJK@disableMakeUppercase
+ \CJK@charx{11}{12}{ 8}{##1}}
+ \CJK@namegdef{^^90}##1{\CJK@disableMakeUppercase
+ \CJK@char {12}{-60}{##1}}
+ \CJK@namegdef{^^91}##1{\CJK@disableMakeUppercase
+ \CJK@charx{12}{13}{128}{##1}}
+ \CJK@namegdef{^^92}##1{\CJK@disableMakeUppercase
+ \CJK@charx{13}{14}{ 60}{##1}}
+ \CJK@namegdef{^^93}##1{\CJK@disableMakeUppercase
+ \CJK@char {14}{ -8}{##1}}
+ \CJK@namegdef{^^94}##1{\CJK@disableMakeUppercase
+ \CJK@charx{14}{15}{180}{##1}}
+ \CJK@namegdef{^^95}##1{\CJK@disableMakeUppercase
+ \CJK@charx{15}{16}{112}{##1}}
+ \CJK@namegdef{^^96}##1{\CJK@disableMakeUppercase
+ \CJK@charx{16}{17}{ 44}{##1}}
+ \CJK@namegdef{^^97}##1{\CJK@disableMakeUppercase
+ \CJK@char {17}{-24}{##1}}
+ \CJK@namegdef{^^98}##1{\CJK@disableMakeUppercase
+ \CJK@charx{17}{18}{164}{##1}}
+ \CJK@namegdef{^^99}##1{\CJK@disableMakeUppercase
+ \CJK@charx{18}{19}{ 96}{##1}}
+ \CJK@namegdef{^^9a}##1{\CJK@disableMakeUppercase
+ \CJK@charx{19}{20}{ 28}{##1}}
+ \CJK@namegdef{^^9b}##1{\CJK@disableMakeUppercase
+ \CJK@char {20}{-40}{##1}}
+ \CJK@namegdef{^^9c}##1{\CJK@disableMakeUppercase
+ \CJK@charx{20}{21}{148}{##1}}
+ \CJK@namegdef{^^9d}##1{\CJK@disableMakeUppercase
+ \CJK@charx{21}{22}{ 80}{##1}}
+ \CJK@namegdef{^^9e}##1{\CJK@disableMakeUppercase
+ \CJK@charx{22}{23}{ 12}{##1}}
+ \CJK@namegdef{^^9f}##1{\CJK@disableMakeUppercase
+ \CJK@char {23}{-56}{##1}}
+ \CJK@namegdef{^^a1}{\@empty\CJK@sjischar{A1}{129}{42}}
+ \CJK@namegdef{^^a2}{\@empty\CJK@sjischar{A2}{129}{75}}
+ \CJK@namegdef{^^a3}{\@empty\CJK@sjischar{A3}{129}{76}}
+ \CJK@namegdef{^^a4}{\@empty\CJK@sjischar{A4}{129}{41}}
+ \CJK@namegdef{^^a5}{\@empty\CJK@sjischar{A5}{129}{45}}
+ \CJK@namegdef{^^a6}{\@empty\CJK@sjischar{A6}{131}{92}}
+ \CJK@namegdef{^^a7}{\@empty\CJK@sjischar{A7}{131}{40}}
+ \CJK@namegdef{^^a8}{\@empty\CJK@sjischar{A8}{131}{42}}
+ \CJK@namegdef{^^a9}{\@empty\CJK@sjischar{A9}{131}{44}}
+ \CJK@namegdef{^^aa}{\@empty\CJK@sjischar{AA}{131}{46}}
+ \CJK@namegdef{^^ab}{\@empty\CJK@sjischar{AB}{131}{48}}
+ \CJK@namegdef{^^ac}{\@empty\CJK@sjischar{AC}{131}{83}}
+ \CJK@namegdef{^^ad}{\@empty\CJK@sjischar{AD}{131}{85}}
+ \CJK@namegdef{^^ae}{\@empty\CJK@sjischar{AE}{131}{87}}
+ \CJK@namegdef{^^af}{\@empty\CJK@sjischar{AF}{131}{62}}
+ \CJK@namegdef{^^b0}{\@empty\CJK@sjischar{B0}{129}{5B}}
+ \CJK@namegdef{^^b1}{\@empty\CJK@sjischar{B1}{131}{41}}
+ \CJK@namegdef{^^b2}{\@empty\CJK@sjischar{B2}{131}{43}}
+ \CJK@namegdef{^^b3}{\@empty\CJK@sjischar{B3}{131}{45}}
+ \CJK@namegdef{^^b4}{\@empty\CJK@sjischar{B4}{131}{47}}
+ \CJK@namegdef{^^b5}{\@empty\CJK@sjischar{B5}{131}{49}}
+ \CJK@namegdef{^^b6}{\@empty\CJK@sjischar{B6}{131}{4A}}
+ \CJK@namegdef{^^b7}{\@empty\CJK@sjischar{B7}{131}{4C}}
+ \CJK@namegdef{^^b8}{\@empty\CJK@sjischar{B8}{131}{4E}}
+ \CJK@namegdef{^^b9}{\@empty\CJK@sjischar{B9}{131}{50}}
+ \CJK@namegdef{^^ba}{\@empty\CJK@sjischar{BA}{131}{52}}
+ \CJK@namegdef{^^bb}{\@empty\CJK@sjischar{BB}{131}{54}}
+ \CJK@namegdef{^^bc}{\@empty\CJK@sjischar{BC}{131}{56}}
+ \CJK@namegdef{^^bd}{\@empty\CJK@sjischar{BD}{131}{58}}
+ \CJK@namegdef{^^be}{\@empty\CJK@sjischar{BE}{131}{5A}}
+ \CJK@namegdef{^^bf}{\@empty\CJK@sjischar{BF}{131}{5C}}
+ \CJK@namegdef{^^c0}{\@empty\CJK@sjischar{C0}{131}{5E}}
+ \CJK@namegdef{^^c1}{\@empty\CJK@sjischar{C1}{131}{60}}
+ \CJK@namegdef{^^c2}{\@empty\CJK@sjischar{C2}{131}{63}}
+ \CJK@namegdef{^^c3}{\@empty\CJK@sjischar{C3}{131}{65}}
+ \CJK@namegdef{^^c4}{\@empty\CJK@sjischar{C4}{131}{67}}
+ \CJK@namegdef{^^c5}{\@empty\CJK@sjischar{C5}{131}{69}}
+ \CJK@namegdef{^^c6}{\@empty\CJK@sjischar{C6}{131}{6A}}
+ \CJK@namegdef{^^c7}{\@empty\CJK@sjischar{C7}{131}{6B}}
+ \CJK@namegdef{^^c8}{\@empty\CJK@sjischar{C8}{131}{6C}}
+ \CJK@namegdef{^^c9}{\@empty\CJK@sjischar{C9}{131}{6D}}
+ \CJK@namegdef{^^ca}{\@empty\CJK@sjischar{CA}{131}{6E}}
+ \CJK@namegdef{^^cb}{\@empty\CJK@sjischar{CB}{131}{71}}
+ \CJK@namegdef{^^cc}{\@empty\CJK@sjischar{CC}{131}{74}}
+ \CJK@namegdef{^^cd}{\@empty\CJK@sjischar{CD}{131}{77}}
+ \CJK@namegdef{^^ce}{\@empty\CJK@sjischar{CE}{131}{7A}}
+ \CJK@namegdef{^^cf}{\@empty\CJK@sjischar{CF}{131}{7D}}
+ \CJK@namegdef{^^d0}{\@empty\CJK@sjischar{D0}{131}{7E}}
+ \CJK@namegdef{^^d1}{\@empty\CJK@sjischar{D1}{131}{80}}
+ \CJK@namegdef{^^d2}{\@empty\CJK@sjischar{D2}{131}{81}}
+ \CJK@namegdef{^^d3}{\@empty\CJK@sjischar{D3}{131}{82}}
+ \CJK@namegdef{^^d4}{\@empty\CJK@sjischar{D4}{131}{84}}
+ \CJK@namegdef{^^d5}{\@empty\CJK@sjischar{D5}{131}{86}}
+ \CJK@namegdef{^^d6}{\@empty\CJK@sjischar{D6}{131}{88}}
+ \CJK@namegdef{^^d7}{\@empty\CJK@sjischar{D7}{131}{89}}
+ \CJK@namegdef{^^d8}{\@empty\CJK@sjischar{D8}{131}{8A}}
+ \CJK@namegdef{^^d9}{\@empty\CJK@sjischar{D9}{131}{8B}}
+ \CJK@namegdef{^^da}{\@empty\CJK@sjischar{DA}{131}{8C}}
+ \CJK@namegdef{^^db}{\@empty\CJK@sjischar{DB}{131}{8D}}
+ \CJK@namegdef{^^dc}{\@empty\CJK@sjischar{DC}{131}{8F}}
+ \CJK@namegdef{^^dd}{\@empty\CJK@sjischar{DD}{131}{93}}
+ \CJK@namegdef{^^de}{\@empty\CJK@sjischar{DE}{129}{4A}}
+ \CJK@namegdef{^^df}{\@empty\CJK@sjischar{DF}{129}{4B}}
+ \CJK@namegdef{^^e0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{23}{24}{132}{##1}}
+ \CJK@namegdef{^^e1}##1{\CJK@disableMakeUppercase
+ \CJK@charx{24}{25}{ 64}{##1}}
+ \CJK@namegdef{^^e2}##1{\CJK@disableMakeUppercase
+ \CJK@char {25}{ -4}{##1}}
+ \CJK@namegdef{^^e3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{25}{26}{184}{##1}}
+ \CJK@namegdef{^^e4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{26}{27}{116}{##1}}
+ \CJK@namegdef{^^e5}##1{\CJK@disableMakeUppercase
+ \CJK@charx{27}{28}{ 48}{##1}}
+ \CJK@namegdef{^^e6}##1{\CJK@disableMakeUppercase
+ \CJK@char {28}{-20}{##1}}
+ \CJK@namegdef{^^e7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{28}{29}{168}{##1}}
+ \CJK@namegdef{^^e8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{29}{30}{100}{##1}}
+ \CJK@namegdef{^^e9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{30}{31}{ 32}{##1}}
+ \CJK@namegdef{^^ea}##1{\CJK@disableMakeUppercase
+ \CJK@char {31}{-36}{##1}}
+ \CJK@namegdef{^^eb}##1{\CJK@disableMakeUppercase
+ \CJK@charx{31}{32}{152}{##1}}
+ \CJK@namegdef{^^ec}##1{\CJK@disableMakeUppercase
+ \CJK@charx{32}{33}{ 84}{##1}}
+ \CJK@namegdef{^^ed}##1{\CJK@disableMakeUppercase
+ \CJK@charx{33}{34}{ 16}{##1}}
+ \CJK@namegdef{^^ee}##1{\CJK@disableMakeUppercase
+ \CJK@char {34}{-52}{##1}}
+ \CJK@namegdef{^^ef}##1{\CJK@disableMakeUppercase
+ \CJK@charx{34}{35}{136}{##1}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJISdnp.chr b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJISdnp.chr
new file mode 100644
index 0000000000..9fb710420f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJISdnp.chr
@@ -0,0 +1,253 @@
+% This is the file SJISdnp.chr of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{SJISdnp.chr}[\filedate\space\fileversion]
+
+
+% define macros for handling SJIS encoded DNP fonts and characters.
+
+% two byte encoded characters.
+
+\gdef\CJK@SJISdnpChr{
+ \CJK@global\chardef\CJK@gap "07F\relax
+
+ \CJK@global\def\CJK@char##1##2##3{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##3\relax
+ \ifnum ##3 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \fi
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% the same, but the plane crosses the font file boundary.
+
+ \CJK@global\def\CJK@charx##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \@tempcntb 256\relax
+ \ifnum ##4 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \advance\@tempcntb \@ne
+ \fi
+ \advance\@tempcnta ##3\relax
+ \advance\@tempcntb -##3\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##4 < \@temp
+ \edef\CJK@plane{##1}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##2}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% to access two subfonts within one first byte value
+
+ \CJK@global\def\CJK@sjischarx##1##2##3##4##5{
+ {\ifnum ##5 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##5 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##5\relax
+ \ifnum ##5 < "09F\relax
+ \ifnum ##5 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \fi
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \else
+ \advance\@tempcnta ##4\relax
+ \edef\CJK@plane{##3}
+ \fi
+
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% the same for punctuation.
+
+ \CJK@global\def\CJK@sjispunctcharx##1##2##3##4##5##6{
+ {\ifnum ##6 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##6 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##6}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{SJIS}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##6\relax
+ \ifnum ##6 < "09F\relax
+ \ifnum ##6 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \fi
+ \advance\@tempcnta ##3\relax
+ \edef\CJK@plane{##2}
+ \else
+ \advance\@tempcnta ##5\relax
+ \edef\CJK@plane{##4}
+ \fi
+
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{SJIS}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}
+
+% one byte encoded characters.
+
+ \CJK@global\def\CJK@sjischar##1##2##3{
+ \ifCJK@hwkatakana@
+ {\CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@altenc}{}{##1}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \def\CJK@plane{}
+ \usefont{\CJK@altenc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\number "0##1/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{"0##1}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@altenc}{}{##1}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi}
+ \else
+ \csname CJK@##2\endcsname{"0##3}
+ \fi}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJISdnp.enc b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJISdnp.enc
new file mode 100644
index 0000000000..0aeaf13f71
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/SJISdnp.enc
@@ -0,0 +1,192 @@
+% This is the file SJISdnp.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{SJISdnp.enc}[\filedate\space\fileversion]
+
+
+% SJIS encoding (JIS X 0208:1997) for DNP fonts:
+% it uses a one byte encoding (for half-width Katakana) from 0xA1 to
+% 0xDF, and a two byte encoding for the remaining coding space (kanji,
+% kana, and symbols).
+% The first byte of the two byte encoding is in the ranges 0x81-0x9F and
+% 0xE0-0xEF; the second byte is in the range 0x40 - 0xFC with a gap at
+% 0x7F.
+
+\global\@namedef{CJK@SJISdnpEncoding}{
+ \CJK@loadChr{SJISdnp}
+
+ \CJK@namegdef{^^81}##1{\CJK@disableMakeUppercase
+ \CJK@sjispunctcharx{81}{sy}{-63}{sy}{-58}{##1}}
+ \CJK@namegdef{^^82}##1{\CJK@disableMakeUppercase
+ \CJK@sjispunctcharx{82}{roma}{-31}{hira}{-158}{##1}}
+ \CJK@namegdef{^^83}##1{\CJK@disableMakeUppercase
+ \CJK@sjispunctcharx{83}{kata}{-63}{greek}{-158}{##1}}
+ \CJK@namegdef{^^84}##1{\CJK@disableMakeUppercase
+ \CJK@sjischarx{russian}{-63}{keisen}{-158}{##1}}
+ \CJK@namegdef{^^85}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^86}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^87}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^88}##1{\CJK@disableMakeUppercase
+ \CJK@sjischarx{}{0}{ka}{-159}{##1}}
+ \CJK@namegdef{^^89}##1{\CJK@disableMakeUppercase
+ \CJK@charx{ka}{kb}{30}{##1}}
+ \CJK@namegdef{^^8a}##1{\CJK@disableMakeUppercase
+ \CJK@char {kb}{-38}{##1}}
+ \CJK@namegdef{^^8b}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kb}{kc}{150}{##1}}
+ \CJK@namegdef{^^8c}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kc}{kd}{ 82}{##1}}
+ \CJK@namegdef{^^8d}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kd}{ke}{ 14}{##1}}
+ \CJK@namegdef{^^8e}##1{\CJK@disableMakeUppercase
+ \CJK@char {ke}{-54}{##1}}
+ \CJK@namegdef{^^8f}##1{\CJK@disableMakeUppercase
+ \CJK@charx{ke}{kf}{134}{##1}}
+ \CJK@namegdef{^^90}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kf}{kg}{ 66}{##1}}
+ \CJK@namegdef{^^91}##1{\CJK@disableMakeUppercase
+ \CJK@char {kg}{ -2}{##1}}
+ \CJK@namegdef{^^92}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kg}{kh}{186}{##1}}
+ \CJK@namegdef{^^93}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kh}{ki}{118}{##1}}
+ \CJK@namegdef{^^94}##1{\CJK@disableMakeUppercase
+ \CJK@charx{ki}{kj}{ 50}{##1}}
+ \CJK@namegdef{^^95}##1{\CJK@disableMakeUppercase
+ \CJK@char {kj}{-18}{##1}}
+ \CJK@namegdef{^^96}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kj}{kk}{170}{##1}}
+ \CJK@namegdef{^^97}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kk}{kl}{102}{##1}}
+ \CJK@namegdef{^^98}##1{\CJK@disableMakeUppercase
+ \CJK@sjischarx{kl}{34}{km}{-159}{##1}}
+ \CJK@namegdef{^^99}##1{\CJK@disableMakeUppercase
+ \CJK@charx{km}{kn}{30}{##1}}
+ \CJK@namegdef{^^9a}##1{\CJK@disableMakeUppercase
+ \CJK@char {kn}{-38}{##1}}
+ \CJK@namegdef{^^9b}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kn}{ko}{150}{##1}}
+ \CJK@namegdef{^^9c}##1{\CJK@disableMakeUppercase
+ \CJK@charx{ko}{kp}{ 82}{##1}}
+ \CJK@namegdef{^^9d}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kp}{kq}{ 14}{##1}}
+ \CJK@namegdef{^^9e}##1{\CJK@disableMakeUppercase
+ \CJK@char {kq}{-54}{##1}}
+ \CJK@namegdef{^^9f}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kq}{kr}{134}{##1}}
+ \CJK@namegdef{^^a1}{\@empty\CJK@sjischar{A1}{129}{42}}
+ \CJK@namegdef{^^a2}{\@empty\CJK@sjischar{A2}{129}{75}}
+ \CJK@namegdef{^^a3}{\@empty\CJK@sjischar{A3}{129}{76}}
+ \CJK@namegdef{^^a4}{\@empty\CJK@sjischar{A4}{129}{41}}
+ \CJK@namegdef{^^a5}{\@empty\CJK@sjischar{A5}{129}{45}}
+ \CJK@namegdef{^^a6}{\@empty\CJK@sjischar{A6}{131}{92}}
+ \CJK@namegdef{^^a7}{\@empty\CJK@sjischar{A7}{131}{40}}
+ \CJK@namegdef{^^a8}{\@empty\CJK@sjischar{A8}{131}{42}}
+ \CJK@namegdef{^^a9}{\@empty\CJK@sjischar{A9}{131}{44}}
+ \CJK@namegdef{^^aa}{\@empty\CJK@sjischar{AA}{131}{46}}
+ \CJK@namegdef{^^ab}{\@empty\CJK@sjischar{AB}{131}{48}}
+ \CJK@namegdef{^^ac}{\@empty\CJK@sjischar{AC}{131}{83}}
+ \CJK@namegdef{^^ad}{\@empty\CJK@sjischar{AD}{131}{85}}
+ \CJK@namegdef{^^ae}{\@empty\CJK@sjischar{AE}{131}{87}}
+ \CJK@namegdef{^^af}{\@empty\CJK@sjischar{AF}{131}{62}}
+ \CJK@namegdef{^^b0}{\@empty\CJK@sjischar{B0}{129}{5B}}
+ \CJK@namegdef{^^b1}{\@empty\CJK@sjischar{B1}{131}{41}}
+ \CJK@namegdef{^^b2}{\@empty\CJK@sjischar{B2}{131}{43}}
+ \CJK@namegdef{^^b3}{\@empty\CJK@sjischar{B3}{131}{45}}
+ \CJK@namegdef{^^b4}{\@empty\CJK@sjischar{B4}{131}{47}}
+ \CJK@namegdef{^^b5}{\@empty\CJK@sjischar{B5}{131}{49}}
+ \CJK@namegdef{^^b6}{\@empty\CJK@sjischar{B6}{131}{4A}}
+ \CJK@namegdef{^^b7}{\@empty\CJK@sjischar{B7}{131}{4C}}
+ \CJK@namegdef{^^b8}{\@empty\CJK@sjischar{B8}{131}{4E}}
+ \CJK@namegdef{^^b9}{\@empty\CJK@sjischar{B9}{131}{50}}
+ \CJK@namegdef{^^ba}{\@empty\CJK@sjischar{BA}{131}{52}}
+ \CJK@namegdef{^^bb}{\@empty\CJK@sjischar{BB}{131}{54}}
+ \CJK@namegdef{^^bc}{\@empty\CJK@sjischar{BC}{131}{56}}
+ \CJK@namegdef{^^bd}{\@empty\CJK@sjischar{BD}{131}{58}}
+ \CJK@namegdef{^^be}{\@empty\CJK@sjischar{BE}{131}{5A}}
+ \CJK@namegdef{^^bf}{\@empty\CJK@sjischar{BF}{131}{5C}}
+ \CJK@namegdef{^^c0}{\@empty\CJK@sjischar{C0}{131}{5E}}
+ \CJK@namegdef{^^c1}{\@empty\CJK@sjischar{C1}{131}{60}}
+ \CJK@namegdef{^^c2}{\@empty\CJK@sjischar{C2}{131}{63}}
+ \CJK@namegdef{^^c3}{\@empty\CJK@sjischar{C3}{131}{65}}
+ \CJK@namegdef{^^c4}{\@empty\CJK@sjischar{C4}{131}{67}}
+ \CJK@namegdef{^^c5}{\@empty\CJK@sjischar{C5}{131}{69}}
+ \CJK@namegdef{^^c6}{\@empty\CJK@sjischar{C6}{131}{6A}}
+ \CJK@namegdef{^^c7}{\@empty\CJK@sjischar{C7}{131}{6B}}
+ \CJK@namegdef{^^c8}{\@empty\CJK@sjischar{C8}{131}{6C}}
+ \CJK@namegdef{^^c9}{\@empty\CJK@sjischar{C9}{131}{6D}}
+ \CJK@namegdef{^^ca}{\@empty\CJK@sjischar{CA}{131}{6E}}
+ \CJK@namegdef{^^cb}{\@empty\CJK@sjischar{CB}{131}{71}}
+ \CJK@namegdef{^^cc}{\@empty\CJK@sjischar{CC}{131}{74}}
+ \CJK@namegdef{^^cd}{\@empty\CJK@sjischar{CD}{131}{77}}
+ \CJK@namegdef{^^ce}{\@empty\CJK@sjischar{CE}{131}{7A}}
+ \CJK@namegdef{^^cf}{\@empty\CJK@sjischar{CF}{131}{7D}}
+ \CJK@namegdef{^^d0}{\@empty\CJK@sjischar{D0}{131}{7E}}
+ \CJK@namegdef{^^d1}{\@empty\CJK@sjischar{D1}{131}{80}}
+ \CJK@namegdef{^^d2}{\@empty\CJK@sjischar{D2}{131}{81}}
+ \CJK@namegdef{^^d3}{\@empty\CJK@sjischar{D3}{131}{82}}
+ \CJK@namegdef{^^d4}{\@empty\CJK@sjischar{D4}{131}{84}}
+ \CJK@namegdef{^^d5}{\@empty\CJK@sjischar{D5}{131}{86}}
+ \CJK@namegdef{^^d6}{\@empty\CJK@sjischar{D6}{131}{88}}
+ \CJK@namegdef{^^d7}{\@empty\CJK@sjischar{D7}{131}{89}}
+ \CJK@namegdef{^^d8}{\@empty\CJK@sjischar{D8}{131}{8A}}
+ \CJK@namegdef{^^d9}{\@empty\CJK@sjischar{D9}{131}{8B}}
+ \CJK@namegdef{^^da}{\@empty\CJK@sjischar{DA}{131}{8C}}
+ \CJK@namegdef{^^db}{\@empty\CJK@sjischar{DB}{131}{8D}}
+ \CJK@namegdef{^^dc}{\@empty\CJK@sjischar{DC}{131}{8F}}
+ \CJK@namegdef{^^dd}{\@empty\CJK@sjischar{DD}{131}{93}}
+ \CJK@namegdef{^^de}{\@empty\CJK@sjischar{DE}{129}{4A}}
+ \CJK@namegdef{^^df}{\@empty\CJK@sjischar{DF}{129}{4B}}
+ \CJK@namegdef{^^e0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kr}{ks}{ 66}{##1}}
+ \CJK@namegdef{^^e1}##1{\CJK@disableMakeUppercase
+ \CJK@char {ks}{ -2}{##1}}
+ \CJK@namegdef{^^e2}##1{\CJK@disableMakeUppercase
+ \CJK@charx{ks}{kt}{186}{##1}}
+ \CJK@namegdef{^^e3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kt}{ku}{118}{##1}}
+ \CJK@namegdef{^^e4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{ku}{kv}{ 50}{##1}}
+ \CJK@namegdef{^^e5}##1{\CJK@disableMakeUppercase
+ \CJK@char {kv}{-18}{##1}}
+ \CJK@namegdef{^^e6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kv}{kw}{170}{##1}}
+ \CJK@namegdef{^^e7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kw}{kx}{102}{##1}}
+ \CJK@namegdef{^^e8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{kx}{ky}{ 34}{##1}}
+ \CJK@namegdef{^^e9}##1{\CJK@disableMakeUppercase
+ \CJK@char {ky}{-34}{##1}}
+ \CJK@namegdef{^^ea}##1{\CJK@disableMakeUppercase
+ \CJK@charx{ky}{kz}{154}{##1}}
+ \CJK@namegdef{^^eb}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ec}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ed}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ee}##1{\@empty\CJK@errxx}
+ \CJK@namegdef{^^ef}##1{\@empty\CJK@errxx}
+}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/c49song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/c49song.fd
new file mode 100644
index 0000000000..c24aa0dc81
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/SJIS/c49song.fd
@@ -0,0 +1,25 @@
+% This is the file c49song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c49song.fd}[\filedate\space\fileversion]
+
+
+% Japanese characters
+%
+% character set: one-byte half-width katakana (JIS X 0201-1997)
+% font encoding: eight-bit (as used in SJIS)
+
+\DeclareFontFamily{C49}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C49}{song}{m}{n}{<5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * sokana}{}
+\DeclareFontShape{C49}{song}{bx}{n}{<5><6><7><8><9><10><10.95><12>
+ <14.4><17.28><20.74><24.88> CJK * sokanab}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.bdg b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.bdg
new file mode 100644
index 0000000000..7e1f4988f5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.bdg
@@ -0,0 +1,156 @@
+% This is the file UTF8.bdg of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{UTF8.bdg}[\filedate\space\fileversion]
+
+
+
+% UTF 8 bindings for two-, three-, and four-byte characters. We stop
+% with 0xF4 because there are no valid Unicode characters beyond 0x10FFFF.
+
+\global\@namedef{CJK@UTF8Binding}{
+ \CJK@namedef{^^80}
+ \CJK@namedef{^^81}
+ \CJK@namedef{^^82}
+ \CJK@namedef{^^83}
+ \CJK@namedef{^^84}
+ \CJK@namedef{^^85}
+ \CJK@namedef{^^86}
+ \CJK@namedef{^^87}
+ \CJK@namedef{^^88}
+ \CJK@namedef{^^89}
+ \CJK@namedef{^^8a}
+ \CJK@namedef{^^8b}
+ \CJK@namedef{^^8c}
+ \CJK@namedef{^^8d}
+ \CJK@namedef{^^8e}
+ \CJK@namedef{^^8f}
+ \CJK@namedef{^^90}
+ \CJK@namedef{^^91}
+ \CJK@namedef{^^92}
+ \CJK@namedef{^^93}
+ \CJK@namedef{^^94}
+ \CJK@namedef{^^95}
+ \CJK@namedef{^^96}
+ \CJK@namedef{^^97}
+ \CJK@namedef{^^98}
+ \CJK@namedef{^^99}
+ \CJK@namedef{^^9a}
+ \CJK@namedef{^^9b}
+ \CJK@namedef{^^9c}
+ \CJK@namedef{^^9d}
+ \CJK@namedef{^^9e}
+ \CJK@namedef{^^9f}
+ \CJK@namedef{^^a0}
+ \CJK@namedef{^^a1}
+ \CJK@namedef{^^a2}
+ \CJK@namedef{^^a3}
+ \CJK@namedef{^^a4}
+ \CJK@namedef{^^a5}
+ \CJK@namedef{^^a6}
+ \CJK@namedef{^^a7}
+ \CJK@namedef{^^a8}
+ \CJK@namedef{^^a9}
+ \CJK@namedef{^^aa}
+ \CJK@namedef{^^ab}
+ \CJK@namedef{^^ac}
+ \CJK@namedef{^^ad}
+ \CJK@namedef{^^ae}
+ \CJK@namedef{^^af}
+ \CJK@namedef{^^b0}
+ \CJK@namedef{^^b1}
+ \CJK@namedef{^^b2}
+ \CJK@namedef{^^b3}
+ \CJK@namedef{^^b4}
+ \CJK@namedef{^^b5}
+ \CJK@namedef{^^b6}
+ \CJK@namedef{^^b7}
+ \CJK@namedef{^^b8}
+ \CJK@namedef{^^b9}
+ \CJK@namedef{^^ba}
+ \CJK@namedef{^^bb}
+ \CJK@namedef{^^bc}
+ \CJK@namedef{^^bd}
+ \CJK@namedef{^^be}
+ \CJK@namedef{^^bf}
+
+ \CJK@nameppdef{^^c0}
+ \CJK@nameppdef{^^c1}
+ \CJK@nameppdef{^^c2}
+ \CJK@nameppdef{^^c3}
+ \CJK@nameppdef{^^c4}
+ \CJK@nameppdef{^^c5}
+ \CJK@nameppdef{^^c6}
+ \CJK@nameppdef{^^c7}
+ \CJK@nameppdef{^^c8}
+ \CJK@nameppdef{^^c9}
+ \CJK@nameppdef{^^ca}
+ \CJK@nameppdef{^^cb}
+ \CJK@nameppdef{^^cc}
+ \CJK@nameppdef{^^cd}
+ \CJK@nameppdef{^^ce}
+ \CJK@nameppdef{^^cf}
+ \CJK@nameppdef{^^d0}
+ \CJK@nameppdef{^^d1}
+ \CJK@nameppdef{^^d2}
+ \CJK@nameppdef{^^d3}
+ \CJK@nameppdef{^^d4}
+ \CJK@nameppdef{^^d5}
+ \CJK@nameppdef{^^d6}
+ \CJK@nameppdef{^^d7}
+ \CJK@nameppdef{^^d8}
+ \CJK@nameppdef{^^d9}
+ \CJK@nameppdef{^^da}
+ \CJK@nameppdef{^^db}
+ \CJK@nameppdef{^^dc}
+ \CJK@nameppdef{^^dd}
+ \CJK@nameppdef{^^de}
+ \CJK@nameppdef{^^df}
+
+ \CJK@namepppdef{^^e0}
+ \CJK@namepppdef{^^e1}
+ \CJK@namepppdef{^^e2}
+ \CJK@namepppdef{^^e3}
+ \CJK@namepppdef{^^e4}
+ \CJK@namepppdef{^^e5}
+ \CJK@namepppdef{^^e6}
+ \CJK@namepppdef{^^e7}
+ \CJK@namepppdef{^^e8}
+ \CJK@namepppdef{^^e9}
+ \CJK@namepppdef{^^ea}
+ \CJK@namepppdef{^^eb}
+ \CJK@namepppdef{^^ec}
+ \CJK@namepppdef{^^ed}
+ \CJK@namepppdef{^^ee}
+ \CJK@namepppdef{^^ef}
+
+ \CJK@nameppppdef{^^f0}
+ \CJK@nameppppdef{^^f1}
+ \CJK@nameppppdef{^^f2}
+ \CJK@nameppppdef{^^f3}
+ \CJK@nameppppdef{^^f4}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.chr b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.chr
new file mode 100644
index 0000000000..cdb438141e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.chr
@@ -0,0 +1,276 @@
+% This is the file UTF8.chr of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{UTF8.chr}[\filedate\space\fileversion]
+
+
+% define macros for handling CJK fonts and characters in UTF 8 encoding.
+
+% two bytes per character; covers range 0x80 - 0x7FF.
+
+\CJK@global\@namedef{CJK@UTF8Chr}{
+ \CJK@global\def\CJK@char##1##2##3{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \@tempcnta ##3\relax
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \CJKsymbol{\@tempcnta}
+ \fi
+ \fi}}
+
+% three bytes per character; covers range 0x800 - 0xFFFF.
+
+ \CJK@global\def\CJK@altchar##1##2##3{
+ {\ifnum ##2 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##2 > \CJK@max
+ \CJK@err
+ \else
+ \ifnum ##3 < \CJK@min
+ \CJK@errx
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@errx
+ \else
+ \ifCJK@CJK@
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+ \fi
+
+ \@tempcnta ##1\relax
+ \@tempcntb ##2\relax
+ \divide\@tempcntb 4\relax
+ \advance\@tempcnta \@tempcntb
+ \CJK@numbToHex{\CJK@gtemp}{\@tempcnta}
+ \def\CJK@tempa####1{
+ \lowercase{\edef\CJK@plane{####1}}}
+ \expandafter\CJK@tempa\expandafter{\CJK@gtemp}
+
+ \@tempcnta ##2\relax
+ \multiply\@tempcntb -4\relax
+ \advance\@tempcnta \@tempcntb
+ \multiply\@tempcnta 64\relax
+ \advance\@tempcnta ##3\relax
+ \advance\@tempcnta -128\relax
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \ifCJK@hangul@
+ \discretionary{}{}{}
+ \fi
+ \ifCJK@CJK@
+ \CJK@CJK
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi}}
+
+% four bytes per character; covers range 0x10000 - 0x10FFFF.
+
+ \CJK@global\def\CJK@altxchar##1##2##3##4{
+ {\ifnum ##2 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##2 > \CJK@max
+ \CJK@err
+ \else
+ \ifnum ##3 < \CJK@min
+ \CJK@errx
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@errx
+ \else
+ \ifnum ##3 < \CJK@min
+ \CJK@errxx
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@errxx
+ \else
+ \ifCJK@CJK@
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+ \fi
+
+ \@tempcnta ##1\relax
+ \@tempcntb ##2\relax
+ \multiply\@tempcntb \sixt@@n
+ \advance\@tempcnta \@tempcntb
+ \@tempcntb ##3\relax
+ \divide\@tempcntb 4\relax
+ \advance\@tempcnta \@tempcntb
+ \CJK@numbxToHex{\CJK@gtemp}{\@tempcnta}
+ \def\CJK@tempa####1{
+ \lowercase{\edef\CJK@plane{####1}}}
+ \expandafter\CJK@tempa\expandafter{\CJK@gtemp}
+
+ \@tempcnta ##3\relax
+ \multiply\@tempcntb -4\relax
+ \advance\@tempcnta \@tempcntb
+ \multiply\@tempcnta 64\relax
+ \advance\@tempcnta ##4\relax
+ \advance\@tempcnta -128\relax
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \ifCJK@hangul@
+ \discretionary{}{}{}
+ \fi
+ \ifCJK@CJK@
+ \CJK@CJK
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi}}
+
+% define macro for handling punctuation characters.
+
+ \CJK@global\def\CJK@punctchar##1##2##3##4{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \ifnum ##4 < \CJK@min
+ \CJK@errx
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@errx
+ \else
+ \@tempcnta ##2\relax
+ \@tempcntb ##3\relax
+ \divide\@tempcntb 4\relax
+ \advance\@tempcnta \@tempcntb
+ \CJK@numbToHex{\CJK@gtemp}{\@tempcnta}
+ \def\CJK@tempa####1{
+ \lowercase{\edef\CJK@plane{####1}}}
+ \expandafter\CJK@tempa\expandafter{\CJK@gtemp}
+
+ \@tempcnta ##3\relax
+ \multiply\@tempcntb -4\relax
+ \advance\@tempcnta \@tempcntb
+ \multiply\@tempcnta 64\relax
+ \advance\@tempcnta ##4\relax
+ \advance\@tempcnta -128\relax
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+
+ % we need three braces to make it work with CJKulem.sty
+ {{{\ifCJK@CJK@
+ \expandafter\CJK@testInList
+ \expandafter{\expandafter##1\expandafter}
+ \expandafter{\CJK@plane}
+ \ifCJK@
+ \CJK@numbToHex{\CJK@gtemp}{\@tempcnta}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@@@enc}{\CJK@plane}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@@@enc}{\CJK@plane}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \CJKpunctsymbol{\@tempcnta}
+
+ \CJK@CJK
+ \fi
+ \else
+ \CJKpunctsymbol{\@tempcnta}
+ \fi
+ \ifCJK@hangul@
+ \discretionary{}{}{}
+ \fi
+ }}}
+ \fi
+ \fi
+ \fi
+ \fi}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.enc b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.enc
new file mode 100644
index 0000000000..ff401e7049
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/UTF8.enc
@@ -0,0 +1,140 @@
+% This is the file UTF8.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{UTF8.enc}[\filedate\space\fileversion]
+
+
+% UTF 8 encoding:
+
+\CJK@global\@namedef{CJK@UTF8Encoding}{
+ \CJK@loadChr{UTF8}
+
+ % two-byte characters
+ %
+ % 110xxxxx 10xxxxxx
+ % |
+ %
+ % 1. Byte * 64 -> xxxxx000000
+ % 2. Byte -> 128 + xxxxxx
+ %
+ \CJK@namegdef{^^c0}##1{\@empty\CJK@char{00}{-128}{##1}}
+ \CJK@namegdef{^^c1}##1{\@empty\CJK@char{00}{ -64}{##1}}
+ \CJK@namegdef{^^c2}##1{\@empty\CJK@char{00}{ 0}{##1}}
+ \CJK@namegdef{^^c3}##1{\@empty\CJK@char{00}{ 64}{##1}}
+ \CJK@namegdef{^^c4}##1{\@empty\CJK@char{01}{-128}{##1}}
+ \CJK@namegdef{^^c5}##1{\@empty\CJK@char{01}{ -64}{##1}}
+ \CJK@namegdef{^^c6}##1{\@empty\CJK@char{01}{ 0}{##1}}
+ \CJK@namegdef{^^c7}##1{\@empty\CJK@char{01}{ 64}{##1}}
+ \CJK@namegdef{^^c8}##1{\@empty\CJK@char{02}{-128}{##1}}
+ \CJK@namegdef{^^c9}##1{\@empty\CJK@char{02}{ -64}{##1}}
+ \CJK@namegdef{^^ca}##1{\@empty\CJK@char{02}{ 0}{##1}}
+ \CJK@namegdef{^^cb}##1{\@empty\CJK@char{02}{ 64}{##1}}
+ \CJK@namegdef{^^cc}##1{\@empty\CJK@char{03}{-128}{##1}}
+ \CJK@namegdef{^^cd}##1{\@empty\CJK@char{03}{ -64}{##1}}
+ \CJK@namegdef{^^ce}##1{\@empty\CJK@char{03}{ 0}{##1}}
+ \CJK@namegdef{^^cf}##1{\@empty\CJK@char{03}{ 64}{##1}}
+ \CJK@namegdef{^^d0}##1{\@empty\CJK@char{04}{-128}{##1}}
+ \CJK@namegdef{^^d1}##1{\@empty\CJK@char{04}{ -64}{##1}}
+ \CJK@namegdef{^^d2}##1{\@empty\CJK@char{04}{ 0}{##1}}
+ \CJK@namegdef{^^d3}##1{\@empty\CJK@char{04}{ 64}{##1}}
+ \CJK@namegdef{^^d4}##1{\@empty\CJK@char{05}{-128}{##1}}
+ \CJK@namegdef{^^d5}##1{\@empty\CJK@char{05}{ -64}{##1}}
+ \CJK@namegdef{^^d6}##1{\@empty\CJK@char{05}{ 0}{##1}}
+ \CJK@namegdef{^^d7}##1{\@empty\CJK@char{05}{ 64}{##1}}
+ \CJK@namegdef{^^d8}##1{\@empty\CJK@char{06}{-128}{##1}}
+ \CJK@namegdef{^^d9}##1{\@empty\CJK@char{06}{ -64}{##1}}
+ \CJK@namegdef{^^da}##1{\@empty\CJK@char{06}{ 0}{##1}}
+ \CJK@namegdef{^^db}##1{\@empty\CJK@char{06}{ 64}{##1}}
+ \CJK@namegdef{^^dc}##1{\@empty\CJK@char{07}{-128}{##1}}
+ \CJK@namegdef{^^dd}##1{\@empty\CJK@char{07}{ -64}{##1}}
+ \CJK@namegdef{^^de}##1{\@empty\CJK@char{07}{ 0}{##1}}
+ \CJK@namegdef{^^df}##1{\@empty\CJK@char{07}{ 64}{##1}}
+
+ % if in preprocessed mode, `\@gobble' will be gobbled, and
+ % \CJK@unicodeError becomes active
+
+ % three-byte characters
+ %
+ % 1110xxxx 10xxxxxx 10xxxxxx
+ % |
+ %
+ % 1. Byte * 16 -> xxxx0000
+ % 2. Byte / 4 -> 32 + xxxx
+ %
+ \CJK@namegdef{^^e0}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{-32}{##1}{##2}}
+ \CJK@namegdef{^^e1}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{-16}{##1}{##2}}
+ \CJK@namegdef{^^e2}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{ 0}{##1}{##2}}
+ \CJK@namegdef{^^e3}##1##2{\@gobble\CJK@unicodeError
+ \CJK@punctchar{\CJK@uniPunct}{ 16}{##1}{##2}}
+ \CJK@namegdef{^^e4}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{ 32}{##1}{##2}}
+ \CJK@namegdef{^^e5}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{ 48}{##1}{##2}}
+ \CJK@namegdef{^^e6}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{ 64}{##1}{##2}}
+ \CJK@namegdef{^^e7}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{ 80}{##1}{##2}}
+ \CJK@namegdef{^^e8}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{ 96}{##1}{##2}}
+ \CJK@namegdef{^^e9}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{112}{##1}{##2}}
+ \CJK@namegdef{^^ea}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{128}{##1}{##2}}
+ \CJK@namegdef{^^eb}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{144}{##1}{##2}}
+ \CJK@namegdef{^^ec}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{160}{##1}{##2}}
+ \CJK@namegdef{^^ed}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{176}{##1}{##2}}
+ \CJK@namegdef{^^ee}##1##2{\@gobble\CJK@unicodeError
+ \CJK@altchar{192}{##1}{##2}}
+ \CJK@namegdef{^^ef}##1##2{\@gobble\CJK@unicodeError
+ \CJK@punctchar{\CJK@uniPunct}{208}{##1}{##2}}
+
+ % four-byte characters
+ %
+ % 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ % | |
+ %
+ % 1. Byte * 1024 -> xxx00 00000000
+ % 2. Byte * 16 -> 2048 + xx xxxx0000
+ % 3. Byte / 4 -> 32 + xxxx
+ %
+ \CJK@namegdef{^^f0}##1##2##3{\@gobble\CJK@unicodexError
+ \CJK@altxchar{-2080}{##1}{##2}{##3}}
+ \CJK@namegdef{^^f1}##1##2##3{\@gobble\CJK@unicodexError
+ \CJK@altxchar{-1056}{##1}{##2}{##3}}
+ \CJK@namegdef{^^f2}##1##2##3{\@gobble\CJK@unicodexError
+ \CJK@altxchar{ -32}{##1}{##2}{##3}}
+ \CJK@namegdef{^^f3}##1##2##3{\@gobble\CJK@unicodexError
+ \CJK@altxchar{ 992}{##1}{##2}{##3}}
+ \CJK@namegdef{^^f4}##1##2##3{\@gobble\CJK@unicodexError
+ \CJK@altxchar{ 2016}{##1}{##2}{##3}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bkai.fd b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bkai.fd
new file mode 100644
index 0000000000..a4f0d9a849
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bkai.fd
@@ -0,0 +1,21 @@
+% This is the file c70bkai.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70bkai.fd}[\filedate\space\fileversion]
+
+
+% character set: Big5
+% font encoding: Unicode
+
+\DeclareFontFamily{C70}{bkai}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C70}{bkai}{m}{n}{<-> CJK * bkaiu}{\CJKnormal}
+\DeclareFontShape{C70}{bkai}{bx}{n}{<-> CJKb * bkaiu}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bkai.fdx b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bkai.fdx
new file mode 100644
index 0000000000..8f3919f492
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bkai.fdx
@@ -0,0 +1,325 @@
+% This is the file c70bkai.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by the script makefdx.pl for CJK Version 4.8.5 (16-Oct-2021).
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70bkai.fdx}[\filedate\space\fileversion]
+
+\CJKvdef{fullheight}{1em}
+\CJKvdef{height}{.88em}
+\CJKvdef{offset}{.6em}
+
+% Uncomment if necessary.
+%\CJKvdef{norotate}{}
+\CJKvdef{m/n/00/175}{\def\CJK@plane{v}\selectfont\CJKsymbol{0}}
+\CJKvlet{bx/n/00/175}{m/n/00/175}
+\CJKvdef{m/n/00/183}{\def\CJK@plane{v}\selectfont\CJKsymbol{1}}
+\CJKvlet{bx/n/00/183}{m/n/00/183}
+\CJKvdef{m/n/02/205}{\def\CJK@plane{v}\selectfont\CJKsymbol{2}}
+\CJKvlet{bx/n/02/205}{m/n/02/205}
+\CJKvdef{m/n/ff/8}{\def\CJK@plane{v}\selectfont\CJKsymbol{3}}
+\CJKvlet{bx/n/ff/8}{m/n/ff/8}
+\CJKvdef{m/n/ff/9}{\def\CJK@plane{v}\selectfont\CJKsymbol{4}}
+\CJKvlet{bx/n/ff/9}{m/n/ff/9}
+\CJKvdef{m/n/ff/12}{\def\CJK@plane{v}\selectfont\CJKsymbol{5}}
+\CJKvlet{bx/n/ff/12}{m/n/ff/12}
+\CJKvdef{m/n/ff/14}{\def\CJK@plane{v}\selectfont\CJKsymbol{6}}
+\CJKvlet{bx/n/ff/14}{m/n/ff/14}
+\CJKvdef{m/n/ff/59}{\def\CJK@plane{v}\selectfont\CJKsymbol{7}}
+\CJKvlet{bx/n/ff/59}{m/n/ff/59}
+\CJKvdef{m/n/ff/61}{\def\CJK@plane{v}\selectfont\CJKsymbol{8}}
+\CJKvlet{bx/n/ff/61}{m/n/ff/61}
+\CJKvdef{m/n/ff/63}{\def\CJK@plane{v}\selectfont\CJKsymbol{9}}
+\CJKvlet{bx/n/ff/63}{m/n/ff/63}
+\CJKvdef{m/n/ff/91}{\def\CJK@plane{v}\selectfont\CJKsymbol{10}}
+\CJKvlet{bx/n/ff/91}{m/n/ff/91}
+\CJKvdef{m/n/ff/93}{\def\CJK@plane{v}\selectfont\CJKsymbol{11}}
+\CJKvlet{bx/n/ff/93}{m/n/ff/93}
+\CJKvdef{m/n/ff/94}{\def\CJK@plane{v}\selectfont\CJKsymbol{12}}
+\CJKvlet{bx/n/ff/94}{m/n/ff/94}
+\CJKvdef{m/n/20/19}{\def\CJK@plane{v}\selectfont\CJKsymbol{13}}
+\CJKvlet{bx/n/20/19}{m/n/20/19}
+\CJKvdef{m/n/20/20}{\def\CJK@plane{v}\selectfont\CJKsymbol{14}}
+\CJKvlet{bx/n/20/20}{m/n/20/20}
+\CJKvdef{m/n/20/37}{\def\CJK@plane{v}\selectfont\CJKsymbol{15}}
+\CJKvlet{bx/n/20/37}{m/n/20/37}
+\CJKvdef{m/n/20/38}{\def\CJK@plane{v}\selectfont\CJKsymbol{16}}
+\CJKvlet{bx/n/20/38}{m/n/20/38}
+\CJKvdef{m/n/21/144}{\def\CJK@plane{v}\selectfont\CJKsymbol{17}}
+\CJKvlet{bx/n/21/144}{m/n/21/144}
+\CJKvdef{m/n/21/145}{\def\CJK@plane{v}\selectfont\CJKsymbol{18}}
+\CJKvlet{bx/n/21/145}{m/n/21/145}
+\CJKvdef{m/n/21/146}{\def\CJK@plane{v}\selectfont\CJKsymbol{19}}
+\CJKvlet{bx/n/21/146}{m/n/21/146}
+\CJKvdef{m/n/21/147}{\def\CJK@plane{v}\selectfont\CJKsymbol{20}}
+\CJKvlet{bx/n/21/147}{m/n/21/147}
+\CJKvdef{m/n/22/35}{\def\CJK@plane{v}\selectfont\CJKsymbol{21}}
+\CJKvlet{bx/n/22/35}{m/n/22/35}
+\CJKvdef{m/n/22/37}{\def\CJK@plane{v}\selectfont\CJKsymbol{22}}
+\CJKvlet{bx/n/22/37}{m/n/22/37}
+\CJKvdef{m/n/25/0}{\def\CJK@plane{v}\selectfont\CJKsymbol{23}}
+\CJKvlet{bx/n/25/0}{m/n/25/0}
+\CJKvdef{m/n/25/2}{\def\CJK@plane{v}\selectfont\CJKsymbol{24}}
+\CJKvlet{bx/n/25/2}{m/n/25/2}
+\CJKvdef{m/n/25/12}{\def\CJK@plane{v}\selectfont\CJKsymbol{25}}
+\CJKvlet{bx/n/25/12}{m/n/25/12}
+\CJKvdef{m/n/25/16}{\def\CJK@plane{v}\selectfont\CJKsymbol{26}}
+\CJKvlet{bx/n/25/16}{m/n/25/16}
+\CJKvdef{m/n/25/20}{\def\CJK@plane{v}\selectfont\CJKsymbol{27}}
+\CJKvlet{bx/n/25/20}{m/n/25/20}
+\CJKvdef{m/n/25/24}{\def\CJK@plane{v}\selectfont\CJKsymbol{28}}
+\CJKvlet{bx/n/25/24}{m/n/25/24}
+\CJKvdef{m/n/25/28}{\def\CJK@plane{v}\selectfont\CJKsymbol{29}}
+\CJKvlet{bx/n/25/28}{m/n/25/28}
+\CJKvdef{m/n/25/36}{\def\CJK@plane{v}\selectfont\CJKsymbol{30}}
+\CJKvlet{bx/n/25/36}{m/n/25/36}
+\CJKvdef{m/n/25/44}{\def\CJK@plane{v}\selectfont\CJKsymbol{31}}
+\CJKvlet{bx/n/25/44}{m/n/25/44}
+\CJKvdef{m/n/25/52}{\def\CJK@plane{v}\selectfont\CJKsymbol{32}}
+\CJKvlet{bx/n/25/52}{m/n/25/52}
+\CJKvdef{m/n/25/80}{\def\CJK@plane{v}\selectfont\CJKsymbol{33}}
+\CJKvlet{bx/n/25/80}{m/n/25/80}
+\CJKvdef{m/n/25/81}{\def\CJK@plane{v}\selectfont\CJKsymbol{34}}
+\CJKvlet{bx/n/25/81}{m/n/25/81}
+\CJKvdef{m/n/25/82}{\def\CJK@plane{v}\selectfont\CJKsymbol{35}}
+\CJKvlet{bx/n/25/82}{m/n/25/82}
+\CJKvdef{m/n/25/83}{\def\CJK@plane{v}\selectfont\CJKsymbol{36}}
+\CJKvlet{bx/n/25/83}{m/n/25/83}
+\CJKvdef{m/n/25/84}{\def\CJK@plane{v}\selectfont\CJKsymbol{37}}
+\CJKvlet{bx/n/25/84}{m/n/25/84}
+\CJKvdef{m/n/25/85}{\def\CJK@plane{v}\selectfont\CJKsymbol{38}}
+\CJKvlet{bx/n/25/85}{m/n/25/85}
+\CJKvdef{m/n/25/86}{\def\CJK@plane{v}\selectfont\CJKsymbol{39}}
+\CJKvlet{bx/n/25/86}{m/n/25/86}
+\CJKvdef{m/n/25/87}{\def\CJK@plane{v}\selectfont\CJKsymbol{40}}
+\CJKvlet{bx/n/25/87}{m/n/25/87}
+\CJKvdef{m/n/25/88}{\def\CJK@plane{v}\selectfont\CJKsymbol{41}}
+\CJKvlet{bx/n/25/88}{m/n/25/88}
+\CJKvdef{m/n/25/89}{\def\CJK@plane{v}\selectfont\CJKsymbol{42}}
+\CJKvlet{bx/n/25/89}{m/n/25/89}
+\CJKvdef{m/n/25/90}{\def\CJK@plane{v}\selectfont\CJKsymbol{43}}
+\CJKvlet{bx/n/25/90}{m/n/25/90}
+\CJKvdef{m/n/25/91}{\def\CJK@plane{v}\selectfont\CJKsymbol{44}}
+\CJKvlet{bx/n/25/91}{m/n/25/91}
+\CJKvdef{m/n/25/92}{\def\CJK@plane{v}\selectfont\CJKsymbol{45}}
+\CJKvlet{bx/n/25/92}{m/n/25/92}
+\CJKvdef{m/n/25/93}{\def\CJK@plane{v}\selectfont\CJKsymbol{46}}
+\CJKvlet{bx/n/25/93}{m/n/25/93}
+\CJKvdef{m/n/25/94}{\def\CJK@plane{v}\selectfont\CJKsymbol{47}}
+\CJKvlet{bx/n/25/94}{m/n/25/94}
+\CJKvdef{m/n/25/95}{\def\CJK@plane{v}\selectfont\CJKsymbol{48}}
+\CJKvlet{bx/n/25/95}{m/n/25/95}
+\CJKvdef{m/n/25/96}{\def\CJK@plane{v}\selectfont\CJKsymbol{49}}
+\CJKvlet{bx/n/25/96}{m/n/25/96}
+\CJKvdef{m/n/25/97}{\def\CJK@plane{v}\selectfont\CJKsymbol{50}}
+\CJKvlet{bx/n/25/97}{m/n/25/97}
+\CJKvdef{m/n/25/98}{\def\CJK@plane{v}\selectfont\CJKsymbol{51}}
+\CJKvlet{bx/n/25/98}{m/n/25/98}
+\CJKvdef{m/n/25/99}{\def\CJK@plane{v}\selectfont\CJKsymbol{52}}
+\CJKvlet{bx/n/25/99}{m/n/25/99}
+\CJKvdef{m/n/25/100}{\def\CJK@plane{v}\selectfont\CJKsymbol{53}}
+\CJKvlet{bx/n/25/100}{m/n/25/100}
+\CJKvdef{m/n/25/101}{\def\CJK@plane{v}\selectfont\CJKsymbol{54}}
+\CJKvlet{bx/n/25/101}{m/n/25/101}
+\CJKvdef{m/n/25/102}{\def\CJK@plane{v}\selectfont\CJKsymbol{55}}
+\CJKvlet{bx/n/25/102}{m/n/25/102}
+\CJKvdef{m/n/25/103}{\def\CJK@plane{v}\selectfont\CJKsymbol{56}}
+\CJKvlet{bx/n/25/103}{m/n/25/103}
+\CJKvdef{m/n/25/104}{\def\CJK@plane{v}\selectfont\CJKsymbol{57}}
+\CJKvlet{bx/n/25/104}{m/n/25/104}
+\CJKvdef{m/n/25/105}{\def\CJK@plane{v}\selectfont\CJKsymbol{58}}
+\CJKvlet{bx/n/25/105}{m/n/25/105}
+\CJKvdef{m/n/25/106}{\def\CJK@plane{v}\selectfont\CJKsymbol{59}}
+\CJKvlet{bx/n/25/106}{m/n/25/106}
+\CJKvdef{m/n/25/107}{\def\CJK@plane{v}\selectfont\CJKsymbol{60}}
+\CJKvlet{bx/n/25/107}{m/n/25/107}
+\CJKvdef{m/n/25/109}{\def\CJK@plane{v}\selectfont\CJKsymbol{61}}
+\CJKvlet{bx/n/25/109}{m/n/25/109}
+\CJKvdef{m/n/25/110}{\def\CJK@plane{v}\selectfont\CJKsymbol{62}}
+\CJKvlet{bx/n/25/110}{m/n/25/110}
+\CJKvdef{m/n/25/111}{\def\CJK@plane{v}\selectfont\CJKsymbol{63}}
+\CJKvlet{bx/n/25/111}{m/n/25/111}
+\CJKvdef{m/n/25/112}{\def\CJK@plane{v}\selectfont\CJKsymbol{64}}
+\CJKvlet{bx/n/25/112}{m/n/25/112}
+\CJKvdef{m/n/25/116}{\def\CJK@plane{v}\selectfont\CJKsymbol{65}}
+\CJKvlet{bx/n/25/116}{m/n/25/116}
+\CJKvdef{m/n/30/1}{\def\CJK@plane{v}\selectfont\CJKsymbol{66}}
+\CJKvlet{bx/n/30/1}{m/n/30/1}
+\CJKvdef{m/n/30/2}{\def\CJK@plane{v}\selectfont\CJKsymbol{67}}
+\CJKvlet{bx/n/30/2}{m/n/30/2}
+\CJKvdef{m/n/30/8}{\def\CJK@plane{v}\selectfont\CJKsymbol{68}}
+\CJKvlet{bx/n/30/8}{m/n/30/8}
+\CJKvdef{m/n/30/9}{\def\CJK@plane{v}\selectfont\CJKsymbol{69}}
+\CJKvlet{bx/n/30/9}{m/n/30/9}
+\CJKvdef{m/n/30/10}{\def\CJK@plane{v}\selectfont\CJKsymbol{70}}
+\CJKvlet{bx/n/30/10}{m/n/30/10}
+\CJKvdef{m/n/30/11}{\def\CJK@plane{v}\selectfont\CJKsymbol{71}}
+\CJKvlet{bx/n/30/11}{m/n/30/11}
+\CJKvdef{m/n/30/12}{\def\CJK@plane{v}\selectfont\CJKsymbol{72}}
+\CJKvlet{bx/n/30/12}{m/n/30/12}
+\CJKvdef{m/n/30/13}{\def\CJK@plane{v}\selectfont\CJKsymbol{73}}
+\CJKvlet{bx/n/30/13}{m/n/30/13}
+\CJKvdef{m/n/30/14}{\def\CJK@plane{v}\selectfont\CJKsymbol{74}}
+\CJKvlet{bx/n/30/14}{m/n/30/14}
+\CJKvdef{m/n/30/15}{\def\CJK@plane{v}\selectfont\CJKsymbol{75}}
+\CJKvlet{bx/n/30/15}{m/n/30/15}
+\CJKvdef{m/n/30/16}{\def\CJK@plane{v}\selectfont\CJKsymbol{76}}
+\CJKvlet{bx/n/30/16}{m/n/30/16}
+\CJKvdef{m/n/30/17}{\def\CJK@plane{v}\selectfont\CJKsymbol{77}}
+\CJKvlet{bx/n/30/17}{m/n/30/17}
+\CJKvdef{m/n/30/20}{\def\CJK@plane{v}\selectfont\CJKsymbol{78}}
+\CJKvlet{bx/n/30/20}{m/n/30/20}
+\CJKvdef{m/n/30/21}{\def\CJK@plane{v}\selectfont\CJKsymbol{79}}
+\CJKvlet{bx/n/30/21}{m/n/30/21}
+\CJKvdef{m/n/fe/79}{\def\CJK@plane{v}\selectfont\CJKsymbol{80}}
+\CJKvlet{bx/n/fe/79}{m/n/fe/79}
+\CJKvdef{m/n/fe/80}{\def\CJK@plane{v}\selectfont\CJKsymbol{81}}
+\CJKvlet{bx/n/fe/80}{m/n/fe/80}
+\CJKvdef{m/n/fe/81}{\def\CJK@plane{v}\selectfont\CJKsymbol{82}}
+\CJKvlet{bx/n/fe/81}{m/n/fe/81}
+\CJKvdef{m/n/fe/82}{\def\CJK@plane{v}\selectfont\CJKsymbol{83}}
+\CJKvlet{bx/n/fe/82}{m/n/fe/82}
+\CJKvdef{m/n/fe/89}{\def\CJK@plane{v}\selectfont\CJKsymbol{84}}
+\CJKvlet{bx/n/fe/89}{m/n/fe/89}
+\CJKvdef{m/n/fe/90}{\def\CJK@plane{v}\selectfont\CJKsymbol{85}}
+\CJKvlet{bx/n/fe/90}{m/n/fe/90}
+\CJKvdef{m/n/fe/91}{\def\CJK@plane{v}\selectfont\CJKsymbol{86}}
+\CJKvlet{bx/n/fe/91}{m/n/fe/91}
+\CJKvdef{m/n/fe/92}{\def\CJK@plane{v}\selectfont\CJKsymbol{87}}
+\CJKvlet{bx/n/fe/92}{m/n/fe/92}
+\CJKvdef{m/n/fe/93}{\def\CJK@plane{v}\selectfont\CJKsymbol{88}}
+\CJKvlet{bx/n/fe/93}{m/n/fe/93}
+\CJKvdef{m/n/fe/94}{\def\CJK@plane{v}\selectfont\CJKsymbol{89}}
+\CJKvlet{bx/n/fe/94}{m/n/fe/94}
+\CJKvdef{m/n/20/62}{\def\CJK@plane{v}\selectfont\CJKsymbol{90}}
+\CJKvlet{bx/n/20/62}{m/n/20/62}
+
+\gdef\CJK@cmap@bkaiv{
+ \expandafter\ifx\csname CJK@CMap@bkaiv\endcsname \relax
+ \immediate\pdfobj stream {
+ /CIDInit\space/ProcSet\space findresource\space begin\space
+ 12\space dict\space begin\space
+ begincmap\space
+ /CIDSystemInfo\space <<\space
+ /Registry\space (TeX)\space
+ /Ordering\space (bkaiv)\space
+ /Supplement\space 0\space >>\space def\space
+ /CMapName\space /TeX-bkaiv-0\space def\space
+ 1\space begincodespacerange\space
+ <00>\space <FF>\space
+ endcodespacerange\space
+ 91\space beginbfchar\space
+ <00>\space <00AF>\space
+ <01>\space <00B7>\space
+ <02>\space <02CD>\space
+ <03>\space <FF08>\space
+ <04>\space <FF09>\space
+ <05>\space <FF0C>\space
+ <06>\space <FF0E>\space
+ <07>\space <FF3B>\space
+ <08>\space <FF3D>\space
+ <09>\space <FF3F>\space
+ <0A>\space <FF5B>\space
+ <0B>\space <FF5D>\space
+ <0C>\space <FF5E>\space
+ <0D>\space <2013>\space
+ <0E>\space <2014>\space
+ <0F>\space <2025>\space
+ <10>\space <2026>\space
+ <11>\space <2190>\space
+ <12>\space <2191>\space
+ <13>\space <2192>\space
+ <14>\space <2193>\space
+ <15>\space <2223>\space
+ <16>\space <2225>\space
+ <17>\space <2500>\space
+ <18>\space <2502>\space
+ <19>\space <250C>\space
+ <1A>\space <2510>\space
+ <1B>\space <2514>\space
+ <1C>\space <2518>\space
+ <1D>\space <251C>\space
+ <1E>\space <2524>\space
+ <1F>\space <252C>\space
+ <20>\space <2534>\space
+ <21>\space <2550>\space
+ <22>\space <2551>\space
+ <23>\space <2552>\space
+ <24>\space <2553>\space
+ <25>\space <2554>\space
+ <26>\space <2555>\space
+ <27>\space <2556>\space
+ <28>\space <2557>\space
+ <29>\space <2558>\space
+ <2A>\space <2559>\space
+ <2B>\space <255A>\space
+ <2C>\space <255B>\space
+ <2D>\space <255C>\space
+ <2E>\space <255D>\space
+ <2F>\space <255E>\space
+ <30>\space <255F>\space
+ <31>\space <2560>\space
+ <32>\space <2561>\space
+ <33>\space <2562>\space
+ <34>\space <2563>\space
+ <35>\space <2564>\space
+ <36>\space <2565>\space
+ <37>\space <2566>\space
+ <38>\space <2567>\space
+ <39>\space <2568>\space
+ <3A>\space <2569>\space
+ <3B>\space <256A>\space
+ <3C>\space <256B>\space
+ <3D>\space <256D>\space
+ <3E>\space <256E>\space
+ <3F>\space <256F>\space
+ <40>\space <2570>\space
+ <41>\space <2574>\space
+ <42>\space <3001>\space
+ <43>\space <3002>\space
+ <44>\space <3008>\space
+ <45>\space <3009>\space
+ <46>\space <300A>\space
+ <47>\space <300B>\space
+ <48>\space <300C>\space
+ <49>\space <300D>\space
+ <4A>\space <300E>\space
+ <4B>\space <300F>\space
+ <4C>\space <3010>\space
+ <4D>\space <3011>\space
+ <4E>\space <3014>\space
+ <4F>\space <3015>\space
+ <50>\space <FE4F>\space
+ <51>\space <FE50>\space
+ <52>\space <FE51>\space
+ <53>\space <FE52>\space
+ <54>\space <FE59>\space
+ <55>\space <FE5A>\space
+ <56>\space <FE5B>\space
+ <57>\space <FE5C>\space
+ <58>\space <FE5D>\space
+ <59>\space <FE5E>\space
+ <5A>\space <203E>\space
+ endbfchar\space
+ endcmap\space
+ CMapName\space currentdict\space /CMap\space defineresource\space
+ pop\space
+ end\space
+ end\space}
+ \expandafter\xdef\csname CJK@CMap@bkaiv\endcsname{
+ \the\pdflastobj}
+ \fi
+ \pdffontattr\font@name{
+ /ToUnicode\space\csname CJK@CMap@bkaiv\endcsname\space 0\space R}
+}
+
+% This font doesn't contain a glyph for U+3007, but it has U+25CB.
+
+\CJKhdef{m/n/30/7}{\def\CJK@plane{25}\selectfont\CJKsymbol{203}}
+\CJKhlet{bx/n/30/7}{m/n/30/7}
+\CJKvdef{m/n/30/7}{\def\CJK@plane{25}\selectfont\CJKsymbol{203}}
+\CJKvlet{bx/n/30/7}{m/n/30/7}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bsmi.fd b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bsmi.fd
new file mode 100644
index 0000000000..89ebad58e9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bsmi.fd
@@ -0,0 +1,21 @@
+% This is the file c70bsmi.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70bsmi.fd}[\filedate\space\fileversion]
+
+
+% character set: Big5
+% font encoding: Unicode
+
+\DeclareFontFamily{C70}{bsmi}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C70}{bsmi}{m}{n}{<-> CJK * bsmiu}{\CJKnormal}
+\DeclareFontShape{C70}{bsmi}{bx}{n}{<-> CJKb * bsmiu}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bsmi.fdx b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bsmi.fdx
new file mode 100644
index 0000000000..08a298253c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70bsmi.fdx
@@ -0,0 +1,325 @@
+% This is the file c70bsmi.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by the script makefdx.pl for CJK Version 4.8.5 (16-Oct-2021).
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70bsmi.fdx}[\filedate\space\fileversion]
+
+\CJKvdef{fullheight}{1em}
+\CJKvdef{height}{.88em}
+\CJKvdef{offset}{.6em}
+
+% Uncomment if necessary.
+%\CJKvdef{norotate}{}
+\CJKvdef{m/n/00/175}{\def\CJK@plane{v}\selectfont\CJKsymbol{0}}
+\CJKvlet{bx/n/00/175}{m/n/00/175}
+\CJKvdef{m/n/00/183}{\def\CJK@plane{v}\selectfont\CJKsymbol{1}}
+\CJKvlet{bx/n/00/183}{m/n/00/183}
+\CJKvdef{m/n/02/205}{\def\CJK@plane{v}\selectfont\CJKsymbol{2}}
+\CJKvlet{bx/n/02/205}{m/n/02/205}
+\CJKvdef{m/n/ff/8}{\def\CJK@plane{v}\selectfont\CJKsymbol{3}}
+\CJKvlet{bx/n/ff/8}{m/n/ff/8}
+\CJKvdef{m/n/ff/9}{\def\CJK@plane{v}\selectfont\CJKsymbol{4}}
+\CJKvlet{bx/n/ff/9}{m/n/ff/9}
+\CJKvdef{m/n/ff/12}{\def\CJK@plane{v}\selectfont\CJKsymbol{5}}
+\CJKvlet{bx/n/ff/12}{m/n/ff/12}
+\CJKvdef{m/n/ff/14}{\def\CJK@plane{v}\selectfont\CJKsymbol{6}}
+\CJKvlet{bx/n/ff/14}{m/n/ff/14}
+\CJKvdef{m/n/ff/59}{\def\CJK@plane{v}\selectfont\CJKsymbol{7}}
+\CJKvlet{bx/n/ff/59}{m/n/ff/59}
+\CJKvdef{m/n/ff/61}{\def\CJK@plane{v}\selectfont\CJKsymbol{8}}
+\CJKvlet{bx/n/ff/61}{m/n/ff/61}
+\CJKvdef{m/n/ff/63}{\def\CJK@plane{v}\selectfont\CJKsymbol{9}}
+\CJKvlet{bx/n/ff/63}{m/n/ff/63}
+\CJKvdef{m/n/ff/91}{\def\CJK@plane{v}\selectfont\CJKsymbol{10}}
+\CJKvlet{bx/n/ff/91}{m/n/ff/91}
+\CJKvdef{m/n/ff/93}{\def\CJK@plane{v}\selectfont\CJKsymbol{11}}
+\CJKvlet{bx/n/ff/93}{m/n/ff/93}
+\CJKvdef{m/n/ff/94}{\def\CJK@plane{v}\selectfont\CJKsymbol{12}}
+\CJKvlet{bx/n/ff/94}{m/n/ff/94}
+\CJKvdef{m/n/20/19}{\def\CJK@plane{v}\selectfont\CJKsymbol{13}}
+\CJKvlet{bx/n/20/19}{m/n/20/19}
+\CJKvdef{m/n/20/20}{\def\CJK@plane{v}\selectfont\CJKsymbol{14}}
+\CJKvlet{bx/n/20/20}{m/n/20/20}
+\CJKvdef{m/n/20/37}{\def\CJK@plane{v}\selectfont\CJKsymbol{15}}
+\CJKvlet{bx/n/20/37}{m/n/20/37}
+\CJKvdef{m/n/20/38}{\def\CJK@plane{v}\selectfont\CJKsymbol{16}}
+\CJKvlet{bx/n/20/38}{m/n/20/38}
+\CJKvdef{m/n/21/144}{\def\CJK@plane{v}\selectfont\CJKsymbol{17}}
+\CJKvlet{bx/n/21/144}{m/n/21/144}
+\CJKvdef{m/n/21/145}{\def\CJK@plane{v}\selectfont\CJKsymbol{18}}
+\CJKvlet{bx/n/21/145}{m/n/21/145}
+\CJKvdef{m/n/21/146}{\def\CJK@plane{v}\selectfont\CJKsymbol{19}}
+\CJKvlet{bx/n/21/146}{m/n/21/146}
+\CJKvdef{m/n/21/147}{\def\CJK@plane{v}\selectfont\CJKsymbol{20}}
+\CJKvlet{bx/n/21/147}{m/n/21/147}
+\CJKvdef{m/n/22/35}{\def\CJK@plane{v}\selectfont\CJKsymbol{21}}
+\CJKvlet{bx/n/22/35}{m/n/22/35}
+\CJKvdef{m/n/22/37}{\def\CJK@plane{v}\selectfont\CJKsymbol{22}}
+\CJKvlet{bx/n/22/37}{m/n/22/37}
+\CJKvdef{m/n/25/0}{\def\CJK@plane{v}\selectfont\CJKsymbol{23}}
+\CJKvlet{bx/n/25/0}{m/n/25/0}
+\CJKvdef{m/n/25/2}{\def\CJK@plane{v}\selectfont\CJKsymbol{24}}
+\CJKvlet{bx/n/25/2}{m/n/25/2}
+\CJKvdef{m/n/25/12}{\def\CJK@plane{v}\selectfont\CJKsymbol{25}}
+\CJKvlet{bx/n/25/12}{m/n/25/12}
+\CJKvdef{m/n/25/16}{\def\CJK@plane{v}\selectfont\CJKsymbol{26}}
+\CJKvlet{bx/n/25/16}{m/n/25/16}
+\CJKvdef{m/n/25/20}{\def\CJK@plane{v}\selectfont\CJKsymbol{27}}
+\CJKvlet{bx/n/25/20}{m/n/25/20}
+\CJKvdef{m/n/25/24}{\def\CJK@plane{v}\selectfont\CJKsymbol{28}}
+\CJKvlet{bx/n/25/24}{m/n/25/24}
+\CJKvdef{m/n/25/28}{\def\CJK@plane{v}\selectfont\CJKsymbol{29}}
+\CJKvlet{bx/n/25/28}{m/n/25/28}
+\CJKvdef{m/n/25/36}{\def\CJK@plane{v}\selectfont\CJKsymbol{30}}
+\CJKvlet{bx/n/25/36}{m/n/25/36}
+\CJKvdef{m/n/25/44}{\def\CJK@plane{v}\selectfont\CJKsymbol{31}}
+\CJKvlet{bx/n/25/44}{m/n/25/44}
+\CJKvdef{m/n/25/52}{\def\CJK@plane{v}\selectfont\CJKsymbol{32}}
+\CJKvlet{bx/n/25/52}{m/n/25/52}
+\CJKvdef{m/n/25/80}{\def\CJK@plane{v}\selectfont\CJKsymbol{33}}
+\CJKvlet{bx/n/25/80}{m/n/25/80}
+\CJKvdef{m/n/25/81}{\def\CJK@plane{v}\selectfont\CJKsymbol{34}}
+\CJKvlet{bx/n/25/81}{m/n/25/81}
+\CJKvdef{m/n/25/82}{\def\CJK@plane{v}\selectfont\CJKsymbol{35}}
+\CJKvlet{bx/n/25/82}{m/n/25/82}
+\CJKvdef{m/n/25/83}{\def\CJK@plane{v}\selectfont\CJKsymbol{36}}
+\CJKvlet{bx/n/25/83}{m/n/25/83}
+\CJKvdef{m/n/25/84}{\def\CJK@plane{v}\selectfont\CJKsymbol{37}}
+\CJKvlet{bx/n/25/84}{m/n/25/84}
+\CJKvdef{m/n/25/85}{\def\CJK@plane{v}\selectfont\CJKsymbol{38}}
+\CJKvlet{bx/n/25/85}{m/n/25/85}
+\CJKvdef{m/n/25/86}{\def\CJK@plane{v}\selectfont\CJKsymbol{39}}
+\CJKvlet{bx/n/25/86}{m/n/25/86}
+\CJKvdef{m/n/25/87}{\def\CJK@plane{v}\selectfont\CJKsymbol{40}}
+\CJKvlet{bx/n/25/87}{m/n/25/87}
+\CJKvdef{m/n/25/88}{\def\CJK@plane{v}\selectfont\CJKsymbol{41}}
+\CJKvlet{bx/n/25/88}{m/n/25/88}
+\CJKvdef{m/n/25/89}{\def\CJK@plane{v}\selectfont\CJKsymbol{42}}
+\CJKvlet{bx/n/25/89}{m/n/25/89}
+\CJKvdef{m/n/25/90}{\def\CJK@plane{v}\selectfont\CJKsymbol{43}}
+\CJKvlet{bx/n/25/90}{m/n/25/90}
+\CJKvdef{m/n/25/91}{\def\CJK@plane{v}\selectfont\CJKsymbol{44}}
+\CJKvlet{bx/n/25/91}{m/n/25/91}
+\CJKvdef{m/n/25/92}{\def\CJK@plane{v}\selectfont\CJKsymbol{45}}
+\CJKvlet{bx/n/25/92}{m/n/25/92}
+\CJKvdef{m/n/25/93}{\def\CJK@plane{v}\selectfont\CJKsymbol{46}}
+\CJKvlet{bx/n/25/93}{m/n/25/93}
+\CJKvdef{m/n/25/94}{\def\CJK@plane{v}\selectfont\CJKsymbol{47}}
+\CJKvlet{bx/n/25/94}{m/n/25/94}
+\CJKvdef{m/n/25/95}{\def\CJK@plane{v}\selectfont\CJKsymbol{48}}
+\CJKvlet{bx/n/25/95}{m/n/25/95}
+\CJKvdef{m/n/25/96}{\def\CJK@plane{v}\selectfont\CJKsymbol{49}}
+\CJKvlet{bx/n/25/96}{m/n/25/96}
+\CJKvdef{m/n/25/97}{\def\CJK@plane{v}\selectfont\CJKsymbol{50}}
+\CJKvlet{bx/n/25/97}{m/n/25/97}
+\CJKvdef{m/n/25/98}{\def\CJK@plane{v}\selectfont\CJKsymbol{51}}
+\CJKvlet{bx/n/25/98}{m/n/25/98}
+\CJKvdef{m/n/25/99}{\def\CJK@plane{v}\selectfont\CJKsymbol{52}}
+\CJKvlet{bx/n/25/99}{m/n/25/99}
+\CJKvdef{m/n/25/100}{\def\CJK@plane{v}\selectfont\CJKsymbol{53}}
+\CJKvlet{bx/n/25/100}{m/n/25/100}
+\CJKvdef{m/n/25/101}{\def\CJK@plane{v}\selectfont\CJKsymbol{54}}
+\CJKvlet{bx/n/25/101}{m/n/25/101}
+\CJKvdef{m/n/25/102}{\def\CJK@plane{v}\selectfont\CJKsymbol{55}}
+\CJKvlet{bx/n/25/102}{m/n/25/102}
+\CJKvdef{m/n/25/103}{\def\CJK@plane{v}\selectfont\CJKsymbol{56}}
+\CJKvlet{bx/n/25/103}{m/n/25/103}
+\CJKvdef{m/n/25/104}{\def\CJK@plane{v}\selectfont\CJKsymbol{57}}
+\CJKvlet{bx/n/25/104}{m/n/25/104}
+\CJKvdef{m/n/25/105}{\def\CJK@plane{v}\selectfont\CJKsymbol{58}}
+\CJKvlet{bx/n/25/105}{m/n/25/105}
+\CJKvdef{m/n/25/106}{\def\CJK@plane{v}\selectfont\CJKsymbol{59}}
+\CJKvlet{bx/n/25/106}{m/n/25/106}
+\CJKvdef{m/n/25/107}{\def\CJK@plane{v}\selectfont\CJKsymbol{60}}
+\CJKvlet{bx/n/25/107}{m/n/25/107}
+\CJKvdef{m/n/25/109}{\def\CJK@plane{v}\selectfont\CJKsymbol{61}}
+\CJKvlet{bx/n/25/109}{m/n/25/109}
+\CJKvdef{m/n/25/110}{\def\CJK@plane{v}\selectfont\CJKsymbol{62}}
+\CJKvlet{bx/n/25/110}{m/n/25/110}
+\CJKvdef{m/n/25/111}{\def\CJK@plane{v}\selectfont\CJKsymbol{63}}
+\CJKvlet{bx/n/25/111}{m/n/25/111}
+\CJKvdef{m/n/25/112}{\def\CJK@plane{v}\selectfont\CJKsymbol{64}}
+\CJKvlet{bx/n/25/112}{m/n/25/112}
+\CJKvdef{m/n/25/116}{\def\CJK@plane{v}\selectfont\CJKsymbol{65}}
+\CJKvlet{bx/n/25/116}{m/n/25/116}
+\CJKvdef{m/n/30/1}{\def\CJK@plane{v}\selectfont\CJKsymbol{66}}
+\CJKvlet{bx/n/30/1}{m/n/30/1}
+\CJKvdef{m/n/30/2}{\def\CJK@plane{v}\selectfont\CJKsymbol{67}}
+\CJKvlet{bx/n/30/2}{m/n/30/2}
+\CJKvdef{m/n/30/8}{\def\CJK@plane{v}\selectfont\CJKsymbol{68}}
+\CJKvlet{bx/n/30/8}{m/n/30/8}
+\CJKvdef{m/n/30/9}{\def\CJK@plane{v}\selectfont\CJKsymbol{69}}
+\CJKvlet{bx/n/30/9}{m/n/30/9}
+\CJKvdef{m/n/30/10}{\def\CJK@plane{v}\selectfont\CJKsymbol{70}}
+\CJKvlet{bx/n/30/10}{m/n/30/10}
+\CJKvdef{m/n/30/11}{\def\CJK@plane{v}\selectfont\CJKsymbol{71}}
+\CJKvlet{bx/n/30/11}{m/n/30/11}
+\CJKvdef{m/n/30/12}{\def\CJK@plane{v}\selectfont\CJKsymbol{72}}
+\CJKvlet{bx/n/30/12}{m/n/30/12}
+\CJKvdef{m/n/30/13}{\def\CJK@plane{v}\selectfont\CJKsymbol{73}}
+\CJKvlet{bx/n/30/13}{m/n/30/13}
+\CJKvdef{m/n/30/14}{\def\CJK@plane{v}\selectfont\CJKsymbol{74}}
+\CJKvlet{bx/n/30/14}{m/n/30/14}
+\CJKvdef{m/n/30/15}{\def\CJK@plane{v}\selectfont\CJKsymbol{75}}
+\CJKvlet{bx/n/30/15}{m/n/30/15}
+\CJKvdef{m/n/30/16}{\def\CJK@plane{v}\selectfont\CJKsymbol{76}}
+\CJKvlet{bx/n/30/16}{m/n/30/16}
+\CJKvdef{m/n/30/17}{\def\CJK@plane{v}\selectfont\CJKsymbol{77}}
+\CJKvlet{bx/n/30/17}{m/n/30/17}
+\CJKvdef{m/n/30/20}{\def\CJK@plane{v}\selectfont\CJKsymbol{78}}
+\CJKvlet{bx/n/30/20}{m/n/30/20}
+\CJKvdef{m/n/30/21}{\def\CJK@plane{v}\selectfont\CJKsymbol{79}}
+\CJKvlet{bx/n/30/21}{m/n/30/21}
+\CJKvdef{m/n/fe/79}{\def\CJK@plane{v}\selectfont\CJKsymbol{80}}
+\CJKvlet{bx/n/fe/79}{m/n/fe/79}
+\CJKvdef{m/n/fe/80}{\def\CJK@plane{v}\selectfont\CJKsymbol{81}}
+\CJKvlet{bx/n/fe/80}{m/n/fe/80}
+\CJKvdef{m/n/fe/81}{\def\CJK@plane{v}\selectfont\CJKsymbol{82}}
+\CJKvlet{bx/n/fe/81}{m/n/fe/81}
+\CJKvdef{m/n/fe/82}{\def\CJK@plane{v}\selectfont\CJKsymbol{83}}
+\CJKvlet{bx/n/fe/82}{m/n/fe/82}
+\CJKvdef{m/n/fe/89}{\def\CJK@plane{v}\selectfont\CJKsymbol{84}}
+\CJKvlet{bx/n/fe/89}{m/n/fe/89}
+\CJKvdef{m/n/fe/90}{\def\CJK@plane{v}\selectfont\CJKsymbol{85}}
+\CJKvlet{bx/n/fe/90}{m/n/fe/90}
+\CJKvdef{m/n/fe/91}{\def\CJK@plane{v}\selectfont\CJKsymbol{86}}
+\CJKvlet{bx/n/fe/91}{m/n/fe/91}
+\CJKvdef{m/n/fe/92}{\def\CJK@plane{v}\selectfont\CJKsymbol{87}}
+\CJKvlet{bx/n/fe/92}{m/n/fe/92}
+\CJKvdef{m/n/fe/93}{\def\CJK@plane{v}\selectfont\CJKsymbol{88}}
+\CJKvlet{bx/n/fe/93}{m/n/fe/93}
+\CJKvdef{m/n/fe/94}{\def\CJK@plane{v}\selectfont\CJKsymbol{89}}
+\CJKvlet{bx/n/fe/94}{m/n/fe/94}
+\CJKvdef{m/n/20/62}{\def\CJK@plane{v}\selectfont\CJKsymbol{90}}
+\CJKvlet{bx/n/20/62}{m/n/20/62}
+
+\gdef\CJK@cmap@bsmiv{
+ \expandafter\ifx\csname CJK@CMap@bsmiv\endcsname \relax
+ \immediate\pdfobj stream {
+ /CIDInit\space/ProcSet\space findresource\space begin\space
+ 12\space dict\space begin\space
+ begincmap\space
+ /CIDSystemInfo\space <<\space
+ /Registry\space (TeX)\space
+ /Ordering\space (bsmiv)\space
+ /Supplement\space 0\space >>\space def\space
+ /CMapName\space /TeX-bsmiv-0\space def\space
+ 1\space begincodespacerange\space
+ <00>\space <FF>\space
+ endcodespacerange\space
+ 91\space beginbfchar\space
+ <00>\space <00AF>\space
+ <01>\space <00B7>\space
+ <02>\space <02CD>\space
+ <03>\space <FF08>\space
+ <04>\space <FF09>\space
+ <05>\space <FF0C>\space
+ <06>\space <FF0E>\space
+ <07>\space <FF3B>\space
+ <08>\space <FF3D>\space
+ <09>\space <FF3F>\space
+ <0A>\space <FF5B>\space
+ <0B>\space <FF5D>\space
+ <0C>\space <FF5E>\space
+ <0D>\space <2013>\space
+ <0E>\space <2014>\space
+ <0F>\space <2025>\space
+ <10>\space <2026>\space
+ <11>\space <2190>\space
+ <12>\space <2191>\space
+ <13>\space <2192>\space
+ <14>\space <2193>\space
+ <15>\space <2223>\space
+ <16>\space <2225>\space
+ <17>\space <2500>\space
+ <18>\space <2502>\space
+ <19>\space <250C>\space
+ <1A>\space <2510>\space
+ <1B>\space <2514>\space
+ <1C>\space <2518>\space
+ <1D>\space <251C>\space
+ <1E>\space <2524>\space
+ <1F>\space <252C>\space
+ <20>\space <2534>\space
+ <21>\space <2550>\space
+ <22>\space <2551>\space
+ <23>\space <2552>\space
+ <24>\space <2553>\space
+ <25>\space <2554>\space
+ <26>\space <2555>\space
+ <27>\space <2556>\space
+ <28>\space <2557>\space
+ <29>\space <2558>\space
+ <2A>\space <2559>\space
+ <2B>\space <255A>\space
+ <2C>\space <255B>\space
+ <2D>\space <255C>\space
+ <2E>\space <255D>\space
+ <2F>\space <255E>\space
+ <30>\space <255F>\space
+ <31>\space <2560>\space
+ <32>\space <2561>\space
+ <33>\space <2562>\space
+ <34>\space <2563>\space
+ <35>\space <2564>\space
+ <36>\space <2565>\space
+ <37>\space <2566>\space
+ <38>\space <2567>\space
+ <39>\space <2568>\space
+ <3A>\space <2569>\space
+ <3B>\space <256A>\space
+ <3C>\space <256B>\space
+ <3D>\space <256D>\space
+ <3E>\space <256E>\space
+ <3F>\space <256F>\space
+ <40>\space <2570>\space
+ <41>\space <2574>\space
+ <42>\space <3001>\space
+ <43>\space <3002>\space
+ <44>\space <3008>\space
+ <45>\space <3009>\space
+ <46>\space <300A>\space
+ <47>\space <300B>\space
+ <48>\space <300C>\space
+ <49>\space <300D>\space
+ <4A>\space <300E>\space
+ <4B>\space <300F>\space
+ <4C>\space <3010>\space
+ <4D>\space <3011>\space
+ <4E>\space <3014>\space
+ <4F>\space <3015>\space
+ <50>\space <FE4F>\space
+ <51>\space <FE50>\space
+ <52>\space <FE51>\space
+ <53>\space <FE52>\space
+ <54>\space <FE59>\space
+ <55>\space <FE5A>\space
+ <56>\space <FE5B>\space
+ <57>\space <FE5C>\space
+ <58>\space <FE5D>\space
+ <59>\space <FE5E>\space
+ <5A>\space <203E>\space
+ endbfchar\space
+ endcmap\space
+ CMapName\space currentdict\space /CMap\space defineresource\space
+ pop\space
+ end\space
+ end\space}
+ \expandafter\xdef\csname CJK@CMap@bsmiv\endcsname{
+ \the\pdflastobj}
+ \fi
+ \pdffontattr\font@name{
+ /ToUnicode\space\csname CJK@CMap@bsmiv\endcsname\space 0\space R}
+}
+
+% This font doesn't contain a glyph for U+3007, but it has U+25CB.
+
+\CJKhdef{m/n/30/7}{\def\CJK@plane{25}\selectfont\CJKsymbol{203}}
+\CJKhlet{bx/n/30/7}{m/n/30/7}
+\CJKvdef{m/n/30/7}{\def\CJK@plane{25}\selectfont\CJKsymbol{203}}
+\CJKvlet{bx/n/30/7}{m/n/30/7}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gbsn.fd b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gbsn.fd
new file mode 100644
index 0000000000..f13902d0ed
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gbsn.fd
@@ -0,0 +1,21 @@
+% This is the file c70gbsn.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70gbsn.fd}[\filedate\space\fileversion]
+
+
+% character set: GB
+% font encoding: Unicode
+
+\DeclareFontFamily{C70}{gbsn}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C70}{gbsn}{m}{n}{<-> CJK * gbsnu}{\CJKnormal}
+\DeclareFontShape{C70}{gbsn}{bx}{n}{<-> CJKb * gbsnu}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gbsn.fdx b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gbsn.fdx
new file mode 100644
index 0000000000..57ab05fda2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gbsn.fdx
@@ -0,0 +1,15 @@
+% This is the file c70gbsn.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70gbsn.fdx}[\filedate\space\fileversion]
+
+% This font doesn't contain a glyph for U+3007, but it has U+25CB.
+
+\CJKhdef{m/n/30/7}{\def\CJK@plane{25}\selectfont\CJKsymbol{203}}
+\CJKhlet{bx/n/30/7}{m/n/30/7}
+\CJKvdef{m/n/30/7}{\def\CJK@plane{25}\selectfont\CJKsymbol{203}}
+\CJKvlet{bx/n/30/7}{m/n/30/7}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gkai.fd b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gkai.fd
new file mode 100644
index 0000000000..532faa1d75
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gkai.fd
@@ -0,0 +1,21 @@
+% This is the file c70gkai.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70gkai.fd}[\filedate\space\fileversion]
+
+
+% character set: GB
+% font encoding: Unicode
+
+\DeclareFontFamily{C70}{gkai}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C70}{gkai}{m}{n}{<-> CJK * gkaiu}{\CJKnormal}
+\DeclareFontShape{C70}{gkai}{bx}{n}{<-> CJKb * gkaiu}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gkai.fdx b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gkai.fdx
new file mode 100644
index 0000000000..d0735a97e5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70gkai.fdx
@@ -0,0 +1,15 @@
+% This is the file c70gkai.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70gkai.fdx}[\filedate\space\fileversion]
+
+% This font doesn't contain a glyph for U+3007, but it has U+25CB.
+
+\CJKhdef{m/n/30/7}{\def\CJK@plane{25}\selectfont\CJKsymbol{203}}
+\CJKhlet{bx/n/30/7}{m/n/30/7}
+\CJKvdef{m/n/30/7}{\def\CJK@plane{25}\selectfont\CJKsymbol{203}}
+\CJKvlet{bx/n/30/7}{m/n/30/7}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70mj.fd b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70mj.fd
new file mode 100644
index 0000000000..d2f03e670e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70mj.fd
@@ -0,0 +1,51 @@
+% This is the file c70mj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70mj.fd}[\filedate\space\fileversion]
+
+
+% character set: KS X 1001
+% font encoding: Unicode
+
+\DeclareFontFamily{C70}{mj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C70}{mj}{c}{n}{<-> CJK * uwmjc}{}
+\DeclareFontShape{C70}{mj}{c}{sl}{<-> CJK * uwmjco}{}
+\DeclareFontShape{C70}{mj}{c}{it}{<-> CJKssub * mj/c/sl}{}
+
+\DeclareFontShape{C70}{mj}{m}{n}{<-> CJK * uwmj}{}
+\DeclareFontShape{C70}{mj}{m}{sl}{<-> CJK * uwmjo}{}
+\DeclareFontShape{C70}{mj}{m}{it}{<-> CJKssub * mj/m/sl}{}
+
+\DeclareFontShape{C70}{mj}{x}{n}{<-> CJK * uwmjx}{}
+\DeclareFontShape{C70}{mj}{x}{sl}{<-> CJK * uwmjxo}{}
+\DeclareFontShape{C70}{mj}{x}{it}{<-> CJKssub * mj/x/sl}{}
+
+\DeclareFontShape{C70}{mj}{ux}{n}{<-> CJK * uwmju}{}
+\DeclareFontShape{C70}{mj}{ux}{sl}{<-> CJK * uwmjuo}{}
+\DeclareFontShape{C70}{mj}{ux}{it}{<-> CJKssub * mj/ux/sl}{}
+
+
+\DeclareFontShape{C70}{mj}{bc}{n}{<-> CJKb * uwmjc}{\CJKbold}
+\DeclareFontShape{C70}{mj}{bc}{sl}{<-> CJKb * uwmjco}{\CJKbold}
+\DeclareFontShape{C70}{mj}{bc}{it}{<-> CJKssub * mj/bc/sl}{}
+
+\DeclareFontShape{C70}{mj}{b}{n}{<-> CJKb * uwmj}{\CJKbold}
+\DeclareFontShape{C70}{mj}{b}{sl}{<-> CJKb * uwmjo}{\CJKbold}
+\DeclareFontShape{C70}{mj}{b}{it}{<-> CJKssub * mj/b/sl}{}
+
+\DeclareFontShape{C70}{mj}{bx}{n}{<-> CJKb * uwmjx}{\CJKbold}
+\DeclareFontShape{C70}{mj}{bx}{sl}{<-> CJKb * uwmjxo}{\CJKbold}
+\DeclareFontShape{C70}{mj}{bx}{it}{<-> CJKssub * mj/bx/sl}{}
+
+\DeclareFontShape{C70}{mj}{bux}{n}{<-> CJKb * uwmju}{\CJKbold}
+\DeclareFontShape{C70}{mj}{bux}{sl}{<-> CJKb * uwmjuo}{\CJKbold}
+\DeclareFontShape{C70}{mj}{bux}{it}{<-> CJKssub * mj/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70mj.fdx b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70mj.fdx
new file mode 100644
index 0000000000..07c7235bec
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70mj.fdx
@@ -0,0 +1,15 @@
+% This is the file c70mj.fdx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70mj.fdx}[\filedate\space\fileversion]
+
+% This font doesn't contain a glyph for U+3007, but it has U+25CB.
+
+\CJKhdef{m/n/30/7}{\def\CJK@plane{25}\selectfont\CJKsymbol{203}}
+\CJKhlet{bx/n/30/7}{m/n/30/7}
+\CJKvdef{m/n/30/7}{\def\CJK@plane{25}\selectfont\CJKsymbol{203}}
+\CJKvlet{bx/n/30/7}{m/n/30/7}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70song.fd b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70song.fd
new file mode 100644
index 0000000000..db45e169f0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/c70song.fd
@@ -0,0 +1,21 @@
+% This is the file c70song.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c70song.fd}[\filedate\space\fileversion]
+
+
+% character set: Unicode U+0080 - U+FFFD
+% font encoding: Unicode
+
+\DeclareFontFamily{C70}{song}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C70}{song}{m}{n}{<-> CJK * cyberb}{\CJKnormal}
+\DeclareFontShape{C70}{song}{bx}{n}{<-> CJKb * cyberb}{\CJKbold}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ja.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ja.cpx
new file mode 100644
index 0000000000..0ffd3fb2da
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ja.cpx
@@ -0,0 +1,83 @@
+% This is the file ja.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{ja.cpx}[\filedate\space\fileversion]
+
+
+% Japanese captions
+%
+% character set: JIS X 0208:1997 (or JIS X 0208-1990)
+% encoding: UTF-8
+
+\newif\ifheisei
+\let\ifheisei=\iffalse
+\def\heisei{\let\ifheisei=\iftrue}
+
+\renewcommand\contentsname{目次}
+
+\renewcommand\listfigurename{図目次}
+% \newcommand\listfigurename{図一覧}
+
+\renewcommand\listtablename{表目次}
+% \newcommand\listtablename{表一覧}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{å‚考文献}
+ }
+ {\renewcommand\bibname{関連書ç±}
+% \renewcommand\bibname{å‚考文献}
+ }
+\renewcommand\indexname{索引}
+
+\renewcommand\figurename{図}
+\renewcommand\tablename{表}
+
+\newcommand\prepartname{第}
+\newcommand\postpartname{部}
+\renewcommand\partformat{\prepartname\CJKnumber{\value{part}}\postpartname}
+
+% \renewcommand{\appendixname}{附録}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{è¦æ—¨}}{}
+
+\renewcommand\today{{\ifheisei\count0=\year\else\count0=\year
+ \advance\count0 -1988 å¹³æˆ\,\fi
+ \ifnum\count0=1 å…ƒ\else\number\count0\fi
+ \,å¹´\hspace{.5em}\nobreak\number\month
+ \,月\hspace{.5em}\nobreak\number\day\,日}}
+\CJK@ifundefined\CJKnumber
+ {\def\CJKnumber #1{\ifcase #1\or
+ 一\or 二\or 三\or 四\or 五\or
+ å…­\or 七\or å…«\or ä¹\or å\fi}}{}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hang.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hang.cpx
new file mode 100644
index 0000000000..f83c47a68b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hang.cpx
@@ -0,0 +1,74 @@
+% This is the file ko-Hang.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{ko-Hang.cpx}[\filedate\space\fileversion]
+
+
+% Hangul captions
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: UTF-8
+
+\renewcommand\contentsname{목차}
+\renewcommand\listfigurename{그림~목차}
+\renewcommand\listtablename{표~목차}
+\renewcommand\indexname{색ì¸}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{참고~ì„œì }}
+ {\renewcommand\bibname{참고~문헌}}
+
+\renewcommand\figurename{그림}
+\renewcommand\tablename{표}
+
+\newcommand\prepartname{제}
+\newcommand\postpartname{부}
+\renewcommand\partformat{\prepartname~\thepart~\postpartname}
+
+% \newcommand\prechaptername{제}
+% \newcommand\postchaptername{장}
+% \newcommand\presectionname{제}
+% \newcommand\postsectionname{ì ˆ}
+% \renewcommand\appendixname{부ë¡}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{요약}}{}
+
+% \renewcommand\ccname{사본}
+% \renewcommand\enclname{첨부물}% í˜¹ì€ ë™ë´‰ë¬¼
+% \renewcommand\pagename{페ì´ì§€~}
+% \renewcommand\headtoname{받는ì´}
+% \renewcommand\seename{참조}
+
+\renewcommand{\today}{\number\year ë…„~\number\month ì›”~\number\day ì¼}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hang2.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hang2.cpx
new file mode 100644
index 0000000000..e6f40fdd2b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hang2.cpx
@@ -0,0 +1,74 @@
+% This is the file ko-Hang2.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{ko-Hang2.cpx}[\filedate\space\fileversion]
+
+
+% Hangul captions set 2
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: UTF-8
+
+\renewcommand\contentsname{차례}
+\renewcommand\listfigurename{그림~차례}
+\renewcommand\listtablename{표~차례}
+\renewcommand\indexname{찾아보기}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{참고~ì„œì }}
+ {\renewcommand\bibname{참고~문헌}}
+
+\renewcommand\figurename{그림}
+\renewcommand\tablename{표}
+
+\newcommand\prepartname{제}
+\newcommand\postpartname{부}
+\renewcommand\partformat{\prepartname~\thepart~\postpartname}
+
+% \newcommand\prechaptername{제}
+% \newcommand\postchaptername{장}
+% \newcommand\presectionname{제}
+% \newcommand\postsectionname{ì ˆ}
+% \renewcommand\appendixname{부ë¡}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{요약}}{}
+
+% \renewcommand\ccname{사본}
+% \renewcommand\enclname{첨부물}% í˜¹ì€ ë™ë´‰ë¬¼
+% \renewcommand\pagename{페ì´ì§€~}
+% \renewcommand\headtoname{받는ì´}
+% \renewcommand\seename{참조}
+
+\renewcommand{\today}{\number\year ë…„~\number\month ì›”~\number\day ì¼}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hani.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hani.cpx
new file mode 100644
index 0000000000..f98d156212
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/ko-Hani.cpx
@@ -0,0 +1,74 @@
+% This is the file ko-Hani.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <a7971428@unet.univie.ac.at>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{ko-Hani.cpx}[\filedate\space\fileversion]
+
+
+% Hanja captions
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% encoding: UTF-8
+
+\renewcommand\contentsname{目次}
+\renewcommand\listfigurename{그림~目次}
+\renewcommand\listtablename{表~目次}
+\renewcommand\indexname{索引}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{åƒè€ƒ~書ç±}}
+ {\renewcommand\bibname{åƒè€ƒ~æ–‡ç»}}
+
+\renewcommand\figurename{그림}
+\renewcommand\tablename{表}
+
+\newcommand\prepartname{第}
+\newcommand\postpartname{篇}
+\renewcommand\partformat{\prepartname~\thepart~\postpartname}
+
+% \newcommand\prechaptername{第}
+% \newcommand\postchaptername{ç« }
+% \newcommand\presectionname{第}
+% \newcommand\postsectionname{節}
+% \newcommand\appendixname{附錄}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{è¦~ç´„}}{}
+
+% \renewcommand\ccname{寫本}
+% \renewcommand\enclname{添附物}% í˜¹ì€ ë™ë´‰ë¬¼
+% \renewcommand\pagename{페ì´ì§€}
+% \renewcommand\headtoname{å—信人}
+% \renewcommand\seename{åƒç…§}
+
+\renewcommand{\today}{\number\year 年~\number\month 月~\number\day 日}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/zh-Hans.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/zh-Hans.cpx
new file mode 100644
index 0000000000..9ec7bf06c8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/zh-Hans.cpx
@@ -0,0 +1,86 @@
+% This is the file zh-Hans.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{zh-Hans.cpx}[\filedate\space\fileversion]
+
+
+% Chinese captions
+%
+% character set: GB 2312-80
+% encoding: EUC
+
+\renewcommand\contentsname{目录}
+\renewcommand\listfigurename{æ’图}
+\renewcommand\listtablename{表格}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{å‚考文献}}
+ {\renewcommand\bibname{å‚考文献}}
+
+\renewcommand\indexname{索引}
+
+\newcommand\prefigurename{第}
+\newcommand\postfigurename{图}
+\renewcommand\figureformat{\prefigurename~\thefigure~\postfigurename}
+
+\newcommand\pretablename{第}
+\newcommand\posttablename{表}
+\renewcommand\tableformat{\pretablename~\thetable~\posttablename}
+
+\newcommand\prepartname{第}
+\newcommand\postpartname{部分}
+\renewcommand\partformat{\prepartname\CJKnumber{\value{part}}\postpartname}
+
+% \newcommand\prechaptername{第}
+% \newcommand\postchaptername{ç« }
+% \newcommand\presectionname{第}
+% \newcommand\postsectionname{节}
+% \newcommand\preappendixname{第}
+% \newcommand\postappendixname{附录}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{摘è¦}}{}
+
+% \renewcommand\ccname{} % ?
+% \renewcommand\enclname{附件}
+% \newcommand\prepagename{} % ?
+% \newcommand\postpagename{} % ?
+% \renewcommand\headtoname{} % ?
+% \renewcommand\seename{} % ?
+
+\renewcommand\today{\number\year 年\number\month 月\number\day 日}
+\CJK@ifundefined\CJKnumber
+ {\def\CJKnumber#1{\ifcase #1\or
+ 一\or 二\or 三\or 四\or 五\or
+ å…­\or 七\or å…«\or ä¹\or å\fi}}{}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/zh-Hant.cpx b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/zh-Hant.cpx
new file mode 100644
index 0000000000..84b6f4df8c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/UTF8/zh-Hant.cpx
@@ -0,0 +1,86 @@
+% This is the file zh-Hant.cpx of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{zh-Hant.cpx}[\filedate\space\fileversion]
+
+
+% Chinese captions
+%
+% character set: Big 5
+% encoding: UTF-8
+
+\renewcommand\contentsname{目~~錄}
+\renewcommand\listfigurename{圖~目~錄}
+\renewcommand\listtablename{表~目~錄}
+
+\CJK@ifundefined\chapter
+ {\renewcommand\refname{åƒ~考~資~æ–™}
+ %\renewcommand\refname{åƒ~考~æ–‡~ç»}
+ }
+ {\renewcommand\bibname{æ–‡~~ç»}
+ %\renewcommand\bibname{åƒ~考~書~ç›®}
+% \newcommand\prechaptername{第}
+% \newcommand\postchaptername{ç« }
+ }
+
+\renewcommand\indexname{索~引}
+
+\renewcommand\figurename{圖}
+\renewcommand\tablename{表}
+
+\newcommand\prepartname{第}
+\newcommand\postpartname{部}
+%\newcommand{\postpartname}{部分}
+\renewcommand\partformat{\prepartname\CJKnumber{\value{part}}\postpartname}
+
+
+% \newcommand\presectionname{第}
+% \newcommand\postsectionname{節}
+% \renewcommand\appendixname{附~錄}
+
+\CJK@ifundefined\mainmatter
+ {\renewcommand\abstractname{摘~è¦}}{}
+
+% \renewcommand\ccname{} % ?
+% \renewcommand\enclname{附件}
+% \newcommand\prepagename{} % ?
+% \newcommand\postpagename{} % ?
+% \renewcommand\headtoname{} % ?
+% \renewcommand\seename{} % ?
+
+\renewcommand{\today}{\number\year 年 \number\month 月 \number\day 日}
+\CJK@ifundefined\CJKnumber
+ {\def\CJKnumber#1{\ifcase #1\or
+ 一\or 二\or 三\or 四\or 五\or
+ å…­\or 七\or å…«\or ä¹\or å\fi}}{}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/extended.chr b/language/chinese/CJK/cjk-4.8.5/texinput/extended.chr
new file mode 100644
index 0000000000..38cd923aa9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/extended.chr
@@ -0,0 +1,219 @@
+% This is the file extended.chr of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{extended.chr}[\filedate\space\fileversion]
+
+
+% define macros for handling extended encodings (GBK, Big5+).
+
+\gdef\CJK@extendedChr{
+ \CJK@global\chardef\CJK@gap "07F\relax
+
+ \CJK@global\def\CJK@char##1##2##3{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##3\relax
+ \ifnum ##3 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \fi
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% the same, but the plane crosses the font file boundary.
+
+ \CJK@global\def\CJK@charx##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \@tempcntb 256\relax
+ \ifnum ##4 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \advance\@tempcntb \@ne
+ \fi
+ \advance\@tempcnta ##3\relax
+ \advance\@tempcntb -##3\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##4 < \@temp
+ \edef\CJK@plane{##1}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##2}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% for punctuation.
+
+ \CJK@global\def\CJK@punctchar##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##4}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \ifnum ##4 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \fi
+ \advance\@tempcnta ##3\relax
+ \edef\CJK@plane{##2}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}
+
+ \CJK@global\def\CJK@punctcharx##1##2##3##4##5{
+ {\ifnum ##5 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##5 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##5}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##5\relax
+ \@tempcntb 256\relax
+ \ifnum ##5 > \CJK@gap
+ \advance\@tempcnta \m@ne
+ \advance\@tempcntb \@ne
+ \fi
+ \advance\@tempcnta ##4\relax
+ \advance\@tempcntb -##4\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##5 < \@temp
+ \edef\CJK@plane{##2}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##3}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/extended.enc b/language/chinese/CJK/cjk-4.8.5/texinput/extended.enc
new file mode 100644
index 0000000000..10d0ce146d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/extended.enc
@@ -0,0 +1,289 @@
+% This is the file extended.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{extended.enc}[\filedate\space\fileversion]
+
+
+% extended encoding:
+% each plane has 190 characters (GBK, Big5+) (0x40-0x7E, 0x80-0xFE).
+
+\gdef\CJK@extendedEncoding{
+ \CJK@loadChr{extended}
+
+ \CJK@namegdef{^^81}##1{\CJK@disableMakeUppercase
+ \CJK@char {01}{-64}{##1}}
+ \CJK@namegdef{^^82}##1{\CJK@disableMakeUppercase
+ \CJK@charx{01}{02}{126}{##1}}
+ \CJK@namegdef{^^83}##1{\CJK@disableMakeUppercase
+ \CJK@charx{02}{03}{ 60}{##1}}
+ \CJK@namegdef{^^84}##1{\CJK@disableMakeUppercase
+ \CJK@char {03}{ -6}{##1}}
+ \CJK@namegdef{^^85}##1{\CJK@disableMakeUppercase
+ \CJK@charx{03}{04}{184}{##1}}
+ \CJK@namegdef{^^86}##1{\CJK@disableMakeUppercase
+ \CJK@charx{04}{05}{118}{##1}}
+ \CJK@namegdef{^^87}##1{\CJK@disableMakeUppercase
+ \CJK@charx{05}{06}{ 52}{##1}}
+ \CJK@namegdef{^^88}##1{\CJK@disableMakeUppercase
+ \CJK@char {06}{-14}{##1}}
+ \CJK@namegdef{^^89}##1{\CJK@disableMakeUppercase
+ \CJK@charx{06}{07}{176}{##1}}
+ \CJK@namegdef{^^8a}##1{\CJK@disableMakeUppercase
+ \CJK@charx{07}{08}{110}{##1}}
+ \CJK@namegdef{^^8b}##1{\CJK@disableMakeUppercase
+ \CJK@charx{08}{09}{ 44}{##1}}
+ \CJK@namegdef{^^8c}##1{\CJK@disableMakeUppercase
+ \CJK@char {09}{-22}{##1}}
+ \CJK@namegdef{^^8d}##1{\CJK@disableMakeUppercase
+ \CJK@charx{09}{10}{168}{##1}}
+ \CJK@namegdef{^^8e}##1{\CJK@disableMakeUppercase
+ \CJK@charx{10}{11}{102}{##1}}
+ \CJK@namegdef{^^8f}##1{\CJK@disableMakeUppercase
+ \CJK@charx{11}{12}{ 36}{##1}}
+ \CJK@namegdef{^^90}##1{\CJK@disableMakeUppercase
+ \CJK@char {12}{-30}{##1}}
+ \CJK@namegdef{^^91}##1{\CJK@disableMakeUppercase
+ \CJK@charx{12}{13}{160}{##1}}
+ \CJK@namegdef{^^92}##1{\CJK@disableMakeUppercase
+ \CJK@charx{13}{14}{ 94}{##1}}
+ \CJK@namegdef{^^93}##1{\CJK@disableMakeUppercase
+ \CJK@charx{14}{15}{ 28}{##1}}
+ \CJK@namegdef{^^94}##1{\CJK@disableMakeUppercase
+ \CJK@char {15}{-38}{##1}}
+ \CJK@namegdef{^^95}##1{\CJK@disableMakeUppercase
+ \CJK@charx{15}{16}{152}{##1}}
+ \CJK@namegdef{^^96}##1{\CJK@disableMakeUppercase
+ \CJK@charx{16}{17}{ 86}{##1}}
+ \CJK@namegdef{^^97}##1{\CJK@disableMakeUppercase
+ \CJK@charx{17}{18}{ 20}{##1}}
+ \CJK@namegdef{^^98}##1{\CJK@disableMakeUppercase
+ \CJK@char {18}{-46}{##1}}
+ \CJK@namegdef{^^99}##1{\CJK@disableMakeUppercase
+ \CJK@charx{18}{19}{144}{##1}}
+ \CJK@namegdef{^^9a}##1{\CJK@disableMakeUppercase
+ \CJK@charx{19}{20}{ 78}{##1}}
+ \CJK@namegdef{^^9b}##1{\CJK@disableMakeUppercase
+ \CJK@charx{20}{21}{ 12}{##1}}
+ \CJK@namegdef{^^9c}##1{\CJK@disableMakeUppercase
+ \CJK@char {21}{-54}{##1}}
+ \CJK@namegdef{^^9d}##1{\CJK@disableMakeUppercase
+ \CJK@charx{21}{22}{136}{##1}}
+ \CJK@namegdef{^^9e}##1{\CJK@disableMakeUppercase
+ \CJK@charx{22}{23}{ 70}{##1}}
+ \CJK@namegdef{^^9f}##1{\CJK@disableMakeUppercase
+ \CJK@charx{23}{24}{ 4}{##1}}
+ \CJK@namegdef{^^a0}##1{\CJK@disableMakeUppercase
+ \CJK@char {24}{-62}{##1}}
+ \CJK@namegdef{^^a1}##1{\CJK@disableMakeUppercase
+ \CJK@punctcharx{A1}{24}{25}{128}{##1}}
+ \CJK@namegdef{^^a2}##1{\CJK@disableMakeUppercase
+ \CJK@punctcharx{A2}{25}{26}{ 62}{##1}}
+ \CJK@namegdef{^^a3}##1{\CJK@disableMakeUppercase
+ \CJK@punctchar {A3}{26}{ -4}{##1}}
+ \CJK@namegdef{^^a4}##1{\CJK@disableMakeUppercase
+ \CJK@punctcharx{A4}{26}{27}{186}{##1}}
+ \CJK@namegdef{^^a5}##1{\CJK@disableMakeUppercase
+ \CJK@punctcharx{A5}{27}{28}{120}{##1}}
+ \CJK@namegdef{^^a6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{28}{29}{ 54}{##1}}
+ \CJK@namegdef{^^a7}##1{\CJK@disableMakeUppercase
+ \CJK@char {29}{-12}{##1}}
+ \CJK@namegdef{^^a8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{29}{30}{178}{##1}}
+ \CJK@namegdef{^^a9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{30}{31}{112}{##1}}
+ \CJK@namegdef{^^aa}##1{\CJK@disableMakeUppercase
+ \CJK@charx{31}{32}{ 46}{##1}}
+ \CJK@namegdef{^^ab}##1{\CJK@disableMakeUppercase
+ \CJK@char {32}{-20}{##1}}
+ \CJK@namegdef{^^ac}##1{\CJK@disableMakeUppercase
+ \CJK@charx{32}{33}{170}{##1}}
+ \CJK@namegdef{^^ad}##1{\CJK@disableMakeUppercase
+ \CJK@charx{33}{34}{104}{##1}}
+ \CJK@namegdef{^^ae}##1{\CJK@disableMakeUppercase
+ \CJK@charx{34}{35}{ 38}{##1}}
+ \CJK@namegdef{^^af}##1{\CJK@disableMakeUppercase
+ \CJK@char {35}{-28}{##1}}
+ \CJK@namegdef{^^b0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{35}{36}{162}{##1}}
+ \CJK@namegdef{^^b1}##1{\CJK@disableMakeUppercase
+ \CJK@charx{36}{37}{ 96}{##1}}
+ \CJK@namegdef{^^b2}##1{\CJK@disableMakeUppercase
+ \CJK@charx{37}{38}{ 30}{##1}}
+ \CJK@namegdef{^^b3}##1{\CJK@disableMakeUppercase
+ \CJK@char {38}{-36}{##1}}
+ \CJK@namegdef{^^b4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{38}{39}{154}{##1}}
+ \CJK@namegdef{^^b5}##1{\CJK@disableMakeUppercase
+ \CJK@charx{39}{40}{ 88}{##1}}
+ \CJK@namegdef{^^b6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{40}{41}{ 22}{##1}}
+ \CJK@namegdef{^^b7}##1{\CJK@disableMakeUppercase
+ \CJK@char {41}{-44}{##1}}
+ \CJK@namegdef{^^b8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{41}{42}{146}{##1}}
+ \CJK@namegdef{^^b9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{42}{43}{ 80}{##1}}
+ \CJK@namegdef{^^ba}##1{\CJK@disableMakeUppercase
+ \CJK@charx{43}{44}{ 14}{##1}}
+ \CJK@namegdef{^^bb}##1{\CJK@disableMakeUppercase
+ \CJK@char {44}{-52}{##1}}
+ \CJK@namegdef{^^bc}##1{\CJK@disableMakeUppercase
+ \CJK@charx{44}{45}{138}{##1}}
+ \CJK@namegdef{^^bd}##1{\CJK@disableMakeUppercase
+ \CJK@charx{45}{46}{ 72}{##1}}
+ \CJK@namegdef{^^be}##1{\CJK@disableMakeUppercase
+ \CJK@charx{46}{47}{ 6}{##1}}
+ \CJK@namegdef{^^bf}##1{\CJK@disableMakeUppercase
+ \CJK@char {47}{-60}{##1}}
+ \CJK@namegdef{^^c0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{47}{48}{130}{##1}}
+ \CJK@namegdef{^^c1}##1{\CJK@disableMakeUppercase
+ \CJK@charx{48}{49}{ 64}{##1}}
+ \CJK@namegdef{^^c2}##1{\CJK@disableMakeUppercase
+ \CJK@char {49}{ -2}{##1}}
+ \CJK@namegdef{^^c3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{49}{50}{188}{##1}}
+ \CJK@namegdef{^^c4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{50}{51}{122}{##1}}
+ \CJK@namegdef{^^c5}##1{\CJK@disableMakeUppercase
+ \CJK@charx{51}{52}{ 56}{##1}}
+ \CJK@namegdef{^^c6}##1{\CJK@disableMakeUppercase
+ \CJK@char {52}{-10}{##1}}
+ \CJK@namegdef{^^c7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{52}{53}{180}{##1}}
+ \CJK@namegdef{^^c8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{53}{54}{114}{##1}}
+ \CJK@namegdef{^^c9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{54}{55}{ 48}{##1}}
+ \CJK@namegdef{^^ca}##1{\CJK@disableMakeUppercase
+ \CJK@char {55}{-18}{##1}}
+ \CJK@namegdef{^^cb}##1{\CJK@disableMakeUppercase
+ \CJK@charx{55}{56}{172}{##1}}
+ \CJK@namegdef{^^cc}##1{\CJK@disableMakeUppercase
+ \CJK@charx{56}{57}{106}{##1}}
+ \CJK@namegdef{^^cd}##1{\CJK@disableMakeUppercase
+ \CJK@charx{57}{58}{ 40}{##1}}
+ \CJK@namegdef{^^ce}##1{\CJK@disableMakeUppercase
+ \CJK@char {58}{-26}{##1}}
+ \CJK@namegdef{^^cf}##1{\CJK@disableMakeUppercase
+ \CJK@charx{58}{59}{164}{##1}}
+ \CJK@namegdef{^^d0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{59}{60}{ 98}{##1}}
+ \CJK@namegdef{^^d1}##1{\CJK@disableMakeUppercase
+ \CJK@charx{60}{61}{ 32}{##1}}
+ \CJK@namegdef{^^d2}##1{\CJK@disableMakeUppercase
+ \CJK@char {61}{-34}{##1}}
+ \CJK@namegdef{^^d3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{61}{62}{156}{##1}}
+ \CJK@namegdef{^^d4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{62}{63}{ 90}{##1}}
+ \CJK@namegdef{^^d5}##1{\CJK@disableMakeUppercase
+ \CJK@charx{63}{64}{ 24}{##1}}
+ \CJK@namegdef{^^d6}##1{\CJK@disableMakeUppercase
+ \CJK@char {64}{-42}{##1}}
+ \CJK@namegdef{^^d7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{64}{65}{148}{##1}}
+ \CJK@namegdef{^^d8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{65}{66}{ 82}{##1}}
+ \CJK@namegdef{^^d9}##1{\CJK@disableMakeUppercase
+ \CJK@charx{66}{67}{ 16}{##1}}
+ \CJK@namegdef{^^da}##1{\CJK@disableMakeUppercase
+ \CJK@char {67}{-50}{##1}}
+ \CJK@namegdef{^^db}##1{\CJK@disableMakeUppercase
+ \CJK@charx{67}{68}{140}{##1}}
+ \CJK@namegdef{^^dc}##1{\CJK@disableMakeUppercase
+ \CJK@charx{68}{69}{ 74}{##1}}
+ \CJK@namegdef{^^dd}##1{\CJK@disableMakeUppercase
+ \CJK@charx{69}{70}{ 8}{##1}}
+ \CJK@namegdef{^^de}##1{\CJK@disableMakeUppercase
+ \CJK@char {70}{-58}{##1}}
+ \CJK@namegdef{^^df}##1{\CJK@disableMakeUppercase
+ \CJK@charx{70}{71}{132}{##1}}
+ \CJK@namegdef{^^e0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{71}{72}{ 66}{##1}}
+ \CJK@namegdef{^^e1}##1{\CJK@disableMakeUppercase
+ \CJK@char {72}{ 0}{##1}}
+ \CJK@namegdef{^^e2}##1{\CJK@disableMakeUppercase
+ \CJK@charx{72}{73}{190}{##1}}
+ \CJK@namegdef{^^e3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{73}{74}{124}{##1}}
+ \CJK@namegdef{^^e4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{74}{75}{ 58}{##1}}
+ \CJK@namegdef{^^e5}##1{\CJK@disableMakeUppercase
+ \CJK@char {75}{ -8}{##1}}
+ \CJK@namegdef{^^e6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{75}{76}{182}{##1}}
+ \CJK@namegdef{^^e7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{76}{77}{116}{##1}}
+ \CJK@namegdef{^^e8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{77}{78}{ 50}{##1}}
+ \CJK@namegdef{^^e9}##1{\CJK@disableMakeUppercase
+ \CJK@char {78}{-16}{##1}}
+ \CJK@namegdef{^^ea}##1{\CJK@disableMakeUppercase
+ \CJK@charx{78}{79}{174}{##1}}
+ \CJK@namegdef{^^eb}##1{\CJK@disableMakeUppercase
+ \CJK@charx{79}{80}{108}{##1}}
+ \CJK@namegdef{^^ec}##1{\CJK@disableMakeUppercase
+ \CJK@charx{80}{81}{ 42}{##1}}
+ \CJK@namegdef{^^ed}##1{\CJK@disableMakeUppercase
+ \CJK@char {81}{-24}{##1}}
+ \CJK@namegdef{^^ee}##1{\CJK@disableMakeUppercase
+ \CJK@charx{81}{82}{166}{##1}}
+ \CJK@namegdef{^^ef}##1{\CJK@disableMakeUppercase
+ \CJK@charx{82}{83}{100}{##1}}
+ \CJK@namegdef{^^f0}##1{\CJK@disableMakeUppercase
+ \CJK@charx{83}{84}{ 34}{##1}}
+ \CJK@namegdef{^^f1}##1{\CJK@disableMakeUppercase
+ \CJK@char {84}{-32}{##1}}
+ \CJK@namegdef{^^f2}##1{\CJK@disableMakeUppercase
+ \CJK@charx{84}{85}{158}{##1}}
+ \CJK@namegdef{^^f3}##1{\CJK@disableMakeUppercase
+ \CJK@charx{85}{86}{ 92}{##1}}
+ \CJK@namegdef{^^f4}##1{\CJK@disableMakeUppercase
+ \CJK@charx{86}{87}{ 26}{##1}}
+ \CJK@namegdef{^^f5}##1{\CJK@disableMakeUppercase
+ \CJK@char {87}{-40}{##1}}
+ \CJK@namegdef{^^f6}##1{\CJK@disableMakeUppercase
+ \CJK@charx{87}{88}{150}{##1}}
+ \CJK@namegdef{^^f7}##1{\CJK@disableMakeUppercase
+ \CJK@charx{88}{89}{ 84}{##1}}
+ \CJK@namegdef{^^f8}##1{\CJK@disableMakeUppercase
+ \CJK@charx{89}{90}{ 18}{##1}}
+ \CJK@namegdef{^^f9}##1{\CJK@disableMakeUppercase
+ \CJK@char {90}{-48}{##1}}
+ \CJK@namegdef{^^fa}##1{\CJK@disableMakeUppercase
+ \CJK@charx{90}{91}{142}{##1}}
+ \CJK@namegdef{^^fb}##1{\CJK@disableMakeUppercase
+ \CJK@charx{91}{92}{ 76}{##1}}
+ \CJK@namegdef{^^fc}##1{\CJK@disableMakeUppercase
+ \CJK@charx{92}{93}{ 10}{##1}}
+ \CJK@namegdef{^^fd}##1{\CJK@disableMakeUppercase
+ \CJK@char {93}{-56}{##1}}
+ \CJK@namegdef{^^fe}##1{\CJK@disableMakeUppercase
+ \CJK@charx{93}{94}{134}{##1}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/mule/MULEenc.sty b/language/chinese/CJK/cjk-4.8.5/texinput/mule/MULEenc.sty
new file mode 100644
index 0000000000..d9e608ae02
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/mule/MULEenc.sty
@@ -0,0 +1,501 @@
+% This is the file MULEenc.sty of the CJK package
+% providing an interface to `cjk-enc.el' (a special Emacs mode)
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\makeatletter
+\endlinechar \m@ne
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesPackage{MULEenc}[\filedate\space\fileversion]
+\NeedsTeXFormat{LaTeX2e}[1998/06/01]
+
+
+% to allow Latin encodings in verbatim environments we activate the
+% character ^^7f and define it as a multiplex character which executes
+% its first argument; it will also be used as a delimiter.
+
+\catcode "7F \active
+
+\def^^7f{
+ \ifx\protect \@typeset@protect
+ \expandafter\mule@arg
+ \else
+ \noexpand ^^7f
+ \fi}
+
+\def\mule@arg#1^^7f#2^^7f{
+ \mule@@arg #2^^7f#1^^7f#2^^7f}
+
+\def\mule@@arg#1^^7f{
+ \mule@ifbslash #1^^7f
+ \expandafter\mule@@@arg
+ \else
+ \expandafter\mule@exec
+ \fi}
+
+\def\mule@@@arg#1^^7f#2^^7f{
+ \csname mule@\string #1\endcsname{#2}}
+
+
+% the pseudo-if \mule@ifbslash tests whether its argument contains a
+% backslash with a character category code (this happens in verbatim
+% environments). We need to change the catcode of `\' locally to
+% achieve that.
+%
+% \mule@exec then swallows this backslash so we can call \csname (twice).
+%
+% All these weird constructions assure that we do not lose kerning between
+% characters---only macro expansion is allowed!
+
+\let\mule@@@ \@empty
+
+{\catcode`\|=\z@
+ \catcode`\\=12\relax
+ |gdef|mule@ifbslash#1^^7f{
+ |mule@@ifbslash #1\^^7f}
+ |gdef|mule@@ifbslash#1\#2^^7f{
+ |expandafter|expandafter|expandafter|ifx
+ |expandafter|csname |string #2mule@@@|endcsname |@empty}
+ |gdef|mule@exec#1^^7f\#2^^7f{
+ |expandafter|csname
+ mule@#1|expandafter |endcsname |csname #2|endcsname}
+}
+
+
+% here come the definitions for the macros cjk-enc.el emits.
+
+% first some \let's to avoid problems in tabbing environments.
+
+\AtBeginDocument{
+ \let\mule@acute \'
+ \let\mule@grave \`
+ \let\mule@macron \=
+ \let\mule@hacek \v}
+
+% and now the missing definitions for cjk-enc.el to represent Latin
+% encodings.
+
+% these definitions may be overridden with \ProvideTextCommandDefault
+% commands.
+
+\def\textonequarter{\ensuremath{\frac14}}
+\def\textonehalf{\ensuremath{\frac12}}
+\def\textthreequarters{\ensuremath{\frac34}}
+
+% LaTeX defines the following macros as \math... instead of \text...,
+% but we want that all commands work in text mode.
+
+\def\textonesuperior{\ensuremath{{^1}}}
+\def\texttwosuperior{\ensuremath{{^2}}}
+\def\textthreesuperior{\ensuremath{{^3}}}
+
+% the next macros are text versions of the corresponding math macros.
+
+\def\textlnot{\ensuremath{\lnot}}
+\def\textpm{\ensuremath{\pm}}
+\def\textmu{\ensuremath{\mu}}
+\def\texttimes{\ensuremath{\times}}
+\def\textdiv{\ensuremath{\div}}
+
+% this macro is not in the LaTeX 2e base package
+
+\def\textcommercialat{\char64}
+
+% the following macro is not defined in standard LaTeX2e.
+%
+% JIS X 0201: 0x7E \textoverscore (U+203E)
+
+
+% to make the multiplex macro work with \uppercase and \lowercase too,
+% numbers are used as parameters in the ^^7f macro.
+
+\def\mule@def#1{\expandafter\def\csname mule@\string #1\endcsname}
+
+% accents
+
+\mule@def{8}{\"}
+\mule@def{15}{\mule@macron}
+\mule@def{20}{\mule@acute}
+\mule@def{24}{\c}
+\mule@def{32}{\mule@grave}
+\mule@def{33}{\^}
+\mule@def{34}{\~}
+\mule@def{48}{\k}
+\mule@def{49}{\u}
+\mule@def{51}{\mule@hacek}
+\mule@def{52}{\.}
+\mule@def{53}{\r}
+\mule@def{55}{\H}
+
+% Vietnamese hook (\h; only defined in T5 encoding) and dot below accent
+
+\mule@def{71}{\d}
+\mule@def{73}{\h}
+
+% symbols
+
+\mule@def{1}{\textexclamdown}
+\mule@def{2}{\textcent}
+\mule@def{3}{\textsterling}
+\mule@def{4}{\textcurrency}
+\mule@def{5}{\textyen}
+\mule@def{6}{\textbrokenbar}
+\mule@def{7}{\S}
+\mule@def{9}{\copyright}
+\mule@def{10}{\textordfeminine}
+\mule@def{11}{\guillemotleft}
+\mule@def{12}{\textlnot}
+\mule@def{14}{\textregistered}
+\mule@def{16}{\textdegree}
+\mule@def{17}{\textpm}
+\mule@def{18}{\texttwosuperior}
+\mule@def{19}{\textthreesuperior}
+\mule@def{21}{\textmu}
+\mule@def{22}{\P}
+\mule@def{23}{\textperiodcentered}
+\mule@def{25}{\textonesuperior}
+\mule@def{26}{\textordmasculine}
+\mule@def{27}{\guillemotright}
+\mule@def{28}{\textonequarter}
+\mule@def{29}{\textonehalf}
+\mule@def{30}{\textthreequarters}
+\mule@def{31}{\textquestiondown}
+\mule@def{36}{\textcommercialat}
+\mule@def{37}{\textquotedbl}
+\mule@def{38}{\texttimes}
+\mule@def{39}{\textdollar}
+\mule@def{40}{\textquoteright}
+\mule@def{41}{\textless}
+\mule@def{42}{\textgreater}
+\mule@def{43}{\textasciicircum}
+\mule@def{44}{\textunderscore}
+\mule@def{45}{\textdiv}
+\mule@def{46}{\textquoteleft}
+\mule@def{47}{\textbraceleft}
+\mule@def{50}{\textbar}
+\mule@def{54}{\textbraceright}
+\mule@def{56}{\textoverscore}
+\mule@def{99}{\nobreakspace}
+
+\mule@def{35}{\textnumero} % Cyrillic Number Sign
+
+% letters
+
+\let\TEXTMALTESEH \textmalteseH
+\def\I{I} % uppercase form of \i
+
+\let\TEXTTSTROKE \textTstroke
+\mule@def{59}{\textkra}
+
+% commands
+
+\mule@def{0}{\@firstofone} % for commands as arguments which exist
+ % in both uppercase and lowercase forms
+ % like \AA and \aa
+\mule@def{64}{\CJKspace\@gobble}
+\mule@def{65}{\CJKnospace\@gobble}
+\mule@def{66}{\CJKenc{JIS}\@gobble}
+\mule@def{67}{\CJKenc{GB}\@gobble}
+\mule@def{68}{\CJKenc{Bg5}\@gobble}
+\mule@def{69}{\CJKenc{KS}\@gobble}
+\mule@def{70}{\CJKenc{SJIS}\@gobble}
+
+% in previous versions we have used ^^a0 for calling \CJKchar, but to
+% support GBK and Big 5+ encodings which both need this slot we use the
+% ^^7f interface also.
+
+\mule@def{72}{\mule@@@@arg}
+
+\def\mule@@@@arg#1^^7f#2^^7f#3^^7f{
+ \uppercase{\CJKchar[#1]{#2}{#3}}}
+
+
+% Thai support. We need the many \bgroup and \egroup commands to make it
+% work with ulem.sty.
+
+\mule@def{57}{\bgroup\fontencoding{C90}\selectfont
+ \bgroup\bgroup\@gobble} % begin Thai
+\mule@def{58}{\egroup
+ \egroup\egroup\@gobble} % end Thai
+\mule@def{60}{\mule@char} % Thai diacritic
+\mule@def{61}{\Thaibreak\@gobble} % Thai word break
+\mule@def{62}{\nobreak\Thaiglue\nobreak\mule@char} % Thai base character
+\mule@def{63}{\mule@ignorespaces} % Thai EOL
+
+\def\mule@char#1{\char #1 }
+\def\mule@ignorespaces#1{\ignorespaces}
+
+\newcommand{\Thaiglue}{\hskip \z@ \@plus .03\baselineskip}
+\newcommand{\Thaibreak}{\hskip \z@}
+
+\newcommand{\Thaispace}{\mule@def{63}{}}
+\newcommand{\Thainospace}{\mule@def{63}{\mule@ignorespaces}}
+
+
+% preprocessed mode now uses the ^^7f interface for CJK characters also
+% to make it coexist with normal mode.
+%
+% the \@gobble macro is used to swallow the first element in \CJK@<number>;
+% this is either \CJK@disableMakeUppercase or \relax if not needed.
+
+\def\mule@@def#1{
+ \expandafter\def\csname mule@\string #1\endcsname##1{
+ \expandafter\expandafter\expandafter\@gobble
+ \csname CJK@\number `#1\endcsname{##1}
+ \CJK@ignorespaces}}
+
+\mule@@def{^^81}
+\mule@@def{^^82}
+\mule@@def{^^83}
+\mule@@def{^^84}
+\mule@@def{^^85}
+\mule@@def{^^86}
+\mule@@def{^^87}
+\mule@@def{^^88}
+\mule@@def{^^89}
+\mule@@def{^^8a}
+\mule@@def{^^8b}
+\mule@@def{^^8c}
+\mule@@def{^^8d}
+\mule@@def{^^8e}
+\mule@@def{^^8f}
+\mule@@def{^^90}
+\mule@@def{^^91}
+\mule@@def{^^92}
+\mule@@def{^^93}
+\mule@@def{^^94}
+\mule@@def{^^95}
+\mule@@def{^^96}
+\mule@@def{^^97}
+\mule@@def{^^98}
+\mule@@def{^^99}
+\mule@@def{^^9a}
+\mule@@def{^^9b}
+\mule@@def{^^9c}
+\mule@@def{^^9d}
+\mule@@def{^^9e}
+\mule@@def{^^9f}
+\mule@@def{^^a0}
+\mule@@def{^^a1}
+\mule@@def{^^a2}
+\mule@@def{^^a3}
+\mule@@def{^^a4}
+\mule@@def{^^a5}
+\mule@@def{^^a6}
+\mule@@def{^^a7}
+\mule@@def{^^a8}
+\mule@@def{^^a9}
+\mule@@def{^^aa}
+\mule@@def{^^ab}
+\mule@@def{^^ac}
+\mule@@def{^^ad}
+\mule@@def{^^ae}
+\mule@@def{^^af}
+\mule@@def{^^b0}
+\mule@@def{^^b1}
+\mule@@def{^^b2}
+\mule@@def{^^b3}
+\mule@@def{^^b4}
+\mule@@def{^^b5}
+\mule@@def{^^b6}
+\mule@@def{^^b7}
+\mule@@def{^^b8}
+\mule@@def{^^b9}
+\mule@@def{^^ba}
+\mule@@def{^^bb}
+\mule@@def{^^bc}
+\mule@@def{^^bd}
+\mule@@def{^^be}
+\mule@@def{^^bf}
+\mule@@def{^^c0}
+\mule@@def{^^c1}
+\mule@@def{^^c2}
+\mule@@def{^^c3}
+\mule@@def{^^c4}
+\mule@@def{^^c5}
+\mule@@def{^^c6}
+\mule@@def{^^c7}
+\mule@@def{^^c8}
+\mule@@def{^^c9}
+\mule@@def{^^ca}
+\mule@@def{^^cb}
+\mule@@def{^^cc}
+\mule@@def{^^cd}
+\mule@@def{^^ce}
+\mule@@def{^^cf}
+\mule@@def{^^d0}
+\mule@@def{^^d1}
+\mule@@def{^^d2}
+\mule@@def{^^d3}
+\mule@@def{^^d4}
+\mule@@def{^^d5}
+\mule@@def{^^d6}
+\mule@@def{^^d7}
+\mule@@def{^^d8}
+\mule@@def{^^d9}
+\mule@@def{^^da}
+\mule@@def{^^db}
+\mule@@def{^^dc}
+\mule@@def{^^dd}
+\mule@@def{^^de}
+\mule@@def{^^df}
+\mule@@def{^^e0}
+\mule@@def{^^e1}
+\mule@@def{^^e2}
+\mule@@def{^^e3}
+\mule@@def{^^e4}
+\mule@@def{^^e5}
+\mule@@def{^^e6}
+\mule@@def{^^e7}
+\mule@@def{^^e8}
+\mule@@def{^^e9}
+\mule@@def{^^ea}
+\mule@@def{^^eb}
+\mule@@def{^^ec}
+\mule@@def{^^ed}
+\mule@@def{^^ee}
+\mule@@def{^^ef}
+\mule@@def{^^f0}
+\mule@@def{^^f1}
+\mule@@def{^^f2}
+\mule@@def{^^f3}
+\mule@@def{^^f4}
+\mule@@def{^^f5}
+\mule@@def{^^f6}
+\mule@@def{^^f7}
+\mule@@def{^^f8}
+\mule@@def{^^f9}
+\mule@@def{^^fa}
+\mule@@def{^^fb}
+\mule@@def{^^fc}
+\mule@@def{^^fd}
+\mule@@def{^^fe}
+
+
+% if the `verbatim' package is loaded it is possible to improve the output
+% automatically, namely, to avoid breaking of overfull lines in a
+% verbatim environment. The following command will install a hook to
+% suppress insertion of glue between Thai glyphs. CJK.sty will extend
+% it for CJK glyphs.
+%
+\def\mule@verbatim{
+ \addto@hook{\every@verbatim}{
+ \renewcommand{\Thaiglue}{}
+ \mule@def{61}{}}}
+\ifx\CJK@verbatim \@undefined
+ \def\CJK@verbatim{}
+\fi
+
+\def\CJKverbatim{
+ \mule@verbatim
+ \CJK@verbatim}
+
+
+% here comes our special include command which will load <file>.cjk
+% instead of <file>.tex
+
+\def\CJKinclude#1{
+ \relax
+
+ \ifnum\@auxout = \@partaux
+ \@latex@error{\string\CJKinclude\space cannot be nested}
+ \@eha
+ \else
+ \CJK@include#1 %
+ \fi
+}
+
+\def\CJK@include#1 {
+ \clearpage
+
+ \if@filesw
+ \immediate\write\@mainaux{\string\@input{#1.aux}}
+ \fi
+
+ \@tempswatrue
+
+ \if@partsw
+ \@tempswafalse
+ \edef\reserved@b{#1}
+ \@for\reserved@a:=\@partlist\do
+ {\ifx\reserved@a \reserved@b
+ \@tempswatrue
+ \fi
+ }
+ \fi
+
+ \if@tempswa
+ \let\@auxout\@partaux
+ \if@filesw
+ \immediate\openout\@partaux #1.aux
+ \immediate\write\@partaux{\relax}
+ \fi
+ \@input@{#1.cjk}
+ \clearpage
+ \@writeckpt{#1}
+ \if@filesw
+ \immediate\closeout\@partaux
+ \fi
+ \else
+ \deadcycles\z@
+ \@nameuse{cp@#1}
+ \fi
+
+ \let\@auxout\@mainaux
+}
+
+
+% the same for the bibliography
+
+\def\CJKbibliography#1{
+ \if@filesw
+ \immediate\write\@auxout{\string\bibdata{#1-cjk}}%
+ \fi
+ \@input@{\jobname.bbl}
+}
+
+
+% here our special input command -- cjk-enc.el will scan files included with
+% \CJKinput, but not with \input.
+%
+% We only want the syntax form of \input with braces around the parameter.
+% If no file name extension is given, `cjk' is used.
+
+\def\CJKinput#1{
+ \filename@parse{#1}
+ \ifx\filename@ext \relax
+ \def\filename@ext{cjk}
+ \fi
+ \InputIfFileExists{\filename@area\filename@base.\filename@ext}
+ {}
+ {\edef\reserved@a{
+ \noexpand\@missingfileerror
+ {\filename@area\filename@base}
+ {\filename@ext}}
+ \reserved@a}}
+
+
+\endlinechar `\^^M
+\makeatother
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/pinyin.sty b/language/chinese/CJK/cjk-4.8.5/texinput/pinyin.sty
new file mode 100644
index 0000000000..b9b1553ee2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/pinyin.sty
@@ -0,0 +1,1234 @@
+% This is the file pinyin.sty of the CJK package
+% to input Chinese in pinyin transcription
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+%
+% This style file works with plain TeX also.
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+
+\catcode`@=11
+\endlinechar \m@ne
+
+% Older versions of the PostScript virtual files don't contain a macron
+% accent at all (e.g. Palatino). Under LaTeX, you can activate the
+% CM macron version with the package option `useCMmacron'.
+
+\newif\ifpy@useCMmacron@
+\py@useCMmacron@false
+
+\ifx\NeedsTeXFormat \@undefined
+ \message{Package: pinyin \filedate\space\fileversion}
+\else
+ \ProvidesPackage{pinyin}[\filedate\space\fileversion]
+
+ \DeclareOption{useCMmacron}{\py@useCMmacron@true}
+ \ProcessOptions
+\fi
+
+
+% Similar to the CJK and ruby packages we need a special kern to indicate
+% hyphenation between pinyin syllables. Values 1sp-3sp are already used
+% by those packages.
+
+\edef\py@sp{\kern -4sp\kern 4sp}
+
+
+% We must preserve various TeX macros because their names overlap with
+% pinyin syllables. The only exception is the internal command \long which
+% can't be renamed because almost all other packages would fail.
+%
+% Note that \ding is not a basic LaTeX macro but defined in pifont.sty, part
+% of the psnfss package.
+%
+% All other pinyin syllables will be defined below.
+
+\let\PYa=\a
+\let\PYchi=\chi
+\let\PYcong=\cong
+\let\PYding=\ding
+\let\PYge=\ge
+\let\PYhang=\hang
+\let\PYle=\le
+%\let\PYlong=\long -> we use \Long and \LONG instead
+\let\PYmin=\min
+\let\PYmu=\mu
+\let\PYne=\ne
+\let\PYni=\ni
+\let\PYnu=\nu
+\let\PYo=\o
+\let\PYO=\O
+\let\PYpi=\pi
+\let\PYPi=\Pi
+\let\PYRe=\Re
+\let\PYtan=\tan
+\let\PYxi=\xi
+\let\PYXi=\Xi
+
+\def\PYactivate{
+ \let\a=\py@@a
+ \let\chi=\py@chi
+ \let\cong=\py@cong
+ \let\ding=\py@ding
+ \let\ge=\py@ge
+ \let\hang=\py@hang
+ \let\le=\py@le
+ \let\min=\py@min
+ \let\mu=\py@mu
+ \let\ne=\py@ne
+ \let\ni=\py@ni
+ \let\nu=\py@nu
+ \let\o=\py@@o
+ \let\O=\py@@O
+ \let\pi=\py@pi
+ \let\Pi=\py@Pi
+ \let\Re=\py@Re
+ \let\tan=\py@tan
+ \let\xi=\py@xi
+ \let\Xi=\py@Xi}
+
+\def\PYdeactivate{
+ \let\a=\PYa
+ \let\chi=\PYchi
+ \let\cong=\PYcong
+ \let\ding=\PYding
+ \let\ge=\PYge
+ \let\hang=\PYhang
+ \let\le=\PYle
+ \let\min=\PYmin
+ \let\mu=\PYmu
+ \let\ne=\PYne
+ \let\ni=\PYni
+ \let\nu=\PYnu
+ \let\o=\PYo
+ \let\O=\PYO
+ \let\pi=\PYpi
+ \let\Pi=\PYPi
+ \let\Re=\PYRe
+ \let\tan=\PYtan
+ \let\xi=\PYxi
+ \let\Xi=\PYXi}
+
+
+% We use our own names for the accent macros so they will also work in
+% tabbing environments.
+
+\let\py@acute \'
+\let\py@hacek \v
+\let\py@grave \`
+
+
+% Macrons of the EC fonts are far too high for the first tone, and most
+% T1 encoded fonts follow this for compatibility reasons. However,
+% T5 encoded fonts don't exhibit this behaviour.
+
+\def\py@macron#1#2{
+ \edef\py@mcorr{0}
+ \edef\py@temp{T1}
+ \ifx\f@encoding \py@temp
+ \chardef\py@mcr 9\relax% T1 fonts
+ \else
+ \edef\py@temp{T5}
+ \ifx\f@encoding \py@temp
+ \chardef\py@mcr 9\relax% T5 fonts
+ \edef\py@mcorr{-.3}
+ \else
+ \chardef\py@mcr 22\relax% OT1 fonts
+ \fi
+ \fi
+
+ {\leavevmode
+ \dimen@ii 1ex
+ \ifpy@useCMmacron@
+ \edef\py@temp{\f@family}
+ \fontfamily{cmr}
+ \selectfont
+ \fi
+ \setbox\z@ \hbox{\char\py@mcr}
+ \dimen@ -#2ex
+ \advance\dimen@ \py@mcorr ex
+ \advance\dimen@ \ht\z@
+ \ifdim 1ex < \dimen@
+ \fontdimen5\font \dimen@
+ \fi
+ \accent\py@mcr
+ \ifpy@useCMmacron@
+ \fontfamily\py@temp
+ \selectfont
+ \fi
+ \fontdimen5\font \dimen@ii
+ #1}}
+
+% Here a replacement version for bookmarks in PDFs.
+
+\def\py@hr@macron#1#2{
+ \=#1
+}
+
+
+% The following command outputs the kern between two letters.
+
+\def\py@kern#1#2{
+ {\setbox\z@ \hbox{#1#2}
+ \dimen@ \wd\z@
+ \setbox\z@ \hbox{#1{}#2}
+ \advance\dimen@ -\wd\z@
+ \kern\dimen@}}
+
+
+% To make \MakeUppercase and \MakeLowercase work, we use a generic macro
+% which constructs the necessary pinyin macros by using the first
+% argument.
+
+\def\py@#1{
+ \csname py@#1\endcsname
+}
+
+% Here are the macros to produce various accents over the vocals.
+
+\def\py@@#1#2#3#4{
+ \py@kern{#2}#1
+ \ifcase #4
+ \or\py@macron #1{.3}\or\py@acute #1\or\py@hacek #1\or\py@grave #1\or #1
+ \fi
+ \py@kern #1{#3}}
+
+\def\py@a{\py@@ a}
+\def\py@A{\py@@ A}
+
+\def\py@e{\py@@ e}
+\def\py@E{\py@@ E}
+
+\def\py@i#1#2#3{
+ \py@kern{#1}i
+ \ifcase #3
+ \or\py@macron\i{.3}\or\py@acute\i\or\py@hacek\i\or\py@grave\i\or i
+ \fi
+ \py@kern i{#2}}
+\def\py@I{\py@@ I}
+
+\def\py@o{\py@@ o}
+\def\py@O{\py@@ O}
+
+\def\py@u{\py@@ u}
+\def\py@U{\py@@ U}
+
+% the previous definitions are almost trivial. The only tricky macro is the
+% following one. Above the u with umlaut dots we must place the four tone
+% modifiers. To get a better appearance, we lower the umlaut dots as much
+% as possible. The algorithm used here has been tested with the standard
+% cm, ec, and PostScript fonts; it was taken from german.sty .
+
+\def\py@@v#1#2#3#4{
+ \edef\py@temp{T1}
+ \ifx\f@encoding \py@temp
+ \chardef\py@umlaut 4\relax% T1 fonts
+ \chardef\py@ac \@ne
+ \chardef\py@gr \z@
+ \else
+ \edef\py@temp{T5}
+ \ifx\f@encoding \py@temp
+ \chardef\py@umlaut 4\relax% T5 fonts
+ \chardef\py@ac \@ne
+ \chardef\py@gr \z@
+ \else
+ \chardef\py@umlaut 127\relax% OT1 fonts
+ \chardef\py@ac 19\relax
+ \chardef\py@gr 18\relax
+ \fi
+ \fi
+
+ {\leavevmode
+ \dimen@ii 1ex
+ \setbox\z@ \hbox{\char\py@umlaut}
+ \dimen@ -.4ex
+ \advance\dimen@ \ht\z@
+ \ifdim 1ex < \dimen@
+ \fontdimen5\font \dimen@
+ \dimen@ .55ex
+ \else
+ \dimen@ .7ex
+ \fi
+ \py@kern{#2}#1
+ \rlap{\accent\py@umlaut #1}
+ \fontdimen5\font \dimen@
+ \ifcase #4
+ \or\py@macron #1{1.1}
+ \or\accent\py@ac #1
+ \or\py@hacek #1
+ \or\accent\py@gr #1
+ \or #1
+ \fi
+ \py@kern #1{#3}
+ \fontdimen5\font \dimen@ii}}
+
+\def\py@v{\py@@v u}
+\def\py@V{\py@@v U}
+
+% Here a replacement version for bookmarks in PDFs.
+
+\def\py@hr@@v#1#2#3#4{
+ \ifcase #4
+ \or\py@hr@dm #1\or\py@hr@da #1\or\py@hr@dh #1\or\py@hr@dg #1\or #1
+ \fi
+}
+
+
+% Here our small macro to test whether we should insert a soft hyphen or
+% not. Since it is the first macro in all syllable definitions, we
+% also ensure horizontal mode.
+
+\def\py@hy{
+ \leavevmode
+ \ifnum\lastkern = 4\relax% \py@sp
+ \-
+ \fi
+}
+
+
+% Bookmarks need Unicode characters and nothing else.
+
+\ifx\AtBeginDocument \undefined
+\else
+ \AtBeginDocument{
+ \ifx\pdfstringdefDisableCommands \undefined
+ \else
+ % We add some definitions to the PU encoding so that \MakeUppercase
+ % and \MakeLowercase work with the pinyin characters which have
+ % two diacritics.
+ \DeclareTextCommand{\py@hr@dm}{PU}[1]{
+ \TextSymbolUnavailable{\py@hr@dm{#1}}#1}
+ \DeclareTextCommand{\py@hr@da}{PU}[1]{
+ \TextSymbolUnavailable{\py@hr@da{#1}}#1}
+ \DeclareTextCommand{\py@hr@dh}{PU}[1]{
+ \TextSymbolUnavailable{\py@hr@dh{#1}}#1}
+ \DeclareTextCommand{\py@hr@dg}{PU}[1]{
+ \TextSymbolUnavailable{\py@hr@dg{#1}}#1}
+
+ \DeclareTextCompositeCommand{\py@hr@dm}{PU}{U}{\81\325}% U umlaut macron
+ \DeclareTextCompositeCommand{\py@hr@dm}{PU}{u}{\81\326}% u umlaut macron
+ \DeclareTextCompositeCommand{\py@hr@da}{PU}{U}{\81\327}% U umlaut acute
+ \DeclareTextCompositeCommand{\py@hr@da}{PU}{u}{\81\330}% u umlaut acute
+ \DeclareTextCompositeCommand{\py@hr@dh}{PU}{U}{\81\331}% U umlaut hacek
+ \DeclareTextCompositeCommand{\py@hr@dh}{PU}{u}{\81\332}% u umlaut hacek
+ \DeclareTextCompositeCommand{\py@hr@dg}{PU}{U}{\81\333}% U umlaut grave
+ \DeclareTextCompositeCommand{\py@hr@dg}{PU}{u}{\81\334}% u umlaut grave
+
+ \pdfstringdefDisableCommands{
+ \let\py@hy \relax
+ \let\py@kern \@gobbletwo
+ \let\py@sp \relax
+ \let\py@macron \py@hr@macron
+ \let\py@@v \py@hr@@v
+ }
+ \fi
+ }
+\fi
+
+% Finally the pinyin syllables themselves in lower- and uppercase forms. As
+% mentioned above, the only exceptions are \Long and \LONG instead of the
+% expected \long and \Long macros.
+
+\ifx\AtBeginDocument \undefined
+ \def\py@DRC#1#2{
+ \def#1##1{\py@hy #2\py@sp{}}
+ }
+\else
+ \def\py@DRC#1#2{
+ \DeclareRobustCommand#1[1]{\py@hy #2\py@sp{}}
+ }
+\fi
+
+\py@DRC{\py@@a}{\py@ a{}{}#1}
+\py@DRC{\ai}{\py@ a{}i#1i}
+\py@DRC{\an}{\py@ a{}n#1n}
+\py@DRC{\ang}{\py@ a{}n#1ng}
+\py@DRC{\ao}{\py@ a{}o#1o}
+
+\py@DRC{\ba}{b\py@ ab{}#1}
+\py@DRC{\bai}{b\py@ abi#1i}
+\py@DRC{\ban}{b\py@ abn#1n}
+\py@DRC{\bang}{b\py@ abn#1ng}
+\py@DRC{\bao}{b\py@ abo#1o}
+\py@DRC{\bei}{b\py@ ebi#1i}
+\py@DRC{\ben}{b\py@ ebn#1n}
+\py@DRC{\beng}{b\py@ ebn#1ng}
+\py@DRC{\bi}{b\py@ ib{}#1}
+\py@DRC{\bian}{bi\py@ ain#1n}
+\py@DRC{\biao}{bi\py@ aio#1o}
+\py@DRC{\bie}{bi\py@ ei{}#1}
+\py@DRC{\bin}{b\py@ ibn#1n}
+\py@DRC{\bing}{b\py@ ibn#1ng}
+\py@DRC{\bo}{b\py@ ob{}#1}
+\py@DRC{\bu}{b\py@ ub{}#1}
+
+\py@DRC{\ca}{c\py@ ac{}#1}
+\py@DRC{\cai}{c\py@ aci#1i}
+\py@DRC{\can}{c\py@ acn#1n}
+\py@DRC{\cang}{c\py@ acn#1ng}
+\py@DRC{\cao}{c\py@ aco#1o}
+\py@DRC{\ce}{c\py@ ec{}#1}
+\py@DRC{\cen}{c\py@ ecn#1n}
+\py@DRC{\ceng}{c\py@ ecn#1ng}
+\py@DRC{\cha}{ch\py@ ah{}#1}
+\py@DRC{\chai}{ch\py@ ahi#1i}
+\py@DRC{\chan}{ch\py@ ahn#1n}
+\py@DRC{\chang}{ch\py@ ahn#1ng}
+\py@DRC{\chao}{ch\py@ aho#1o}
+\py@DRC{\che}{ch\py@ eh{}#1}
+\py@DRC{\chen}{ch\py@ ehn#1n}
+\py@DRC{\cheng}{ch\py@ ehn#1ng}
+\py@DRC{\py@chi}{ch\py@ ih{}#1}
+\py@DRC{\chong}{ch\py@ ohn#1ng}
+\py@DRC{\chou}{ch\py@ ohu#1u}
+\py@DRC{\chu}{ch\py@ uh{}#1}
+\py@DRC{\chua}{chu\py@ au{}#1}
+\py@DRC{\chuai}{chu\py@ aui#1i}
+\py@DRC{\chuan}{chu\py@ aun#1n}
+\py@DRC{\chuang}{chu\py@ aun#1ng}
+\py@DRC{\chui}{chu\py@ iu{}#1}
+\py@DRC{\chun}{ch\py@ uhn#1n}
+\py@DRC{\chuo}{chu\py@ ou{}#1}
+\py@DRC{\ci}{c\py@ ic{}#1}
+\py@DRC{\py@cong}{c\py@ ocn#1ng}
+\py@DRC{\cou}{c\py@ ocu#1u}
+\py@DRC{\cu}{c\py@ uc{}#1}
+\py@DRC{\cuan}{cu\py@ aun#1n}
+\py@DRC{\cui}{cu\py@ iu{}#1}
+\py@DRC{\cun}{c\py@ ucn#1n}
+\py@DRC{\cuo}{cu\py@ ou{}#1}
+
+\py@DRC{\da}{d\py@ ad{}#1}
+\py@DRC{\dai}{d\py@ adi#1i}
+\py@DRC{\dan}{d\py@ adn#1n}
+\py@DRC{\dang}{d\py@ adn#1ng}
+\py@DRC{\dao}{d\py@ ado#1o}
+\py@DRC{\de}{d\py@ ed{}#1}
+\py@DRC{\dei}{d\py@ edi#1i}
+\py@DRC{\den}{d\py@ edn#1n}
+\py@DRC{\deng}{d\py@ edn#1ng}
+\py@DRC{\di}{d\py@ id{}#1}
+\py@DRC{\dian}{di\py@ ain#1n}
+\py@DRC{\diao}{di\py@ aio#1o}
+\py@DRC{\die}{di\py@ ei{}#1}
+\py@DRC{\py@ding}{d\py@ idn#1ng}
+\py@DRC{\diu}{di\py@ ui{}#1}
+\py@DRC{\dong}{d\py@ odn#1ng}
+\py@DRC{\dou}{d\py@ odu#1u}
+\py@DRC{\du}{d\py@ ud{}#1}
+\py@DRC{\duan}{du\py@ aun#1n}
+\py@DRC{\dui}{du\py@ iu{}#1}
+\py@DRC{\dun}{d\py@ udn#1n}
+\py@DRC{\duo}{du\py@ ou{}#1}
+
+\py@DRC{\e}{\py@ e{}{}#1}
+\py@DRC{\ei}{\py@ e{}i#1i}
+\py@DRC{\en}{\py@ e{}n#1n}
+\py@DRC{\eng}{\py@ e{}n#1ng}
+\py@DRC{\er}{\py@ e{}r#1r}
+
+\py@DRC{\fa}{f\py@ af{}#1}
+\py@DRC{\fan}{f\py@ afn#1n}
+\py@DRC{\fang}{f\py@ afn#1ng}
+\py@DRC{\fei}{f\py@ efi#1i}
+\py@DRC{\fen}{f\py@ efn#1n}
+\py@DRC{\feng}{f\py@ efn#1ng}
+\py@DRC{\fiao}{fi\py@ aio#1o}
+\py@DRC{\fo}{f\py@ of{}#1}
+\py@DRC{\fou}{f\py@ ofu#1u}
+\py@DRC{\fu}{f\py@ uf{}#1}
+
+\py@DRC{\ga}{g\py@ ag{}#1}
+\py@DRC{\gai}{g\py@ agi#1i}
+\py@DRC{\gan}{g\py@ agn#1n}
+\py@DRC{\gang}{g\py@ agn#1ng}
+\py@DRC{\gao}{g\py@ ago#1o}
+\py@DRC{\py@ge}{g\py@ eg{}#1}
+\py@DRC{\gei}{g\py@ egi#1i}
+\py@DRC{\gen}{g\py@ egn#1n}
+\py@DRC{\geng}{g\py@ egn#1ng}
+\py@DRC{\gong}{g\py@ ogn#1ng}
+\py@DRC{\gou}{g\py@ ogu#1u}
+\py@DRC{\gu}{g\py@ ug{}#1}
+\py@DRC{\gua}{gu\py@ au{}#1}
+\py@DRC{\guai}{gu\py@ aui#1i}
+\py@DRC{\guan}{gu\py@ aun#1n}
+\py@DRC{\guang}{gu\py@ aun#1ng}
+\py@DRC{\gui}{gu\py@ iu{}#1}
+\py@DRC{\gun}{g\py@ ugn#1n}
+\py@DRC{\guo}{gu\py@ ou{}#1}
+
+\py@DRC{\ha}{h\py@ ah{}#1}
+\py@DRC{\hai}{h\py@ ahi#1i}
+\py@DRC{\han}{h\py@ ahn#1n}
+\py@DRC{\py@hang}{h\py@ ahn#1ng}
+\py@DRC{\hao}{h\py@ aho#1o}
+\py@DRC{\he}{h\py@ eh{}#1}
+\py@DRC{\hei}{h\py@ ehi#1i}
+\py@DRC{\hen}{h\py@ ehn#1n}
+\py@DRC{\heng}{h\py@ ehn#1ng}
+\py@DRC{\hong}{h\py@ ohn#1ng}
+\py@DRC{\hou}{h\py@ ohu#1u}
+\py@DRC{\hu}{h\py@ uh{}#1}
+\py@DRC{\hua}{hu\py@ au{}#1}
+\py@DRC{\huai}{hu\py@ aui#1i}
+\py@DRC{\huan}{hu\py@ aun#1n}
+\py@DRC{\huang}{hu\py@ aun#1ng}
+\py@DRC{\hui}{hu\py@ iu{}#1}
+\py@DRC{\hun}{h\py@ uhn#1n}
+\py@DRC{\huo}{hu\py@ ou{}#1}
+
+\py@DRC{\ji}{j\py@ ij{}#1}
+\py@DRC{\jia}{ji\py@ ai{}#1}
+\py@DRC{\jian}{ji\py@ ain#1n}
+\py@DRC{\jiang}{ji\py@ ain#1ng}
+\py@DRC{\jiao}{ji\py@ aio#1o}
+\py@DRC{\jie}{ji\py@ ei{}#1}
+\py@DRC{\jin}{j\py@ ijn#1n}
+\py@DRC{\jing}{j\py@ ijn#1ng}
+\py@DRC{\jiong}{ji\py@ oin#1ng}
+\py@DRC{\jiu}{ji\py@ ui{}#1}
+\py@DRC{\ju}{j\py@ uj{}#1}
+\py@DRC{\juan}{ju\py@ aun#1n}
+\py@DRC{\jue}{ju\py@ eu{}#1}
+\py@DRC{\jun}{j\py@ ujn#1n}
+
+\py@DRC{\ka}{k\py@ ak{}#1}
+\py@DRC{\kai}{k\py@ aki#1i}
+\py@DRC{\kan}{k\py@ akn#1n}
+\py@DRC{\kang}{k\py@ akn#1ng}
+\py@DRC{\kao}{k\py@ ako#1o}
+\py@DRC{\ke}{k\py@ ek{}#1}
+\py@DRC{\kei}{k\py@ eki#1i}
+\py@DRC{\ken}{k\py@ ekn#1n}
+\py@DRC{\keng}{k\py@ ekn#1ng}
+\py@DRC{\kong}{k\py@ okn#1ng}
+\py@DRC{\kou}{k\py@ oku#1u}
+\py@DRC{\ku}{k\py@ uk{}#1}
+\py@DRC{\kua}{ku\py@ au{}#1}
+\py@DRC{\kuai}{ku\py@ aui#1i}
+\py@DRC{\kuan}{ku\py@ aun#1n}
+\py@DRC{\kuang}{ku\py@ aun#1ng}
+\py@DRC{\kui}{ku\py@ iu{}#1}
+\py@DRC{\kun}{k\py@ ukn#1n}
+\py@DRC{\kuo}{ku\py@ ou{}#1}
+
+\py@DRC{\la}{l\py@ al{}#1}
+\py@DRC{\lai}{l\py@ ali#1i}
+\py@DRC{\lan}{l\py@ aln#1n}
+\py@DRC{\lang}{l\py@ aln#1ng}
+\py@DRC{\lao}{l\py@ alo#1o}
+\py@DRC{\py@le}{l\py@ el{}#1}
+\py@DRC{\lei}{l\py@ eli#1i}
+\py@DRC{\leng}{l\py@ eln#1ng}
+\py@DRC{\li}{l\py@ il{}#1}
+\py@DRC{\lia}{li\py@ ai{}#1}
+\py@DRC{\lian}{li\py@ ain#1n}
+\py@DRC{\liang}{li\py@ ain#1ng}
+\py@DRC{\liao}{li\py@ aio#1o}
+\py@DRC{\lie}{li\py@ ei{}#1}
+\py@DRC{\lin}{l\py@ iln#1n}
+\py@DRC{\ling}{l\py@ iln#1ng}
+\py@DRC{\liu}{li\py@ ui{}#1}
+\py@DRC{\Long}{l\py@ oln#1ng}
+\py@DRC{\lou}{l\py@ olu#1u}
+\py@DRC{\lu}{l\py@ ul{}#1}
+\py@DRC{\luan}{lu\py@ aun#1n}
+\py@DRC{\lun}{l\py@ uln#1n}
+\py@DRC{\luo}{lu\py@ ou{}#1}
+\py@DRC{\lv}{l\py@ vl{}#1}
+\py@DRC{\lve}{l\"{u}\py@ ele#1}
+
+\py@DRC{\ma}{m\py@ am{}#1}
+\py@DRC{\mai}{m\py@ ami#1i}
+\py@DRC{\man}{m\py@ amn#1n}
+\py@DRC{\mang}{m\py@ amn#1ng}
+\py@DRC{\mao}{m\py@ amo#1o}
+\py@DRC{\me}{m\py@ em{}#1}
+\py@DRC{\mei}{m\py@ emi#1i}
+\py@DRC{\men}{m\py@ emn#1n}
+\py@DRC{\meng}{m\py@ emn#1ng}
+\py@DRC{\mi}{m\py@ im{}#1}
+\py@DRC{\mian}{mi\py@ ain#1n}
+\py@DRC{\miao}{mi\py@ aio#1o}
+\py@DRC{\mie}{mi\py@ ei{}#1}
+\py@DRC{\py@min}{m\py@ imn#1n}
+\py@DRC{\ming}{m\py@ imn#1ng}
+\py@DRC{\miu}{mi\py@ ui{}#1}
+\py@DRC{\mo}{m\py@ om{}#1}
+\py@DRC{\mou}{m\py@ omu#1u}
+\py@DRC{\py@mu}{m\py@ um{}#1}
+
+\py@DRC{\na}{n\py@ an{}#1}
+\py@DRC{\nai}{n\py@ ani#1i}
+\py@DRC{\nan}{n\py@ ann#1n}
+\py@DRC{\nang}{n\py@ ann#1ng}
+\py@DRC{\nao}{n\py@ ano#1o}
+\py@DRC{\py@ne}{n\py@ en{}#1}
+\py@DRC{\nei}{n\py@ eni#1i}
+\py@DRC{\nen}{n\py@ enn#1n}
+\py@DRC{\neng}{n\py@ enn#1ng}
+\py@DRC{\py@ni}{n\py@ in{}#1}
+\py@DRC{\nian}{ni\py@ ain#1n}
+\py@DRC{\niang}{ni\py@ ain#1ng}
+\py@DRC{\niao}{ni\py@ aio#1o}
+\py@DRC{\nie}{ni\py@ ei{}#1}
+\py@DRC{\nin}{n\py@ inn#1n}
+\py@DRC{\ning}{n\py@ inn#1ng}
+\py@DRC{\niu}{ni\py@ ui{}#1}
+\py@DRC{\nong}{n\py@ onn#1ng}
+\py@DRC{\nou}{n\py@ onu#1u}
+\py@DRC{\py@nu}{n\py@ un{}#1}
+\py@DRC{\nuan}{nu\py@ aun#1n}
+\py@DRC{\nuo}{nu\py@ ou{}#1}
+\py@DRC{\nv}{n\py@ vn{}#1}
+\py@DRC{\nve}{n\"{u}\py@ ene#1}
+
+\py@DRC{\py@@o}{\py@ o{}{}#1}
+\py@DRC{\ou}{\py@ o{}u#1u}
+
+\py@DRC{\pa}{p\py@ ap{}#1}
+\py@DRC{\pai}{p\py@ api#1i}
+\py@DRC{\pan}{p\py@ apn#1n}
+\py@DRC{\pang}{p\py@ apn#1ng}
+\py@DRC{\pao}{p\py@ apo#1o}
+\py@DRC{\pei}{p\py@ epi#1i}
+\py@DRC{\pen}{p\py@ epn#1n}
+\py@DRC{\peng}{p\py@ epn#1ng}
+\py@DRC{\py@pi}{p\py@ ip{}#1}
+\py@DRC{\pian}{pi\py@ ain#1n}
+\py@DRC{\piao}{pi\py@ aio#1o}
+\py@DRC{\pie}{pi\py@ ei{}#1}
+\py@DRC{\pin}{p\py@ ipn#1n}
+\py@DRC{\ping}{p\py@ ipn#1ng}
+\py@DRC{\po}{p\py@ op{}#1}
+\py@DRC{\pou}{p\py@ opu#1u}
+\py@DRC{\pu}{p\py@ up{}#1}
+
+\py@DRC{\qi}{q\py@ iq{}#1}
+\py@DRC{\qia}{qi\py@ ai{}#1}
+\py@DRC{\qian}{qi\py@ ain#1n}
+\py@DRC{\qiang}{qi\py@ ain#1ng}
+\py@DRC{\qiao}{qi\py@ aio#1o}
+\py@DRC{\qie}{qi\py@ ei{}#1}
+\py@DRC{\qin}{q\py@ iqn#1n}
+\py@DRC{\qing}{q\py@ iqn#1ng}
+\py@DRC{\qiong}{qi\py@ oin#1ng}
+\py@DRC{\qiu}{qi\py@ ui{}#1}
+\py@DRC{\qu}{q\py@ uq{}#1}
+\py@DRC{\quan}{qu\py@ aun#1n}
+\py@DRC{\que}{qu\py@ eu{}#1}
+\py@DRC{\qun}{q\py@ uqn#1n}
+
+\py@DRC{\ran}{r\py@ arn#1n}
+\py@DRC{\rang}{r\py@ arn#1ng}
+\py@DRC{\rao}{r\py@ aro#1o}
+\py@DRC{\re}{r\py@ er{}#1}
+\py@DRC{\ren}{r\py@ ern#1n}
+\py@DRC{\reng}{r\py@ ern#1ng}
+\py@DRC{\ri}{r\py@ ir{}#1}
+\py@DRC{\rong}{r\py@ orn#1ng}
+\py@DRC{\rou}{r\py@ oru#1u}
+\py@DRC{\ru}{r\py@ ur{}#1}
+\py@DRC{\rua}{ru\py@ au{}#1}
+\py@DRC{\ruan}{ru\py@ aun#1n}
+\py@DRC{\rui}{ru\py@ iu{}#1}
+\py@DRC{\run}{r\py@ urn#1n}
+\py@DRC{\ruo}{ru\py@ ou{}#1}
+
+\py@DRC{\sa}{s\py@ as{}#1}
+\py@DRC{\sai}{s\py@ asi#1i}
+\py@DRC{\san}{s\py@ asn#1n}
+\py@DRC{\sang}{s\py@ asn#1ng}
+\py@DRC{\sao}{s\py@ aso#1o}
+\py@DRC{\se}{s\py@ es{}#1}
+\py@DRC{\sen}{s\py@ esn#1n}
+\py@DRC{\seng}{s\py@ esn#1ng}
+\py@DRC{\sha}{sh\py@ ah{}#1}
+\py@DRC{\shai}{sh\py@ ahi#1i}
+\py@DRC{\shan}{sh\py@ ahn#1n}
+\py@DRC{\shang}{sh\py@ ahn#1ng}
+\py@DRC{\shao}{sh\py@ aho#1o}
+\py@DRC{\she}{sh\py@ eh{}#1}
+\py@DRC{\shei}{sh\py@ ehi#1i}
+\py@DRC{\shen}{sh\py@ ehn#1n}
+\py@DRC{\sheng}{sh\py@ ehn#1ng}
+\py@DRC{\shi}{sh\py@ ih{}#1}
+\py@DRC{\shou}{sh\py@ ohu#1u}
+\py@DRC{\shu}{sh\py@ uh{}#1}
+\py@DRC{\shua}{shu\py@ au{}#1}
+\py@DRC{\shuai}{shu\py@ aui#1i}
+\py@DRC{\shuan}{shu\py@ aun#1n}
+\py@DRC{\shuang}{shu\py@ aun#1ng}
+\py@DRC{\shui}{shu\py@ iu{}#1}
+\py@DRC{\shun}{sh\py@ uhn#1n}
+\py@DRC{\shuo}{shu\py@ ou{}#1}
+\py@DRC{\si}{s\py@ is{}#1}
+\py@DRC{\song}{s\py@ osn#1ng}
+\py@DRC{\sou}{s\py@ osu#1u}
+\py@DRC{\su}{s\py@ us{}#1}
+\py@DRC{\suan}{su\py@ aun#1n}
+\py@DRC{\sui}{su\py@ iu{}#1}
+\py@DRC{\sun}{s\py@ usn#1n}
+\py@DRC{\suo}{su\py@ ou{}#1}
+
+\py@DRC{\ta}{t\py@ at{}#1}
+\py@DRC{\tai}{t\py@ ati#1i}
+\py@DRC{\py@tan}{t\py@ atn#1n}
+\py@DRC{\tang}{t\py@ atn#1ng}
+\py@DRC{\tao}{t\py@ ato#1o}
+\py@DRC{\te}{t\py@ et{}#1}
+\py@DRC{\tei}{t\py@ eti#1i}
+\py@DRC{\teng}{t\py@ etn#1ng}
+\py@DRC{\ti}{t\py@ it{}#1}
+\py@DRC{\tian}{ti\py@ ain#1n}
+\py@DRC{\tiao}{ti\py@ aio#1o}
+\py@DRC{\tie}{ti\py@ ei{}#1}
+\py@DRC{\ting}{t\py@ itn#1ng}
+\py@DRC{\tong}{t\py@ otn#1ng}
+\py@DRC{\tou}{t\py@ otu#1u}
+\py@DRC{\tu}{t\py@ ut{}#1}
+\py@DRC{\tuan}{tu\py@ aun#1n}
+\py@DRC{\tui}{tu\py@ iu{}#1}
+\py@DRC{\tun}{t\py@ utn#1n}
+\py@DRC{\tuo}{tu\py@ ou{}#1}
+
+\py@DRC{\wa}{w\py@ aw{}#1}
+\py@DRC{\wai}{w\py@ awi#1i}
+\py@DRC{\wan}{w\py@ awn#1n}
+\py@DRC{\wang}{w\py@ awn#1ng}
+\py@DRC{\wei}{w\py@ ewi#1i}
+\py@DRC{\wen}{w\py@ ewn#1n}
+\py@DRC{\weng}{w\py@ ewn#1ng}
+\py@DRC{\wo}{w\py@ ow{}#1}
+\py@DRC{\wu}{w\py@ uw{}#1}
+
+\py@DRC{\py@xi}{x\py@ ix{}#1}
+\py@DRC{\xia}{xi\py@ ai{}#1}
+\py@DRC{\xian}{xi\py@ ain#1n}
+\py@DRC{\xiang}{xi\py@ ain#1ng}
+\py@DRC{\xiao}{xi\py@ aio#1o}
+\py@DRC{\xie}{xi\py@ ei{}#1}
+\py@DRC{\xin}{x\py@ ixn#1n}
+\py@DRC{\xing}{x\py@ ixn#1ng}
+\py@DRC{\xiong}{xi\py@ oin#1ng}
+\py@DRC{\xiu}{xi\py@ ui{}#1}
+\py@DRC{\xu}{x\py@ ux{}#1}
+\py@DRC{\xuan}{xu\py@ aun#1n}
+\py@DRC{\xue}{xu\py@ eu{}#1}
+\py@DRC{\xun}{x\py@ uxn#1n}
+
+\py@DRC{\ya}{y\py@ ay{}#1}
+\py@DRC{\yan}{y\py@ ayn#1n}
+\py@DRC{\yang}{y\py@ ayn#1ng}
+\py@DRC{\yao}{y\py@ ayo#1o}
+\py@DRC{\ye}{y\py@ ey{}#1}
+\py@DRC{\yi}{y\py@ iy{}#1}
+\py@DRC{\yin}{y\py@ iyn#1n}
+\py@DRC{\ying}{y\py@ iyn#1ng}
+\py@DRC{\yo}{y\py@ oy{}#1}
+\py@DRC{\yong}{y\py@ oyn#1ng}
+\py@DRC{\you}{y\py@ oyu#1u}
+\py@DRC{\yu}{y\py@ uy{}#1}
+\py@DRC{\yuan}{yu\py@ aun#1n}
+\py@DRC{\yue}{yu\py@ eu{}#1}
+\py@DRC{\yun}{y\py@ uyn#1n}
+
+\py@DRC{\za}{z\py@ az{}#1}
+\py@DRC{\zai}{z\py@ azi#1i}
+\py@DRC{\zan}{z\py@ azn#1n}
+\py@DRC{\zang}{z\py@ azn#1ng}
+\py@DRC{\zao}{z\py@ azo#1o}
+\py@DRC{\ze}{z\py@ ez{}#1}
+\py@DRC{\zei}{z\py@ ezi#1i}
+\py@DRC{\zen}{z\py@ ezn#1n}
+\py@DRC{\zeng}{z\py@ ezn#1ng}
+\py@DRC{\zha}{zh\py@ ah{}#1}
+\py@DRC{\zhai}{zh\py@ ahi#1i}
+\py@DRC{\zhan}{zh\py@ ahn#1n}
+\py@DRC{\zhang}{zh\py@ ahn#1ng}
+\py@DRC{\zhao}{zh\py@ aho#1o}
+\py@DRC{\zhe}{zh\py@ eh{}#1}
+\py@DRC{\zhei}{zh\py@ ehi#1i}
+\py@DRC{\zhen}{zh\py@ ehn#1n}
+\py@DRC{\zheng}{zh\py@ ehn#1ng}
+\py@DRC{\zhi}{zh\py@ ih{}#1}
+\py@DRC{\zhong}{zh\py@ ohn#1ng}
+\py@DRC{\zhou}{zh\py@ ohu#1u}
+\py@DRC{\zhu}{zh\py@ uh{}#1}
+\py@DRC{\zhua}{zhu\py@ au{}#1}
+\py@DRC{\zhuai}{zhu\py@ aui#1i}
+\py@DRC{\zhuan}{zhu\py@ aun#1n}
+\py@DRC{\zhuang}{zhu\py@ aun#1ng}
+\py@DRC{\zhui}{zhu\py@ iu{}#1}
+\py@DRC{\zhun}{zh\py@ uhn#1n}
+\py@DRC{\zhuo}{zhu\py@ ou{}#1}
+\py@DRC{\zi}{z\py@ iz{}#1}
+\py@DRC{\zong}{z\py@ ozn#1ng}
+\py@DRC{\zou}{z\py@ ozu#1u}
+\py@DRC{\zu}{z\py@ uz{}#1}
+\py@DRC{\zuan}{zu\py@ aun#1n}
+\py@DRC{\zui}{zu\py@ iu{}#1}
+\py@DRC{\zun}{z\py@ uzn#1n}
+\py@DRC{\zuo}{zu\py@ ou{}#1}
+
+
+\py@DRC{\A}{\py@ A{}{}#1}
+\py@DRC{\Ai}{\py@ A{}i#1i}
+\py@DRC{\An}{\py@ A{}n#1n}
+\py@DRC{\Ang}{\py@ A{}n#1ng}
+\py@DRC{\Ao}{\py@ A{}o#1o}
+
+\py@DRC{\Ba}{B\py@ aB{}#1}
+\py@DRC{\Bai}{B\py@ aBi#1i}
+\py@DRC{\Ban}{B\py@ aBn#1n}
+\py@DRC{\Bang}{B\py@ aBn#1ng}
+\py@DRC{\Bao}{B\py@ aBo#1o}
+\py@DRC{\Bei}{B\py@ eBi#1i}
+\py@DRC{\Ben}{B\py@ eBn#1n}
+\py@DRC{\Beng}{B\py@ eBn#1ng}
+\py@DRC{\Bi}{B\py@ iB{}#1}
+\py@DRC{\Bian}{Bi\py@ ain#1n}
+\py@DRC{\Biao}{Bi\py@ aio#1o}
+\py@DRC{\Bie}{Bi\py@ ei{}#1}
+\py@DRC{\Bin}{B\py@ iBn#1n}
+\py@DRC{\Bing}{B\py@ iBn#1ng}
+\py@DRC{\Bo}{B\py@ oB{}#1}
+\py@DRC{\Bu}{B\py@ uB{}#1}
+
+\py@DRC{\Ca}{C\py@ aC{}#1}
+\py@DRC{\Cai}{C\py@ aCi#1i}
+\py@DRC{\Can}{C\py@ aCn#1n}
+\py@DRC{\Cang}{C\py@ aCn#1ng}
+\py@DRC{\Cao}{C\py@ aCo#1o}
+\py@DRC{\Ce}{C\py@ eC{}#1}
+\py@DRC{\Cen}{C\py@ eCn#1n}
+\py@DRC{\Ceng}{C\py@ eCn#1ng}
+\py@DRC{\Cha}{Ch\py@ ah{}#1}
+\py@DRC{\Chai}{Ch\py@ ahi#1i}
+\py@DRC{\Chan}{Ch\py@ ahn#1n}
+\py@DRC{\Chang}{Ch\py@ ahn#1ng}
+\py@DRC{\Chao}{Ch\py@ aho#1o}
+\py@DRC{\Che}{Ch\py@ eh{}#1}
+\py@DRC{\Chen}{Ch\py@ ehn#1n}
+\py@DRC{\Cheng}{Ch\py@ ehn#1ng}
+\py@DRC{\Chi}{Ch\py@ ih{}#1}
+\py@DRC{\Chong}{Ch\py@ ohn#1ng}
+\py@DRC{\Chou}{Ch\py@ ohu#1u}
+\py@DRC{\Chu}{Ch\py@ uh{}#1}
+\py@DRC{\Chuai}{Chu\py@ aui#1i}
+\py@DRC{\Chuan}{Chu\py@ aun#1n}
+\py@DRC{\Chuang}{Chu\py@ aun#1ng}
+\py@DRC{\Chui}{Chu\py@ iu{}#1}
+\py@DRC{\Chun}{Ch\py@ uhn#1n}
+\py@DRC{\Chuo}{Chu\py@ ou{}#1}
+\py@DRC{\Ci}{C\py@ iC{}#1}
+\py@DRC{\Cong}{C\py@ oCn#1ng}
+\py@DRC{\Cou}{C\py@ oCu#1u}
+\py@DRC{\Cu}{C\py@ uC{}#1}
+\py@DRC{\Cuan}{Cu\py@ aun#1n}
+\py@DRC{\Cui}{Cu\py@ iu{}#1}
+\py@DRC{\Cun}{C\py@ uCn#1n}
+\py@DRC{\Cuo}{Cu\py@ ou{}#1}
+
+\py@DRC{\Da}{D\py@ aD{}#1}
+\py@DRC{\Dai}{D\py@ aDi#1i}
+\py@DRC{\Dan}{D\py@ aDn#1n}
+\py@DRC{\Dang}{D\py@ aDn#1ng}
+\py@DRC{\Dao}{D\py@ aDo#1o}
+\py@DRC{\De}{D\py@ eD{}#1}
+\py@DRC{\Dei}{D\py@ eDi#1i}
+\py@DRC{\Deng}{D\py@ eDn#1ng}
+\py@DRC{\Di}{D\py@ iD{}#1}
+\py@DRC{\Dian}{Di\py@ ain#1n}
+\py@DRC{\Diao}{Di\py@ aio#1o}
+\py@DRC{\Die}{Di\py@ ei{}#1}
+\py@DRC{\Ding}{D\py@ iDn#1ng}
+\py@DRC{\Diu}{Di\py@ ui{}#1}
+\py@DRC{\Dong}{D\py@ oDn#1ng}
+\py@DRC{\Dou}{D\py@ oDu#1u}
+\py@DRC{\Du}{D\py@ uD{}#1}
+\py@DRC{\Duan}{Du\py@ aun#1n}
+\py@DRC{\Dui}{Du\py@ iu{}#1}
+\py@DRC{\Dun}{D\py@ uDn#1n}
+\py@DRC{\Duo}{Du\py@ ou{}#1}
+
+\py@DRC{\E}{\py@ E{}{}#1}
+\py@DRC{\Ei}{\py@ E{}i#1i}
+\py@DRC{\En}{\py@ E{}n#1n}
+\py@DRC{\Eng}{\py@ E{}n#1ng}
+\py@DRC{\Er}{\py@ E{}r#1r}
+
+\py@DRC{\Fa}{F\py@ aF{}#1}
+\py@DRC{\Fan}{F\py@ aFn#1n}
+\py@DRC{\Fang}{F\py@ aFn#1ng}
+\py@DRC{\Fei}{F\py@ eFi#1i}
+\py@DRC{\Fen}{F\py@ eFn#1n}
+\py@DRC{\Feng}{F\py@ eFn#1ng}
+\py@DRC{\Fiao}{Fi\py@ aio#1o}
+\py@DRC{\Fo}{F\py@ oF{}#1}
+\py@DRC{\Fou}{F\py@ oFu#1u}
+\py@DRC{\Fu}{F\py@ uF{}#1}
+
+\py@DRC{\Ga}{G\py@ aG{}#1}
+\py@DRC{\Gai}{G\py@ aGi#1i}
+\py@DRC{\Gan}{G\py@ aGn#1n}
+\py@DRC{\Gang}{G\py@ aGn#1ng}
+\py@DRC{\Gao}{G\py@ aGo#1o}
+\py@DRC{\Ge}{G\py@ eG{}#1}
+\py@DRC{\Gei}{G\py@ eGi#1i}
+\py@DRC{\Gen}{G\py@ eGn#1n}
+\py@DRC{\Geng}{G\py@ eGn#1ng}
+\py@DRC{\Gong}{G\py@ oGn#1ng}
+\py@DRC{\Gou}{G\py@ oGu#1u}
+\py@DRC{\Gu}{G\py@ uG{}#1}
+\py@DRC{\Gua}{Gu\py@ au{}#1}
+\py@DRC{\Guai}{Gu\py@ aui#1i}
+\py@DRC{\Guan}{Gu\py@ aun#1n}
+\py@DRC{\Guang}{Gu\py@ aun#1ng}
+\py@DRC{\Gui}{Gu\py@ iu{}#1}
+\py@DRC{\Gun}{G\py@ uGn#1n}
+\py@DRC{\Guo}{Gu\py@ ou{}#1}
+
+\py@DRC{\Ha}{H\py@ aH{}#1}
+\py@DRC{\Hai}{H\py@ aHi#1i}
+\py@DRC{\Han}{H\py@ aHn#1n}
+\py@DRC{\Hang}{H\py@ aHn#1ng}
+\py@DRC{\Hao}{H\py@ aHo#1o}
+\py@DRC{\He}{H\py@ eH{}#1}
+\py@DRC{\Hei}{H\py@ eHi#1i}
+\py@DRC{\Hen}{H\py@ eHn#1n}
+\py@DRC{\Heng}{H\py@ eHn#1ng}
+\py@DRC{\Hong}{H\py@ oHn#1ng}
+\py@DRC{\Hou}{H\py@ oHu#1u}
+\py@DRC{\Hu}{H\py@ uH{}#1}
+\py@DRC{\Hua}{Hu\py@ au{}#1}
+\py@DRC{\Huai}{Hu\py@ aui#1i}
+\py@DRC{\Huan}{Hu\py@ aun#1n}
+\py@DRC{\Huang}{Hu\py@ aun#1ng}
+\py@DRC{\Hui}{Hu\py@ iu{}#1}
+\py@DRC{\Hun}{H\py@ uHn#1n}
+\py@DRC{\Huo}{Hu\py@ ou{}#1}
+
+\py@DRC{\Ji}{J\py@ iJ{}#1}
+\py@DRC{\Jia}{Ji\py@ ai{}#1}
+\py@DRC{\Jian}{Ji\py@ ain#1n}
+\py@DRC{\Jiang}{Ji\py@ ain#1ng}
+\py@DRC{\Jiao}{Ji\py@ aio#1o}
+\py@DRC{\Jie}{Ji\py@ ei{}#1}
+\py@DRC{\Jin}{J\py@ iJn#1n}
+\py@DRC{\Jing}{J\py@ iJn#1ng}
+\py@DRC{\Jiong}{Ji\py@ oin#1ng}
+\py@DRC{\Jiu}{Ji\py@ ui{}#1}
+\py@DRC{\Ju}{J\py@ uJ{}#1}
+\py@DRC{\Juan}{Ju\py@ aun#1n}
+\py@DRC{\Jue}{Ju\py@ eu{}#1}
+\py@DRC{\Jun}{J\py@ uJn#1n}
+
+\py@DRC{\Ka}{K\py@ aK{}#1}
+\py@DRC{\Kai}{K\py@ aKi#1i}
+\py@DRC{\Kan}{K\py@ aKn#1n}
+\py@DRC{\Kang}{K\py@ aKn#1ng}
+\py@DRC{\Kao}{K\py@ aKo#1o}
+\py@DRC{\Ke}{K\py@ eK{}#1}
+\py@DRC{\Kei}{K\py@ eKi#1i}
+\py@DRC{\Ken}{K\py@ eKn#1n}
+\py@DRC{\Keng}{K\py@ eKn#1ng}
+\py@DRC{\Kong}{K\py@ oKn#1ng}
+\py@DRC{\Kou}{K\py@ oKu#1u}
+\py@DRC{\Ku}{K\py@ uK{}#1}
+\py@DRC{\Kua}{Ku\py@ au{}#1}
+\py@DRC{\Kuai}{Ku\py@ aui#1i}
+\py@DRC{\Kuan}{Ku\py@ aun#1n}
+\py@DRC{\Kuang}{Ku\py@ aun#1ng}
+\py@DRC{\Kui}{Ku\py@ iu{}#1}
+\py@DRC{\Kun}{K\py@ uKn#1n}
+\py@DRC{\Kuo}{Ku\py@ ou{}#1}
+
+\py@DRC{\La}{L\py@ aL{}#1}
+\py@DRC{\Lai}{L\py@ aLi#1i}
+\py@DRC{\Lan}{L\py@ aLn#1n}
+\py@DRC{\Lang}{L\py@ aLn#1ng}
+\py@DRC{\Lao}{L\py@ aLo#1o}
+\py@DRC{\Le}{L\py@ eL{}#1}
+\py@DRC{\Lei}{L\py@ eLi#1i}
+\py@DRC{\Leng}{L\py@ eLn#1ng}
+\py@DRC{\Li}{L\py@ iL{}#1}
+\py@DRC{\Lia}{Li\py@ ai{}#1}
+\py@DRC{\Lian}{Li\py@ ain#1n}
+\py@DRC{\Liang}{Li\py@ ain#1ng}
+\py@DRC{\Liao}{Li\py@ aio#1o}
+\py@DRC{\Lie}{Li\py@ ei{}#1}
+\py@DRC{\Lin}{L\py@ iLn#1n}
+\py@DRC{\Ling}{L\py@ iLn#1ng}
+\py@DRC{\Liu}{Li\py@ ui{}#1}
+\py@DRC{\LONG}{L\py@ oLn#1ng}
+\py@DRC{\Lou}{L\py@ oLu#1u}
+\py@DRC{\Lu}{L\py@ uL{}#1}
+\py@DRC{\Luan}{Lu\py@ aun#1n}
+\py@DRC{\Lun}{L\py@ uLn#1n}
+\py@DRC{\Luo}{Lu\py@ ou{}#1}
+\py@DRC{\Lv}{L\py@ vL{}#1}
+\py@DRC{\Lve}{L\"{u}\py@ eLe#1}
+
+\py@DRC{\Ma}{M\py@ aM{}#1}
+\py@DRC{\Mai}{M\py@ aMi#1i}
+\py@DRC{\Man}{M\py@ aMn#1n}
+\py@DRC{\Mang}{M\py@ aMn#1ng}
+\py@DRC{\Mao}{M\py@ aMo#1o}
+\py@DRC{\Mei}{M\py@ eMi#1i}
+\py@DRC{\Men}{M\py@ eMn#1n}
+\py@DRC{\Meng}{M\py@ eMn#1ng}
+\py@DRC{\Mi}{M\py@ iM{}#1}
+\py@DRC{\Mian}{Mi\py@ ain#1n}
+\py@DRC{\Miao}{Mi\py@ aio#1o}
+\py@DRC{\Mie}{Mi\py@ ei{}#1}
+\py@DRC{\Min}{M\py@ iMn#1n}
+\py@DRC{\Ming}{M\py@ iMn#1ng}
+\py@DRC{\Miu}{Mi\py@ ui{}#1}
+\py@DRC{\Mo}{M\py@ oM{}#1}
+\py@DRC{\Mou}{M\py@ oMu#1u}
+\py@DRC{\Mu}{M\py@ uM{}#1}
+
+\py@DRC{\Na}{N\py@ aN{}#1}
+\py@DRC{\Nai}{N\py@ aNi#1i}
+\py@DRC{\Nan}{N\py@ aNn#1n}
+\py@DRC{\Nang}{N\py@ aNn#1ng}
+\py@DRC{\Nao}{N\py@ aNo#1o}
+\py@DRC{\Ne}{N\py@ eN{}#1}
+\py@DRC{\Nei}{N\py@ eNi#1i}
+\py@DRC{\Nen}{N\py@ eNn#1n}
+\py@DRC{\Neng}{N\py@ eNn#1ng}
+\py@DRC{\Ni}{N\py@ iN{}#1}
+\py@DRC{\Nian}{Ni\py@ ain#1n}
+\py@DRC{\Niang}{Ni\py@ ain#1ng}
+\py@DRC{\Niao}{Ni\py@ aio#1o}
+\py@DRC{\Nie}{Ni\py@ ei{}#1}
+\py@DRC{\Nin}{N\py@ iNn#1n}
+\py@DRC{\Ning}{N\py@ iNn#1ng}
+\py@DRC{\Niu}{Ni\py@ ui{}#1}
+\py@DRC{\Nong}{N\py@ oNn#1ng}
+\py@DRC{\Nou}{N\py@ oNu#1u}
+\py@DRC{\Nu}{N\py@ uN{}#1}
+\py@DRC{\Nuan}{Nu\py@ aun#1n}
+\py@DRC{\Nuo}{Nu\py@ ou{}#1}
+\py@DRC{\Nv}{N\py@ vN{}#1}
+\py@DRC{\Nve}{N\"{u}\py@ eNe#1}
+
+\py@DRC{\py@@O}{\py@ O{}{}#1}
+\py@DRC{\Ou}{\py@ O{}u#1u}
+
+\py@DRC{\Pa}{P\py@ aP{}#1}
+\py@DRC{\Pai}{P\py@ aPi#1i}
+\py@DRC{\Pan}{P\py@ aPn#1n}
+\py@DRC{\Pang}{P\py@ aPn#1ng}
+\py@DRC{\Pao}{P\py@ aPo#1o}
+\py@DRC{\Pei}{P\py@ ePi#1i}
+\py@DRC{\Pen}{P\py@ ePn#1n}
+\py@DRC{\Peng}{P\py@ ePn#1ng}
+\py@DRC{\py@Pi}{P\py@ iP{}#1}
+\py@DRC{\Pian}{Pi\py@ ain#1n}
+\py@DRC{\Piao}{Pi\py@ aio#1o}
+\py@DRC{\Pie}{Pi\py@ ei{}#1}
+\py@DRC{\Pin}{P\py@ iPn#1n}
+\py@DRC{\Ping}{P\py@ iPn#1ng}
+\py@DRC{\Po}{P\py@ oP{}#1}
+\py@DRC{\Pou}{P\py@ oPu#1u}
+\py@DRC{\Pu}{P\py@ uP{}#1}
+
+\py@DRC{\Qi}{Q\py@ iQ{}#1}
+\py@DRC{\Qia}{Qi\py@ ai{}#1}
+\py@DRC{\Qian}{Qi\py@ ain#1n}
+\py@DRC{\Qiang}{Qi\py@ ain#1ng}
+\py@DRC{\Qiao}{Qi\py@ aio#1o}
+\py@DRC{\Qie}{Qi\py@ ei{}#1}
+\py@DRC{\Qin}{Q\py@ iQn#1n}
+\py@DRC{\Qing}{Q\py@ iQn#1ng}
+\py@DRC{\Qiong}{Qi\py@ oin#1ng}
+\py@DRC{\Qiu}{Qi\py@ ui{}#1}
+\py@DRC{\Qu}{Q\py@ uQ{}#1}
+\py@DRC{\Quan}{Qu\py@ aun#1n}
+\py@DRC{\Que}{Qu\py@ eu{}#1}
+\py@DRC{\Qun}{Q\py@ uQn#1n}
+
+\py@DRC{\Ran}{R\py@ aRn#1n}
+\py@DRC{\Rang}{R\py@ aRn#1ng}
+\py@DRC{\Rao}{R\py@ aRo#1o}
+\py@DRC{\py@Re}{R\py@ eR{}#1}
+\py@DRC{\Ren}{R\py@ eRn#1n}
+\py@DRC{\Reng}{R\py@ eRn#1ng}
+\py@DRC{\Ri}{R\py@ iR{}#1}
+\py@DRC{\Rong}{R\py@ oRn#1ng}
+\py@DRC{\Rou}{R\py@ oRu#1u}
+\py@DRC{\Ru}{R\py@ uR{}#1}
+\py@DRC{\Ruan}{Ru\py@ aun#1n}
+\py@DRC{\Rui}{Ru\py@ iu{}#1}
+\py@DRC{\Run}{R\py@ uRn#1n}
+\py@DRC{\Ruo}{Ru\py@ ou{}#1}
+
+\py@DRC{\Sa}{S\py@ aS{}#1}
+\py@DRC{\Sai}{S\py@ aSi#1i}
+\py@DRC{\San}{S\py@ aSn#1n}
+\py@DRC{\Sang}{S\py@ aSn#1ng}
+\py@DRC{\Sao}{S\py@ aSo#1o}
+\py@DRC{\Se}{S\py@ eS{}#1}
+\py@DRC{\Sen}{S\py@ eSn#1n}
+\py@DRC{\Seng}{S\py@ eSn#1ng}
+\py@DRC{\Sha}{Sh\py@ ah{}#1}
+\py@DRC{\Shai}{Sh\py@ ahi#1i}
+\py@DRC{\Shan}{Sh\py@ ahn#1n}
+\py@DRC{\Shang}{Sh\py@ ahn#1ng}
+\py@DRC{\Shao}{Sh\py@ aho#1o}
+\py@DRC{\She}{Sh\py@ eh{}#1}
+\py@DRC{\Shei}{Sh\py@ ehi#1i}
+\py@DRC{\Shen}{Sh\py@ ehn#1n}
+\py@DRC{\Sheng}{Sh\py@ ehn#1ng}
+\py@DRC{\Shi}{Sh\py@ ih{}#1}
+\py@DRC{\Shou}{Sh\py@ ohu#1u}
+\py@DRC{\Shu}{Sh\py@ uh{}#1}
+\py@DRC{\Shua}{Shu\py@ au{}#1}
+\py@DRC{\Shuai}{Shu\py@ aui#1i}
+\py@DRC{\Shuan}{Shu\py@ aun#1n}
+\py@DRC{\Shuang}{Shu\py@ aun#1ng}
+\py@DRC{\Shui}{Shu\py@ iu{}#1}
+\py@DRC{\Shun}{Sh\py@ uhn#1n}
+\py@DRC{\Shuo}{Shu\py@ ou{}#1}
+\py@DRC{\Si}{S\py@ iS{}#1}
+\py@DRC{\Song}{S\py@ oSn#1ng}
+\py@DRC{\Sou}{S\py@ oSu#1u}
+\py@DRC{\Su}{S\py@ uS{}#1}
+\py@DRC{\Suan}{Su\py@ aun#1n}
+\py@DRC{\Sui}{Su\py@ iu{}#1}
+\py@DRC{\Sun}{S\py@ uSn#1n}
+\py@DRC{\Suo}{Su\py@ ou{}#1}
+
+\py@DRC{\Ta}{T\py@ aT{}#1}
+\py@DRC{\Tai}{T\py@ aTi#1i}
+\py@DRC{\Tan}{T\py@ aTn#1n}
+\py@DRC{\Tang}{T\py@ aTn#1ng}
+\py@DRC{\Tao}{T\py@ aTo#1o}
+\py@DRC{\Te}{T\py@ eT{}#1}
+\py@DRC{\Tei}{T\py@ eTi#1i}
+\py@DRC{\Teng}{T\py@ eTn#1ng}
+\py@DRC{\Ti}{T\py@ iT{}#1}
+\py@DRC{\Tian}{Ti\py@ ain#1n}
+\py@DRC{\Tiao}{Ti\py@ aio#1o}
+\py@DRC{\Tie}{Ti\py@ ei{}#1}
+\py@DRC{\Ting}{T\py@ iTn#1ng}
+\py@DRC{\Tong}{T\py@ oTn#1ng}
+\py@DRC{\Tou}{T\py@ oTu#1u}
+\py@DRC{\Tu}{T\py@ uT{}#1}
+\py@DRC{\Tuan}{Tu\py@ aun#1n}
+\py@DRC{\Tui}{Tu\py@ iu{}#1}
+\py@DRC{\Tun}{T\py@ uTn#1n}
+\py@DRC{\Tuo}{Tu\py@ ou{}#1}
+
+\py@DRC{\Wa}{W\py@ aW{}#1}
+\py@DRC{\Wai}{W\py@ aWi#1i}
+\py@DRC{\Wan}{W\py@ aWn#1n}
+\py@DRC{\Wang}{W\py@ aWn#1ng}
+\py@DRC{\Wei}{W\py@ eWi#1i}
+\py@DRC{\Wen}{W\py@ eWn#1n}
+\py@DRC{\Weng}{W\py@ eWn#1ng}
+\py@DRC{\Wo}{W\py@ oW{}#1}
+\py@DRC{\Wu}{W\py@ uW{}#1}
+
+\py@DRC{\py@Xi}{X\py@ iX{}#1}
+\py@DRC{\Xia}{Xi\py@ ai{}#1}
+\py@DRC{\Xian}{Xi\py@ ain#1n}
+\py@DRC{\Xiang}{Xi\py@ ain#1ng}
+\py@DRC{\Xiao}{Xi\py@ aio#1o}
+\py@DRC{\Xie}{Xi\py@ ei{}#1}
+\py@DRC{\Xin}{X\py@ iXn#1n}
+\py@DRC{\Xing}{X\py@ iXn#1ng}
+\py@DRC{\Xiong}{Xi\py@ oin#1ng}
+\py@DRC{\Xiu}{Xi\py@ ui{}#1}
+\py@DRC{\Xu}{X\py@ uX{}#1}
+\py@DRC{\Xuan}{Xu\py@ aun#1n}
+\py@DRC{\Xue}{Xu\py@ eu{}#1}
+\py@DRC{\Xun}{X\py@ uXn#1n}
+
+\py@DRC{\Ya}{Y\py@ aY{}#1}
+\py@DRC{\Yan}{Y\py@ aYn#1n}
+\py@DRC{\Yang}{Y\py@ aYn#1ng}
+\py@DRC{\Yao}{Y\py@ aYo#1o}
+\py@DRC{\Ye}{Y\py@ eY{}#1}
+\py@DRC{\Yi}{Y\py@ iY{}#1}
+\py@DRC{\Yin}{Y\py@ iYn#1n}
+\py@DRC{\Ying}{Y\py@ iYn#1ng}
+\py@DRC{\Yo}{Y\py@ oY{}#1}
+\py@DRC{\Yong}{Y\py@ oYn#1ng}
+\py@DRC{\You}{Y\py@ oYu#1u}
+\py@DRC{\Yu}{Y\py@ uY{}#1}
+\py@DRC{\Yuan}{Yu\py@ aun#1n}
+\py@DRC{\Yue}{Yu\py@ eu{}#1}
+\py@DRC{\Yun}{Y\py@ uYn#1n}
+
+\py@DRC{\Za}{Z\py@ aZ{}#1}
+\py@DRC{\Zai}{Z\py@ aZi#1i}
+\py@DRC{\Zan}{Z\py@ aZn#1n}
+\py@DRC{\Zang}{Z\py@ aZn#1ng}
+\py@DRC{\Zao}{Z\py@ aZo#1o}
+\py@DRC{\Ze}{Z\py@ eZ{}#1}
+\py@DRC{\Zei}{Z\py@ eZi#1i}
+\py@DRC{\Zen}{Z\py@ eZn#1n}
+\py@DRC{\Zeng}{Z\py@ eZn#1ng}
+\py@DRC{\Zha}{Zh\py@ ah{}#1}
+\py@DRC{\Zhai}{Zh\py@ ahi#1i}
+\py@DRC{\Zhan}{Zh\py@ ahn#1n}
+\py@DRC{\Zhang}{Zh\py@ ahn#1ng}
+\py@DRC{\Zhao}{Zh\py@ aho#1o}
+\py@DRC{\Zhe}{Zh\py@ eh{}#1}
+\py@DRC{\Zhei}{Zh\py@ ehi#1i}
+\py@DRC{\Zhen}{Zh\py@ ehn#1n}
+\py@DRC{\Zheng}{Zh\py@ ehn#1ng}
+\py@DRC{\Zhi}{Zh\py@ ih{}#1}
+\py@DRC{\Zhong}{Zh\py@ ohn#1ng}
+\py@DRC{\Zhou}{Zh\py@ ohu#1u}
+\py@DRC{\Zhu}{Zh\py@ uh{}#1}
+\py@DRC{\Zhua}{Zhu\py@ au{}#1}
+\py@DRC{\Zhuai}{Zhu\py@ aui#1i}
+\py@DRC{\Zhuan}{Zhu\py@ aun#1n}
+\py@DRC{\Zhuang}{Zhu\py@ aun#1ng}
+\py@DRC{\Zhui}{Zhu\py@ iu{}#1}
+\py@DRC{\Zhun}{Zh\py@ uhn#1n}
+\py@DRC{\Zhuo}{Zhu\py@ ou{}#1}
+\py@DRC{\Zi}{Z\py@ iZ{}#1}
+\py@DRC{\Zong}{Z\py@ oZn#1ng}
+\py@DRC{\Zou}{Z\py@ oZu#1u}
+\py@DRC{\Zu}{Z\py@ uZ{}#1}
+\py@DRC{\Zuan}{Zu\py@ aun#1n}
+\py@DRC{\Zui}{Zu\py@ iu{}#1}
+\py@DRC{\Zun}{Z\py@ uZn#1n}
+\py@DRC{\Zuo}{Zu\py@ ou{}#1}
+
+
+% We enable all pinyin syllables as the default.
+
+\PYactivate
+
+
+\endlinechar `\^^M
+\catcode`@=12
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/pmC.chr b/language/chinese/CJK/cjk-4.8.5/texinput/pmC.chr
new file mode 100644
index 0000000000..83a75e7e7f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/pmC.chr
@@ -0,0 +1,98 @@
+% This is the file pmC.chr of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{pmC.chr}[\filedate\space\fileversion]
+
+
+% define macros for handling pmC fonts and characters.
+
+\gdef\CJK@pmCChr{
+ \CJK@global\def\CJK@char##1##2##3{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##3\relax
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \CJKsymbol{\@tempcnta}
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% for punctuation.
+
+ \CJK@global\def\CJK@punctchar##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##4}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \advance\@tempcnta ##3\relax
+ \edef\CJK@plane{##2}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \CJKpunctsymbol{\@tempcnta}
+
+ \CJK@testPrePunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/pmCbig.enc b/language/chinese/CJK/cjk-4.8.5/texinput/pmCbig.enc
new file mode 100644
index 0000000000..57ecd41ddb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/pmCbig.enc
@@ -0,0 +1,133 @@
+% This is the file pmCbig.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{pmCbig.enc}[\filedate\space\fileversion]
+
+
+% old poor man's Chinese encoding:
+% each plane gets an own font (Big 5, GB, JIS etc.).
+
+% big size:
+
+\gdef\CJK@pmCbigEncoding{
+ \CJK@loadChr{pmC}
+
+ \CJK@namegdef{^^a1}##1{\@empty\CJK@punctchar{A1}{a1}{-128}{##1}}
+ \CJK@namegdef{^^a2}##1{\@empty\CJK@punctchar{A2}{a2}{-128}{##1}}
+ \CJK@namegdef{^^a3}##1{\@empty\CJK@punctchar{A3}{a3}{-128}{##1}}
+ \CJK@namegdef{^^a4}##1{\@empty\CJK@punctchar{A4}{a4}{-128}{##1}}
+ \CJK@namegdef{^^a5}##1{\@empty\CJK@punctchar{A5}{a5}{-128}{##1}}
+ \CJK@namegdef{^^a6}##1{\@empty\CJK@char{a6}{-128}{##1}}
+ \CJK@namegdef{^^a7}##1{\@empty\CJK@char{a7}{-128}{##1}}
+ \CJK@namegdef{^^a8}##1{\@empty\CJK@char{a8}{-128}{##1}}
+ \CJK@namegdef{^^a9}##1{\@empty\CJK@char{a9}{-128}{##1}}
+ \CJK@namegdef{^^aa}##1{\@empty\CJK@char{aa}{-128}{##1}}
+ \CJK@namegdef{^^ab}##1{\@empty\CJK@char{ab}{-128}{##1}}
+ \CJK@namegdef{^^ac}##1{\@empty\CJK@char{ac}{-128}{##1}}
+ \CJK@namegdef{^^ad}##1{\@empty\CJK@char{ad}{-128}{##1}}
+ \CJK@namegdef{^^ae}##1{\@empty\CJK@char{ae}{-128}{##1}}
+ \CJK@namegdef{^^af}##1{\@empty\CJK@char{af}{-128}{##1}}
+ \CJK@namegdef{^^b0}##1{\@empty\CJK@char{b0}{-128}{##1}}
+ \CJK@namegdef{^^b1}##1{\@empty\CJK@char{b1}{-128}{##1}}
+ \CJK@namegdef{^^b2}##1{\@empty\CJK@char{b2}{-128}{##1}}
+ \CJK@namegdef{^^b3}##1{\@empty\CJK@char{b3}{-128}{##1}}
+ \CJK@namegdef{^^b4}##1{\@empty\CJK@char{b4}{-128}{##1}}
+ \CJK@namegdef{^^b5}##1{\@empty\CJK@char{b5}{-128}{##1}}
+ \CJK@namegdef{^^b6}##1{\@empty\CJK@char{b6}{-128}{##1}}
+ \CJK@namegdef{^^b7}##1{\@empty\CJK@char{b7}{-128}{##1}}
+ \CJK@namegdef{^^b8}##1{\@empty\CJK@char{b8}{-128}{##1}}
+ \CJK@namegdef{^^b9}##1{\@empty\CJK@char{b9}{-128}{##1}}
+ \CJK@namegdef{^^ba}##1{\@empty\CJK@char{ba}{-128}{##1}}
+ \CJK@namegdef{^^bb}##1{\@empty\CJK@char{bb}{-128}{##1}}
+ \CJK@namegdef{^^bc}##1{\@empty\CJK@char{bc}{-128}{##1}}
+ \CJK@namegdef{^^bd}##1{\@empty\CJK@char{bd}{-128}{##1}}
+ \CJK@namegdef{^^be}##1{\@empty\CJK@char{be}{-128}{##1}}
+ \CJK@namegdef{^^bf}##1{\@empty\CJK@char{bf}{-128}{##1}}
+ \CJK@namegdef{^^c0}##1{\@empty\CJK@char{c0}{-128}{##1}}
+ \CJK@namegdef{^^c1}##1{\@empty\CJK@char{c1}{-128}{##1}}
+ \CJK@namegdef{^^c2}##1{\@empty\CJK@char{c2}{-128}{##1}}
+ \CJK@namegdef{^^c3}##1{\@empty\CJK@char{c3}{-128}{##1}}
+ \CJK@namegdef{^^c4}##1{\@empty\CJK@char{c4}{-128}{##1}}
+ \CJK@namegdef{^^c5}##1{\@empty\CJK@char{c5}{-128}{##1}}
+ \CJK@namegdef{^^c6}##1{\@empty\CJK@char{c6}{-128}{##1}}
+ \CJK@namegdef{^^c7}##1{\@empty\CJK@char{c7}{-128}{##1}}
+ \CJK@namegdef{^^c8}##1{\@empty\CJK@char{c8}{-128}{##1}}
+ \CJK@namegdef{^^c9}##1{\@empty\CJK@char{c9}{-128}{##1}}
+ \CJK@namegdef{^^ca}##1{\@empty\CJK@char{ca}{-128}{##1}}
+ \CJK@namegdef{^^cb}##1{\@empty\CJK@char{cb}{-128}{##1}}
+ \CJK@namegdef{^^cc}##1{\@empty\CJK@char{cc}{-128}{##1}}
+ \CJK@namegdef{^^cd}##1{\@empty\CJK@char{cd}{-128}{##1}}
+ \CJK@namegdef{^^ce}##1{\@empty\CJK@char{ce}{-128}{##1}}
+ \CJK@namegdef{^^cf}##1{\@empty\CJK@char{cf}{-128}{##1}}
+ \CJK@namegdef{^^d0}##1{\@empty\CJK@char{d0}{-128}{##1}}
+ \CJK@namegdef{^^d1}##1{\@empty\CJK@char{d1}{-128}{##1}}
+ \CJK@namegdef{^^d2}##1{\@empty\CJK@char{d2}{-128}{##1}}
+ \CJK@namegdef{^^d3}##1{\@empty\CJK@char{d3}{-128}{##1}}
+ \CJK@namegdef{^^d4}##1{\@empty\CJK@char{d4}{-128}{##1}}
+ \CJK@namegdef{^^d5}##1{\@empty\CJK@char{d5}{-128}{##1}}
+ \CJK@namegdef{^^d6}##1{\@empty\CJK@char{d6}{-128}{##1}}
+ \CJK@namegdef{^^d7}##1{\@empty\CJK@char{d7}{-128}{##1}}
+ \CJK@namegdef{^^d8}##1{\@empty\CJK@char{d8}{-128}{##1}}
+ \CJK@namegdef{^^d9}##1{\@empty\CJK@char{d9}{-128}{##1}}
+ \CJK@namegdef{^^da}##1{\@empty\CJK@char{da}{-128}{##1}}
+ \CJK@namegdef{^^db}##1{\@empty\CJK@char{db}{-128}{##1}}
+ \CJK@namegdef{^^dc}##1{\@empty\CJK@char{dc}{-128}{##1}}
+ \CJK@namegdef{^^dd}##1{\@empty\CJK@char{dd}{-128}{##1}}
+ \CJK@namegdef{^^de}##1{\@empty\CJK@char{de}{-128}{##1}}
+ \CJK@namegdef{^^df}##1{\@empty\CJK@char{df}{-128}{##1}}
+ \CJK@namegdef{^^e0}##1{\@empty\CJK@char{e0}{-128}{##1}}
+ \CJK@namegdef{^^e1}##1{\@empty\CJK@char{e1}{-128}{##1}}
+ \CJK@namegdef{^^e2}##1{\@empty\CJK@char{e2}{-128}{##1}}
+ \CJK@namegdef{^^e3}##1{\@empty\CJK@char{e3}{-128}{##1}}
+ \CJK@namegdef{^^e4}##1{\@empty\CJK@char{e4}{-128}{##1}}
+ \CJK@namegdef{^^e5}##1{\@empty\CJK@char{e5}{-128}{##1}}
+ \CJK@namegdef{^^e6}##1{\@empty\CJK@char{e6}{-128}{##1}}
+ \CJK@namegdef{^^e7}##1{\@empty\CJK@char{e7}{-128}{##1}}
+ \CJK@namegdef{^^e8}##1{\@empty\CJK@char{e8}{-128}{##1}}
+ \CJK@namegdef{^^e9}##1{\@empty\CJK@char{e9}{-128}{##1}}
+ \CJK@namegdef{^^ea}##1{\@empty\CJK@char{ea}{-128}{##1}}
+ \CJK@namegdef{^^eb}##1{\@empty\CJK@char{eb}{-128}{##1}}
+ \CJK@namegdef{^^ec}##1{\@empty\CJK@char{ec}{-128}{##1}}
+ \CJK@namegdef{^^ed}##1{\@empty\CJK@char{ed}{-128}{##1}}
+ \CJK@namegdef{^^ee}##1{\@empty\CJK@char{ee}{-128}{##1}}
+ \CJK@namegdef{^^ef}##1{\@empty\CJK@char{ef}{-128}{##1}}
+ \CJK@namegdef{^^f0}##1{\@empty\CJK@char{f0}{-128}{##1}}
+ \CJK@namegdef{^^f1}##1{\@empty\CJK@char{f1}{-128}{##1}}
+ \CJK@namegdef{^^f2}##1{\@empty\CJK@char{f2}{-128}{##1}}
+ \CJK@namegdef{^^f3}##1{\@empty\CJK@char{f3}{-128}{##1}}
+ \CJK@namegdef{^^f4}##1{\@empty\CJK@char{f4}{-128}{##1}}
+ \CJK@namegdef{^^f5}##1{\@empty\CJK@char{f5}{-128}{##1}}
+ \CJK@namegdef{^^f6}##1{\@empty\CJK@char{f6}{-128}{##1}}
+ \CJK@namegdef{^^f7}##1{\@empty\CJK@char{f7}{-128}{##1}}
+ \CJK@namegdef{^^f8}##1{\@empty\CJK@char{f8}{-128}{##1}}
+ \CJK@namegdef{^^f9}##1{\@empty\CJK@char{f9}{-128}{##1}}
+ \CJK@namegdef{^^fa}##1{\@empty\CJK@char{fa}{-128}{##1}}
+ \CJK@namegdef{^^fb}##1{\@empty\CJK@char{fb}{-128}{##1}}
+ \CJK@namegdef{^^fc}##1{\@empty\CJK@char{fc}{-128}{##1}}
+ \CJK@namegdef{^^fd}##1{\@empty\CJK@char{fd}{-128}{##1}}
+ \CJK@namegdef{^^fe}##1{\@empty\CJK@char{fe}{-128}{##1}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/pmCsmall.enc b/language/chinese/CJK/cjk-4.8.5/texinput/pmCsmall.enc
new file mode 100644
index 0000000000..2e64b23b90
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/pmCsmall.enc
@@ -0,0 +1,133 @@
+% This is the file pmCsmall.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{pmCsmall.enc}[\filedate\space\fileversion]
+
+
+% old poor man's Chinese encoding:
+% each plane gets an own font (Big 5, GB, JIS etc.).
+
+% small size:
+
+\gdef\CJK@pmCsmallEncoding{
+ \CJK@loadChr{pmC}
+
+ \CJK@namegdef{^^a1}##1{\@empty\CJK@punctchar{A1}{a1}{0}{##1}}
+ \CJK@namegdef{^^a2}##1{\@empty\CJK@punctchar{A2}{a2}{0}{##1}}
+ \CJK@namegdef{^^a3}##1{\@empty\CJK@punctchar{A3}{a3}{0}{##1}}
+ \CJK@namegdef{^^a4}##1{\@empty\CJK@punctchar{A4}{a4}{0}{##1}}
+ \CJK@namegdef{^^a5}##1{\@empty\CJK@punctchar{A5}{a5}{0}{##1}}
+ \CJK@namegdef{^^a6}##1{\@empty\CJK@char{a6}{0}{##1}}
+ \CJK@namegdef{^^a7}##1{\@empty\CJK@char{a7}{0}{##1}}
+ \CJK@namegdef{^^a8}##1{\@empty\CJK@char{a8}{0}{##1}}
+ \CJK@namegdef{^^a9}##1{\@empty\CJK@char{a9}{0}{##1}}
+ \CJK@namegdef{^^aa}##1{\@empty\CJK@char{aa}{0}{##1}}
+ \CJK@namegdef{^^ab}##1{\@empty\CJK@char{ab}{0}{##1}}
+ \CJK@namegdef{^^ac}##1{\@empty\CJK@char{ac}{0}{##1}}
+ \CJK@namegdef{^^ad}##1{\@empty\CJK@char{ad}{0}{##1}}
+ \CJK@namegdef{^^ae}##1{\@empty\CJK@char{ae}{0}{##1}}
+ \CJK@namegdef{^^af}##1{\@empty\CJK@char{af}{0}{##1}}
+ \CJK@namegdef{^^b0}##1{\@empty\CJK@char{b0}{0}{##1}}
+ \CJK@namegdef{^^b1}##1{\@empty\CJK@char{b1}{0}{##1}}
+ \CJK@namegdef{^^b2}##1{\@empty\CJK@char{b2}{0}{##1}}
+ \CJK@namegdef{^^b3}##1{\@empty\CJK@char{b3}{0}{##1}}
+ \CJK@namegdef{^^b4}##1{\@empty\CJK@char{b4}{0}{##1}}
+ \CJK@namegdef{^^b5}##1{\@empty\CJK@char{b5}{0}{##1}}
+ \CJK@namegdef{^^b6}##1{\@empty\CJK@char{b6}{0}{##1}}
+ \CJK@namegdef{^^b7}##1{\@empty\CJK@char{b7}{0}{##1}}
+ \CJK@namegdef{^^b8}##1{\@empty\CJK@char{b8}{0}{##1}}
+ \CJK@namegdef{^^b9}##1{\@empty\CJK@char{b9}{0}{##1}}
+ \CJK@namegdef{^^ba}##1{\@empty\CJK@char{ba}{0}{##1}}
+ \CJK@namegdef{^^bb}##1{\@empty\CJK@char{bb}{0}{##1}}
+ \CJK@namegdef{^^bc}##1{\@empty\CJK@char{bc}{0}{##1}}
+ \CJK@namegdef{^^bd}##1{\@empty\CJK@char{bd}{0}{##1}}
+ \CJK@namegdef{^^be}##1{\@empty\CJK@char{be}{0}{##1}}
+ \CJK@namegdef{^^bf}##1{\@empty\CJK@char{bf}{0}{##1}}
+ \CJK@namegdef{^^c0}##1{\@empty\CJK@char{c0}{0}{##1}}
+ \CJK@namegdef{^^c1}##1{\@empty\CJK@char{c1}{0}{##1}}
+ \CJK@namegdef{^^c2}##1{\@empty\CJK@char{c2}{0}{##1}}
+ \CJK@namegdef{^^c3}##1{\@empty\CJK@char{c3}{0}{##1}}
+ \CJK@namegdef{^^c4}##1{\@empty\CJK@char{c4}{0}{##1}}
+ \CJK@namegdef{^^c5}##1{\@empty\CJK@char{c5}{0}{##1}}
+ \CJK@namegdef{^^c6}##1{\@empty\CJK@char{c6}{0}{##1}}
+ \CJK@namegdef{^^c7}##1{\@empty\CJK@char{c7}{0}{##1}}
+ \CJK@namegdef{^^c8}##1{\@empty\CJK@char{c8}{0}{##1}}
+ \CJK@namegdef{^^c9}##1{\@empty\CJK@char{c9}{0}{##1}}
+ \CJK@namegdef{^^ca}##1{\@empty\CJK@char{ca}{0}{##1}}
+ \CJK@namegdef{^^cb}##1{\@empty\CJK@char{cb}{0}{##1}}
+ \CJK@namegdef{^^cc}##1{\@empty\CJK@char{cc}{0}{##1}}
+ \CJK@namegdef{^^cd}##1{\@empty\CJK@char{cd}{0}{##1}}
+ \CJK@namegdef{^^ce}##1{\@empty\CJK@char{ce}{0}{##1}}
+ \CJK@namegdef{^^cf}##1{\@empty\CJK@char{cf}{0}{##1}}
+ \CJK@namegdef{^^d0}##1{\@empty\CJK@char{d0}{0}{##1}}
+ \CJK@namegdef{^^d1}##1{\@empty\CJK@char{d1}{0}{##1}}
+ \CJK@namegdef{^^d2}##1{\@empty\CJK@char{d2}{0}{##1}}
+ \CJK@namegdef{^^d3}##1{\@empty\CJK@char{d3}{0}{##1}}
+ \CJK@namegdef{^^d4}##1{\@empty\CJK@char{d4}{0}{##1}}
+ \CJK@namegdef{^^d5}##1{\@empty\CJK@char{d5}{0}{##1}}
+ \CJK@namegdef{^^d6}##1{\@empty\CJK@char{d6}{0}{##1}}
+ \CJK@namegdef{^^d7}##1{\@empty\CJK@char{d7}{0}{##1}}
+ \CJK@namegdef{^^d8}##1{\@empty\CJK@char{d8}{0}{##1}}
+ \CJK@namegdef{^^d9}##1{\@empty\CJK@char{d9}{0}{##1}}
+ \CJK@namegdef{^^da}##1{\@empty\CJK@char{da}{0}{##1}}
+ \CJK@namegdef{^^db}##1{\@empty\CJK@char{db}{0}{##1}}
+ \CJK@namegdef{^^dc}##1{\@empty\CJK@char{dc}{0}{##1}}
+ \CJK@namegdef{^^dd}##1{\@empty\CJK@char{dd}{0}{##1}}
+ \CJK@namegdef{^^de}##1{\@empty\CJK@char{de}{0}{##1}}
+ \CJK@namegdef{^^df}##1{\@empty\CJK@char{df}{0}{##1}}
+ \CJK@namegdef{^^e0}##1{\@empty\CJK@char{e0}{0}{##1}}
+ \CJK@namegdef{^^e1}##1{\@empty\CJK@char{e1}{0}{##1}}
+ \CJK@namegdef{^^e2}##1{\@empty\CJK@char{e2}{0}{##1}}
+ \CJK@namegdef{^^e3}##1{\@empty\CJK@char{e3}{0}{##1}}
+ \CJK@namegdef{^^e4}##1{\@empty\CJK@char{e4}{0}{##1}}
+ \CJK@namegdef{^^e5}##1{\@empty\CJK@char{e5}{0}{##1}}
+ \CJK@namegdef{^^e6}##1{\@empty\CJK@char{e6}{0}{##1}}
+ \CJK@namegdef{^^e7}##1{\@empty\CJK@char{e7}{0}{##1}}
+ \CJK@namegdef{^^e8}##1{\@empty\CJK@char{e8}{0}{##1}}
+ \CJK@namegdef{^^e9}##1{\@empty\CJK@char{e9}{0}{##1}}
+ \CJK@namegdef{^^ea}##1{\@empty\CJK@char{ea}{0}{##1}}
+ \CJK@namegdef{^^eb}##1{\@empty\CJK@char{eb}{0}{##1}}
+ \CJK@namegdef{^^ec}##1{\@empty\CJK@char{ec}{0}{##1}}
+ \CJK@namegdef{^^ed}##1{\@empty\CJK@char{ed}{0}{##1}}
+ \CJK@namegdef{^^ee}##1{\@empty\CJK@char{ee}{0}{##1}}
+ \CJK@namegdef{^^ef}##1{\@empty\CJK@char{ef}{0}{##1}}
+ \CJK@namegdef{^^f0}##1{\@empty\CJK@char{f0}{0}{##1}}
+ \CJK@namegdef{^^f1}##1{\@empty\CJK@char{f1}{0}{##1}}
+ \CJK@namegdef{^^f2}##1{\@empty\CJK@char{f2}{0}{##1}}
+ \CJK@namegdef{^^f3}##1{\@empty\CJK@char{f3}{0}{##1}}
+ \CJK@namegdef{^^f4}##1{\@empty\CJK@char{f4}{0}{##1}}
+ \CJK@namegdef{^^f5}##1{\@empty\CJK@char{f5}{0}{##1}}
+ \CJK@namegdef{^^f6}##1{\@empty\CJK@char{f6}{0}{##1}}
+ \CJK@namegdef{^^f7}##1{\@empty\CJK@char{f7}{0}{##1}}
+ \CJK@namegdef{^^f8}##1{\@empty\CJK@char{f8}{0}{##1}}
+ \CJK@namegdef{^^f9}##1{\@empty\CJK@char{f9}{0}{##1}}
+ \CJK@namegdef{^^fa}##1{\@empty\CJK@char{fa}{0}{##1}}
+ \CJK@namegdef{^^fb}##1{\@empty\CJK@char{fb}{0}{##1}}
+ \CJK@namegdef{^^fc}##1{\@empty\CJK@char{fc}{0}{##1}}
+ \CJK@namegdef{^^fd}##1{\@empty\CJK@char{fd}{0}{##1}}
+ \CJK@namegdef{^^fe}##1{\@empty\CJK@char{fe}{0}{##1}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/ruby.sty b/language/chinese/CJK/cjk-4.8.5/texinput/ruby.sty
new file mode 100644
index 0000000000..708a62522c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/ruby.sty
@@ -0,0 +1,174 @@
+% This is the file ruby.sty of the CJK package
+% for displaying ruby (i.e. furigana).
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesPackage{ruby}[\filedate\space\fileversion]
+
+
+\RequirePackage{CJK}[1996/11/20]
+
+\newif\ifruby@overlap@
+\newif\ifruby@CJK@
+
+\DeclareOption{overlap}{\ruby@overlap@true}
+\DeclareOption{nooverlap}{\ruby@overlap@false}
+\DeclareOption{CJK}{\ruby@CJK@true}
+\DeclareOption{latin}{\ruby@CJK@false}
+
+\ExecuteOptions{overlap, CJK}
+
+\ProcessOptions
+
+
+% we suppress any unwanted spaces produced by linefeeds.
+
+\endlinechar \m@ne
+
+% to get a small separation between adjacent lines.
+
+\lineskiplimit 1pt
+
+
+\newdimen\ruby@width
+\edef\ruby@kern{\kern -5sp\kern 5sp}
+
+\newcommand{\rubysize}{0.4}
+\newcommand{\rubysep}{-0.5ex}
+\newcommand{\rubyoverlap}{\ruby@overlap@true}
+\newcommand{\rubynooverlap}{\ruby@overlap@false}
+\newcommand{\rubyCJK}{\ruby@CJK@true}
+\newcommand{\rubylatin}{\ruby@CJK@false}
+
+
+% #1 is the base character; #2 is the ruby.
+
+\DeclareRobustCommand{\ruby}[2]{
+ {\@tempdimc \f@size\p@
+ \@tempdimc \rubysize\@tempdimc
+ \sbox\z@{\vrule\@height.7\baselineskip\@depth\z@\@width\z@ #1}
+ \sbox\@tempboxa{\fontsize{\@tempdimc}{1.2\@tempdimc}\selectfont
+ \vrule\@height\z@\@depth.3\baselineskip\@width\z@ #2}
+
+ % save width value of previous ruby (if applicable)
+ \@tempdimb\ruby@width
+
+ \global\ruby@width \wd\@tempboxa
+ \global\advance\ruby@width -\wd\z@
+ \ifdim\ruby@width > \z@
+ \global\divide\ruby@width \tw@
+ \else
+ \global\ruby@width \z@
+ \fi
+
+ % we first compute the box of the ruby with its base character(s).
+ \ifruby@overlap@
+ \setbox\@tempboxa \vbox{
+ \hbox to \wd0{\hss \box\@tempboxa \hss}
+ \nointerlineskip
+ \kern\rubysep
+ \box\z@}
+ \else
+ \ifdim\ruby@width > \z@
+ \@tempdima \wd\@tempboxa
+ \else
+ \@tempdima \wd\z@
+ \fi
+ \setbox\@tempboxa \vbox{
+ \hbox to \@tempdima{\hss \box\@tempboxa \hss}
+ \nointerlineskip
+ \kern\rubysep
+ \hbox to \@tempdima{\hss \box\z@ \hss}}
+ \fi
+
+ % are we at the beginning of a paragraph?
+ \ifvmode
+ \leavevmode
+ \ifruby@overlap@
+ \kern\ruby@width
+ \fi
+ \else
+
+ % has previous character a ruby with \ruby@width > 0?
+ \ifnum\lastkern = 5% \ruby@kern
+ \kern\@tempdimb
+ \ifruby@CJK@
+ \nobreak
+ \CJKglue
+ \nobreak
+ \fi
+ \ifruby@overlap@
+ \kern\ruby@width
+ \fi
+ \else
+
+ \ifruby@CJK@
+
+ % is previous character an ordinary CJK character?
+ \ifnum\lastkern = \@ne% \CJK@CJK
+ \ifdim\ruby@width > \z@
+ \nobreak
+ \CJKglue
+ \nobreak
+ \else
+ \CJKglue
+ \fi
+ \else
+
+ % is previous character a punctuation character?
+ \ifnum\lastkern = \tw@% \CJK@kern
+ \nobreak
+ \CJKglue
+ \nobreak
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+
+ \box\@tempboxa
+
+ \ifdim\ruby@width > \z@
+ \ruby@kern
+ \ifruby@overlap@
+ \else
+ \global\ruby@width\z@
+ \fi
+ \else
+ \kern -1sp
+ \kern 1sp
+ \global\ruby@width\z@
+ \fi}
+
+ \ifruby@CJK@
+ \ignorespaces
+ \fi}
+
+
+% reset endline character.
+
+\endlinechar `\^^M
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/standard.bdg b/language/chinese/CJK/cjk-4.8.5/texinput/standard.bdg
new file mode 100644
index 0000000000..dc0a5f18a2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/standard.bdg
@@ -0,0 +1,161 @@
+% This is the file standard.bdg of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{standard.bdg}[\filedate\space\fileversion]
+
+
+% The standard bindings for two byte encodings.
+
+\gdef\CJK@standardBinding{
+% 80 % used with cjk-enc.el/CEF
+ \CJK@nameppdef{^^81}
+ \CJK@nameppdef{^^82}
+ \CJK@nameppdef{^^83}
+ \CJK@nameppdef{^^84}
+ \CJK@nameppdef{^^85}
+ \CJK@nameppdef{^^86}
+ \CJK@nameppdef{^^87}
+ \CJK@nameppdef{^^88}
+ \CJK@nameppdef{^^89}
+ \CJK@nameppdef{^^8a}
+ \CJK@nameppdef{^^8b}
+ \CJK@nameppdef{^^8c}
+ \CJK@nameppdef{^^8d}
+ \CJK@nameppdef{^^8e}
+ \CJK@nameppdef{^^8f}
+ \CJK@nameppdef{^^90}
+ \CJK@nameppdef{^^91}
+ \CJK@nameppdef{^^92}
+ \CJK@nameppdef{^^93}
+ \CJK@nameppdef{^^94}
+ \CJK@nameppdef{^^95}
+ \CJK@nameppdef{^^96}
+ \CJK@nameppdef{^^97}
+ \CJK@nameppdef{^^98}
+ \CJK@nameppdef{^^99}
+ \CJK@nameppdef{^^9a}
+ \CJK@nameppdef{^^9b}
+ \CJK@nameppdef{^^9c}
+ \CJK@nameppdef{^^9d}
+ \CJK@nameppdef{^^9e}
+ \CJK@nameppdef{^^9f}
+ \CJK@nameppdef{^^a0}
+ \CJK@nameppdef{^^a1}
+ \CJK@nameppdef{^^a2}
+ \CJK@nameppdef{^^a3}
+ \CJK@nameppdef{^^a4}
+ \CJK@nameppdef{^^a5}
+ \CJK@nameppdef{^^a6}
+ \CJK@nameppdef{^^a7}
+ \CJK@nameppdef{^^a8}
+ \CJK@nameppdef{^^a9}
+ \CJK@nameppdef{^^aa}
+ \CJK@nameppdef{^^ab}
+ \CJK@nameppdef{^^ac}
+ \CJK@nameppdef{^^ad}
+ \CJK@nameppdef{^^ae}
+ \CJK@nameppdef{^^af}
+ \CJK@nameppdef{^^b0}
+ \CJK@nameppdef{^^b1}
+ \CJK@nameppdef{^^b2}
+ \CJK@nameppdef{^^b3}
+ \CJK@nameppdef{^^b4}
+ \CJK@nameppdef{^^b5}
+ \CJK@nameppdef{^^b6}
+ \CJK@nameppdef{^^b7}
+ \CJK@nameppdef{^^b8}
+ \CJK@nameppdef{^^b9}
+ \CJK@nameppdef{^^ba}
+ \CJK@nameppdef{^^bb}
+ \CJK@nameppdef{^^bc}
+ \CJK@nameppdef{^^bd}
+ \CJK@nameppdef{^^be}
+ \CJK@nameppdef{^^bf}
+ \CJK@nameppdef{^^c0}
+ \CJK@nameppdef{^^c1}
+ \CJK@nameppdef{^^c2}
+ \CJK@nameppdef{^^c3}
+ \CJK@nameppdef{^^c4}
+ \CJK@nameppdef{^^c5}
+ \CJK@nameppdef{^^c6}
+ \CJK@nameppdef{^^c7}
+ \CJK@nameppdef{^^c8}
+ \CJK@nameppdef{^^c9}
+ \CJK@nameppdef{^^ca}
+ \CJK@nameppdef{^^cb}
+ \CJK@nameppdef{^^cc}
+ \CJK@nameppdef{^^cd}
+ \CJK@nameppdef{^^ce}
+ \CJK@nameppdef{^^cf}
+ \CJK@nameppdef{^^d0}
+ \CJK@nameppdef{^^d1}
+ \CJK@nameppdef{^^d2}
+ \CJK@nameppdef{^^d3}
+ \CJK@nameppdef{^^d4}
+ \CJK@nameppdef{^^d5}
+ \CJK@nameppdef{^^d6}
+ \CJK@nameppdef{^^d7}
+ \CJK@nameppdef{^^d8}
+ \CJK@nameppdef{^^d9}
+ \CJK@nameppdef{^^da}
+ \CJK@nameppdef{^^db}
+ \CJK@nameppdef{^^dc}
+ \CJK@nameppdef{^^dd}
+ \CJK@nameppdef{^^de}
+ \CJK@nameppdef{^^df}
+ \CJK@nameppdef{^^e0}
+ \CJK@nameppdef{^^e1}
+ \CJK@nameppdef{^^e2}
+ \CJK@nameppdef{^^e3}
+ \CJK@nameppdef{^^e4}
+ \CJK@nameppdef{^^e5}
+ \CJK@nameppdef{^^e6}
+ \CJK@nameppdef{^^e7}
+ \CJK@nameppdef{^^e8}
+ \CJK@nameppdef{^^e9}
+ \CJK@nameppdef{^^ea}
+ \CJK@nameppdef{^^eb}
+ \CJK@nameppdef{^^ec}
+ \CJK@nameppdef{^^ed}
+ \CJK@nameppdef{^^ee}
+ \CJK@nameppdef{^^ef}
+ \CJK@nameppdef{^^f0}
+ \CJK@nameppdef{^^f1}
+ \CJK@nameppdef{^^f2}
+ \CJK@nameppdef{^^f3}
+ \CJK@nameppdef{^^f4}
+ \CJK@nameppdef{^^f5}
+ \CJK@nameppdef{^^f6}
+ \CJK@nameppdef{^^f7}
+ \CJK@nameppdef{^^f8}
+ \CJK@nameppdef{^^f9}
+ \CJK@nameppdef{^^fa}
+ \CJK@nameppdef{^^fb}
+ \CJK@nameppdef{^^fc}
+ \CJK@nameppdef{^^fd}
+ \CJK@nameppdef{^^fe}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/standard.chr b/language/chinese/CJK/cjk-4.8.5/texinput/standard.chr
new file mode 100644
index 0000000000..e1669a627f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/standard.chr
@@ -0,0 +1,203 @@
+% This is the file standard.chr of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{standard.chr}[\filedate\space\fileversion]
+
+
+% define macros for handling standard CJK fonts and characters.
+
+\gdef\CJK@standardChr{
+ \CJK@global\def\CJK@char##1##2##3{
+ {\ifnum ##3 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##3 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##3\relax
+ \advance\@tempcnta ##2\relax
+ \edef\CJK@plane{##1}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% the same, but the plane crosses the font file boundary.
+
+ \CJK@global\def\CJK@charx##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJKglue
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \@tempcntb 256\relax
+ \advance\@tempcnta ##3\relax
+ \advance\@tempcntb -##3\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##4 < \@temp
+ \edef\CJK@plane{##1}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##2}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@CJK
+ \fi
+ \fi}}
+
+% for punctuation.
+
+ \CJK@global\def\CJK@punctchar##1##2##3##4{
+ {\ifnum ##4 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##4 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##4}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##4\relax
+ \advance\@tempcnta ##3\relax
+ \edef\CJK@plane{##2}
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}
+
+ \CJK@global\def\CJK@punctcharx##1##2##3##4##5{
+ {\ifnum ##5 < \CJK@min
+ \CJK@err
+ \else
+ \ifnum ##5 > \CJK@max
+ \CJK@err
+ \else
+ \CJK@numbToHex{\CJK@gtemp}{##5}
+ \CJK@testLastCJK
+ \ifCJK@
+ \CJK@testPostPunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@nobreakglue
+ \else
+ \CJKglue
+ \fi
+ \fi
+ \CJK@testLastKern
+ \ifCJK@
+ \CJK@nobreakglue
+ \fi
+
+ \@tempcnta ##5\relax
+ \@tempcntb 256\relax
+ \advance\@tempcnta ##4\relax
+ \advance\@tempcntb -##4\relax
+ \chardef\@temp \@tempcntb
+ \ifnum ##5 < \@temp
+ \edef\CJK@plane{##2}
+ \else
+ \advance\@tempcnta -256\relax
+ \edef\CJK@plane{##3}
+ \fi
+ \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape}
+ \edef\reserved@a{
+ \curr@fontshape/\CJK@plane/\the\@tempcnta/\CJK@direction}
+ \expandafter\ifx\csname\reserved@a\endcsname \relax
+ \CJKpunctsymbol{\@tempcnta}
+ \else
+ \csname\reserved@a\endcsname
+ \fi
+
+ \CJK@testPrePunct{\CJK@punctEnc}{##1}{\CJK@gtemp}
+ \ifCJK@
+ \CJK@kern
+ \else
+ \CJK@CJK
+ \fi
+ \fi
+ \fi}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/standard.enc b/language/chinese/CJK/cjk-4.8.5/texinput/standard.enc
new file mode 100644
index 0000000000..d54df3a37b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/standard.enc
@@ -0,0 +1,131 @@
+% This is the file standard.enc of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{standard.enc}[\filedate\space\fileversion]
+
+
+% standard encoding:
+% each plane has 94 characters (GB, JIS etc.) (0xA1 - 0xFE).
+
+\gdef\CJK@standardEncoding{
+ \CJK@loadChr{standard}
+
+ \CJK@namegdef{^^a1}##1{\@empty\CJK@punctchar {A1}{01}{-161}{##1}}
+ \CJK@namegdef{^^a2}##1{\@empty\CJK@punctchar {A2}{01}{ -67}{##1}}
+ \CJK@namegdef{^^a3}##1{\@empty\CJK@punctcharx{A3}{01}{02}{27}{##1}}
+ \CJK@namegdef{^^a4}##1{\@empty\CJK@punctchar {A4}{02}{-135}{##1}}
+ \CJK@namegdef{^^a5}##1{\@empty\CJK@punctchar {A5}{02}{ -41}{##1}}
+ \CJK@namegdef{^^a6}##1{\@empty\CJK@charx{02}{03}{53}{##1}}
+ \CJK@namegdef{^^a7}##1{\@empty\CJK@char {03}{-109}{##1}}
+ \CJK@namegdef{^^a8}##1{\@empty\CJK@char {03}{ -15}{##1}}
+ \CJK@namegdef{^^a9}##1{\@empty\CJK@charx{03}{04}{79}{##1}}
+ \CJK@namegdef{^^aa}##1{\@empty\CJK@char {04}{ -83}{##1}}
+ \CJK@namegdef{^^ab}##1{\@empty\CJK@charx{04}{05}{11}{##1}}
+ \CJK@namegdef{^^ac}##1{\@empty\CJK@char {05}{-151}{##1}}
+ \CJK@namegdef{^^ad}##1{\@empty\CJK@char {05}{ -57}{##1}}
+ \CJK@namegdef{^^ae}##1{\@empty\CJK@charx{05}{06}{37}{##1}}
+ \CJK@namegdef{^^af}##1{\@empty\CJK@char {06}{-125}{##1}}
+ \CJK@namegdef{^^b0}##1{\@empty\CJK@char {06}{ -31}{##1}}
+ \CJK@namegdef{^^b1}##1{\@empty\CJK@charx{06}{07}{63}{##1}}
+ \CJK@namegdef{^^b2}##1{\@empty\CJK@char {07}{ -99}{##1}}
+ \CJK@namegdef{^^b3}##1{\@empty\CJK@char {07}{ -5}{##1}}
+ \CJK@namegdef{^^b4}##1{\@empty\CJK@charx{07}{08}{89}{##1}}
+ \CJK@namegdef{^^b5}##1{\@empty\CJK@char {08}{ -73}{##1}}
+ \CJK@namegdef{^^b6}##1{\@empty\CJK@charx{08}{09}{21}{##1}}
+ \CJK@namegdef{^^b7}##1{\@empty\CJK@char {09}{-141}{##1}}
+ \CJK@namegdef{^^b8}##1{\@empty\CJK@char {09}{ -47}{##1}}
+ \CJK@namegdef{^^b9}##1{\@empty\CJK@charx{09}{10}{47}{##1}}
+ \CJK@namegdef{^^ba}##1{\@empty\CJK@char {10}{-115}{##1}}
+ \CJK@namegdef{^^bb}##1{\@empty\CJK@char {10}{ -21}{##1}}
+ \CJK@namegdef{^^bc}##1{\@empty\CJK@charx{10}{11}{73}{##1}}
+ \CJK@namegdef{^^bd}##1{\@empty\CJK@char {11}{ -89}{##1}}
+ \CJK@namegdef{^^be}##1{\@empty\CJK@charx{11}{12}{ 5}{##1}}
+ \CJK@namegdef{^^bf}##1{\@empty\CJK@char {12}{-157}{##1}}
+ \CJK@namegdef{^^c0}##1{\@empty\CJK@char {12}{ -63}{##1}}
+ \CJK@namegdef{^^c1}##1{\@empty\CJK@charx{12}{13}{31}{##1}}
+ \CJK@namegdef{^^c2}##1{\@empty\CJK@char {13}{-131}{##1}}
+ \CJK@namegdef{^^c3}##1{\@empty\CJK@char {13}{ -37}{##1}}
+ \CJK@namegdef{^^c4}##1{\@empty\CJK@charx{13}{14}{57}{##1}}
+ \CJK@namegdef{^^c5}##1{\@empty\CJK@char {14}{-105}{##1}}
+ \CJK@namegdef{^^c6}##1{\@empty\CJK@char {14}{ -11}{##1}}
+ \CJK@namegdef{^^c7}##1{\@empty\CJK@charx{14}{15}{83}{##1}}
+ \CJK@namegdef{^^c8}##1{\@empty\CJK@char {15}{ -79}{##1}}
+ \CJK@namegdef{^^c9}##1{\@empty\CJK@charx{15}{16}{15}{##1}}
+ \CJK@namegdef{^^ca}##1{\@empty\CJK@char {16}{-147}{##1}}
+ \CJK@namegdef{^^cb}##1{\@empty\CJK@char {16}{ -53}{##1}}
+ \CJK@namegdef{^^cc}##1{\@empty\CJK@charx{16}{17}{41}{##1}}
+ \CJK@namegdef{^^cd}##1{\@empty\CJK@char {17}{-121}{##1}}
+ \CJK@namegdef{^^ce}##1{\@empty\CJK@char {17}{ -27}{##1}}
+ \CJK@namegdef{^^cf}##1{\@empty\CJK@charx{17}{18}{67}{##1}}
+ \CJK@namegdef{^^d0}##1{\@empty\CJK@char {18}{ -95}{##1}}
+ \CJK@namegdef{^^d1}##1{\@empty\CJK@char {18}{ -1}{##1}}
+ \CJK@namegdef{^^d2}##1{\@empty\CJK@charx{18}{19}{93}{##1}}
+ \CJK@namegdef{^^d3}##1{\@empty\CJK@char {19}{ -69}{##1}}
+ \CJK@namegdef{^^d4}##1{\@empty\CJK@charx{19}{20}{25}{##1}}
+ \CJK@namegdef{^^d5}##1{\@empty\CJK@char {20}{-137}{##1}}
+ \CJK@namegdef{^^d6}##1{\@empty\CJK@char {20}{ -43}{##1}}
+ \CJK@namegdef{^^d7}##1{\@empty\CJK@charx{20}{21}{51}{##1}}
+ \CJK@namegdef{^^d8}##1{\@empty\CJK@char {21}{-111}{##1}}
+ \CJK@namegdef{^^d9}##1{\@empty\CJK@char {21}{ -17}{##1}}
+ \CJK@namegdef{^^da}##1{\@empty\CJK@charx{21}{22}{77}{##1}}
+ \CJK@namegdef{^^db}##1{\@empty\CJK@char {22}{ -85}{##1}}
+ \CJK@namegdef{^^dc}##1{\@empty\CJK@charx{22}{23}{ 9}{##1}}
+ \CJK@namegdef{^^dd}##1{\@empty\CJK@char {23}{-153}{##1}}
+ \CJK@namegdef{^^de}##1{\@empty\CJK@char {23}{ -59}{##1}}
+ \CJK@namegdef{^^df}##1{\@empty\CJK@charx{23}{24}{35}{##1}}
+ \CJK@namegdef{^^e0}##1{\@empty\CJK@char {24}{-127}{##1}}
+ \CJK@namegdef{^^e1}##1{\@empty\CJK@char {24}{ -33}{##1}}
+ \CJK@namegdef{^^e2}##1{\@empty\CJK@charx{24}{25}{61}{##1}}
+ \CJK@namegdef{^^e3}##1{\@empty\CJK@char {25}{-101}{##1}}
+ \CJK@namegdef{^^e4}##1{\@empty\CJK@char {25}{ -7}{##1}}
+ \CJK@namegdef{^^e5}##1{\@empty\CJK@charx{25}{26}{87}{##1}}
+ \CJK@namegdef{^^e6}##1{\@empty\CJK@char {26}{ -75}{##1}}
+ \CJK@namegdef{^^e7}##1{\@empty\CJK@charx{26}{27}{19}{##1}}
+ \CJK@namegdef{^^e8}##1{\@empty\CJK@char {27}{-143}{##1}}
+ \CJK@namegdef{^^e9}##1{\@empty\CJK@char {27}{ -49}{##1}}
+ \CJK@namegdef{^^ea}##1{\@empty\CJK@charx{27}{28}{45}{##1}}
+ \CJK@namegdef{^^eb}##1{\@empty\CJK@char {28}{-117}{##1}}
+ \CJK@namegdef{^^ec}##1{\@empty\CJK@char {28}{ -23}{##1}}
+ \CJK@namegdef{^^ed}##1{\@empty\CJK@charx{28}{29}{71}{##1}}
+ \CJK@namegdef{^^ee}##1{\@empty\CJK@char {29}{ -91}{##1}}
+ \CJK@namegdef{^^ef}##1{\@empty\CJK@charx{29}{30}{ 3}{##1}}
+ \CJK@namegdef{^^f0}##1{\@empty\CJK@char {30}{-159}{##1}}
+ \CJK@namegdef{^^f1}##1{\@empty\CJK@char {30}{ -65}{##1}}
+ \CJK@namegdef{^^f2}##1{\@empty\CJK@charx{30}{31}{29}{##1}}
+ \CJK@namegdef{^^f3}##1{\@empty\CJK@char {31}{-133}{##1}}
+ \CJK@namegdef{^^f4}##1{\@empty\CJK@char {31}{ -39}{##1}}
+ \CJK@namegdef{^^f5}##1{\@empty\CJK@charx{31}{32}{55}{##1}}
+ \CJK@namegdef{^^f6}##1{\@empty\CJK@char {32}{-107}{##1}}
+ \CJK@namegdef{^^f7}##1{\@empty\CJK@char {32}{ -13}{##1}}
+ \CJK@namegdef{^^f8}##1{\@empty\CJK@charx{32}{33}{81}{##1}}
+ \CJK@namegdef{^^f9}##1{\@empty\CJK@char {33}{ -81}{##1}}
+ \CJK@namegdef{^^fa}##1{\@empty\CJK@charx{33}{34}{13}{##1}}
+ \CJK@namegdef{^^fb}##1{\@empty\CJK@char {34}{-149}{##1}}
+ \CJK@namegdef{^^fc}##1{\@empty\CJK@char {34}{ -55}{##1}}
+ \CJK@namegdef{^^fd}##1{\@empty\CJK@charx{34}{35}{39}{##1}}
+ \CJK@namegdef{^^fe}##1{\@empty\CJK@char {35}{-123}{##1}}}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmr.fd
new file mode 100644
index 0000000000..d65fbf8eff
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmr.fd
@@ -0,0 +1,24 @@
+% This is the file c90cmr.fd of the CJK package
+% for using Thai with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c90cmr.fd}[\filedate\space\fileversion]
+
+
+% Thai
+%
+% font encoding: OT1-like + TIS 620 + Thai glyph variants
+
+\DeclareFontFamily{C90}{cmr}{}
+
+\DeclareFontShape{C90}{cmr}{m} {n} {<-> ssub * nrsr/m/n}{}
+\DeclareFontShape{C90}{cmr}{bx}{n} {<-> ssub * nrsr/bx/n}{}
+\DeclareFontShape{C90}{cmr}{m} {it}{<-> ssub * nrsr/m/it}{}
+\DeclareFontShape{C90}{cmr}{bx}{it}{<-> ssub * nrsr/bx/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmss.fd b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmss.fd
new file mode 100644
index 0000000000..240713a34b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmss.fd
@@ -0,0 +1,24 @@
+% This is the file c90cmss.fd of the CJK package
+% for using Thai with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c90cmss.fd}[\filedate\space\fileversion]
+
+
+% Thai
+%
+% font encoding: OT1-like + TIS 620 + Thai glyph variants
+
+\DeclareFontFamily{C90}{cmss}{}
+
+\DeclareFontShape{C90}{cmss}{m} {n} {<-> ssub * gar/m/n}{}
+\DeclareFontShape{C90}{cmss}{bx}{n} {<-> ssub * gar/bx/n}{}
+\DeclareFontShape{C90}{cmss}{m} {it}{<-> ssub * gar/m/it}{}
+\DeclareFontShape{C90}{cmss}{bx}{it}{<-> ssub * gar/bx/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmtt.fd b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmtt.fd
new file mode 100644
index 0000000000..bf50798389
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90cmtt.fd
@@ -0,0 +1,24 @@
+% This is the file c90cmtt.fd of the CJK package
+% for using Thai with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c90cmtt.fd}[\filedate\space\fileversion]
+
+
+% Thai
+%
+% font encoding: OT1-like + TIS 620 + Thai glyph variants
+
+\DeclareFontFamily{C90}{cmtt}{}
+
+\DeclareFontShape{C90}{cmtt}{m} {n} {<-> ssub * gar/m/n}{}
+\DeclareFontShape{C90}{cmtt}{bx}{n} {<-> ssub * gar/bx/n}{}
+\DeclareFontShape{C90}{cmtt}{m} {it}{<-> ssub * gar/m/it}{}
+\DeclareFontShape{C90}{cmtt}{bx}{it}{<-> ssub * gar/bx/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90enc.def b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90enc.def
new file mode 100644
index 0000000000..428e8e3801
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90enc.def
@@ -0,0 +1,110 @@
+% (C) 2002 Dominique Unruh, LPPL
+% The macros in the Thai part are oriented on TIS620, i.e. each
+% letter in TIS620 is represented by exactly one macro.
+% No reordering whatsoever is required.
+%
+\NeedsTeXFormat{LaTeX2e}[1998/12/01]
+\ProvidesFile{c90enc.def}[2002/06/06 Encoding C90 for Thai]
+\DeclareFontEncoding{C90}{}{}
+\DeclareFontSubstitution{C90}{nrsr}{m}{n}
+%
+\DeclareTextSymbol{\textemdash}{C90}{"0C}
+\DeclareTextSymbol{\textendash}{C90}{"0B}
+\DeclareTextSymbol{\textquotedbl}{C90}{"11}
+\DeclareTextSymbol{\textquotedblleft}{C90}{"0DD}
+\DeclareTextSymbol{\textquotedblright}{C90}{"22}
+\DeclareTextSymbol{\textquoteleft}{C90}{`\`}
+\DeclareTextSymbol{\textquoteright}{C90}{`\'}
+\DeclareTextSymbol{\textbraceleft}{C90}{`\{}
+\DeclareTextSymbol{\textbraceright}{C90}{`\}}
+\DeclareTextSymbol{\textbar}{C90}{`\|}
+%
+\DeclareTextSymbol{\thaiKoKai}{C90}{161}
+\DeclareTextSymbol{\thaiKhoKhai}{C90}{162}
+\DeclareTextSymbol{\thaiKhoKhuat}{C90}{163}
+\DeclareTextSymbol{\thaiKhoKhwai}{C90}{164}
+\DeclareTextSymbol{\thaiKhoKhon}{C90}{165}
+\DeclareTextSymbol{\thaiKhoRakhang}{C90}{166}
+\DeclareTextSymbol{\thaiNgoNgu}{C90}{167}
+\DeclareTextSymbol{\thaiChoChan}{C90}{168}
+\DeclareTextSymbol{\thaiChoChing}{C90}{169}
+\DeclareTextSymbol{\thaiChoChang}{C90}{170}
+\DeclareTextSymbol{\thaiSoSo}{C90}{171}
+\DeclareTextSymbol{\thaiChoChoe}{C90}{172}
+\DeclareTextSymbol{\thaiYoYing}{C90}{173}
+\DeclareTextSymbol{\thaiDoChada}{C90}{174}
+\DeclareTextSymbol{\thaiToPatak}{C90}{175}
+\DeclareTextSymbol{\thaiThoThan}{C90}{176}
+\DeclareTextSymbol{\thaiThoNangmontho}{C90}{177}
+\DeclareTextSymbol{\thaiThoPhuthao}{C90}{178}
+\DeclareTextSymbol{\thaiNoNen}{C90}{179}
+\DeclareTextSymbol{\thaiDoDek}{C90}{180}
+\DeclareTextSymbol{\thaiToTao}{C90}{181}
+\DeclareTextSymbol{\thaiThoThung}{C90}{182}
+\DeclareTextSymbol{\thaiThoThahan}{C90}{183}
+\DeclareTextSymbol{\thaiThoThong}{C90}{184}
+\DeclareTextSymbol{\thaiNoNu}{C90}{185}
+\DeclareTextSymbol{\thaiBoBaimai}{C90}{186}
+\DeclareTextSymbol{\thaiPoPla}{C90}{187}
+\DeclareTextSymbol{\thaiPhoPhung}{C90}{188}
+\DeclareTextSymbol{\thaiFoFa}{C90}{189}
+\DeclareTextSymbol{\thaiPhoPhan}{C90}{190}
+\DeclareTextSymbol{\thaiFoFan}{C90}{191}
+\DeclareTextSymbol{\thaiPhoSamphao}{C90}{192}
+\DeclareTextSymbol{\thaiMoMa}{C90}{193}
+\DeclareTextSymbol{\thaiYoYak}{C90}{194}
+\DeclareTextSymbol{\thaiRoRua}{C90}{195}
+\DeclareTextSymbol{\thaiRu}{C90}{196}
+\DeclareTextSymbol{\thaiLoLing}{C90}{197}
+\DeclareTextSymbol{\thaiLu}{C90}{198}
+\DeclareTextSymbol{\thaiWoWaen}{C90}{199}
+\DeclareTextSymbol{\thaiSoSala}{C90}{200}
+\DeclareTextSymbol{\thaiSoRusi}{C90}{201}
+\DeclareTextSymbol{\thaiSoSua}{C90}{202}
+\DeclareTextSymbol{\thaiHoHip}{C90}{203}
+\DeclareTextSymbol{\thaiLoChula}{C90}{204}
+\DeclareTextSymbol{\thaiOAng}{C90}{205}
+\DeclareTextSymbol{\thaiHoNokhuk}{C90}{206}
+\DeclareTextSymbol{\thaiPaiyannoi}{C90}{207}
+\DeclareTextSymbol{\thaiSaraA}{C90}{208}
+\DeclareTextSymbol{\thaiMaiHanakat}{C90}{209}
+\DeclareTextSymbol{\thaiSaraAa}{C90}{210}
+\DeclareTextSymbol{\thaiSaraAm}{C90}{211}
+\DeclareTextSymbol{\thaiSaraI}{C90}{212}
+\DeclareTextSymbol{\thaiSaraIi}{C90}{213}
+\DeclareTextSymbol{\thaiSaraUe}{C90}{214}
+\DeclareTextSymbol{\thaiSaraUee}{C90}{215}
+\DeclareTextSymbol{\thaiSaraU}{C90}{216}
+\DeclareTextSymbol{\thaiSaraUu}{C90}{217}
+\DeclareTextSymbol{\thaiPhinthu}{C90}{218}
+\DeclareTextSymbol{\textbaht}{C90}{223}
+\DeclareTextSymbol{\thaiSaraE}{C90}{224}
+\DeclareTextSymbol{\thaiSaraAe}{C90}{225}
+\DeclareTextSymbol{\thaiSaraO}{C90}{226}
+\DeclareTextSymbol{\thaiSaraAiMaimuan}{C90}{227}
+\DeclareTextSymbol{\thaiSaraAiMaimalai}{C90}{228}
+\DeclareTextSymbol{\thaiLakkhangyao}{C90}{229}
+\DeclareTextSymbol{\thaiMaiyamok}{C90}{230}
+\DeclareTextSymbol{\thaiMaitaikhu}{C90}{231}
+\DeclareTextSymbol{\thaiMaiEk}{C90}{232}
+\DeclareTextSymbol{\thaiMaiTho}{C90}{233}
+\DeclareTextSymbol{\thaiMaiTri}{C90}{234}
+\DeclareTextSymbol{\thaiMaiChattawa}{C90}{235}
+\DeclareTextSymbol{\thaiThanthakhat}{C90}{236}
+\DeclareTextSymbol{\thaiNikhahit}{C90}{237}
+\DeclareTextSymbol{\thaiYamakkan}{C90}{238}
+\DeclareTextSymbol{\thaiFongman}{C90}{239}
+\DeclareTextSymbol{\thaizero}{C90}{240}
+\DeclareTextSymbol{\thaione}{C90}{241}
+\DeclareTextSymbol{\thaitwo}{C90}{242}
+\DeclareTextSymbol{\thaithree}{C90}{243}
+\DeclareTextSymbol{\thaifour}{C90}{244}
+\DeclareTextSymbol{\thaifive}{C90}{245}
+\DeclareTextSymbol{\thaisix}{C90}{246}
+\DeclareTextSymbol{\thaiseven}{C90}{247}
+\DeclareTextSymbol{\thaieight}{C90}{248}
+\DeclareTextSymbol{\thainine}{C90}{249}
+\DeclareTextSymbol{\thaiAngkhankhu}{C90}{250}
+\DeclareTextSymbol{\thaiKhomut}{C90}{251}
+%
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90gar.fd b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90gar.fd
new file mode 100644
index 0000000000..69998e058b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90gar.fd
@@ -0,0 +1,34 @@
+%Filename: c90gar.fd
+%Created by: tex garuda-c90
+%Created using fontinst v1.927
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{c90gar.fd}
+ [2005/07/04 Fontinst v1.927 font definitions for C90/gar.]
+
+\DeclareFontFamily{C90}{gar}{}
+
+\DeclareFontShape{C90}{gar}{m}{n}{
+ <-> fgdr8z
+}{}
+
+\DeclareFontShape{C90}{gar}{bx}{n}{
+ <-> fgdb8z
+}{}
+
+\DeclareFontShape{C90}{gar}{bx}{sl}{
+ <-> fgdbo8z
+}{}
+
+\DeclareFontShape{C90}{gar}{m}{sl}{
+ <-> fgdo8z
+}{}
+
+\DeclareFontShape{C90}{gar}{b}{n}{<->ssub * gar/bx/n}{}
+\DeclareFontShape{C90}{gar}{b}{sl}{<->ssub * gar/bx/sl}{}
+\DeclareFontShape{C90}{gar}{bx}{it}{<->ssub * gar/bx/sl}{}
+\DeclareFontShape{C90}{gar}{b}{it}{<->ssub * gar/bx/it}{}
+\DeclareFontShape{C90}{gar}{m}{it}{<->ssub * gar/m/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90nrsr.fd b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90nrsr.fd
new file mode 100644
index 0000000000..5da41a39b7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/thai/c90nrsr.fd
@@ -0,0 +1,34 @@
+%Filename: c90nrsr.fd
+%Created by: tex norasi-c90
+%Created using fontinst v1.927
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{c90nrsr.fd}
+ [2005/07/04 Fontinst v1.927 font definitions for C90/nrsr.]
+
+\DeclareFontFamily{C90}{nrsr}{}
+
+\DeclareFontShape{C90}{nrsr}{m}{n}{
+ <-> ftnr8z
+}{}
+
+\DeclareFontShape{C90}{nrsr}{bx}{n}{
+ <-> ftnb8z
+}{}
+
+\DeclareFontShape{C90}{nrsr}{bx}{it}{
+ <-> ftnbi8z
+}{}
+
+\DeclareFontShape{C90}{nrsr}{m}{it}{
+ <-> ftni8z
+}{}
+
+\DeclareFontShape{C90}{nrsr}{b}{n}{<->ssub * nrsr/bx/n}{}
+\DeclareFontShape{C90}{nrsr}{b}{it}{<->ssub * nrsr/bx/it}{}
+\DeclareFontShape{C90}{nrsr}{bx}{sl}{<->ssub * nrsr/bx/it}{}
+\DeclareFontShape{C90}{nrsr}{b}{sl}{<->ssub * nrsr/bx/sl}{}
+\DeclareFontShape{C90}{nrsr}{m}{sl}{<->ssub * nrsr/m/it}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/thai/thaicjk.ldf b/language/chinese/CJK/cjk-4.8.5/texinput/thai/thaicjk.ldf
new file mode 100644
index 0000000000..78166632e9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texinput/thai/thaicjk.ldf
@@ -0,0 +1,89 @@
+% This is the file thaicjk.ldf of the CJK package
+% for handling Thai.
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+%
+%
+% It is based on a similar file of the thailatex package, written
+% by Surapant Meknavin <surapan@nectec.or.th> with modifications by
+% Theppitak Karoonboonyanan <thep@links.nectec.or.th>.
+
+\ProvidesLanguage{thaicjk}
+ [CJK 4.8.5 Thai support for the babel system]
+
+\LdfInit{thaicjk}{captionsthaicjk}
+
+\ifx\l@thaicjk\@undefined
+ \adddialect\l@thaicjk0
+\fi
+
+\addto\captionsthaicjk{%
+ \def\prefacename{º·¹Ó}%
+ \def\refname{˹ѧÊ×ÍÍéÒ§ÍÔ§}%
+ \def\abstractname{º·¤Ñ´ÂèÍ}%
+ \def\bibname{ºÃóҹءÃÁ}%
+ \def\chaptername{º··Õè}%
+ \def\appendixname{ÀÒ¤¼¹Ç¡}%
+ \def\contentsname{ÊÒúѭ}%
+ \def\listfigurename{ÊÒúѭÃÙ»}%
+ \def\listtablename{ÊÒúѭµÒÃÒ§}%
+ \def\indexname{´Ãê¹Õ}%
+ \def\figurename{ÃÙ»·Õè}%
+ \def\tablename{µÒÃÒ§·Õè}%
+ \def\partname{ÀÒ¤}%
+ \def\enclname{ÊÔ觷ÕèṺÁÒ´éÇÂ}%
+ \def\ccname{ÊÓà¹Ò¶Ö§}%
+ \def\headtoname{àÃÕ¹}%
+ \def\pagename{˹éÒ}%
+ \def\seename{´Ù}%
+ \def\alsoname{´Ùà¾ÔèÁàµÔÁ}%
+ \def\proofname{¾ÔÊÙ¨¹ì}%
+ }
+
+\def\th@month{%
+ \ifcase\month\or
+ Á¡ÃÒ¤Á\or
+ ¡ØÁÀҾѹ¸ì\or
+ ÁÕ¹Ò¤Á\or
+ àÁÉÒ¹\or
+ ¾ÄÉÀÒ¤Á\or
+ ÁԶعÒ¹\or
+ ¡Ã¡®Ò¤Á\or
+ ÊÔ§ËÒ¤Á\or
+ ¡Ñ¹ÂÒ¹\or
+ µØÅÒ¤Á\or
+ ¾ÄȨԡÒ¹\or
+ ¸Ñ¹ÇÒ¤Á\fi}
+\newcount\th@year
+\th@year=\year
+\advance\th@year by 543
+\def\datethaicjk{%
+ \def\today{\number\day \space \th@month\space ¾.È.~\number\th@year}}
+
+\addto\extrasthaicjk{\bbl@frenchspacing}
+\addto\noextrasthaicjk{\bbl@nonfrenchspacing}
+
+\addto\extrasthaicjk{\renewcommand{\baselinestretch}{1.2}}
+\addto\noextrasthaicjk{\renewcommand{\baselinestretch}{1}}
+
+\def\fnum@figure{\figurename\nobreakspace\thefigure}
+\def\fnum@table{\tablename\nobreakspace\thetable}
+
+\InputIfFileExists{c90enc.def}{%
+ \message{Loading definitions for the Thai C90 font encoding}}{%
+ \errhelp{I can't find file `c90enc.def' for Thai fonts}%
+ \errmessage{Since I do not know what the C90 encoding means^^J
+ I can't typeset Thai.^^J
+ I stop here, while you get a suitable c90enc.def file}\@@end
+ }
+
+\ldf@finish{thaicjk}
+
+\endinput
+
+%%% Local Variables:
+%%% coding: tis-620
+%%% mode: latex
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/texlive/README b/language/chinese/CJK/cjk-4.8.5/texlive/README
new file mode 100644
index 0000000000..a07701fe54
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texlive/README
@@ -0,0 +1,2 @@
+The font definition files in this directory are modified versions to be used
+within the TeXLive distribution, using smaller font sets.
diff --git a/language/chinese/CJK/cjk-4.8.5/texlive/bin-cjkutils.pl b/language/chinese/CJK/cjk-4.8.5/texlive/bin-cjkutils.pl
new file mode 100644
index 0000000000..4b40c211e8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texlive/bin-cjkutils.pl
@@ -0,0 +1,112 @@
+# bin-cjkutils.pl
+#
+# Public domain.
+#
+# Written by Werner Lemberg <wl@gnu.org>
+#
+# This file is intended to be called from the `MAKEcjk' subroutine within
+# the ctan2tds perl script. It installs the necessary files from the CJK
+# package into the correct destinations.
+#
+# It expects that the CJK packages (cjk-4.8.5 and cjk-4.8.5-doc) have been
+# unpacked (unmodified) in the current directory.
+
+
+# XXX: This installs files in `texmf', not `texmf-dist'!
+
+
+my $D = "doc";
+my $M = "doc/man/man1";
+my $H = "hbf2gf";
+
+
+#
+# cjk-4.8.5
+# ---------
+#
+
+&I("utils/Bg5conv/bg5conv.1", "$M/bg5conv.1");
+
+&I("utils/CEFconv/cef5conv.1", "$M/cef5conv.1");
+&I("utils/CEFconv/cefconv.1", "$M/cefconv.1");
+&I("utils/CEFconv/cefsconv.1", "$M/cefsconv.1");
+
+&I("utils/extconv/extconv.1", "$M/extconv.1");
+
+&I("utils/hbf2gf/hbf2gf.1", "$M/hbf2gf.1");
+
+&I("utils/SJISconv/sjisconv.1", "$M/sjisconv.1");
+
+&I("utils/hbf2gf/cfg/b5ka12.cfg", "$H/b5ka12.cfg");
+&I("utils/hbf2gf/cfg/b5kr12.cfg", "$H/b5kr12.cfg");
+&I("utils/hbf2gf/cfg/b5so12.cfg", "$H/b5so12.cfg");
+&I("utils/hbf2gf/cfg/c1so12.cfg", "$H/c1so12.cfg");
+&I("utils/hbf2gf/cfg/c2so12.cfg", "$H/c2so12.cfg");
+&I("utils/hbf2gf/cfg/c3so12.cfg", "$H/c3so12.cfg");
+&I("utils/hbf2gf/cfg/c4so12.cfg", "$H/c4so12.cfg");
+&I("utils/hbf2gf/cfg/c5so12.cfg", "$H/c5so12.cfg");
+&I("utils/hbf2gf/cfg/c6so12.cfg", "$H/c6so12.cfg");
+&I("utils/hbf2gf/cfg/c7so12.cfg", "$H/c7so12.cfg");
+&I("utils/hbf2gf/cfg/csso12.cfg", "$H/csso12.cfg");
+&I("utils/hbf2gf/cfg/gsfs14.cfg", "$H/gsfs14.cfg");
+&I("utils/hbf2gf/cfg/j2so12.cfg", "$H/j2so12.cfg");
+&I("utils/hbf2gf/cfg/jsso12.cfg", "$H/jsso12.cfg");
+&I("utils/hbf2gf/cfg/ksso17.cfg", "$H/ksso17.cfg");
+&I("utils/hbf2gf/cfg/README", "$H/README");
+
+
+#
+# cjk-4.8.5-doc
+# -------------
+#
+
+# doc/dvi/bg5conv.dvi ---
+# doc/dvi/cef5conv.dvi ---
+# doc/dvi/cefconv.dvi ---
+# doc/dvi/cefsconv.dvi ---
+# doc/dvi/extconv.dvi ---
+# doc/dvi/hbf2gf.dvi ---
+# doc/dvi/sjisconv.dvi ---
+
+# doc/man/dvi/bg5conv.dvi ---
+# doc/man/dvi/cef5conv.dvi ---
+# doc/man/dvi/cefconv.dvi ---
+# doc/man/dvi/cefsconv.dvi ---
+# doc/man/dvi/extconv.dvi ---
+# doc/man/dvi/hbf2gf.dvi ---
+# doc/man/dvi/sjisconv.dvi ---
+
+# doc/man/html/bg5conv.html ---
+# doc/man/html/cef5conv.html ---
+# doc/man/html/cefconv.html ---
+# doc/man/html/cefsconv.html ---
+# doc/man/html/extconv.html ---
+# doc/man/html/hbf2gf.html ---
+# doc/man/html/sjisconv.html ---
+
+# doc/man/pdf/bg5conv.pdf ---
+# doc/man/pdf/cef5conv.pdf ---
+# doc/man/pdf/cefconv.pdf ---
+# doc/man/pdf/cefsconv.pdf ---
+# doc/man/pdf/extconv.pdf ---
+# doc/man/pdf/hbf2gf.pdf ---
+# doc/man/pdf/sjisconv.pdf ---
+
+# doc/man/txt/bg5conv.txt ---
+# doc/man/txt/cef5conv.txt ---
+# doc/man/txt/cefconv.txt ---
+# doc/man/txt/cefsconv.txt ---
+# doc/man/txt/extconv.txt ---
+# doc/man/txt/hbf2gf.txt ---
+# doc/man/txt/sjisconv.txt ---
+
+&I("doc/pdf/bg5conv.pdf", "$D/bg5conv/bg5conv.pdf");
+&I("doc/pdf/cef5conv.pdf", "$D/cef5conv/cef5conv.pdf");
+&I("doc/pdf/cefconv.pdf", "$D/cefconv/cefconv.pdf");
+&I("doc/pdf/cefsconv.pdf", "$D/cefsconv/cefsconv.pdf");
+&I("doc/pdf/extconv.pdf", "$D/extconv/extconv.pdf");
+&I("doc/pdf/hbf2gf.pdf", "$D/hbf2gf/hbf2gf.pdf");
+&I("doc/pdf/sjisconv.pdf", "$D/sjisconv/sjisconv.pdf");
+
+1;
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/texlive/c63mj.fd b/language/chinese/CJK/cjk-4.8.5/texlive/c63mj.fd
new file mode 100644
index 0000000000..f4625c9df9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texlive/c63mj.fd
@@ -0,0 +1,56 @@
+% This is file c63mj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% This font definition file is a modified version of the standard c63mj.fd
+% file; it is for the TeXLive distribution, using smaller font sets.
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c63mj.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hangul)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcMyoungjo
+
+\DeclareFontFamily{C63}{mj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C63}{mj}{c}{n}{<-> CJK * wmjc}{}
+\DeclareFontShape{C63}{mj}{c}{sl}{<-> CJK * wmjco}{}
+\DeclareFontShape{C63}{mj}{c}{it}{<-> CJKssub * mj/c/sl}{}
+
+\DeclareFontShape{C63}{mj}{m}{n}{<-> CJK * wmj}{}
+\DeclareFontShape{C63}{mj}{m}{sl}{<-> CJK * wmjo}{}
+\DeclareFontShape{C63}{mj}{m}{it}{<-> CJKssub * mj/m/sl}{}
+
+\DeclareFontShape{C63}{mj}{x}{n}{<-> CJK * wmjx}{}
+\DeclareFontShape{C63}{mj}{x}{sl}{<-> CJK * wmjxo}{}
+\DeclareFontShape{C63}{mj}{x}{it}{<-> CJKssub * mj/x/sl}{}
+
+\DeclareFontShape{C63}{mj}{ux}{n}{<-> CJK * wmju}{}
+\DeclareFontShape{C63}{mj}{ux}{sl}{<-> CJK * wmjuo}{}
+\DeclareFontShape{C63}{mj}{ux}{it}{<-> CJKssub * mj/ux/sl}{}
+
+\DeclareFontShape{C63}{mj}{bc}{n}{<-> CJKb * wmjc}{\CJKbold}
+\DeclareFontShape{C63}{mj}{bc}{sl}{<-> CJKb * wmjco}{\CJKbold}
+\DeclareFontShape{C63}{mj}{bc}{it}{<-> CJKssub * mj/bc/sl}{}
+
+\DeclareFontShape{C63}{mj}{b}{n}{<-> CJKb * wmj}{\CJKbold}
+\DeclareFontShape{C63}{mj}{b}{sl}{<-> CJKb * wmjo}{\CJKbold}
+\DeclareFontShape{C63}{mj}{b}{it}{<-> CJKssub * mj/b/sl}{}
+
+\DeclareFontShape{C63}{mj}{bx}{n}{<-> CJKb * wmjx}{\CJKbold}
+\DeclareFontShape{C63}{mj}{bx}{sl}{<-> CJKb * wmjxo}{\CJKbold}
+\DeclareFontShape{C63}{mj}{bx}{it}{<-> CJKssub * mj/bx/sl}{}
+
+\DeclareFontShape{C63}{mj}{bux}{n}{<-> CJKb * wmju}{\CJKbold}
+\DeclareFontShape{C63}{mj}{bux}{sl}{<-> CJKb * wmjuo}{\CJKbold}
+\DeclareFontShape{C63}{mj}{bux}{it}{<-> CJKssub * mj/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texlive/c64mj.fd b/language/chinese/CJK/cjk-4.8.5/texlive/c64mj.fd
new file mode 100644
index 0000000000..42b321861c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texlive/c64mj.fd
@@ -0,0 +1,56 @@
+% This is file c64mj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% This font definition file is a modified version of the standard c64mj.fd
+% file; it is for the TeXLive distribution, using smaller font sets.
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c64mj.fd}[\filedate\space\fileversion]
+
+% Korean characters (Symbols)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcMyoungjo
+
+\DeclareFontFamily{C64}{mj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C64}{mj}{c}{n}{<-> CJK * wmjc}{}
+\DeclareFontShape{C64}{mj}{c}{sl}{<-> CJK * wmjco}{}
+\DeclareFontShape{C64}{mj}{c}{it}{<-> CJKssub * mj/c/sl}{}
+
+\DeclareFontShape{C64}{mj}{m}{n}{<-> CJK * wmj}{}
+\DeclareFontShape{C64}{mj}{m}{sl}{<-> CJK * wmjo}{}
+\DeclareFontShape{C64}{mj}{m}{it}{<-> CJKssub * mj/m/sl}{}
+
+\DeclareFontShape{C64}{mj}{x}{n}{<-> CJK * wmjx}{}
+\DeclareFontShape{C64}{mj}{x}{sl}{<-> CJK * wmjxo}{}
+\DeclareFontShape{C64}{mj}{x}{it}{<-> CJKssub * mj/x/sl}{}
+
+\DeclareFontShape{C64}{mj}{ux}{n}{<-> CJK * wmju}{}
+\DeclareFontShape{C64}{mj}{ux}{sl}{<-> CJK * wmjuo}{}
+\DeclareFontShape{C64}{mj}{ux}{it}{<-> CJKssub * mj/ux/sl}{}
+
+\DeclareFontShape{C64}{mj}{bc}{n}{<-> CJKb * wmjc}{\CJKbold}
+\DeclareFontShape{C64}{mj}{bc}{sl}{<-> CJKb * wmjco}{\CJKbold}
+\DeclareFontShape{C64}{mj}{bc}{it}{<-> CJKssub * mj/bc/sl}{}
+
+\DeclareFontShape{C64}{mj}{b}{n}{<-> CJKb * wmj}{\CJKbold}
+\DeclareFontShape{C64}{mj}{b}{sl}{<-> CJKb * wmjo}{\CJKbold}
+\DeclareFontShape{C64}{mj}{b}{it}{<-> CJKssub * mj/b/sl}{}
+
+\DeclareFontShape{C64}{mj}{bx}{n}{<-> CJKb * wmjx}{\CJKbold}
+\DeclareFontShape{C64}{mj}{bx}{sl}{<-> CJKb * wmjxo}{\CJKbold}
+\DeclareFontShape{C64}{mj}{bx}{it}{<-> CJKssub * mj/bx/sl}{}
+
+\DeclareFontShape{C64}{mj}{bux}{n}{<-> CJKb * wmju}{\CJKbold}
+\DeclareFontShape{C64}{mj}{bux}{sl}{<-> CJKb * wmjuo}{\CJKbold}
+\DeclareFontShape{C64}{mj}{bux}{it}{<-> CJKssub * mj/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texlive/c65mj.fd b/language/chinese/CJK/cjk-4.8.5/texlive/c65mj.fd
new file mode 100644
index 0000000000..3307685af0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texlive/c65mj.fd
@@ -0,0 +1,56 @@
+% This is file c65mj.fd of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% This font definition file is a modified version of the standard c65mj.fd
+% file; it is for the TeXLive distribution, using smaller font sets.
+
+\def\fileversion{4.8.5}
+\def\filedate{2021/10/16}
+\ProvidesFile{c65mj.fd}[\filedate\space\fileversion]
+
+% Korean characters (Hanja)
+%
+% character set: KS X 1001:1992 (=KS C 5601-1992)
+% font encoding: HL
+
+% UhcMyoungjo
+
+\DeclareFontFamily{C65}{mj}{\hyphenchar \font\m@ne}
+
+\DeclareFontShape{C65}{mj}{c}{n}{<-> CJK * wmjc}{}
+\DeclareFontShape{C65}{mj}{c}{sl}{<-> CJK * wmjco}{}
+\DeclareFontShape{C65}{mj}{c}{it}{<-> CJKssub * mj/c/sl}{}
+
+\DeclareFontShape{C65}{mj}{m}{n}{<-> CJK * wmj}{}
+\DeclareFontShape{C65}{mj}{m}{sl}{<-> CJK * wmjo}{}
+\DeclareFontShape{C65}{mj}{m}{it}{<-> CJKssub * mj/m/sl}{}
+
+\DeclareFontShape{C65}{mj}{x}{n}{<-> CJK * wmjx}{}
+\DeclareFontShape{C65}{mj}{x}{sl}{<-> CJK * wmjxo}{}
+\DeclareFontShape{C65}{mj}{x}{it}{<-> CJKssub * mj/x/sl}{}
+
+\DeclareFontShape{C65}{mj}{ux}{n}{<-> CJK * wmju}{}
+\DeclareFontShape{C65}{mj}{ux}{sl}{<-> CJK * wmjuo}{}
+\DeclareFontShape{C65}{mj}{ux}{it}{<-> CJKssub * mj/ux/sl}{}
+
+\DeclareFontShape{C65}{mj}{bc}{n}{<-> CJKb * wmjc}{\CJKbold}
+\DeclareFontShape{C65}{mj}{bc}{sl}{<-> CJKb * wmjco}{\CJKbold}
+\DeclareFontShape{C65}{mj}{bc}{it}{<-> CJKssub * mj/bc/sl}{}
+
+\DeclareFontShape{C65}{mj}{b}{n}{<-> CJKb * wmj}{\CJKbold}
+\DeclareFontShape{C65}{mj}{b}{sl}{<-> CJKb * wmjo}{\CJKbold}
+\DeclareFontShape{C65}{mj}{b}{it}{<-> CJKssub * mj/b/sl}{}
+
+\DeclareFontShape{C65}{mj}{bx}{n}{<-> CJKb * wmjx}{\CJKbold}
+\DeclareFontShape{C65}{mj}{bx}{sl}{<-> CJKb * wmjxo}{\CJKbold}
+\DeclareFontShape{C65}{mj}{bx}{it}{<-> CJKssub * mj/bx/sl}{}
+
+\DeclareFontShape{C65}{mj}{bux}{n}{<-> CJKb * wmju}{\CJKbold}
+\DeclareFontShape{C65}{mj}{bux}{sl}{<-> CJKb * wmjuo}{\CJKbold}
+\DeclareFontShape{C65}{mj}{bux}{it}{<-> CJKssub * mj/bux/sl}{}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/texlive/c90.pl b/language/chinese/CJK/cjk-4.8.5/texlive/c90.pl
new file mode 100644
index 0000000000..c7cbbacf6a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texlive/c90.pl
@@ -0,0 +1,28 @@
+# c90.pl
+#
+# Public domain.
+#
+# Written by Werner Lemberg <wl@gnu.org>
+#
+# This file is intended to be called from the `MAKEcjk' subroutine within
+# the ctan2tds perl script. It installs the necessary files from the CJK
+# package into the correct destinations.
+#
+# It expects that the CJK packages (cjk-4.8.5 and cjk-4.8.5-doc) have been
+# unpacked (unmodified) in the current directory.
+
+my $D = "doc/fonts/enc/c90";
+my $S = "source/fonts/enc/c90";
+my $T = "fonts/enc/dvips/c90";
+
+
+&I("utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc", "$T/c90.enc");
+
+&I("utils/thaifont/tools/c90.etx", "$S/c90.etx");
+&I("utils/thaifont/tools/c90.mtx", "$S/c90.mtx");
+
+# doc/dvi/c90.dvi ---
+&I("doc/pdf/c90.pdf", "$D/c90.pdf");
+
+1;
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/texlive/cjk-build.pl b/language/chinese/CJK/cjk-4.8.5/texlive/cjk-build.pl
new file mode 100644
index 0000000000..8837c28ee2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texlive/cjk-build.pl
@@ -0,0 +1,63 @@
+# cjk-build.pl
+#
+# Public domain.
+#
+# Written by Werner Lemberg <wl@gnu.org>
+#
+# This file is intended to be called from the `MAKEcjk' subroutine within
+# the ctan2tds perl script. It installs the necessary files from the CJK
+# package into the correct destinations.
+#
+# It expects that the CJK packages (cjk-4.8.5 and cjk-4.8.5-doc) have been
+# unpacked (unmodified) in the current directory. For installation, it
+# simply uses `install -d' so that missing subdirectories are created
+# automatically.
+
+
+# XXX: This installs files in the Build hierarchy!
+
+
+my $B = "cjkutils/bat";
+my $C = "cjkutils/conv";
+my $H = "cjkutils/hbf2gf";
+my $S = "cjkutils/scripts";
+
+
+&I("utils/Bg5conv/bg5conv.c", "$C/bg5conv.c");
+&I("utils/Bg5conv/bg5latex", "$S/bg5latex");
+&I("utils/Bg5conv/bg5pdflatex", "$S/bg5pdflatex");
+
+&I("utils/CEFconv/cef5conv.c", "$C/cef5conv.c");
+&I("utils/CEFconv/cef5latex", "$S/cef5latex");
+&I("utils/CEFconv/cef5pdflatex", "$S/cef5pdflatex");
+&I("utils/CEFconv/cefconv.c", "$C/cefconv.c");
+&I("utils/CEFconv/ceflatex", "$S/ceflatex");
+&I("utils/CEFconv/cefpdflatex", "$S/cefpdflatex");
+&I("utils/CEFconv/cefsconv.c", "$C/cefsconv.c");
+&I("utils/CEFconv/cefslatex", "$S/cefslatex");
+&I("utils/CEFconv/cefspdflatex", "$S/cefspdflatex");
+
+&I("utils/cjklatex/cjklatex.c", "$B/cjklatex.c");
+
+# utils/extconv/bg5+latex --- # soft link to gbklatex
+# utils/extconv/bg5+pdflatex --- # soft link to gbkpdflatex
+&I("utils/extconv/extconv.c", "$C/extconv.c");
+&I("utils/extconv/gbklatex", "$S/gbklatex");
+&I("utils/extconv/gbkpdflatex", "$S/gbkpdflatex");
+
+&I("utils/hbf2gf/configure.ac", "$H/configure.ac");
+&I("utils/hbf2gf/emdir.c", "$H/emdir.c");
+&I("utils/hbf2gf/emdir.h", "$H/emdir.h");
+&I("utils/hbf2gf/emtexdir.c", "$H/emtexdir.c");
+&I("utils/hbf2gf/emtexdir.h", "$H/emtexdir.h");
+&I("utils/hbf2gf/hbf2gf.def", "$H/hbf2gf.def");
+&I("utils/hbf2gf/hbf2gf.w", "$H/hbf2gf.w");
+&I("utils/hbf2gf/hbf.c", "$H/hbf.c");
+&I("utils/hbf2gf/hbf.h", "$H/hbf.h");
+
+&I("utils/SJISconv/sjisconv.c", "$C/sjisconv.c");
+&I("utils/SJISconv/sjislatex", "$S/sjislatex");
+&I("utils/SJISconv/sjispdflatex", "$S/sjispdflatex");
+
+1;
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/texlive/cjk.pl b/language/chinese/CJK/cjk-4.8.5/texlive/cjk.pl
new file mode 100644
index 0000000000..d631dcad05
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texlive/cjk.pl
@@ -0,0 +1,489 @@
+# cjk.pl
+#
+# Public domain.
+#
+# Written by Werner Lemberg <wl@gnu.org>
+#
+# This file is intended to be called from the `MAKEcjk' subroutine within
+# the ctan2tds perl script. It installs the necessary files from the CJK
+# package into the correct destinations.
+#
+# It expects that the CJK packages (cjk-4.8.5 and cjk-4.8.5-doc) have been
+# unpacked (unmodified) in the current directory.
+
+#
+# cjk-4.8.5
+# ---------
+#
+
+my $D = "doc/latex/cjk";
+my $S = "source/latex/cjk";
+my $T = "tex/latex/cjk";
+
+
+&I("ChangeLog", "$D/ChangeLog");
+&I("Makefile", "$D/Makefile");
+&I("MANIFEST", "$D/MANIFEST");
+&I("README", "$D/README");
+&I("TODO", "$D/TODO");
+
+&I("contrib/wadalab/c42goth.fd", "$T/contrib/wadalab/c42goth.fd");
+&I("contrib/wadalab/c42goth.fdx", "$T/contrib/wadalab/c42goth.fdx");
+&I("contrib/wadalab/c42maru.fd", "$T/contrib/wadalab/c42maru.fd");
+&I("contrib/wadalab/c42maru.fdx", "$T/contrib/wadalab/c42maru.fdx");
+&I("contrib/wadalab/c42min.fd", "$T/contrib/wadalab/c42min.fd");
+&I("contrib/wadalab/c42min.fdx", "$T/contrib/wadalab/c42min.fdx");
+&I("contrib/wadalab/c52maru.fd", "$T/contrib/wadalab/c52maru.fd");
+&I("contrib/wadalab/c52maru.fdx", "$T/contrib/wadalab/c52maru.fdx");
+&I("contrib/wadalab/c52min.fd", "$T/contrib/wadalab/c52min.fd");
+&I("contrib/wadalab/c52min.fdx", "$T/contrib/wadalab/c52min.fdx");
+&I("contrib/wadalab/c70goth.fd", "$T/contrib/wadalab/c70goth.fd");
+&I("contrib/wadalab/c70goth.fdx", "$T/contrib/wadalab/c70goth.fdx");
+&I("contrib/wadalab/c70maru.fd", "$T/contrib/wadalab/c70maru.fd");
+&I("contrib/wadalab/c70maru.fdx", "$T/contrib/wadalab/c70maru.fdx");
+&I("contrib/wadalab/c70min.fd", "$T/contrib/wadalab/c70min.fd");
+&I("contrib/wadalab/c70min.fdx", "$T/contrib/wadalab/c70min.fdx");
+
+&I("contrib/wadalab/fixwada", "$S/contrib/wadalab/fixwada");
+&I("contrib/wadalab/fixwada2.pl", "$S/contrib/wadalab/fixwada2.pl");
+&I("contrib/wadalab/makefont", "$S/contrib/wadalab/makefont");
+&I("contrib/wadalab/makeuniwada.pl", "$S/contrib/wadalab/makeuniwada.pl");
+&I("contrib/wadalab/wadalab.map", "$S/contrib/wadalab/wadalab.map");
+&I("contrib/wadalab/wadalab.txt", "$S/contrib/wadalab/wadalab.txt");
+
+&I("doc/CEF.txt", "$D/doc/CEF.txt");
+&I("doc/cjk-enc.txt", "$D/doc/cjk-enc.txt");
+&I("doc/CJKnumb.txt", "$D/doc/CJKnumb.txt");
+&I("doc/CJKspace.txt", "$D/doc/CJKspace.txt");
+&I("doc/CJK.txt", "$D/doc/CJK.txt");
+&I("doc/CJKutf8.txt", "$D/doc/CJKutf8.txt");
+&I("doc/commands.txt", "$D/doc/commands.txt");
+&I("doc/COPYING", "$D/doc/COPYING");
+&I("doc/dvidrv.txt", "$D/doc/dvidrv.txt");
+&I("doc/fdxfiles.txt", "$D/doc/fdxfiles.txt");
+&I("doc/fonts.txt", "$D/doc/fonts.txt");
+&I("doc/hbf2gf.txt", "$D/doc/hbf2gf.txt");
+&I("doc/history.2_5", "$D/doc/history.2_5");
+&I("doc/history.txt", "$D/doc/history.txt");
+&I("doc/INSTALL", "$D/doc/INSTALL");
+&I("doc/pinyin.txt", "$D/doc/pinyin.txt");
+&I("doc/pyhyphen.txt", "$D/doc/pyhyphen.txt");
+&I("doc/reftex.txt", "$D/doc/reftex.txt");
+&I("doc/ruby.txt", "$D/doc/ruby.txt");
+&I("doc/TDS.txt", "$D/doc/TDS.txt");
+&I("doc/thaifont.txt", "$D/doc/thaifont.txt");
+&I("doc/vertical.txt", "$D/doc/vertical.txt");
+
+&I("doc/chinese/emTeXb5.txt", "$D/doc/chinese/emTeXb5.txt");
+&I("doc/chinese/README", "$D/doc/chinese/README");
+&I("doc/chinese/READMEb5.tex", "$D/doc/chinese/READMEb5.tex");
+&I("doc/chinese/READMEgb.tex", "$D/doc/chinese/READMEgb.tex");
+&I("doc/chinese/teTeXb5.txt", "$D/doc/chinese/teTeXb5.txt");
+
+&I("doc/japanese/ascii.txt", "$D/doc/japanese/ascii.txt");
+&I("doc/japanese/japanese.jis", "$D/doc/japanese/japanese.jis");
+&I("doc/japanese/japanese.txt", "$D/doc/japanese/japanese.txt");
+&I("doc/japanese/jp-fonts.txt", "$D/doc/japanese/jp-fonts.txt");
+&I("doc/japanese/jp-tex.txt", "$D/doc/japanese/jp-tex.txt");
+&I("doc/japanese/preview.txt", "$D/doc/japanese/preview.txt");
+&I("doc/japanese/README", "$D/doc/japanese/README");
+&I("doc/japanese/shibuaki.txt", "$D/doc/japanese/shibuaki.txt");
+
+&I("doc/pdfhowto/examples/bkai.map", "$D/doc/pdfhowto/examples/bkai.map");
+&I("doc/pdfhowto/examples/cid-x.map", "$D/doc/pdfhowto/examples/cid-x.map");
+&I("doc/pdfhowto/examples/cwtb.map", "$D/doc/pdfhowto/examples/cwtb.map");
+&I("doc/pdfhowto/examples/dvipdfmx.cfg", "$D/doc/pdfhowto/examples/dvipdfmx.cfg");
+&I("doc/pdfhowto/examples/gen-map.pl", "$D/doc/pdfhowto/examples/gen-map.pl");
+&I("doc/pdfhowto/examples/map.list", "$D/doc/pdfhowto/examples/map.list");
+&I("doc/pdfhowto/examples/texinput/Bg5/c00cwtb.fd", "$D/doc/pdfhowto/examples/texinput/Bg5/c00cwtb.fd");
+&I("doc/pdfhowto/examples/texinput/Bg5/c00tmpl.fd", "$D/doc/pdfhowto/examples/texinput/Bg5/c00tmpl.fd");
+&I("doc/pdfhowto/examples/texinput/GB/c10tmpl.fd", "$D/doc/pdfhowto/examples/texinput/GB/c10tmpl.fd");
+&I("doc/pdfhowto/examples/texinput/JIS/c40tmpl.fd", "$D/doc/pdfhowto/examples/texinput/JIS/c40tmpl.fd");
+&I("doc/pdfhowto/examples/texinput/SJIS/c49tmpl.fd", "$D/doc/pdfhowto/examples/texinput/SJIS/c49tmpl.fd");
+&I("doc/pdfhowto/examples/updmap.my", "$D/doc/pdfhowto/examples/updmap.my");
+&I("doc/pdfhowto/examples/wcl.sfd", "$D/doc/pdfhowto/examples/wcl.sfd");
+&I("doc/pdfhowto/HOWTO.txt", "$D/doc/pdfhowto/HOWTO.txt");
+
+&I("examples/Big5.tex", "$D/examples/Big5.tex");
+&I("examples/Big5vert.tex", "$D/examples/Big5vert.tex");
+&I("examples/CEF_test.tex", "$D/examples/CEF_test.tex");
+&I("examples/CJKbabel.tex", "$D/examples/CJKbabel.tex");
+&I("examples/CJKfntef.tex", "$D/examples/CJKfntef.tex");
+&I("examples/CJKmixed.tex", "$D/examples/CJKmixed.tex");
+&I("examples/CJKspace.tex", "$D/examples/CJKspace.tex");
+&I("examples/CJKutf8.tex", "$D/examples/CJKutf8.tex");
+&I("examples/GB.tex", "$D/examples/GB.tex");
+&I("examples/JIS.tex", "$D/examples/JIS.tex");
+&I("examples/KS.tex", "$D/examples/KS.tex");
+&I("examples/muletest.tex", "$D/examples/muletest.tex");
+&I("examples/py_test.tex", "$D/examples/py_test.tex");
+&I("examples/README", "$D/examples/README");
+&I("examples/rubytest.tex", "$D/examples/rubytest.tex");
+&I("examples/SJIS.tex", "$D/examples/SJIS.tex");
+&I("examples/thai.tex", "$D/examples/thai.tex");
+&I("examples/thai_utf8.tex","$D/examples/thai_utf8.tex");
+&I("examples/UTF8.tex", "$D/examples/UTF8.tex");
+
+&I("texinput/CJK.enc", "$T/texinput/CJK.enc");
+&I("texinput/CJKfntef.sty", "$T/texinput/CJKfntef.sty");
+&I("texinput/CJKnumb.sty", "$T/texinput/CJKnumb.sty");
+&I("texinput/CJKspace.sty", "$T/texinput/CJKspace.sty");
+&I("texinput/CJK.sty", "$T/texinput/CJK.sty");
+&I("texinput/CJKulem.sty", "$T/texinput/CJKulem.sty");
+&I("texinput/CJKutf8.sty", "$T/texinput/CJKutf8.sty");
+&I("texinput/CJKvert.sty", "$T/texinput/CJKvert.sty");
+&I("texinput/extended.chr", "$T/texinput/extended.chr");
+&I("texinput/extended.enc", "$T/texinput/extended.enc");
+&I("texinput/pinyin.sty", "$T/texinput/pinyin.sty");
+&I("texinput/pmCbig.enc", "$T/texinput/pmCbig.enc");
+&I("texinput/pmC.chr", "$T/texinput/pmC.chr");
+&I("texinput/pmCsmall.enc", "$T/texinput/pmCsmall.enc");
+&I("texinput/ruby.sty", "$T/texinput/ruby.sty");
+&I("texinput/standard.bdg", "$T/texinput/standard.bdg");
+&I("texinput/standard.chr", "$T/texinput/standard.chr");
+&I("texinput/standard.enc", "$T/texinput/standard.enc");
+
+&I("texinput/Bg5/Bg5.cap", "$T/texinput/Bg5/Bg5.cap");
+&I("texinput/Bg5/Bg5.chr", "$T/texinput/Bg5/Bg5.chr");
+&I("texinput/Bg5/Bg5.cpx", "$T/texinput/Bg5/Bg5.cpx");
+&I("texinput/Bg5/Bg5.enc", "$T/texinput/Bg5/Bg5.enc");
+&I("texinput/Bg5/c00bkai.fd", "$T/texinput/Bg5/c00bkai.fd");
+&I("texinput/Bg5/c00bkai.fdx", "$T/texinput/Bg5/c00bkai.fdx");
+&I("texinput/Bg5/c00bsmi.fd", "$T/texinput/Bg5/c00bsmi.fd");
+&I("texinput/Bg5/c00bsmi.fdx", "$T/texinput/Bg5/c00bsmi.fdx");
+&I("texinput/Bg5/c00bsmir.fd", "$T/texinput/Bg5/c00bsmir.fd");
+&I("texinput/Bg5/c00bsmir.fdx", "$T/texinput/Bg5/c00bsmir.fdx");
+&I("texinput/Bg5/c00cns.fd", "$T/texinput/Bg5/c00cns.fd");
+&I("texinput/Bg5/c00fs.fd", "$T/texinput/Bg5/c00fs.fd");
+&I("texinput/Bg5/c00kai.fd", "$T/texinput/Bg5/c00kai.fd");
+&I("texinput/Bg5/c00kair.fd", "$T/texinput/Bg5/c00kair.fd");
+&I("texinput/Bg5/c00kair.fdx", "$T/texinput/Bg5/c00kair.fdx");
+&I("texinput/Bg5/c00song.fd", "$T/texinput/Bg5/c00song.fd");
+&I("texinput/Bg5/c01song.fd", "$T/texinput/Bg5/c01song.fd");
+&I("texinput/Bg5/c05song.fd", "$T/texinput/Bg5/c05song.fd");
+&I("texinput/Bg5/c09song.fd", "$T/texinput/Bg5/c09song.fd");
+&I("texinput/Bg5/HK.enc", "$T/texinput/Bg5/HK.enc");
+
+&I("texinput/CEF/c80song.fd", "$T/texinput/CEF/c80song.fd");
+&I("texinput/CEF/c81song.fd", "$T/texinput/CEF/c81song.fd");
+
+&I("texinput/CNS/c31song.fd", "$T/texinput/CNS/c31song.fd");
+&I("texinput/CNS/c32song.fd", "$T/texinput/CNS/c32song.fd");
+&I("texinput/CNS/c33song.fd", "$T/texinput/CNS/c33song.fd");
+&I("texinput/CNS/c34song.fd", "$T/texinput/CNS/c34song.fd");
+&I("texinput/CNS/c35song.fd", "$T/texinput/CNS/c35song.fd");
+&I("texinput/CNS/c36song.fd", "$T/texinput/CNS/c36song.fd");
+&I("texinput/CNS/c37song.fd", "$T/texinput/CNS/c37song.fd");
+&I("texinput/CNS/EUC-TW.bdg", "$T/texinput/CNS/EUC-TW.bdg");
+&I("texinput/CNS/EUC-TW.chr", "$T/texinput/CNS/EUC-TW.chr");
+&I("texinput/CNS/EUC-TW.enc", "$T/texinput/CNS/EUC-TW.enc");
+
+&I("texinput/GB/c10fs.fd", "$T/texinput/GB/c10fs.fd");
+&I("texinput/GB/c10gbsn.fd", "$T/texinput/GB/c10gbsn.fd");
+&I("texinput/GB/c10gbsn.fdx", "$T/texinput/GB/c10gbsn.fdx");
+&I("texinput/GB/c10gkai.fd", "$T/texinput/GB/c10gkai.fd");
+&I("texinput/GB/c10gkai.fdx", "$T/texinput/GB/c10gkai.fdx");
+&I("texinput/GB/c10song.fd", "$T/texinput/GB/c10song.fd");
+&I("texinput/GB/c11song.fd", "$T/texinput/GB/c11song.fd");
+&I("texinput/GB/c19song.fd", "$T/texinput/GB/c19song.fd");
+&I("texinput/GB/c20song.fd", "$T/texinput/GB/c20song.fd");
+&I("texinput/GB/c21song.fd", "$T/texinput/GB/c21song.fd");
+&I("texinput/GB/GB.cap", "$T/texinput/GB/GB.cap");
+&I("texinput/GB/GB.cpx", "$T/texinput/GB/GB.cpx");
+
+&I("texinput/JIS/c40song.fd", "$T/texinput/JIS/c40song.fd");
+&I("texinput/JIS/c41song.fd", "$T/texinput/JIS/c41song.fd");
+&I("texinput/JIS/c42song.fd", "$T/texinput/JIS/c42song.fd");
+&I("texinput/JIS/c43song.fd", "$T/texinput/JIS/c43song.fd");
+&I("texinput/JIS/c50song.fd", "$T/texinput/JIS/c50song.fd");
+&I("texinput/JIS/EUC-JP.bdg", "$T/texinput/JIS/EUC-JP.bdg");
+&I("texinput/JIS/EUC-JP.chr", "$T/texinput/JIS/EUC-JP.chr");
+&I("texinput/JIS/EUC-JP.enc", "$T/texinput/JIS/EUC-JP.enc");
+&I("texinput/JIS/EUC-JPdnp.enc", "$T/texinput/JIS/EUC-JPdnp.enc");
+&I("texinput/JIS/JIS.cap", "$T/texinput/JIS/JIS.cap");
+&I("texinput/JIS/JIS.cpx", "$T/texinput/JIS/JIS.cpx");
+&I("texinput/JIS/JISdnp.enc", "$T/texinput/JIS/JISdnp.enc");
+
+&I("texinput/KS/c60dr.fd", "$T/texinput/KS/c60dr.fd");
+&I("texinput/KS/c60gr.fd", "$T/texinput/KS/c60gr.fd");
+&I("texinput/KS/c60gs.fd", "$T/texinput/KS/c60gs.fd");
+&I("texinput/KS/c60gt.fd", "$T/texinput/KS/c60gt.fd");
+&I("texinput/KS/c60hgt.fd", "$T/texinput/KS/c60hgt.fd");
+&I("texinput/KS/c60hmj.fd", "$T/texinput/KS/c60hmj.fd");
+&I("texinput/KS/c60hol.fd", "$T/texinput/KS/c60hol.fd");
+&I("texinput/KS/c60hpg.fd", "$T/texinput/KS/c60hpg.fd");
+&I("texinput/KS/c60mj.fd", "$T/texinput/KS/c60mj.fd");
+&I("texinput/KS/c61dr.fd", "$T/texinput/KS/c61dr.fd");
+&I("texinput/KS/c61gr.fd", "$T/texinput/KS/c61gr.fd");
+&I("texinput/KS/c61gs.fd", "$T/texinput/KS/c61gs.fd");
+&I("texinput/KS/c61gt.fd", "$T/texinput/KS/c61gt.fd");
+&I("texinput/KS/c61hgt.fd", "$T/texinput/KS/c61hgt.fd");
+&I("texinput/KS/c61hmj.fd", "$T/texinput/KS/c61hmj.fd");
+&I("texinput/KS/c61hol.fd", "$T/texinput/KS/c61hol.fd");
+&I("texinput/KS/c61hpg.fd", "$T/texinput/KS/c61hpg.fd");
+&I("texinput/KS/c61mj.fd", "$T/texinput/KS/c61mj.fd");
+&I("texinput/KS/c62song.fd", "$T/texinput/KS/c62song.fd");
+&I("texinput/KS/hangul2.cap", "$T/texinput/KS/hangul2.cap");
+&I("texinput/KS/hangul2.cpx", "$T/texinput/KS/hangul2.cpx");
+&I("texinput/KS/hangul.cap", "$T/texinput/KS/hangul.cap");
+&I("texinput/KS/hangul.cpx", "$T/texinput/KS/hangul.cpx");
+&I("texinput/KS/hanja.cap", "$T/texinput/KS/hanja.cap");
+&I("texinput/KS/hanja.cpx", "$T/texinput/KS/hanja.cpx");
+&I("texinput/KS/KS.chr", "$T/texinput/KS/KS.chr");
+&I("texinput/KS/KS.enc", "$T/texinput/KS/KS.enc");
+
+&I("texinput/KS/HLaTeX/c63bm.fd", "$T/texinput/KS/HLaTeX/c63bm.fd");
+&I("texinput/KS/HLaTeX/c63dn.fd", "$T/texinput/KS/HLaTeX/c63dn.fd");
+&I("texinput/KS/HLaTeX/c63gr.fd", "$T/texinput/KS/HLaTeX/c63gr.fd");
+&I("texinput/KS/HLaTeX/c63gs.fd", "$T/texinput/KS/HLaTeX/c63gs.fd");
+&I("texinput/KS/HLaTeX/c63gt.fd", "$T/texinput/KS/HLaTeX/c63gt.fd");
+&I("texinput/KS/HLaTeX/c63jgt.fd", "$T/texinput/KS/HLaTeX/c63jgt.fd");
+&I("texinput/KS/HLaTeX/c63jmj.fd", "$T/texinput/KS/HLaTeX/c63jmj.fd");
+&I("texinput/KS/HLaTeX/c63jnv.fd", "$T/texinput/KS/HLaTeX/c63jnv.fd");
+&I("texinput/KS/HLaTeX/c63jsr.fd", "$T/texinput/KS/HLaTeX/c63jsr.fd");
+&I("texinput/KS/HLaTeX/c63mj.fd", "$S/texinput/KS/HLaTeX/c63mj.fd"); # $S
+&I("texinput/KS/HLaTeX/c63pga.fd", "$T/texinput/KS/HLaTeX/c63pga.fd");
+&I("texinput/KS/HLaTeX/c63pg.fd", "$T/texinput/KS/HLaTeX/c63pg.fd");
+&I("texinput/KS/HLaTeX/c63ph.fd", "$T/texinput/KS/HLaTeX/c63ph.fd");
+&I("texinput/KS/HLaTeX/c63pn.fd", "$T/texinput/KS/HLaTeX/c63pn.fd");
+&I("texinput/KS/HLaTeX/c63sh.fd", "$T/texinput/KS/HLaTeX/c63sh.fd");
+&I("texinput/KS/HLaTeX/c63tz.fd", "$T/texinput/KS/HLaTeX/c63tz.fd");
+&I("texinput/KS/HLaTeX/c63vd.fd", "$T/texinput/KS/HLaTeX/c63vd.fd");
+&I("texinput/KS/HLaTeX/c63yt.fd", "$T/texinput/KS/HLaTeX/c63yt.fd");
+&I("texinput/KS/HLaTeX/c64bm.fd", "$T/texinput/KS/HLaTeX/c64bm.fd");
+&I("texinput/KS/HLaTeX/c64dn.fd", "$T/texinput/KS/HLaTeX/c64dn.fd");
+&I("texinput/KS/HLaTeX/c64gr.fd", "$T/texinput/KS/HLaTeX/c64gr.fd");
+&I("texinput/KS/HLaTeX/c64gs.fd", "$T/texinput/KS/HLaTeX/c64gs.fd");
+&I("texinput/KS/HLaTeX/c64gt.fd", "$T/texinput/KS/HLaTeX/c64gt.fd");
+&I("texinput/KS/HLaTeX/c64jgt.fd", "$T/texinput/KS/HLaTeX/c64jgt.fd");
+&I("texinput/KS/HLaTeX/c64jmj.fd", "$T/texinput/KS/HLaTeX/c64jmj.fd");
+&I("texinput/KS/HLaTeX/c64jnv.fd", "$T/texinput/KS/HLaTeX/c64jnv.fd");
+&I("texinput/KS/HLaTeX/c64jsr.fd", "$T/texinput/KS/HLaTeX/c64jsr.fd");
+&I("texinput/KS/HLaTeX/c64mj.fd", "$S/texinput/KS/HLaTeX/c64mj.fd"); # $S
+&I("texinput/KS/HLaTeX/c64pga.fd", "$T/texinput/KS/HLaTeX/c64pga.fd");
+&I("texinput/KS/HLaTeX/c64pg.fd", "$T/texinput/KS/HLaTeX/c64pg.fd");
+&I("texinput/KS/HLaTeX/c64ph.fd", "$T/texinput/KS/HLaTeX/c64ph.fd");
+&I("texinput/KS/HLaTeX/c64pn.fd", "$T/texinput/KS/HLaTeX/c64pn.fd");
+&I("texinput/KS/HLaTeX/c64sh.fd", "$T/texinput/KS/HLaTeX/c64sh.fd");
+&I("texinput/KS/HLaTeX/c64tz.fd", "$T/texinput/KS/HLaTeX/c64tz.fd");
+&I("texinput/KS/HLaTeX/c64vd.fd", "$T/texinput/KS/HLaTeX/c64vd.fd");
+&I("texinput/KS/HLaTeX/c64yt.fd", "$T/texinput/KS/HLaTeX/c64yt.fd");
+&I("texinput/KS/HLaTeX/c65bm.fd", "$T/texinput/KS/HLaTeX/c65bm.fd");
+&I("texinput/KS/HLaTeX/c65dn.fd", "$T/texinput/KS/HLaTeX/c65dn.fd");
+&I("texinput/KS/HLaTeX/c65gr.fd", "$T/texinput/KS/HLaTeX/c65gr.fd");
+&I("texinput/KS/HLaTeX/c65gs.fd", "$T/texinput/KS/HLaTeX/c65gs.fd");
+&I("texinput/KS/HLaTeX/c65gt.fd", "$T/texinput/KS/HLaTeX/c65gt.fd");
+&I("texinput/KS/HLaTeX/c65jgt.fd", "$T/texinput/KS/HLaTeX/c65jgt.fd");
+&I("texinput/KS/HLaTeX/c65jmj.fd", "$T/texinput/KS/HLaTeX/c65jmj.fd");
+&I("texinput/KS/HLaTeX/c65jnv.fd", "$T/texinput/KS/HLaTeX/c65jnv.fd");
+&I("texinput/KS/HLaTeX/c65jsr.fd", "$T/texinput/KS/HLaTeX/c65jsr.fd");
+&I("texinput/KS/HLaTeX/c65mj.fd", "$S/texinput/KS/HLaTeX/c65mj.fd"); # $S
+&I("texinput/KS/HLaTeX/c65pga.fd", "$T/texinput/KS/HLaTeX/c65pga.fd");
+&I("texinput/KS/HLaTeX/c65pg.fd", "$T/texinput/KS/HLaTeX/c65pg.fd");
+&I("texinput/KS/HLaTeX/c65ph.fd", "$T/texinput/KS/HLaTeX/c65ph.fd");
+&I("texinput/KS/HLaTeX/c65pn.fd", "$T/texinput/KS/HLaTeX/c65pn.fd");
+&I("texinput/KS/HLaTeX/c65sh.fd", "$T/texinput/KS/HLaTeX/c65sh.fd");
+&I("texinput/KS/HLaTeX/c65tz.fd", "$T/texinput/KS/HLaTeX/c65tz.fd");
+&I("texinput/KS/HLaTeX/c65vd.fd", "$T/texinput/KS/HLaTeX/c65vd.fd");
+&I("texinput/KS/HLaTeX/c65yt.fd", "$T/texinput/KS/HLaTeX/c65yt.fd");
+&I("texinput/KS/HLaTeX/HLaTeX.chr", "$T/texinput/KS/HLaTeX/HLaTeX.chr");
+&I("texinput/KS/HLaTeX/KSHL.enc", "$T/texinput/KS/HLaTeX/KSHL.enc");
+&I("texinput/KS/HLaTeX/pshan.sty", "$T/texinput/KS/HLaTeX/pshan.sty");
+
+&I("texinput/mule/MULEenc.sty", "$T/texinput/mule/MULEenc.sty");
+
+&I("texinput/SJIS/c49song.fd", "$T/texinput/SJIS/c49song.fd");
+&I("texinput/SJIS/SJIS.bdg", "$T/texinput/SJIS/SJIS.bdg");
+&I("texinput/SJIS/SJIS.cap", "$T/texinput/SJIS/SJIS.cap");
+&I("texinput/SJIS/SJIS.chr", "$T/texinput/SJIS/SJIS.chr");
+&I("texinput/SJIS/SJIS.cpx", "$T/texinput/SJIS/SJIS.cpx");
+&I("texinput/SJIS/SJISdnp.chr", "$T/texinput/SJIS/SJISdnp.chr");
+&I("texinput/SJIS/SJISdnp.enc", "$T/texinput/SJIS/SJISdnp.enc");
+&I("texinput/SJIS/SJIS.enc", "$T/texinput/SJIS/SJIS.enc");
+
+&I("texinput/thai/c90cmr.fd", "$T/texinput/thai/c90cmr.fd");
+&I("texinput/thai/c90cmss.fd", "$T/texinput/thai/c90cmss.fd");
+&I("texinput/thai/c90cmtt.fd", "$T/texinput/thai/c90cmtt.fd");
+&I("texinput/thai/c90enc.def", "$T/texinput/thai/c90enc.def");
+&I("texinput/thai/c90gar.fd", "$T/texinput/thai/c90gar.fd");
+&I("texinput/thai/c90nrsr.fd", "$T/texinput/thai/c90nrsr.fd");
+&I("texinput/thai/thaicjk.ldf", "$T/texinput/thai/thaicjk.ldf");
+
+&I("texinput/UTF8/c70bkai.fd", "$T/texinput/UTF8/c70bkai.fd");
+&I("texinput/UTF8/c70bkai.fdx", "$T/texinput/UTF8/c70bkai.fdx");
+&I("texinput/UTF8/c70bsmi.fd", "$T/texinput/UTF8/c70bsmi.fd");
+&I("texinput/UTF8/c70bsmi.fdx", "$T/texinput/UTF8/c70bsmi.fdx");
+&I("texinput/UTF8/c70gbsn.fd", "$T/texinput/UTF8/c70gbsn.fd");
+&I("texinput/UTF8/c70gbsn.fdx", "$T/texinput/UTF8/c70gbsn.fdx");
+&I("texinput/UTF8/c70gkai.fd", "$T/texinput/UTF8/c70gkai.fd");
+&I("texinput/UTF8/c70gkai.fdx", "$T/texinput/UTF8/c70gkai.fdx");
+&I("texinput/UTF8/c70mj.fd", "$T/texinput/UTF8/c70mj.fd");
+&I("texinput/UTF8/c70mj.fdx", "$T/texinput/UTF8/c70mj.fdx");
+&I("texinput/UTF8/c70song.fd", "$T/texinput/UTF8/c70song.fd");
+&I("texinput/UTF8/ja.cpx", "$T/texinput/UTF8/ja.cpx");
+&I("texinput/UTF8/ko-Hang2.cpx", "$T/texinput/UTF8/ko-Hang2.cpx");
+&I("texinput/UTF8/ko-Hang.cpx", "$T/texinput/UTF8/ko-Hang.cpx");
+&I("texinput/UTF8/ko-Hani.cpx", "$T/texinput/UTF8/ko-Hani.cpx");
+&I("texinput/UTF8/UTF8.bdg", "$T/texinput/UTF8/UTF8.bdg");
+&I("texinput/UTF8/UTF8.chr", "$T/texinput/UTF8/UTF8.chr");
+&I("texinput/UTF8/UTF8.enc", "$T/texinput/UTF8/UTF8.enc");
+&I("texinput/UTF8/zh-Hans.cpx", "$T/texinput/UTF8/zh-Hans.cpx");
+&I("texinput/UTF8/zh-Hant.cpx", "$T/texinput/UTF8/zh-Hant.cpx");
+
+&I("texlive/c63mj.fd", "$T/texinput/KS/HLaTeX/c63mj.fd");
+&I("texlive/c64mj.fd", "$T/texinput/KS/HLaTeX/c64mj.fd");
+&I("texlive/c65mj.fd", "$T/texinput/KS/HLaTeX/c65mj.fd");
+# texlive/README ---
+&I("texlive/bin-cjkutils.pl", "$D/texlive/bin-cjkutils.pl");
+&I("texlive/c90.pl", "$D/texlive/c90.pl");
+&I("texlive/cjk-build.pl", "$D/texlive/cjk-build.pl");
+&I("texlive/cjk.pl", "$D/texlive/cjk.pl");
+&I("texlive/dnp.pl", "$D/texlive/dnp.pl");
+&I("texlive/garuda-c90.pl", "$D/texlive/garuda-c90.pl");
+&I("texlive/norasi-c90.pl", "$D/texlive/norasi-c90.pl");
+
+&I("utils/f_name.bat", "$S/utils/f_name.bat");
+
+&I("utils/Bg5conv/bg5conv.w", "$S/utils/Bg5conv/bg5conv.w");
+&I("utils/Bg5conv/bg5latex.bat", "$S/utils/Bg5conv/bg5latex.bat");
+&I("utils/Bg5conv/bg5latex.cmd", "$S/utils/Bg5conv/bg5latex.cmd");
+
+&I("utils/CEFconv/cef5conv.w", "$S/utils/CEFconv/cef5conv.w");
+&I("utils/CEFconv/cef5ltx.bat", "$S/utils/CEFconv/cef5ltx.bat");
+&I("utils/CEFconv/cef5ltx.cmd", "$S/utils/CEFconv/cef5ltx.cmd");
+&I("utils/CEFconv/cefconv.w", "$S/utils/CEFconv/cefconv.w");
+&I("utils/CEFconv/ceflatex.bat", "$S/utils/CEFconv/ceflatex.bat");
+&I("utils/CEFconv/ceflatex.cmd", "$S/utils/CEFconv/ceflatex.cmd");
+&I("utils/CEFconv/cefsconv.w", "$S/utils/CEFconv/cefsconv.w");
+&I("utils/CEFconv/cefsltx.bat", "$S/utils/CEFconv/cefsltx.bat");
+&I("utils/CEFconv/cefsltx.cmd", "$S/utils/CEFconv/cefsltx.cmd");
+
+&I("utils/extconv/bg5pltx.bat", "$S/utils/extconv/bg5pltx.bat");
+&I("utils/extconv/bg5pltx.cmd", "$S/utils/extconv/bg5pltx.cmd");
+&I("utils/extconv/extconv.w", "$S/utils/extconv/extconv.w");
+&I("utils/extconv/gbklatex.bat", "$S/utils/extconv/gbklatex.bat");
+&I("utils/extconv/gbklatex.cmd", "$S/utils/extconv/gbklatex.cmd");
+
+&I("utils/hbf2gf/c-auto.h", "$S/utils/hbf2gf/c-auto.h");
+# utils/hbf2gf/config.guess ---
+# utils/hbf2gf/config.sub ---
+# utils/hbf2gf/configure ---
+&I("utils/hbf2gf/dvidrv.btm", "$S/utils/hbf2gf/dvidrv.btm");
+# utils/hbf2gf/hbf2gf.c ---
+# utils/hbf2gf/install-sh ---
+&I("utils/hbf2gf/Makefile.gnu", "$S/utils/hbf2gf/Makefile.gnu");
+&I("utils/hbf2gf/Makefile.in", "$S/utils/hbf2gf/Makefile.in");
+# utils/hbf2gf/mkinstalldirs ---
+&I("utils/hbf2gf/README", "$S/utils/hbf2gf/README");
+
+# utils/hbf2gf/scripts/teTeX-0.4/MakeTeXPK.diff ---
+# utils/hbf2gf/scripts/teTeX-0.4/MakeTeXTFM.diff ---
+# utils/hbf2gf/scripts/web2c-6.1/MakeTeXPK.diff ---
+# utils/hbf2gf/scripts/web2c-6.1/README ---
+# utils/hbf2gf/scripts/web2c-7.0/MakeTeXPK.diff ---
+# utils/hbf2gf/scripts/web2c-7.0/MakeTeXTFM.diff ---
+# utils/hbf2gf/scripts/web2c-7.1/MakeTeXPK.diff ---
+# utils/hbf2gf/scripts/web2c-7.1/MakeTeXTFM.diff ---
+# utils/hbf2gf/scripts/web2c-7.2/mktexpk.diff ---
+# utils/hbf2gf/scripts/web2c-7.2/mktextfm.diff ---
+
+&I("utils/lisp/cjkspace.el", "$S/utils/lisp/cjkspace.el");
+&I("utils/lisp/cjktilde.el", "$S/utils/lisp/cjktilde.el");
+
+&I("utils/lisp/emacs/cjk-enc.el", "$S/utils/lisp/emacs/cjk-enc.el");
+&I("utils/lisp/emacs/thai-word.el", "$S/utils/lisp/emacs/thai-word.el");
+
+&I("utils/lisp/mule-2.3/cjk-enc.el", "$S/utils/lisp/mule-2.3/cjk-enc.el");
+
+&I("utils/pyhyphen/pinyin.c", "$S/utils/pyhyphen/pinyin.c");
+&I("utils/pyhyphen/pinyin.ldf", "$T/utils/pyhyphen/pinyin.ldf"); # $T
+&I("utils/pyhyphen/pinyin.tr", "$S/utils/pyhyphen/pinyin.tr");
+&I("utils/pyhyphen/pyhyph.tex", "$S/utils/pyhyphen/pyhyph.tex");
+&I("utils/pyhyphen/pytest.tex", "$D/utils/pyhyphen/pytest.tex"); # $D
+
+&I("utils/SJISconv/sjisconv.w", "$S/utils/SJISconv/sjisconv.w");
+&I("utils/SJISconv/sjisltx.bat", "$S/utils/SJISconv/sjisltx.bat");
+&I("utils/SJISconv/sjisltx.cmd", "$S/utils/SJISconv/sjisltx.cmd");
+
+&I("utils/subfonts/clonevf.pl", "$S/utils/subfonts/clonevf.pl");
+&I("utils/subfonts/hlatex2agl.pl", "$S/utils/subfonts/hlatex2agl.pl");
+&I("utils/subfonts/makefdx.pl", "$S/utils/subfonts/makefdx.pl");
+&I("utils/subfonts/sfd2uni.pl", "$S/utils/subfonts/sfd2uni.pl");
+&I("utils/subfonts/subfonts.pe", "$S/utils/subfonts/subfonts.pe");
+&I("utils/subfonts/uni2sfd.pl", "$S/utils/subfonts/uni2sfd.pl");
+&I("utils/subfonts/vertical.pe", "$S/utils/subfonts/vertical.pe");
+&I("utils/subfonts/vertref.pe", "$S/utils/subfonts/vertref.pe");
+
+# utils/thaifont/tools/dbtt-old/config.dbtt-old ---
+# utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx ---
+# utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx ---
+# utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex ---
+# utils/thaifont/tools/dbtt-old/dbtt-old.fontinst ---
+# utils/thaifont/tools/dbtt-old/dbtt-old.map ---
+# utils/thaifont/tools/INSTALL ---
+
+
+#
+# cjk-4.8.5-doc
+# -------------
+#
+
+&I("doc/cjk/README", "$D/doc/cjk/README");
+&I("doc/cjk/READMEb5.cjk", "$D/doc/cjk/READMEb5.cjk");
+
+# doc/dvi/READMEb5.dvi ---
+# doc/dvi/READMEgb.dvi ---
+
+&I("doc/pdf/READMEb5.pdf", "$D/doc/pdf/READMEb5.pdf");
+&I("doc/pdf/READMEgb.pdf", "$D/doc/pdf/READMEgb.pdf");
+
+&I("examples/cjk/Big5.cjk", "$D/examples/cjk/Big5.cjk");
+&I("examples/cjk/Big5vert.cjk", "$D/examples/cjk/Big5vert.cjk");
+&I("examples/cjk/CEF_test.cjk", "$D/examples/cjk/CEF_test.cjk");
+&I("examples/cjk/CJKbabel.cjk", "$D/examples/cjk/CJKbabel.cjk");
+&I("examples/cjk/muletest.cjk", "$D/examples/cjk/muletest.cjk");
+&I("examples/cjk/rubytest.cjk", "$D/examples/cjk/rubytest.cjk");
+&I("examples/cjk/SJIS.cjk", "$D/examples/cjk/SJIS.cjk");
+&I("examples/cjk/thai.cjk", "$D/examples/cjk/thai.cjk");
+
+# examples/dvi/Big5.dvi ---
+# examples/dvi/Big5vert.dvi ---
+# examples/dvi/CEF_test.dvi ---
+# examples/dvi/CJKbabel.dvi ---
+# examples/dvi/CJKfntef.dvi ---
+# examples/dvi/CJKmixed.dvi ---
+# examples/dvi/CJKspace.dvi ---
+# examples/dvi/CJKutf8.dvi ---
+# examples/dvi/GB.dvi ---
+# examples/dvi/JIS.dvi ---
+# examples/dvi/KS.dvi ---
+# examples/dvi/muletest.dvi ---
+# examples/dvi/py_test.dvi ---
+# examples/dvi/pytest.dvi ---
+# examples/dvi/rubytest.dvi ---
+# examples/dvi/SJIS.dvi ---
+# examples/dvi/thai.dvi ---
+# examples/dvi/UTF8.dvi ---
+
+&I("examples/pdf/Big5.pdf", "$D/examples/pdf/Big5.pdf");
+&I("examples/pdf/Big5vert.pdf", "$D/examples/pdf/Big5vert.pdf");
+&I("examples/pdf/CEF_test.pdf", "$D/examples/pdf/CEF_test.pdf");
+&I("examples/pdf/CJKbabel.pdf", "$D/examples/pdf/CJKbabel.pdf");
+&I("examples/pdf/CJKfntef.pdf", "$D/examples/pdf/CJKfntef.pdf");
+&I("examples/pdf/CJKmixed.pdf", "$D/examples/pdf/CJKmixed.pdf");
+&I("examples/pdf/CJKspace.pdf", "$D/examples/pdf/CJKspace.pdf");
+&I("examples/pdf/CJKutf8.pdf", "$D/examples/pdf/CJKutf8.pdf");
+&I("examples/pdf/GB.pdf", "$D/examples/pdf/GB.pdf");
+&I("examples/pdf/JIS.pdf", "$D/examples/pdf/JIS.pdf");
+&I("examples/pdf/KS.pdf", "$D/examples/pdf/KS.pdf");
+&I("examples/pdf/muletest.pdf", "$D/examples/pdf/muletest.pdf");
+&I("examples/pdf/py_test.pdf", "$D/examples/pdf/py_test.pdf");
+&I("examples/pdf/pytest.pdf", "$D/examples/pdf/pytest.pdf");
+&I("examples/pdf/rubytest.pdf", "$D/examples/pdf/rubytest.pdf");
+&I("examples/pdf/SJIS.pdf", "$D/examples/pdf/SJIS.pdf");
+&I("examples/pdf/thai.pdf", "$D/examples/pdf/thai.pdf");
+&I("examples/pdf/thai_utf8.pdf","$D/examples/pdf/thai_utf8.pdf");
+&I("examples/pdf/UTF8.pdf", "$D/examples/pdf/UTF8.pdf");
+
+1;
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/texlive/dnp.pl b/language/chinese/CJK/cjk-4.8.5/texlive/dnp.pl
new file mode 100644
index 0000000000..f7e75555eb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texlive/dnp.pl
@@ -0,0 +1,21 @@
+# dnp.pl
+#
+# Public domain.
+#
+# Written by Werner Lemberg <wl@gnu.org>
+#
+# This file is intended to be called from the `MAKEcjk' subroutine within
+# the ctan2tds perl script. It installs the necessary files from the CJK
+# package into the correct destinations.
+#
+# It expects that the CJK packages (cjk-4.8.5 and cjk-4.8.5-doc) have been
+# unpacked (unmodified) in the current directory.
+
+
+# XXX: This installs files in `texmf', not `texmf-dist'!
+
+
+&I("contrib/wadalab/DNP.sfd", "fonts/sfd/dnp/DNP.sfd");
+
+1;
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/texlive/garuda-c90.pl b/language/chinese/CJK/cjk-4.8.5/texlive/garuda-c90.pl
new file mode 100644
index 0000000000..539e7bf63c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texlive/garuda-c90.pl
@@ -0,0 +1,32 @@
+# garuda-c90.pl
+#
+# Public domain.
+#
+# Written by Werner Lemberg <wl@gnu.org>
+#
+# This file is intended to be called from the `MAKEcjk' subroutine within
+# the ctan2tds perl script. It installs the necessary files from the CJK
+# package into the correct destinations.
+#
+# It expects that the CJK packages (cjk-4.8.5 and cjk-4.8.5-doc) have been
+# unpacked (unmodified) in the current directory.
+
+my $D = "dvips/garuda-c90";
+my $M = "fonts/map/dvips/garuda-c90";
+my $S = "source/fonts/garuda-c90";
+my $T = "fonts/tfm/public/garuda-c90";
+
+
+&I("utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90", "$D/config.garuda-c90");
+
+&I("utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map", "$M/garuda-c90.map");
+
+&I("utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfm", "$T/fgdb8z.tfm");
+&I("utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfm", "$T/fgdbo8z.tfm");
+&I("utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfm", "$T/fgdo8z.tfm");
+&I("utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfm", "$T/fgdr8z.tfm");
+
+&I("utils/thaifont/tools/garuda-c90.fontinst", "$S/garuda-c90.fontinst");
+
+1;
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/texlive/norasi-c90.pl b/language/chinese/CJK/cjk-4.8.5/texlive/norasi-c90.pl
new file mode 100644
index 0000000000..88dd7cbf7f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/texlive/norasi-c90.pl
@@ -0,0 +1,32 @@
+# norasi-c90.pl
+#
+# Public domain.
+#
+# Written by Werner Lemberg <wl@gnu.org>
+#
+# This file is intended to be called from the `MAKEcjk' subroutine within
+# the ctan2tds perl script. It installs the necessary files from the CJK
+# package into the correct destinations.
+#
+# It expects that the CJK packages (cjk-4.8.5 and cjk-4.8.5-doc) have been
+# unpacked (unmodified) in the current directory.
+
+my $D = "dvips/norasi-c90";
+my $M = "fonts/map/dvips/norasi-c90";
+my $S = "source/fonts/norasi-c90";
+my $T = "fonts/tfm/public/norasi-c90";
+
+
+&I("utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90", "$D/config.norasi-c90");
+
+&I("utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map", "$M/norasi-c90.map");
+
+&I("utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfm", "$T/ftnb8z.tfm");
+&I("utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfm", "$T/ftnbi8z.tfm");
+&I("utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftni8z.tfm", "$T/ftni8z.tfm");
+&I("utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfm", "$T/ftnr8z.tfm");
+
+&I("utils/thaifont/tools/norasi-c90.fontinst", "$S/norasi-c90.fontinst");
+
+1;
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.1 b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.1
new file mode 100644
index 0000000000..c18087e1c3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.1
@@ -0,0 +1,110 @@
+.\" man page for bg5conv
+.\" Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+.\"
+.\" 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 in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH BG5CONV 1 16-Oct-2021 "CJK Version 4.8.5"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP\\$2
+..
+.\}
+.if n \{\
+.de C
+\\$1\\$2
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+bg5conv \- convert a TeX document in Big\ 5 encoding into `preprocessed'
+form.
+.
+.
+.SH SYNOPSIS
+.B bg5conv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+Big\ 5 encoding for traditional Chinese uses the characters
+.C { ,
+.C } ,
+and
+.C \e
+which have special meanings in \*(TX
+documents.
+.PP
+After processing a \*(LE
+document which contains Big\ 5 characters with
+.B bg5conv
+you need not care about these special characters.
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR \%sjisconv (1),
+.BR \%cefconv (1),
+.BR cef5conv (1),
+.BR \%cefsconv (1),
+.BR \%extconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.c b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.c
new file mode 100644
index 0000000000..e5c7ecf2a4
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.c
@@ -0,0 +1,33 @@
+#define banner \
+"bg5conv (CJK ver. 4.8.5)" \
+
+/*2:*/
+#line 94 "/home/wl/git/cjk/cjk-4.8.5/utils/Bg5conv/bg5conv.w"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch;
+
+fprintf(stdout,"\\def\\CJKpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if(ch>=0xA1&&ch<=0xFE)
+{fprintf(stdout,"\177%c\177",ch);
+
+ch= fgetc(stdin);
+if(!feof(stdin))
+fprintf(stdout,"%d\177",ch);
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.w b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.w
new file mode 100644
index 0000000000..fdce159e14
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5conv.w
@@ -0,0 +1,121 @@
+% This is the cweb file bg5conv.w of the CJK Package Ver. 4.8.5 16-Oct-2021
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a bg5conv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{bg5conv (CJK Version 4.8.5)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont bg5conv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.5)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert Big~5 encoded Chinese characters into a
+`preprocessed' form. The need of this program arises from the fact that this
+encoding uses the characters `\.{\\}', `\.{\{}', and `\.{\}}' which have
+special meanings in \TeX.
+
+Use this program as a filter:
+
+\hskip 2em \.{bg5conv < input\_file > output\_file}
+
+
+@* The program.
+The only function of this program is to replace all occurrences of Big 5
+encoded characters \.{XY} (\.{X} and \.{Y} are the first and the second byte
+of the character) with
+\.{\char94 \char94 7fX\char94 \char94 7fZZZ\char94 \char94 7f}, where
+\.{ZZZ} represents the second byte as a decimal number. \.{0x7F} is used as
+an active character and delimiter.
+
+Additionally we define a \TeX\ macro at the very beginning to signal a
+preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{bg5conv} complains loudly if something is
+wrong.
+
+@d banner
+"bg5conv (CJK ver. 4.8.5)"
+
+@c
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch;
+
+ fprintf(stdout, "\\def\\CJKpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if(ch >= 0xA1 && ch <= 0xFE)
+ {fprintf(stdout, "\177%c\177", ch);@#
+
+ ch = fgetc(stdin);
+ if(!feof(stdin))
+ fprintf(stdout, "%d\177", ch);
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex
new file mode 100755
index 0000000000..91eca16d77
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+bg5conv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex.bat b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex.bat
new file mode 100644
index 0000000000..91e7dfd857
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex.bat
@@ -0,0 +1,3 @@
+call f_name %1
+bg5conv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex.cmd b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex.cmd
new file mode 100644
index 0000000000..401a426ec0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5latex.cmd
@@ -0,0 +1,44 @@
+/*----------------------------------------------------------------------*\
+ bg5latex.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.5
+
+ Copyright (C) 1994-2021 Wonkoo Kim <wkim+@pitt.edu>
+
+ 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 in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'bg5conv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of bg5latex.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5pdflatex b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5pdflatex
new file mode 100755
index 0000000000..a89ab4ea8f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/Bg5conv/bg5pdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] pdflatex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+bg5conv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.1 b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.1
new file mode 100644
index 0000000000..5c5c3cd1c3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.1
@@ -0,0 +1,127 @@
+.\" man page for cef5conv
+.\" Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+.\"
+.\" 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 in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH CEF5CONV 1 16-Oct-2021 "CJK Version 4.8.5"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP
+..
+.\}
+.if n \{\
+.de C
+\\$1
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+cef5conv \- convert a TeX document in Big\ 5 encoding containing CEF macros
+into `preprocessed' form.
+.
+.
+.SH SYNOPSIS
+.B cef5conv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+The
+.B Chinese Encoding Framework
+.RB ( CEF )
+developed by Christian Wittern
+.C <cwittern@conline.central.de>
+makes it possible to include CJK characters in various encodings using the
+SGML macros
+.B &CX-aabb;
+for Big\ 5 and CNS encoding and
+.B &U-aabb;
+for Unicode
+.RB ( X
+denotes a number between 0 and 7; 0 represents Big\ 5 encoding, 1-7 CNS
+encoding planes 1-7.
+.B aabb
+is either a decimal or hexadecimal number).
+.PP
+.B cef5conv
+converts the CEF macros of a Big\ 5 encoded document together with the Big\
+5 encoding itself into a form which can directly processed with \*(LE.
+It is identical to
+.IP
+.B bg5conv
+<
+.I infile
+|
+.B cefconv
+>
+.I outfile
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR \%sjisconv (1),
+.BR bg5conv (1),
+.BR \%cefconv (1),
+.BR \%cefsconv (1),
+.BR \%extconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.c b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.c
new file mode 100644
index 0000000000..b5b479b6e6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.c
@@ -0,0 +1,135 @@
+#define banner \
+"cef5conv (CJK ver. 4.8.5)" \
+
+/*2:*/
+#line 108 "/home/wl/git/cjk/cjk-4.8.5/utils/CEFconv/cef5conv.w"
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch,i;
+unsigned char in[16];
+unsigned char out[32];
+unsigned char*inp,*outp;
+
+fprintf(stdout,"\\def\\CNSpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if(ch>=0xA1&&ch<=0xFE)
+{fprintf(stdout,"\177%c\177",ch);
+
+ch= fgetc(stdin);
+if(!feof(stdin))
+fprintf(stdout,"%d\177",ch);
+}
+else if(ch=='&')
+
+{inp= in;
+outp= out;
+*inp= ch;
+*(++inp)= fgetc(stdin);
+
+if(*inp=='C'&&!feof(stdin))
+{*(++inp)= fgetc(stdin);
+if(*inp=='0'&&!feof(stdin))
+{*(outp++)= 'B';
+*(outp++)= 'g';
+*(outp++)= '5';
+}
+else if(*inp>='1'&&*inp<='7'&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'N';
+*(outp++)= 'S';
+*(outp++)= *inp;
+}
+else if((*inp=='X'||*inp=='Y')&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'E';
+*(outp++)= 'F';
+*(outp++)= *inp;
+}
+else
+goto no_macro;
+}
+else if(*inp=='U'&&!feof(stdin))
+{*(outp++)= 'U';
+*(outp++)= 'T';
+*(outp++)= 'F';
+*(outp++)= '8';
+}
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(*inp!='-'||feof(stdin))
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*outp= '\0';
+
+*(++inp)= fgetc(stdin);
+if(*inp!=';'||feof(stdin))
+goto no_macro;
+
+outp= out;
+fprintf(stdout,"\17772\177");
+while(*outp)
+fputc(*(outp++),stdout);
+
+ch= fgetc(stdin);
+continue;
+
+no_macro:
+ch= *inp;
+i= inp-in;
+inp= in;
+while(i--)
+fputc(*(inp++),stdout);
+continue;
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.w b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.w
new file mode 100644
index 0000000000..59942012ab
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5conv.w
@@ -0,0 +1,237 @@
+% This is the cweb file cef5conv.w of the CJK Package Ver. 4.8.5 16-Oct-2021
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a cef5conv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{cef5conv (CJK Version 4.8.5)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont cef5conv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.5)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998, 2002 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert Big~5 encoding with CNS encoded Chinese
+characters using the {\it Chinese Encoding Framework (CEF)} into a
+`preprocessed' form. The need of this program arises from the fact that
+Big~5 encoding uses the characters `\.{\\}', `\.{\{}', and `\.{\}}' which
+have special meanings in \TeX.
+
+Use this program as a filter:
+
+\hskip 2em \.{cef5conv < input\_file > output\_file}
+
+
+@* The program.
+In contrast to \.{cefconv} two tasks will be executed:
+
+Replacing all occurrences of Big~5 encoded characters \.{XY} (\.{X} and
+\.{Y} are the first and the second byte of the character) with
+\.{\char94 \char94 7fX\char94 \char94 7fZZZ\char94 \char94 7f}, where
+\.{ZZZ} represents the second byte as a decimal number. \.{0x7F} is used as
+a control character and a delimiter.
+
+Replacing CEF macros of the form \.{\&xx-yyzz;} (\.{xx} can be C1--C7 for
+the CNS planes 1--7, C0 for Big~5 encoding, an encoding CX reserved for
+IRIZ, a private encoding CY, and U for Unicode encoding; \.{yyzz} is a
+hexadecimal representation of the code point in this plane) with
+\medskip
+\quad\.{\char94 \char94 7f72\char94 \char94 7fXX\char94 \char94 7f%
+\char94 \char94 7f"0yy\char94 \char94 7f"0zz\char94 \char94 7f}\quad.
+\medskip
+\.{XX} is the corresponding CJK encoding of \.{xx}; the number `72'
+specifies a macro in the file \.{MULEenc.sty} which further processes this
+representation -- it is automatically loaded by the \.{CJK} package.
+
+Additionally we define a \TeX\ macro at the very beginning to signal a
+preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{cef5conv} complains loudly if something is
+wrong.
+
+@d banner
+"cef5conv (CJK ver. 4.8.5)"
+
+@c
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch, i;
+ unsigned char in[16];
+ unsigned char out[32];
+ unsigned char *inp, *outp;
+
+ fprintf(stdout, "\\def\\CNSpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if(ch >= 0xA1 && ch <= 0xFE)
+ {fprintf(stdout, "\177%c\177", ch);@#
+
+ ch = fgetc(stdin);
+ if(!feof(stdin))
+ fprintf(stdout, "%d\177", ch);
+ }
+ else if(ch == '&')
+ /* the macro test is hardcoded to make things simple */
+ {inp = in;
+ outp = out;
+ *inp = ch;
+ *(++inp) = fgetc(stdin);@#
+
+ if(*inp == 'C' && !feof(stdin))
+ {*(++inp) = fgetc(stdin);
+ if(*inp == '0' && !feof(stdin))
+ {*(outp++) = 'B';
+ *(outp++) = 'g';
+ *(outp++) = '5';
+ }
+ else if(*inp >= '1' && *inp <= '7' && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'N';
+ *(outp++) = 'S';
+ *(outp++) = *inp;
+ }
+ else if((*inp == 'X' || *inp == 'Y') && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'E';
+ *(outp++) = 'F';
+ *(outp++) = *inp;
+ }
+ else
+ goto no_macro;
+ }
+ else if(*inp == 'U' && !feof(stdin))
+ {*(outp++) = 'U';
+ *(outp++) = 'T';
+ *(outp++) = 'F';
+ *(outp++) = '8';
+ }
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != '-' || feof(stdin))
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *outp = '\0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != ';' || feof(stdin))
+ goto no_macro;@#
+
+ outp = out;
+ fprintf(stdout, "\17772\177");
+ while(*outp)
+ fputc(*(outp++), stdout);@#
+
+ ch = fgetc(stdin);
+ continue;@#
+
+no_macro:
+ ch = *inp;
+ i = inp - in;
+ inp = in;
+ while(i--)
+ fputc(*(inp++), stdout);
+ continue;
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5latex b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5latex
new file mode 100755
index 0000000000..3a0f5a300c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5latex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cef5conv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5ltx.bat b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5ltx.bat
new file mode 100644
index 0000000000..187485301f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5ltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+cef5conv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5ltx.cmd b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5ltx.cmd
new file mode 100644
index 0000000000..29496f8967
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5ltx.cmd
@@ -0,0 +1,46 @@
+/*----------------------------------------------------------------------*\
+ cef5ltx.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.5
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.5
+
+ Copyright (C) 1994-2021 Wonkoo Kim <wkim+@pitt.edu>
+
+ 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 in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'cef5conv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of cef5ltx.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5pdflatex b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5pdflatex
new file mode 100755
index 0000000000..cdd4384ec7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cef5pdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] pdflatex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cef5conv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.1 b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.1
new file mode 100644
index 0000000000..50a8bbf6f6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.1
@@ -0,0 +1,117 @@
+.\" man page for cefconv
+.\" Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+.\"
+.\" 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 in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH CEFCONV 1 16-Oct-2021 "CJK Version 4.8.5"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP
+..
+.\}
+.if n \{\
+.de C
+\\$1
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+cefconv \- convert a TeX document containing CEF macros into `preprocessed'
+form.
+.
+.
+.SH SYNOPSIS
+.B cefconv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+The
+.B Chinese Encoding Framework
+.RB ( CEF )
+developed by Christian Wittern
+.C <cwittern@conline.central.de>
+makes it possible to include CJK characters in various encodings using the
+SGML macros
+.B &CX-aabb;
+for Big\ 5 and CNS encoding and
+.B &U-aabb;
+for Unicode
+.RB ( X
+denotes a number between 0 and 7; 0 represents Big\ 5 encoding, 1-7 CNS
+encoding planes 1-7.
+.B aabb
+is either a decimal or hexadecimal number)
+.PP
+.B \%cefconv
+converts the CEF macros into a form which can directly processed with \*(LE.
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR \%sjisconv (1),
+.BR bg5conv (1),
+.BR cef5conv (1),
+.BR \%cefsconv (1),
+.BR \%extconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.c b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.c
new file mode 100644
index 0000000000..354bf073cc
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.c
@@ -0,0 +1,127 @@
+#define banner \
+"cefconv (CJK ver. 4.8.5)" \
+
+/*2:*/
+#line 100 "/home/wl/git/cjk/cjk-4.8.5/utils/CEFconv/cefconv.w"
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch,i;
+unsigned char in[16];
+unsigned char out[32];
+unsigned char*inp,*outp;
+
+fprintf(stdout,"\\def\\CNSpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if(ch=='&')
+{inp= in;
+outp= out;
+*inp= ch;
+*(++inp)= fgetc(stdin);
+
+if(*inp=='C'&&!feof(stdin))
+{*(++inp)= fgetc(stdin);
+if(*inp=='0'&&!feof(stdin))
+{*(outp++)= 'B';
+*(outp++)= 'g';
+*(outp++)= '5';
+}
+else if(*inp>='1'&&*inp<='7'&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'N';
+*(outp++)= 'S';
+*(outp++)= *inp;
+}
+else if((*inp=='X'||*inp=='Y')&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'E';
+*(outp++)= 'F';
+*(outp++)= *inp;
+}
+else
+goto no_macro;
+}
+else if(*inp=='U'&&!feof(stdin))
+{*(outp++)= 'U';
+*(outp++)= 'T';
+*(outp++)= 'F';
+*(outp++)= '8';
+}
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(*inp!='-'||feof(stdin))
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*outp= '\0';
+
+*(++inp)= fgetc(stdin);
+if(*inp!=';'||feof(stdin))
+goto no_macro;
+
+outp= out;
+fprintf(stdout,"\17772\177");
+while(*outp)
+fputc(*(outp++),stdout);
+
+ch= fgetc(stdin);
+continue;
+
+no_macro:
+ch= *inp;
+i= inp-in;
+inp= in;
+while(i--)
+fputc(*(inp++),stdout);
+continue;
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.w b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.w
new file mode 100644
index 0000000000..93fe237f24
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefconv.w
@@ -0,0 +1,221 @@
+% This is the cweb file cefconv.w of the CJK Package Ver. 4.8.5 16-Oct-2021
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a cefconv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{cefconv (CJK Version 4.8.5)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont cefconv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.5)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998, 2002 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert EUC encoding with CNS encoded Chinese
+characters using the {\it Chinese Encoding Framework (CEF)} into a
+`preprocessed' form, expanding the CEF macros.
+
+Use this program as a filter:
+
+\hskip 2em \.{cefconv < input\_file > output\_file}
+
+
+@* The program.
+In contrast to \.{cef5conv} or \.{cefsconv}, only one task will be executed:
+
+Replacing CEF macros of the form \.{\&xx-yyzz;} (\.{xx} can be C1--C7 for
+the CNS planes 1--7, C0 for Big~5 encoding, an encoding CX reserved for
+IRIZ, a private encoding CY, and U for Unicode encoding; \.{yyzz} is a
+hexadecimal representation of the code point in this plane) with
+\medskip
+\quad\.{\char94 \char94 7f72\char94 \char94 7fXX\char94 \char94 7f%
+\char94 \char94 7f"0yy\char94 \char94 7f"0zz\char94 \char94 7f}\quad.
+\medskip
+\.{XX} is the corresponding CJK encoding of \.{xx}; the number `72'
+specifies a macro in the file \.{MULEenc.sty} which further processes this
+representation -- it is automatically loaded by the \.{CJK} package.
+
+Additionally we define an empty \TeX\ macro at the very beginning to signal
+a preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{cefconv} complains loudly if something is
+wrong.
+
+@d banner
+"cefconv (CJK ver. 4.8.5)"
+
+@c
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch, i;
+ unsigned char in[16];
+ unsigned char out[32];
+ unsigned char *inp, *outp;
+
+ fprintf(stdout, "\\def\\CNSpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if(ch == '&') /* the macro test is hardcoded to make things simple */
+ {inp = in;
+ outp = out;
+ *inp = ch;
+ *(++inp) = fgetc(stdin);@#
+
+ if(*inp == 'C' && !feof(stdin))
+ {*(++inp) = fgetc(stdin);
+ if(*inp == '0' && !feof(stdin))
+ {*(outp++) = 'B';
+ *(outp++) = 'g';
+ *(outp++) = '5';
+ }
+ else if(*inp >= '1' && *inp <= '7' && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'N';
+ *(outp++) = 'S';
+ *(outp++) = *inp;
+ }
+ else if((*inp == 'X' || *inp == 'Y') && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'E';
+ *(outp++) = 'F';
+ *(outp++) = *inp;
+ }
+ else
+ goto no_macro;
+ }
+ else if(*inp == 'U' && !feof(stdin))
+ {*(outp++) = 'U';
+ *(outp++) = 'T';
+ *(outp++) = 'F';
+ *(outp++) = '8';
+ }
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != '-' || feof(stdin))
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *outp = '\0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != ';' || feof(stdin))
+ goto no_macro;@#
+
+ outp = out;
+ fprintf(stdout, "\17772\177");
+ while(*outp)
+ fputc(*(outp++), stdout);@#
+
+ ch = fgetc(stdin);
+ continue;@#
+
+no_macro:
+ ch = *inp;
+ i = inp - in;
+ inp = in;
+ while(i--)
+ fputc(*(inp++), stdout);
+ continue;
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex
new file mode 100755
index 0000000000..8102e177fa
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cefconv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex.bat b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex.bat
new file mode 100644
index 0000000000..ba5925a6df
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex.bat
@@ -0,0 +1,3 @@
+call f_name %1
+cefconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex.cmd b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex.cmd
new file mode 100644
index 0000000000..43666071bc
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/ceflatex.cmd
@@ -0,0 +1,46 @@
+/*----------------------------------------------------------------------*\
+ ceflatex.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.5
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.5
+
+ Copyright (C) 1994-2021 Wonkoo Kim <wkim+@pitt.edu>
+
+ 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 in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'cefconv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of ceflatex.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefpdflatex b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefpdflatex
new file mode 100755
index 0000000000..16847a515c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefpdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] pdflatex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cefconv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.1 b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.1
new file mode 100644
index 0000000000..58f0ad8e81
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.1
@@ -0,0 +1,127 @@
+.\" man page for cefsconv
+.\" Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+.\"
+.\" 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 in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH CEFSCONV 1 16-Oct-2021 "CJK Version 4.8.5"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP
+..
+.\}
+.if n \{\
+.de C
+\\$1
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+cefsconv \- convert a TeX document in SJIS encoding containing CEF macros
+into `preprocessed' form.
+.
+.
+.SH SYNOPSIS
+.B cefsconv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+The
+.B Chinese Encoding Framework
+.RB ( CEF )
+developed by Christian Wittern
+.C <cwittern@conline.central.de>
+makes it possible to include CJK characters in various encodings using the
+SGML macros
+.B &CX-aabb;
+for Big\ 5 and CNS encoding and
+.B &U-aabb;
+for Unicode
+.RB ( X
+denotes a number between 0 and 7; 0 represents Big\ 5 encoding, 1-7 CNS
+encoding planes 1-7.
+.B aabb
+is either a decimal or hexadecimal number).
+.PP
+.B \%cefsconv
+converts the CEF macros of a SJIS encoded document together with the SJIS
+encoding itself into a form which can directly processed with \*(LE.
+It is identical to
+.IP
+.B sjisconv
+<
+.I infile
+|
+.B cefconv
+>
+.I outfile
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR \%sjisconv (1),
+.BR bg5conv (1),
+.BR \%cefconv (1),
+.BR cef5conv (1),
+.BR \%extconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.c b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.c
new file mode 100644
index 0000000000..76629c6568
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.c
@@ -0,0 +1,135 @@
+#define banner \
+"cefsconv (CJK ver. 4.8.5)" \
+
+/*2:*/
+#line 111 "/home/wl/git/cjk/cjk-4.8.5/utils/CEFconv/cefsconv.w"
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch,i;
+unsigned char in[16];
+unsigned char out[32];
+unsigned char*inp,*outp;
+
+fprintf(stdout,"\\def\\CNSpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if((ch>=0x81&&ch<=0x9F)||(ch>=0xE0&&ch<=0xEF))
+{fprintf(stdout,"\177%c\177",ch);
+
+ch= fgetc(stdin);
+if(!feof(stdin))
+fprintf(stdout,"%d\177",ch);
+}
+else if(ch=='&')
+
+{inp= in;
+outp= out;
+*inp= ch;
+*(++inp)= fgetc(stdin);
+
+if(*inp=='C'&&!feof(stdin))
+{*(++inp)= fgetc(stdin);
+if(*inp=='0'&&!feof(stdin))
+{*(outp++)= 'B';
+*(outp++)= 'g';
+*(outp++)= '5';
+}
+else if(*inp>='1'&&*inp<='7'&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'N';
+*(outp++)= 'S';
+*(outp++)= *inp;
+}
+else if((*inp=='X'||*inp=='Y')&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'E';
+*(outp++)= 'F';
+*(outp++)= *inp;
+}
+else
+goto no_macro;
+}
+else if(*inp=='U'&&!feof(stdin))
+{*(outp++)= 'U';
+*(outp++)= 'T';
+*(outp++)= 'F';
+*(outp++)= '8';
+}
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(*inp!='-'||feof(stdin))
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*outp= '\0';
+
+*(++inp)= fgetc(stdin);
+if(*inp!=';'||feof(stdin))
+goto no_macro;
+
+outp= out;
+fprintf(stdout,"\17772\177");
+while(*outp)
+fputc(*(outp++),stdout);
+
+ch= fgetc(stdin);
+continue;
+
+no_macro:
+ch= *inp;
+i= inp-in;
+inp= in;
+while(i--)
+fputc(*(inp++),stdout);
+continue;
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.w b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.w
new file mode 100644
index 0000000000..5f8d7870ca
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsconv.w
@@ -0,0 +1,240 @@
+% This is the cweb file cefsconv.w of the CJK Package Ver. 4.8.5 16-Oct-2021
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a cefsconv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{cefsconv (CJK Version 4.8.5)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont cefsconv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.5)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert SJIS encoding with CNS encoded Chinese
+characters using the {\it Chinese Encoding Framework (CEF)} into a
+`preprocessed' form. The need of this program arises from the fact that
+SJIS encoding uses the characters `\.{\\}', `\.{\{}', and `\.{\}}' which
+have special meanings in \TeX.
+
+Use this program as a filter:
+
+\hskip 2em \.{cefsconv < input\_file > output\_file}
+
+
+@* The program.
+In contrast to \.{cefconv} two tasks will be executed:
+
+Replacing all occurrences of two byte SJIS encoded characters \.{XY} with
+\.{\char94 \char94 7fX\char94 \char94 7fZZZ\char94 \char94 7f} (\.{X} and
+\.{Y} are the first and the second byte of the character; \.{ZZZ} represents
+the second byte as a decimal number).
+
+Replacing CEF macros of the form \.{\&xx-yyzz;} (\.{xx} can be C1--C7 for
+the CNS planes 1--7, C0 for Big~5 encoding, an encoding CX reserved for
+IRIZ, a private encoding CY, and U for Unicode encoding; \.{yyzz} is a
+hexadecimal representation of the code point in this plane) with
+\medskip
+\quad\.{\char94 \char94 7f72\char94 \char94 7fXX\char94 \char94 7f%
+\char94 \char94 7f"0yy\char94 \char94 7f"0zz\char94 \char94 7f}\quad.
+\medskip
+\.{XX} is the corresponding CJK encoding of \.{xx}; the number `72'
+specifies a macro in the file \.{MULEenc.sty} which further processes this
+representation -- it is necessary to explicitly load this file with
+\.{\\usepackage}.
+
+Additionally we define a \TeX\ macro at the very beginning to signal a
+preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{cefsconv} complains loudly if something is
+wrong.
+
+Note that the user-defined character area of SJIS (with the first bytes in
+the range 0xF0--0xFC) is not supported because it is not portable.
+
+@d banner
+"cefsconv (CJK ver. 4.8.5)"
+
+@c
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch, i;
+ unsigned char in[16];
+ unsigned char out[32];
+ unsigned char *inp, *outp;
+
+ fprintf(stdout, "\\def\\CNSpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if((ch >= 0x81 && ch <= 0x9F) || (ch >= 0xE0 && ch <= 0xEF))
+ {fprintf(stdout, "\177%c\177", ch);@#
+
+ ch = fgetc(stdin);
+ if(!feof(stdin))
+ fprintf(stdout, "%d\177", ch);
+ }
+ else if(ch == '&')
+ /* the macro test is hardcoded to make things simple */
+ {inp = in;
+ outp = out;
+ *inp = ch;
+ *(++inp) = fgetc(stdin);@#
+
+ if(*inp == 'C' && !feof(stdin))
+ {*(++inp) = fgetc(stdin);
+ if(*inp == '0' && !feof(stdin))
+ {*(outp++) = 'B';
+ *(outp++) = 'g';
+ *(outp++) = '5';
+ }
+ else if(*inp >= '1' && *inp <= '7' && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'N';
+ *(outp++) = 'S';
+ *(outp++) = *inp;
+ }
+ else if((*inp == 'X' || *inp == 'Y') && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'E';
+ *(outp++) = 'F';
+ *(outp++) = *inp;
+ }
+ else
+ goto no_macro;
+ }
+ else if(*inp == 'U' && !feof(stdin))
+ {*(outp++) = 'U';
+ *(outp++) = 'T';
+ *(outp++) = 'F';
+ *(outp++) = '8';
+ }
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != '-' || feof(stdin))
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *outp = '\0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != ';' || feof(stdin))
+ goto no_macro;@#
+
+ outp = out;
+ fprintf(stdout, "\17772\177");
+ while(*outp)
+ fputc(*(outp++), stdout);@#
+
+ ch = fgetc(stdin);
+ continue;@#
+
+no_macro:
+ ch = *inp;
+ i = inp - in;
+ inp = in;
+ while(i--)
+ fputc(*(inp++), stdout);
+ continue;
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefslatex b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefslatex
new file mode 100755
index 0000000000..fd78a24468
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefslatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cefsconv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsltx.bat b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsltx.bat
new file mode 100644
index 0000000000..662ef9e3af
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+cefsconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsltx.cmd b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsltx.cmd
new file mode 100644
index 0000000000..dc7663d274
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefsltx.cmd
@@ -0,0 +1,46 @@
+/*----------------------------------------------------------------------*\
+ cefsltx.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.5
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.5
+
+ Copyright (C) 1994-2021 Wonkoo Kim <wkim+@pitt.edu>
+
+ 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 in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'cefsconv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of cefsltx.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefspdflatex b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefspdflatex
new file mode 100755
index 0000000000..ee78cd3bd5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/CEFconv/cefspdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cefsconv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.1 b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.1
new file mode 100644
index 0000000000..2ad865721c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.1
@@ -0,0 +1,110 @@
+.\" man page for sjisconv
+.\" Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+.\"
+.\" 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 in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH SJISCONV 1 16-Oct-2021 "CJK Version 4.8.5"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP\\$2
+..
+.\}
+.if n \{\
+.de C
+\\$1\\$2
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+sjisconv \- convert a TeX document in SJIS encoding into `preprocessed'
+form.
+.
+.
+.SH SYNOPSIS
+.B sjisconv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+SJIS encoding for Japanese uses the characters
+.C { ,
+.C } ,
+and
+.C \e
+which have special meanings in \*(TX
+documents.
+.PP
+After processing a \*(LE
+document which contains SJIS characters with
+.B \%sjisconv
+you need not care about these special characters.
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR bg5conv (1),
+.BR \%cefconv (1),
+.BR cef5conv (1),
+.BR \%cefsconv (1),
+.BR \%extconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.c b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.c
new file mode 100644
index 0000000000..0b42ecfdcb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.c
@@ -0,0 +1,33 @@
+#define banner \
+"sjisconv (CJK ver. 4.8.5)" \
+
+/*2:*/
+#line 96 "/home/wl/git/cjk/cjk-4.8.5/utils/SJISconv/sjisconv.w"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch;
+
+fprintf(stdout,"\\def\\CJKpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if((ch>=0x81&&ch<=0x9F)||(ch>=0xE0&&ch<=0xEF))
+{fprintf(stdout,"\177%c\177",ch);
+
+ch= fgetc(stdin);
+if(!feof(stdin))
+fprintf(stdout,"%d\177",ch);
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.w b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.w
new file mode 100644
index 0000000000..c3e72454e4
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisconv.w
@@ -0,0 +1,123 @@
+% This is the cweb file sjisconv.w of the CJK Package Ver. 4.8.5 16-Oct-2021
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a sjisconv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{sjisconv (CJK Version 4.8.5)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont sjisconv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.5)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert SJIS encoded Japanese characters into a
+`preprocessed' form. The need of this program arises from the fact that this
+encoding uses the characters `\.{\\}', `\.{\{}', and `\.{\}}' which have
+special meanings in \TeX.
+
+Use this program as a filter:
+
+\hskip 2em \.{sjisconv < input\_file > output\_file}
+
+
+@* The program.
+The only function of this program is to replace all occurrences of SJIS
+encoded two byte characters \.{XY} with
+\.{\char94 \char94 7fX\char94 \char94 7fZZZ\char94 \char94 7f} (\.{X}
+and \.{Y} are the first and the second byte of the character; \.{ZZZ}
+represents the second byte as a decimal number).
+
+Additionally we define a \TeX\ macro at the very beginning to signal a
+preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{sjisconv} complains loudly if something is
+wrong.
+
+Note that the user-defined character area of SJIS (with the first bytes in
+the range 0xF0--0xFC) is not supported because it is not portable.
+
+@d banner
+"sjisconv (CJK ver. 4.8.5)"
+
+@c
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch;
+
+ fprintf(stdout, "\\def\\CJKpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if((ch >= 0x81 && ch <= 0x9F) || (ch >= 0xE0 && ch <= 0xEF))
+ {fprintf(stdout, "\177%c\177", ch);@#
+
+ ch = fgetc(stdin);
+ if(!feof(stdin))
+ fprintf(stdout, "%d\177", ch);
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjislatex b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjislatex
new file mode 100755
index 0000000000..9cc170468b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjislatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+sjisconv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisltx.bat b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisltx.bat
new file mode 100644
index 0000000000..5702c113bd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+sjisconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisltx.cmd b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisltx.cmd
new file mode 100644
index 0000000000..12c8a394c8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjisltx.cmd
@@ -0,0 +1,44 @@
+/*----------------------------------------------------------------------*\
+ sjisltx.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.5
+
+ Copyright (C) 1994-2021 Wonkoo Kim <wkim+@pitt.edu>
+
+ 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 in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'sjisconv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of sjisltx.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjispdflatex b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjispdflatex
new file mode 100755
index 0000000000..4a5d4817ee
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/SJISconv/sjispdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+sjisconv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/cjklatex/cjklatex.c b/language/chinese/CJK/cjk-4.8.5/utils/cjklatex/cjklatex.c
new file mode 100644
index 0000000000..ebea1fc3c5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/cjklatex/cjklatex.c
@@ -0,0 +1,293 @@
+/*
+ Purpose: call LATEX after preprocessing of the .tex file by
+ the cjk conversion tool. The old f_name.bat script
+ is not working anymore.
+ Author : F. Popineau <Fabrice.Popineau@supelec.fr>
+ Date : <29/06/2001>
+*/
+
+#ifndef LATEX
+#define LATEX "latex"
+#endif
+
+/*
+ Copyright (C) 2001-2021 F. Popineau <Fabrice.Popineau@supelec.fr>
+
+ 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 in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <kpathsea/config.h>
+#include <kpathsea/lib.h>
+#include <kpathsea/getopt.h>
+
+static const char *cjklatex_version_string = "1.0";
+
+static const char *usage_str[] = {
+ "Usage: %s OPTIONS FILE\n",
+ "Calls `" LATEX "' on FILE after conversion by the filter\n",
+ "specified by OPTIONS.\n",
+ "--conv=bg5\tfor traditional Chinese, encoding Big 5,\n",
+ "--conv=cef\tfor Chinese Encoding Framework, encoding CEF,\n",
+ "--conv=cef5\tidem CEF, also converts Big5 characters,\n",
+ "--conv=cefs\tidem CEF, also converts SJIS characters,\n",
+ "--conv=gbk\tfor Chinese, encoding GBK,\n",
+ "--conv=sjis\tfor Japanese, SJIS encoding.",
+ "\nAlternatively, for compatibility with the previous DOS batch files,\n",
+ "you can also copy this program to any of the following names:\n",
+ "bg5" LATEX ".exe, cef5" LATEX ".exe, cef" LATEX ".exe, cefs" LATEX ".exe,\n",
+ "gbk" LATEX ".exe and sjis" LATEX ".exe .\n",
+ "Then running one of these programs will be identical to specify\n",
+ "the corresponding option.\n",
+ "\nAdditional options:\n",
+ "--verbose\tbe a bit more verbose about what is happening,\n",
+ "--nocleanup\tdo not remove intermediate files,\n",
+ "--latex=engine\tuse `engine' instead of `" LATEX "' to process the file.\n",
+ NULL
+};
+
+static char *progname = NULL;
+
+static struct _conv_table {
+ const char *progname;
+ const char *processor;
+} CJKtable[] = {
+ { "cjk" LATEX, "" },
+ { "bg5" LATEX, "bg5conv" },
+ { "cef" LATEX, "cefconv" },
+ { "cef5" LATEX, "cef5conv" },
+ { "cefs" LATEX, "cefsconv" },
+ { "gbk" LATEX, "extconv" },
+ { "sjis" LATEX, "sjisconv" }
+};
+
+#define PROGRAM_IS(p) FILESTRCASEEQ (p, progname)
+#define ARGUMENT_IS(a) STREQ (long_options[option_index].name, a)
+
+static int program_number = -1;
+static int opt_verbose = 0;
+static int opt_nocleanup = 0;
+static char *texname, *cjkname, *texengine;
+
+static struct option long_options [] = {
+ { "debug", 1, 0, 0},
+ { "help", 0, 0, 0},
+ { "version", 0, 0, 0},
+ { "verbose", 0, 0, 0},
+ { "nocleanup", 0, 0, 0},
+ { "latex", 1, 0, 0},
+ { "conv", 1, 0, 0},
+ {0, 0, 0, 0}
+};
+
+static BOOL sigint_handler(DWORD dwCtrlType)
+{
+ /* Fix me : there is a problem if a system() command is running.
+ We should wait for the son process to be interrupted.
+ Only way I can think of to do that : rewrite system() based on
+ spawn() with parsing of the command line and set a global pid
+ Next cwait(pid) in the HandlerRoutine.
+ */
+
+ /* This is not that good, but else we would need to wait for
+ the child processes to finish ! */
+ Sleep(250);
+
+ fprintf(stderr, "Sending Ctrl+Break!\n");
+ GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, 0);
+
+ if (! opt_nocleanup)
+ unlink(cjkname);
+
+ exit(1);
+
+ return FALSE; /* return value obligatory */
+}
+
+static void usage(void)
+{
+ int i;
+ fprintf(stderr, "CJK" LATEX " version %s\n", cjklatex_version_string);
+ fprintf(stderr,usage_str[0], progname );
+ fputs("\n", stderr);
+ for(i = 1; usage_str[i]; ++i)
+ fputs(usage_str[i], stderr);
+}
+
+static int do_process(const char *processor, const char *filename)
+{
+ char *ext, *p;
+ char cmd[_MAX_PATH*3];
+ DWORD dwFA;
+ int ret;
+
+ if (strlen(filename) > 4 && _strnicmp(filename + strlen(filename) - 4, ".tex", 4) == 0) {
+ texname = xstrdup(filename);
+ }
+ else {
+ texname = concat(filename, ".tex");
+ }
+ for (p = texname; p && *p; p++)
+ *p = (*p == '\\' ? '/' : *p);
+
+ dwFA = GetFileAttributes(texname);
+ if (dwFA == 0xFFFFFFFF || (dwFA & FILE_ATTRIBUTE_DIRECTORY)) {
+ fprintf(stderr, "%s: %s is an invalid input file.\n",
+ progname, texname);
+ ret = 1;
+ }
+ else {
+ cjkname = xstrdup(texname);
+ ext = strrchr(cjkname, '.');
+ assert(ext != NULL);
+ strcpy(cjkname + (ext - cjkname), ".cjk");
+
+ sprintf(cmd, "%s < %s > %s", processor, texname, cjkname);
+ if (opt_verbose)
+ fprintf(stderr, "%s: running command `%s'.\n", progname, cmd);
+ ret = system(cmd);
+ if (ret == 0) {
+ sprintf(cmd, "%s %s", texengine, cjkname);
+ if (opt_verbose)
+ fprintf(stderr, "%s: running command `%s'.\n", progname, cmd);
+ ret = system(cmd);
+ if (! opt_nocleanup)
+ unlink(cjkname);
+ }
+ }
+
+ free(texname);
+ free(cjkname);
+
+ return ret;
+}
+
+int main(int argc, char *argv[])
+{
+ int g; /* getopt return code */
+ int i;
+ int option_index;
+ char *filename;
+
+ if (!progname)
+ progname = argv[0];
+
+ kpse_set_program_name (progname, NULL);
+ progname = kpse_program_name;
+
+ for (i = 0; i < sizeof(CJKtable)/sizeof(CJKtable[0]) && program_number < 0; i++) {
+ if (STREQ(progname, CJKtable[i].progname)
+#if 0
+ || (STREQ(progname, CJKtable[i].progname)
+ && STREQ(progname+strlen(CJKtable[i].progname), ".exe"))
+#endif
+ ) {
+ program_number = i;
+ }
+ }
+
+ if (program_number == -1) {
+ fprintf(stderr, "%s: this program has been incorrecty copied to the name %s.\n", progname, progname);
+ usage();
+ exit(1);
+ }
+
+ for(;;) {
+ g = getopt_long_only (argc, argv, "", long_options, &option_index);
+
+ if (g == EOF)
+ break;
+
+ if (g == '?') {
+ usage(); /* Unknown option. */
+ exit(1);
+ }
+
+ /* assert (g == 0); */ /* We have no short option names. */
+ /*
+ FIXME : try 'mktexpk --mfmode --bdpi 600 ...'
+ */
+ if (ARGUMENT_IS ("debug")) {
+ kpathsea_debug |= atoi (optarg);
+ }
+ else if (ARGUMENT_IS ("help")) {
+ usage();
+ exit(0);
+ }
+ else if (ARGUMENT_IS ("verbose")) {
+ opt_verbose = 1;
+ }
+ else if (ARGUMENT_IS ("nocleanup")) {
+ opt_nocleanup = 1;
+ }
+ else if (ARGUMENT_IS ("latex")) {
+ texengine = xstrdup(optarg);
+ }
+ else if (ARGUMENT_IS ("version")) {
+ fprintf(stderr, "%s of %s.\n", progname, cjklatex_version_string);
+ exit(0);
+ }
+ else if (PROGRAM_IS("cjk" LATEX)) {
+ if (ARGUMENT_IS("conv")) {
+ for (i = 1; i < sizeof(CJKtable)/sizeof(CJKtable[0]) && program_number <= 0; i++) {
+ if (STRNEQ(optarg, CJKtable[i].progname, strlen(optarg))) {
+ program_number = i;
+ }
+ }
+ }
+ }
+ }
+
+ /* shifting options from argv[] list */
+ for (i = 1; optind < argc; i++, optind++)
+ argv[i] = argv[optind];
+ argv[i] = NULL;
+
+ argc = i;
+
+ if (argc < 2) {
+ fprintf (stderr, "%s: Missing argument(s).\nTry `%s --help' for more information.\n", progname, kpse_program_name);
+ exit(1);
+ }
+
+ if (argc > 2) {
+ fprintf(stderr, "%s: Extra arguments", progname);
+ for (i = 2; i < argc; i++)
+ fprintf (stderr, " \"%s\"", argv[i]);
+ fprintf (stderr, "\nTry `%s --help' for more information.\n",
+ kpse_program_name);
+ exit(1);
+ }
+
+ SetConsoleCtrlHandler((PHANDLER_ROUTINE)sigint_handler, TRUE);
+
+ filename = xstrdup(argv[1]);
+
+ assert(program_number > 0);
+
+ if (! texengine) {
+ texengine = xstrdup(LATEX);
+ }
+
+ do_process(CJKtable[program_number].processor, filename);
+
+ free(filename);
+ free(texengine);
+
+ return 0;
+}
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5+latex b/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5+latex
new file mode 100755
index 0000000000..257d8c43ad
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5+latex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+extconv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5+pdflatex b/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5+pdflatex
new file mode 100755
index 0000000000..c3ab62a343
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5+pdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] pdflatex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+extconv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5pltx.bat b/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5pltx.bat
new file mode 100644
index 0000000000..ccc6c76acd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5pltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+extconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5pltx.cmd b/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5pltx.cmd
new file mode 100644
index 0000000000..ee93548a0d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/extconv/bg5pltx.cmd
@@ -0,0 +1,44 @@
+/*----------------------------------------------------------------------*\
+ bg5pltx.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.5
+
+ Copyright (C) 1994-2021 Wonkoo Kim <wkim+@pitt.edu>
+
+ 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 in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'extconv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of bg5pltx.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.1 b/language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.1
new file mode 100644
index 0000000000..9d275b7345
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.1
@@ -0,0 +1,111 @@
+.\" man page for bg5conv
+.\"
+.\" Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+.\"
+.\" 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 in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH EXTCONV 1 16-Oct-2021 "CJK Version 4.8.5"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP\\$2
+..
+.\}
+.if n \{\
+.de C
+\\$1\\$2
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+extconv \- convert a TeX document in either Big\ 5+ or GBK encoding into
+`preprocessed' form.
+.
+.
+.SH SYNOPSIS
+.B extconv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+Big\ 5+ and GBK encodings use the characters
+.C { ,
+.C } ,
+and
+.C \e
+which have special meanings in \*(TX
+documents.
+.PP
+After processing a \*(LE
+document which contains such characters with
+.B \%extconv
+you need not care about these special characters.
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR bg5conv (1),
+.BR \%sjisconv (1),
+.BR \%cefconv (1),
+.BR cef5conv (1),
+.BR \%cefsconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.c b/language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.c
new file mode 100644
index 0000000000..fdfa9dc924
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.c
@@ -0,0 +1,34 @@
+#define banner \
+"extconv (CJK ver. 4.8.5)" \
+
+/*2:*/
+#line 94 "/home/wl/git/cjk/cjk-4.8.5/utils/extconv/extconv.w"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch;
+
+
+fprintf(stdout,"\\def\\CJKpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if(ch>=0x81&&ch<=0xFE)
+{fprintf(stdout,"\177%c\177",ch);
+
+ch= fgetc(stdin);
+if(!feof(stdin))
+fprintf(stdout,"%d\177",ch);
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.w b/language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.w
new file mode 100644
index 0000000000..fe1b1ff006
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/extconv/extconv.w
@@ -0,0 +1,122 @@
+% This is the cweb file extconv.w of the CJK Package Ver. 4.8.5 16-Oct-2021
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a extconv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{extconv (CJK Version 4.8.5)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont extconv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.5)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert Big~5+ or GBK encoded Chinese characters
+into a `preprocessed' form. The need of this program arises from the fact
+that these two encodings use the characters `\.{\\}', `\.{\{}', and `\.{\}}'
+which have special meanings in \TeX.
+
+Use this program as a filter:
+
+\hskip 2em \.{extconv < input\_file > output\_file}
+
+
+@* The program.
+The only function of this program is to replace all occurrences of Big~5+
+and GBK encoded characters \.{XY} (\.{X} and \.{Y} are the first and the
+second byte of the character) with
+\.{\char94 \char94 7fX\char94 \char94 7fZZZ\char94 \char94 7f}, where \.{ZZZ}
+represents the second byte as a decimal number. \.{0x7F} is used as an active
+character and delimiter.
+
+Additionally we define a \TeX\ macro at the very beginning to signal a
+preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{extconv} complains loudly if something is
+wrong.
+
+@d banner
+"extconv (CJK ver. 4.8.5)"
+
+@c
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch;
+
+
+ fprintf(stdout, "\\def\\CJKpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if(ch >= 0x81 && ch <= 0xFE)
+ {fprintf(stdout, "\177%c\177", ch);@#
+
+ ch = fgetc(stdin);
+ if(!feof(stdin))
+ fprintf(stdout, "%d\177", ch);
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex b/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex
new file mode 100755
index 0000000000..257d8c43ad
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+extconv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex.bat b/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex.bat
new file mode 100644
index 0000000000..ccc6c76acd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex.bat
@@ -0,0 +1,3 @@
+call f_name %1
+extconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex.cmd b/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex.cmd
new file mode 100644
index 0000000000..c53de7b5e1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbklatex.cmd
@@ -0,0 +1,44 @@
+/*----------------------------------------------------------------------*\
+ gbklatex.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.5
+
+ Copyright (C) 1994-2021 Wonkoo Kim <wkim+@pitt.edu>
+
+ 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 in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'extconv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of gbklatex.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbkpdflatex b/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbkpdflatex
new file mode 100755
index 0000000000..c3ab62a343
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/extconv/gbkpdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] pdflatex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+extconv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/f_name.bat b/language/chinese/CJK/cjk-4.8.5/utils/f_name.bat
new file mode 100644
index 0000000000..70e6e69ce9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/f_name.bat
@@ -0,0 +1,205 @@
+@echo off
+:4dosCheck
+ if "%@eval[2+2]"=="4" loadbtm on
+:Start
+ if [%1]==[] goto Usage
+ if [%1]==[/?] goto Help
+ if [%2]==[] goto InputCheck
+REM
+REM This file is called F_NAME.BAT per default. Call it whatever you like.
+REM
+REM You need enough free environment space for this batch file.
+REM If there's not enough free space, f_name.bat will give you a warning.
+REM
+REM While f_name.bat tries to test your free environment space, you'll
+REM probably need to check your config.sys for the following line:
+REM
+REM SHELL=C:\DOS\COMMAND.COM C:\DOS\ /E:1024 /p
+REM
+REM The '/E:1024' sets your environment space - it will probably need to
+REM be 1024 or higher (unless you're really economical with env-space).
+REM
+REM If you are not sure about free space, set fp and fn with long dummy
+REM strings in autoexec.bat to get enough free space, eg.:
+REM
+REM set fp=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+REM set fu=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+REM set fn=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+REM set fd=xx
+REM set fe=xxxx
+REM
+REM Using dummy strings is necessary if you're going to execute
+REM f_name.bat from a second command shell, eg. from Norton Commander.
+REM In this case the total length reserved for f_name.bat should be up
+REM to 192 bytes. My suggestion is, let the strings for fp, fu, and fn count
+REM up to 186 bytes (eg. 62 each).
+REM
+REM Some releases of DOS (eg. some beta-releases/pre-releases of DOS 6.0
+REM and some older DOS releases) does not support the batchcommand 'NOT'.
+REM If you're still using such a release you cannot use this batchfile
+REM since it uses this batchcommand.
+REM
+REM Please also note that f_name.bat cannot work properly if filespec is
+REM longer than around 38 (? I don't know the exact length) characters. If
+REM filespec is long, f_name.bat will fail at 'for %%x in ... do if ...'
+REM lines. The result of error is fairly unpredictable as DOS will try to
+REM execute with a truncated batch command line. So, please use the
+REM batch file for short filespecs (< 38??). (On my DOS 6.22 using
+REM strings above 38 chars gives me an endless loop, Claus Futtrup).
+REM
+REM For large batchfiles it is usually an advantage to use a
+REM 'batch-compiler', which will convert the .bat file into a .com or
+REM .exe file. With f_name.bat this could probably speed it up many
+REM times, but it has not been possible to find a batch-compiler, which
+REM will compile this batchfile. The compilers PWR14G.ZIP and
+REM BAT2EX15.ZIP have been tested without success.
+REM
+REM This modified release is more solid when it comes to garbage input, it
+REM is provided with help option, additional documentation and additional
+REM checking for sufficient environment space and now remove the temporary
+REM environment settings (P, Q, R, S, T) at the bottom of the batchfile. The
+REM structure is changed a bit, but the basic still is made by Wonkoo Kim.
+REM
+REM Please do not distribute this file without the above documentation
+REM included in the batch-file. If you change the file please add your
+REM name as a "modifier" as done below + document your changes. We do
+REM not intend to hold a copyright, though. You may use, misuse or abuse
+REM this batchfile as you see fit.
+REM
+REM This file is provided to you on a free basis. The author/modifiers
+REM do not want to be hold responsible to whatever this batchfile is
+REM doing. Use of this batchfile is entirely at your own risk.
+REM
+REM Wonkoo Kim (wkim+@pitt.edu), August 11, 1995
+REM Modified by Claus Futtrup (odie@csek.iprod.auc.dk), August 23. 1995
+REM Modified by Werner Lemberg (wl@gnu.org), Jan. 10. 1996
+REM to run this batch file under 4DOS too (replacing all %%f with %%x
+REM and doubling the speed with the LOADBTM ON command)
+REM Modified by Werner Lemberg (wl@gnu.org), Aug. 31. 1996
+REM to return unix-like paths additionally in the variable %fu%;
+REM the batch file will now parse e.g. \a.b\ correctly as a directory.
+REM
+:Usage
+ echo.
+ echo Usage: %0 filespec
+ echo.
+ echo Returns: fd (drive), fp (path), fu (unix path), fn (name), fe (extension)
+ echo.
+ echo Type %0 /? for additional help
+ echo %0 is made by Wonkoo Kim, modified by C. Futtrup and W. Lemberg.
+ echo.
+ goto END
+:Help
+ cls
+ echo %0 -- extracts the drive, path, name, and ext from file-path-name.
+ echo.
+ echo Return envs: FD (drive), FP (path), FU (unix path), FN (name), FE (ext)
+ echo Temp envs: P, Q, R, S, T
+ echo.
+ echo INPUT FILE fd fp fn fe
+ echo ------------------ --------- --------- --------- ---------
+ echo abc abc
+ echo abc.tex abc .tex
+ echo c:\abc.tex c: \ abc .tex
+ echo c:tmp\abc.tex c: tmp\ abc .tex
+ echo c:\tmp\abc.tex c: \tmp\ abc .tex
+ echo c:tmp\tex\abc.tex c: tmp\tex\ abc .tex
+ echo c:\tmp\tex\abc.tex c: \tmp\tex\ abc .tex
+ echo.
+ echo Please note this file isn't blazing fast + it needs a lot
+ echo of environment space. See comments in %0 for more info.
+ echo.
+ echo Wonkoo Kim (wkim+@pitt.edu), August 11, 1995
+ echo Modified by Claus Futtrup (odie@csek.iprod.auc.dk), August 23. 1995
+ echo Modified by Werner Lemberg (wl@gnu.org), Aug 31. 1996
+ goto END
+:InputCheck
+ for %%x in (%1) do if "%%x"=="%1" goto Okay
+ echo *** ERROR: Please do not use wildcards in input file name.
+ goto END
+:Okay
+ set p=
+ set r=
+ set fp=
+ set fu=
+ set fe=
+ set fn=%1
+ set s=XXXXXXXX%fn%
+ set t=%fn%
+ set s=
+ if [%t%]==[%1] goto GetDrive
+:EnvErr
+ echo *** ERROR: Not enough environment space!
+ echo *** See documentation at top of file '%0'
+ goto END
+:GetDrive
+ for %%x in (/%t%) do set fn=%%x
+ for %%x in (/%t%) do if not [%%x]==[%fn%] set fd=%%x
+ if [%fn%]==[:] goto DriveOnly
+ set t=%fn%
+ for %%x in (/%t%) do set fn=%%x
+ if [:%fn%]==[%t%] goto DriveFound
+ set fd=
+ set fn=%1
+ goto GetPath
+:DriveOnly
+ set fn=
+:DriveFound
+ set fd=%fd%:
+:GetPath
+ set s=%fn%
+:PathLoop
+ set t=%s%
+ for %%x in (/%t%) do set s=%%x
+ set q=
+ for %%x in (/%t%) do if not [%%x]==[%s%] set q=%%x
+ if "\%s%"=="%t%" goto Separator
+ set p=%p%%q%
+ set r=%r%%q%
+ if [%s%]==[%t%] goto PathCheck
+ goto PathLoop
+:Separator
+ set fn=%s%
+ set p=%p%\
+ set r=%r%/
+ set fp=%p%
+ set fu=%r%
+ goto PathLoop
+:PathCheck
+ if [%s%]==[\] goto NoFilename
+ if not [%fn%]==[\] goto GetExt
+ set fp=\
+ set fu=/
+ set fn=
+ goto Done
+:NoFilename
+ set fp=%p%\
+ set fu=%r%/
+ set fn=
+ goto Done
+:GetExt
+ set s=%fn%
+ set fe=%fn%
+ set fn=
+:ExtLoop
+ set t=%fe%
+ for %%x in (/%t%) do set fe=%%x
+ if ".%fe%"=="%t%" goto ExtFound
+ if [%fe%]==[%t%] goto NoExt
+ for %%x in (/%t%) do if not [%%x]==[%fe%] set fn=%fn%%%x
+ goto ExtLoop
+:ExtFound
+ set fe=.%fe%
+ goto Done
+:NoExt
+ if not [%fe%]==[.] set fn=%s%
+ set fe=
+:Done
+ echo DRIVE=%fd% PATH=%fp% UNIX_PATH=%fu% NAME=%fn% EXT=%fe%
+:END
+ set p=
+ set q=
+ set r=
+ set s=
+ set t=
+
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/Makefile.gnu b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/Makefile.gnu
new file mode 100644
index 0000000000..7dd88f3b22
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/Makefile.gnu
@@ -0,0 +1,127 @@
+# This file is part of the CJK package Version 4.8.5 (16-Oct-2021)
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+# GNU Makefile for hbf2gf
+
+.PHONY: default all debug documentation clean \
+ do_all
+
+.CAUTIOUS: hbf2gf.c
+
+default:
+ @echo " say "
+ @echo ". "
+ @echo " make TARGET OS=SYSTEM "
+ @echo ". "
+ @echo " SYSTEM can be one of the following: "
+ @echo ". "
+ @echo " os2 bound (emx) "
+ @echo " dos (djgpp) "
+ @echo ". "
+ @echo " TARGET can be one of the following: "
+ @echo ". "
+ @echo " all debug "
+ @echo " documentation (needs cweave package)"
+ @echo " clean "
+
+ifdef OS
+
+ # default values (bound executables built with emx)
+ FS = msdos
+ CC = gcc -Wall -O -DHAVE_EMTEXDIR
+ LIB =
+ O = .o
+ EXE = .exe
+ RM = del
+
+ ifeq ($(OS),os2)
+ FS = msdos
+ CC = gcc -Wall -Zomf -Zmtd -O -DHAVE_EMTEXDIR
+ LIB = hbf2gf.def
+ O = .obj
+ EXE = .exe
+ RM = del
+ endif
+
+ ifeq ($(OS),dos)
+ FS = msdos
+ CC = gcc -Wall -O -DHAVE_EMTEXDIR
+ LIB =
+ O = .o
+ EXE = .exe
+ RM = del
+ endif
+
+
+ %$O: %.c
+ $(CC) $(CFLAGS) -c -D$(FS) -o $@ $<
+
+ %.c: %.w %.ch
+ $(CTANGLE) $^ $@
+ %.c: %.w
+ $(CTANGLE) $<
+
+ %.tex: %.w %.ch
+ $(CWEAVE) +ai $^ $@
+ %.tex: %.w
+ $(CWEAVE) +ai $<
+
+ %.dvi: %.tex
+ $(TEX) $*
+
+
+ all:
+ $(MAKE) -f Makefile.gnu do_all CFLAGS=-s
+
+ debug:
+ $(MAKE) -f Makefile.gnu do_all CFLAGS=-g
+
+ # this builds the .dvi-file
+ documentation: hbf2gf.dvi
+
+ # remove the unnecessary files;
+ clean:
+ -$(RM) *.scn
+ -$(RM) *.toc
+ -$(RM) *.idx
+ -$(RM) *.log
+ -$(RM) *.o
+
+
+ do_all: hbf2gf$(EXE)
+
+ hbf2gf$(EXE): hbf2gf$O hbf$O emdir$O emtexdir$O
+ ifeq ($(OS),dos)
+ $(CC) $(CFLAGS) -o $(basename $@) $^
+ strip $(basename $@)
+ coff2exe $(basename $@)
+ -del $(basename $@)
+ else
+ $(CC) $(CFLAGS) -o $@ $^ $(LIB)
+ endif
+
+ hbf$O: hbf.c hbf.h
+ emdir$O: emdir.c emdir.h
+ emtexdir$O: emtexdir.c emtexdir.h emdir.h
+
+else # ifdef OS
+
+ all debug documentation clean: default
+
+endif
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/Makefile.in b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/Makefile.in
new file mode 100644
index 0000000000..bf6022f818
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/Makefile.in
@@ -0,0 +1,127 @@
+# Makefile for hbf2gf -- wl@gnu.org
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+VPATH = @srcdir@
+srcdir = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+libdir = @libdir@
+bindir = @bindir@
+mandir = @mandir@
+
+RM = @RM@
+RMF = @RM@ -f
+
+TEX = tex
+CTANGLE = ctangle
+CWEAVE = cweave
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+
+CC = @CC@
+CPP = @CPP@
+
+MKINSTALLDIRS = $(srcdir)/mkinstalldirs
+
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@ @DEFS@ @no_strdup@ -Dunix
+MY_CFLAGS = $(CFLAGS) $(CPPFLAGS) @XX_CFLAGS@
+LDFLAGS = @LDFLAGS@ @LIBS@
+
+SRC = hbf2gf.c $(srcdir)/hbf.c
+OBJ = hbf2gf.o hbf.o
+
+
+.SUFFIXES: .dvi .tex .w
+
+
+.w.c:
+ $(CTANGLE) $<
+.c.o:
+ $(CC) -c $(MY_CFLAGS) $<
+
+.w.tex:
+ $(CWEAVE) +ai $<
+
+.tex.dvi:
+ $(TEX) $<
+
+
+
+PROGRAMS = hbf2gf
+
+default all: $(PROGRAMS)
+
+hbf2gf.c: $(srcdir)/hbf2gf.w
+
+hbf2gf: $(OBJ)
+ $(CC) $(MY_CFLAGS) -o hbf2gf $(OBJ) $(LDFLAGS)
+
+documentation: hbf2gf.dvi
+
+install: $(PROGRAMS)
+ $(MKINSTALLDIRS) $(bindir) $(mandir)/man1
+ for P in $(PROGRAMS) ; do \
+ $(INSTALL_PROGRAM) $$P $(bindir)/$$P ; \
+ $(INSTALL_DATA) $(srcdir)/$$P.1 $(mandir)/man1 ; \
+ done
+
+uninstall:
+ -for P in $(PROGRAMS) ; do \
+ $(RMF) $(bindir)/$$P ; \
+ $(RMF) $(mandir)/man1/$$P.1 ; \
+ done
+
+clean: do_clean
+
+distclean: do_clean
+ -$(RMF) dep.end $(PROGRAMS) *.dvi
+ -$(RMF) *~ *.orig core *.core
+ -$(RMF) config.cache config.log config.status Makefile
+
+do_clean:
+ -$(RMF) *.o
+ -$(RMF) *.scn *.toc *.idx *.log
+
+maintainer-clean: distclean
+ -$(RMF) hbf2gf.c
+
+depend: $(SRC)
+ (echo '/^#.* PUT NO STUFF BELOW/,$$d'; echo w; echo q) | \
+ ed - Makefile
+ echo '# Dependencies generated by make depend: PUT NO STUFF BELOW' \
+ >> Makefile
+ for file in $(SRC) ; do \
+ $(CPP) $(CPPFLAGS) $$file | \
+ sed -n -e 's|^# [1-9][0-9]* "\([^/].*\.h\)".*|\1|p' \
+ -e 's|^# [1-9][0-9]* "\($(srcdir)/.*\.h\)".*|\1|p' | \
+ sed -e 's|/\./|.|g' -e "s/^/`basename $$file .c`.o: /" ; \
+ done | \
+ sort -u | \
+ awk '{ if (LINE == 1) \
+ { line = last = $$1 } \
+ else if ($$1 != last) \
+ { print line ; line = last = $$1 } \
+ line = line " " $$2 } \
+ END { print line }' >> Makefile
+
+# Dependencies generated by make depend: PUT NO STUFF BELOW
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/README b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/README
new file mode 100644
index 0000000000..a7de0ec140
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/README
@@ -0,0 +1,2 @@
+Additional installation documentation can be found in the files `INSTALL'
+(in the top directory) and `doc/hbf2gf.txt'.
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/c-auto.h b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/c-auto.h
new file mode 100644
index 0000000000..96e9b06279
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/c-auto.h
@@ -0,0 +1,39 @@
+/*
+ * c-auto.h
+ *
+ * This file is part of the CJK package ver 4.8.5 16-Oct-2021
+ *
+ */
+
+/*
+ Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+
+ 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 in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+ */
+
+#ifndef C_AUTO_H
+#define C_AUTO_H
+
+/*
+ * We need to get kpathsea's configuration file.
+ */
+
+#include "kpathsea/c-auto.h"
+
+#endif /* C_AUTO_H */
+
+
+/* end */
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/README b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/README
new file mode 100644
index 0000000000..689d59e739
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/README
@@ -0,0 +1,10 @@
+In this directory you find some hbf2gf configuration files for common CJK
+bitmap fonts.
+
+No paths are specified for the HBF files -- under web2c you should add the
+path for these fonts to the `MISCFONTS' variable in texmf.cnf; under emTeX
+you should set the environment variable `HBFONTS'.
+
+The font paths used here in the config files of this directory are TDS
+compliant; only the `HBF_TARGET' environment variable is used (an example
+would be `set HBF_TARGET=/usr/local/TeX/texmf/fonts').
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5ka12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5ka12.cfg
new file mode 100644
index 0000000000..f5c142f023
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5ka12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header ntukai48.hbf
+mag_x 1
+threshold 128
+comment Big 5 normal 48x48 pixel font scaled and adapted to 12pt
+
+design_size 12
+
+x_offset 2
+y_offset -12
+
+nmb_files -1
+
+output_name b5ka12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme Big 5 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/ntu/b5ka12/
+tfm_directory $HBF_TARGET/tfm/ntu/b5ka12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5kr12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5kr12.cfg
new file mode 100644
index 0000000000..9d9da2c1a2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5kr12.cfg
@@ -0,0 +1,30 @@
+
+hbf_header ntukai48.hbf
+mag_x 1
+threshold 128
+comment Big 5 normal 48x48 pixel font rotated, scaled and adapted to 12pt
+
+design_size 12
+
+x_offset 2
+y_offset -10
+
+rotation yes
+
+nmb_files -1
+
+output_name b5kr12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme Big 5 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/ntu/b5kr12/
+tfm_directory $HBF_TARGET/tfm/ntu/b5kr12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5so12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5so12.cfg
new file mode 100644
index 0000000000..dc0bcd9fbf
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/b5so12.cfg
@@ -0,0 +1,31 @@
+
+hbf_header et24.hbf
+mag_x 2.076
+threshold 128
+comment fanti songti 24x24 pixel font magnified and adapted for 12pt
+
+design_size 12.0
+
+x_offset 3
+y_offset -8
+
+nmb_files -1
+
+output_name b5so12
+
+checksum 123456789
+
+dpi_x 300
+
+tfm_files yes
+pk_files no
+
+coding codingscheme Big 5 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/eten/b5so12/
+tfm_directory $HBF_TARGET/tfm/eten/b5so12/
+
+ rm_command del
+ cp_command copy
+ long_extension no
+ job_extension .cmd
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c1so12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c1so12.cfg
new file mode 100644
index 0000000000..de5b32b3ef
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c1so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-1.hbf
+mag_x 1
+threshold 128
+comment CNS plane 1 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c1so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 1 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c1so12/
+tfm_directory $HBF_TARGET/tfm/cns/c1so12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c2so12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c2so12.cfg
new file mode 100644
index 0000000000..969af8fae1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c2so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-2.hbf
+mag_x 1
+threshold 128
+comment CNS plane 2 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c2so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 2 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c2so12/
+tfm_directory $HBF_TARGET/tfm/cns/c2so12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c3so12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c3so12.cfg
new file mode 100644
index 0000000000..0e65768ee5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c3so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-3.hbf
+mag_x 1
+threshold 128
+comment CNS plane 3 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c3so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 3 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c3so12/
+tfm_directory $HBF_TARGET/tfm/cns/c3so12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c4so12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c4so12.cfg
new file mode 100644
index 0000000000..8ea3a8b270
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c4so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-4.hbf
+mag_x 1
+threshold 128
+comment CNS plane 4 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c4so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 4 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c4so12/
+tfm_directory $HBF_TARGET/tfm/cns/c4so12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c5so12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c5so12.cfg
new file mode 100644
index 0000000000..1b81c90a0d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c5so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-5.hbf
+mag_x 1
+threshold 128
+comment CNS plane 5 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c5so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 5 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c5so12/
+tfm_directory $HBF_TARGET/tfm/cns/c5so12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c6so12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c6so12.cfg
new file mode 100644
index 0000000000..5b9c912ce5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c6so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-6.hbf
+mag_x 1
+threshold 128
+comment CNS plane 6 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c6so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 6 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c6so12/
+tfm_directory $HBF_TARGET/tfm/cns/c6so12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c7so12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c7so12.cfg
new file mode 100644
index 0000000000..051b260142
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/c7so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-7.hbf
+mag_x 1
+threshold 128
+comment CNS plane 7 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c7so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 7 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c7so12/
+tfm_directory $HBF_TARGET/tfm/cns/c7so12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/csso12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/csso12.cfg
new file mode 100644
index 0000000000..9ad91b0c57
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/csso12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-b5.hbf
+mag_x 1
+threshold 128
+comment CNS song 40x40 pixel font (Bg5 encoded) scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name csso12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme Big 5 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/csso12/
+tfm_directory $HBF_TARGET/tfm/cns/csso12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/gsfs14.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/gsfs14.cfg
new file mode 100644
index 0000000000..4b397aca46
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/gsfs14.cfg
@@ -0,0 +1,27 @@
+
+hbf_header jfs56.hbf
+mag_x 1
+threshold 128
+comment jianti fansongti 56x56 pixel font scaled and adapted to 14.4pt
+
+design_size 14.4
+
+y_offset -13
+
+nmb_files -1
+
+output_name gsfs14
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme GuoBiao encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/ccdos/gsfs14/
+tfm_directory $HBF_TARGET/tfm/ccdos/gsfs14/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/j2so12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/j2so12.cfg
new file mode 100644
index 0000000000..7e0d70b5c0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/j2so12.cfg
@@ -0,0 +1,30 @@
+
+hbf_header jisksp40.hbf
+mag_x 1.0
+threshold 128
+comment supplemental kanji normal 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12
+
+min_char 0x2121
+
+x_offset 2
+y_offset -7
+
+nmb_files -1
+
+output_name j2so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme JIS2 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/jisx0212/j2so12/
+tfm_directory $HBF_TARGET/tfm/jisx0212/j2so12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/jsso12.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/jsso12.cfg
new file mode 100644
index 0000000000..9bdfc7b1e8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/jsso12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header kanji48.hbf
+mag_x 0.83
+threshold 128
+comment kanji normal 48x48 pixel font scaled and adapted to 12pt
+
+design_size 12
+
+x_offset 2
+y_offset -7
+
+nmb_files -1
+
+output_name jsso12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme JIS encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/jisx0208/jsso12/
+tfm_directory $HBF_TARGET/tfm/jisx0208/jsso12/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/ksso17.cfg b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/ksso17.cfg
new file mode 100644
index 0000000000..c82f7e7eee
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/cfg/ksso17.cfg
@@ -0,0 +1,27 @@
+
+hbf_header hanja65.hbf
+mag_x 1
+threshold 128
+comment hanja normal 65x65 pixel font scaled and adapted to 17.28pt
+
+design_size 17.28
+
+y_offset -16
+
+nmb_files -1
+
+output_name ksso17
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme KS encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/ksc5601/ksso17/
+tfm_directory $HBF_TARGET/tfm/ksc5601/ksso17/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/config.guess b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/config.guess
new file mode 100755
index 0000000000..e81d3ae7c2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/config.guess
@@ -0,0 +1,1748 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright 1992-2021 Free Software Foundation, Inc.
+
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2021-06-03'
+
+# This file 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+#
+# You can get the latest version of this script from:
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
+#
+# Please send patches to <config-patches@gnu.org>.
+
+
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Options:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2021 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+# Just in case it came from the environment.
+GUESS=
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
+
+set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
+ : "${TMPDIR=/tmp}"
+ # shellcheck disable=SC2039,SC3028
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+ dummy=$tmp/dummy
+ case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+ ,,) echo "int x;" > "$dummy.c"
+ for driver in cc gcc c89 c99 ; do
+ if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+ CC_FOR_BUILD=$driver
+ break
+ fi
+ done
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+ esac
+}
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if test -f /.attbin/uname ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case $UNAME_SYSTEM in
+Linux|GNU|GNU/*)
+ LIBC=unknown
+
+ set_cc_for_build
+ cat <<-EOF > "$dummy.c"
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #elif defined(__GLIBC__)
+ LIBC=gnu
+ #else
+ #include <stdarg.h>
+ /* First heuristic to detect musl libc. */
+ #ifdef __DEFINED_va_list
+ LIBC=musl
+ #endif
+ #endif
+ EOF
+ cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ eval "$cc_set_libc"
+
+ # Second heuristic to detect musl libc.
+ if [ "$LIBC" = unknown ] &&
+ command -v ldd >/dev/null &&
+ ldd --version 2>&1 | grep -q ^musl; then
+ LIBC=musl
+ fi
+
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ if [ "$LIBC" = unknown ]; then
+ LIBC=gnu
+ fi
+ ;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ echo unknown)`
+ case $UNAME_MACHINE_ARCH in
+ aarch64eb) machine=aarch64_be-unknown ;;
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ earmv*)
+ arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+ machine=${arch}${endian}-unknown
+ ;;
+ *) machine=$UNAME_MACHINE_ARCH-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently (or will in the future) and ABI.
+ case $UNAME_MACHINE_ARCH in
+ earm*)
+ os=netbsdelf
+ ;;
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # Determine ABI tags.
+ case $UNAME_MACHINE_ARCH in
+ earm*)
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+ abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case $UNAME_VERSION in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ GUESS=$machine-${os}${release}${abi-}
+ ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
+ ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
+ ;;
+ *:SecBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
+ ;;
+ *:LibertyBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
+ ;;
+ *:MidnightBSD:*:*)
+ GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
+ ;;
+ *:ekkoBSD:*:*)
+ GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
+ ;;
+ *:SolidBSD:*:*)
+ GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
+ ;;
+ *:OS108:*:*)
+ GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
+ ;;
+ macppc:MirBSD:*:*)
+ GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
+ ;;
+ *:MirBSD:*:*)
+ GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
+ ;;
+ *:Sortix:*:*)
+ GUESS=$UNAME_MACHINE-unknown-sortix
+ ;;
+ *:Twizzler:*:*)
+ GUESS=$UNAME_MACHINE-unknown-twizzler
+ ;;
+ *:Redox:*:*)
+ GUESS=$UNAME_MACHINE-unknown-redox
+ ;;
+ mips:OSF1:*.*)
+ GUESS=mips-dec-osf1
+ ;;
+ alpha:OSF1:*:*)
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ trap '' 0
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case $ALPHA_CPU_TYPE in
+ "EV4 (21064)")
+ UNAME_MACHINE=alpha ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE=alpha ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE=alpha ;;
+ "EV5 (21164)")
+ UNAME_MACHINE=alphaev5 ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE=alphaev56 ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE=alphapca56 ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE=alphapca57 ;;
+ "EV6 (21264)")
+ UNAME_MACHINE=alphaev6 ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE=alphaev67 ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE=alphaev68 ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE=alphaev69 ;;
+ "EV7 (21364)")
+ UNAME_MACHINE=alphaev7 ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE=alphaev79 ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
+ ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ GUESS=m68k-unknown-sysv4
+ ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ GUESS=$UNAME_MACHINE-unknown-amigaos
+ ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ GUESS=$UNAME_MACHINE-unknown-morphos
+ ;;
+ *:OS/390:*:*)
+ GUESS=i370-ibm-openedition
+ ;;
+ *:z/VM:*:*)
+ GUESS=s390-ibm-zvmoe
+ ;;
+ *:OS400:*:*)
+ GUESS=powerpc-ibm-os400
+ ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ GUESS=arm-acorn-riscix$UNAME_RELEASE
+ ;;
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
+ GUESS=arm-unknown-riscos
+ ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ GUESS=hppa1.1-hitachi-hiuxmpp
+ ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ case `(/bin/universe) 2>/dev/null` in
+ att) GUESS=pyramid-pyramid-sysv3 ;;
+ *) GUESS=pyramid-pyramid-bsd ;;
+ esac
+ ;;
+ NILE*:*:*:dcosx)
+ GUESS=pyramid-pyramid-svr4
+ ;;
+ DRS?6000:unix:4.0:6*)
+ GUESS=sparc-icl-nx6
+ ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) GUESS=sparc-icl-nx7 ;;
+ esac
+ ;;
+ s390x:SunOS:*:*)
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
+ ;;
+ sun4H:SunOS:5.*:*)
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-hal-solaris2$SUN_REL
+ ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris2$SUN_REL
+ ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ GUESS=i386-pc-auroraux$UNAME_RELEASE
+ ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ set_cc_for_build
+ SUN_ARCH=i386
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH=x86_64
+ fi
+ fi
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
+ ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris3$SUN_REL
+ ;;
+ sun4*:SunOS:*:*)
+ case `/usr/bin/arch -k` in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
+ GUESS=sparc-sun-sunos$SUN_REL
+ ;;
+ sun3*:SunOS:*:*)
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
+ ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
+ case `/bin/arch` in
+ sun3)
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
+ ;;
+ sun4)
+ GUESS=sparc-sun-sunos$UNAME_RELEASE
+ ;;
+ esac
+ ;;
+ aushp:SunOS:*:*)
+ GUESS=sparc-auspex-sunos$UNAME_RELEASE
+ ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ GUESS=m68k-milan-mint$UNAME_RELEASE
+ ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ GUESS=m68k-hades-mint$UNAME_RELEASE
+ ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ GUESS=m68k-unknown-mint$UNAME_RELEASE
+ ;;
+ m68k:machten:*:*)
+ GUESS=m68k-apple-machten$UNAME_RELEASE
+ ;;
+ powerpc:machten:*:*)
+ GUESS=powerpc-apple-machten$UNAME_RELEASE
+ ;;
+ RISC*:Mach:*:*)
+ GUESS=mips-dec-mach_bsd4.3
+ ;;
+ RISC*:ULTRIX:*:*)
+ GUESS=mips-dec-ultrix$UNAME_RELEASE
+ ;;
+ VAX*:ULTRIX*:*:*)
+ GUESS=vax-dec-ultrix$UNAME_RELEASE
+ ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ GUESS=clipper-intergraph-clix$UNAME_RELEASE
+ ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+ dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ GUESS=mips-mips-riscos$UNAME_RELEASE
+ ;;
+ Motorola:PowerMAX_OS:*:*)
+ GUESS=powerpc-motorola-powermax
+ ;;
+ Motorola:*:4.3:PL8-*)
+ GUESS=powerpc-harris-powermax
+ ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ GUESS=powerpc-harris-powermax
+ ;;
+ Night_Hawk:Power_UNIX:*:*)
+ GUESS=powerpc-harris-powerunix
+ ;;
+ m88k:CX/UX:7*:*)
+ GUESS=m88k-harris-cxux7
+ ;;
+ m88k:*:4*:R4*)
+ GUESS=m88k-motorola-sysv4
+ ;;
+ m88k:*:3*:R3*)
+ GUESS=m88k-motorola-sysv3
+ ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
+ then
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+ test "$TARGET_BINARY_INTERFACE"x = x
+ then
+ GUESS=m88k-dg-dgux$UNAME_RELEASE
+ else
+ GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
+ fi
+ else
+ GUESS=i586-dg-dgux$UNAME_RELEASE
+ fi
+ ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ GUESS=m88k-dolphin-sysv3
+ ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ GUESS=m88k-motorola-sysv3
+ ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ GUESS=m88k-tektronix-sysv3
+ ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ GUESS=m68k-tektronix-bsd
+ ;;
+ *:IRIX*:*:*)
+ IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
+ GUESS=mips-sgi-irix$IRIX_REL
+ ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ GUESS=i386-ibm-aix
+ ;;
+ ia64:AIX:*:*)
+ if test -x /usr/bin/oslevel ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
+ fi
+ GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
+ ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
+ then
+ GUESS=$SYSTEM_NAME
+ else
+ GUESS=rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ GUESS=rs6000-ibm-aix3.2.4
+ else
+ GUESS=rs6000-ibm-aix3.2
+ fi
+ ;;
+ *:AIX:*:[4567])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if test -x /usr/bin/lslpp ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+ else
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
+ fi
+ GUESS=$IBM_ARCH-ibm-aix$IBM_REV
+ ;;
+ *:AIX:*:*)
+ GUESS=rs6000-ibm-aix
+ ;;
+ ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
+ GUESS=romp-ibm-bsd4.4
+ ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to
+ ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ GUESS=rs6000-bull-bosx
+ ;;
+ DPX/2?00:B.O.S.:*:*)
+ GUESS=m68k-bull-sysv3
+ ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ GUESS=m68k-hp-bsd
+ ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ GUESS=m68k-hp-bsd4.4
+ ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ case $UNAME_MACHINE in
+ 9000/31?) HP_ARCH=m68000 ;;
+ 9000/[34]??) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if test -x /usr/bin/getconf; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case $sc_cpu_version in
+ 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case $sc_kernel_bits in
+ 32) HP_ARCH=hppa2.0n ;;
+ 64) HP_ARCH=hppa2.0w ;;
+ '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if test "$HP_ARCH" = ""; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if test "$HP_ARCH" = hppa2.0w
+ then
+ set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH=hppa2.0w
+ else
+ HP_ARCH=hppa64
+ fi
+ fi
+ GUESS=$HP_ARCH-hp-hpux$HPUX_REV
+ ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ GUESS=ia64-hp-hpux$HPUX_REV
+ ;;
+ 3050*:HI-UX:*:*)
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ GUESS=unknown-hitachi-hiuxwe2
+ ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
+ GUESS=hppa1.1-hp-bsd
+ ;;
+ 9000/8??:4.3bsd:*:*)
+ GUESS=hppa1.0-hp-bsd
+ ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ GUESS=hppa1.0-hp-mpeix
+ ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
+ GUESS=hppa1.1-hp-osf
+ ;;
+ hp8??:OSF1:*:*)
+ GUESS=hppa1.0-hp-osf
+ ;;
+ i*86:OSF1:*:*)
+ if test -x /usr/sbin/sysversion ; then
+ GUESS=$UNAME_MACHINE-unknown-osf1mk
+ else
+ GUESS=$UNAME_MACHINE-unknown-osf1
+ fi
+ ;;
+ parisc*:Lites*:*:*)
+ GUESS=hppa1.1-hp-lites
+ ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ GUESS=c1-convex-bsd
+ ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ GUESS=c34-convex-bsd
+ ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ GUESS=c38-convex-bsd
+ ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ GUESS=c4-convex-bsd
+ ;;
+ CRAY*Y-MP:*:*:*)
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=ymp-cray-unicos$CRAY_REL
+ ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=t90-cray-unicos$CRAY_REL
+ ;;
+ CRAY*T3E:*:*:*)
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=alphaev5-cray-unicosmk$CRAY_REL
+ ;;
+ CRAY*SV1:*:*:*)
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=sv1-cray-unicos$CRAY_REL
+ ;;
+ *:UNICOS/mp:*:*)
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=craynv-cray-unicosmp$CRAY_REL
+ ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
+ GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+ GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
+ ;;
+ sparc*:BSD/OS:*:*)
+ GUESS=sparc-unknown-bsdi$UNAME_RELEASE
+ ;;
+ *:BSD/OS:*:*)
+ GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
+ ;;
+ arm:FreeBSD:*:*)
+ UNAME_PROCESSOR=`uname -p`
+ set_cc_for_build
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
+ else
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
+ fi
+ ;;
+ *:FreeBSD:*:*)
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case $UNAME_PROCESSOR in
+ amd64)
+ UNAME_PROCESSOR=x86_64 ;;
+ i386)
+ UNAME_PROCESSOR=i586 ;;
+ esac
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
+ ;;
+ i*:CYGWIN*:*)
+ GUESS=$UNAME_MACHINE-pc-cygwin
+ ;;
+ *:MINGW64*:*)
+ GUESS=$UNAME_MACHINE-pc-mingw64
+ ;;
+ *:MINGW*:*)
+ GUESS=$UNAME_MACHINE-pc-mingw32
+ ;;
+ *:MSYS*:*)
+ GUESS=$UNAME_MACHINE-pc-msys
+ ;;
+ i*:PW*:*)
+ GUESS=$UNAME_MACHINE-pc-pw32
+ ;;
+ *:Interix*:*)
+ case $UNAME_MACHINE in
+ x86)
+ GUESS=i586-pc-interix$UNAME_RELEASE
+ ;;
+ authenticamd | genuineintel | EM64T)
+ GUESS=x86_64-unknown-interix$UNAME_RELEASE
+ ;;
+ IA64)
+ GUESS=ia64-unknown-interix$UNAME_RELEASE
+ ;;
+ esac ;;
+ i*:UWIN*:*)
+ GUESS=$UNAME_MACHINE-pc-uwin
+ ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ GUESS=x86_64-pc-cygwin
+ ;;
+ prep*:SunOS:5.*:*)
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=powerpcle-unknown-solaris2$SUN_REL
+ ;;
+ *:GNU:*:*)
+ # the GNU system
+ GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
+ GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
+ ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
+ ;;
+ *:Minix:*:*)
+ GUESS=$UNAME_MACHINE-unknown-minix
+ ;;
+ aarch64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ arm*:Linux:*:*)
+ set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
+ else
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
+ fi
+ fi
+ ;;
+ avr32*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ cris:Linux:*:*)
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
+ crisv32:Linux:*:*)
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
+ e2k:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ frv:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ hexagon:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ i*86:Linux:*:*)
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBC
+ ;;
+ ia64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ k1om:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ m32r*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ m68*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
+ sed 's/^ //' << EOF > "$dummy.c"
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ MIPS_ENDIAN=el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ MIPS_ENDIAN=
+ #else
+ MIPS_ENDIAN=
+ #endif
+ #endif
+EOF
+ cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
+ eval "$cc_set_vars"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
+ ;;
+ mips64el:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ openrisc*:Linux:*:*)
+ GUESS=or1k-unknown-linux-$LIBC
+ ;;
+ or32:Linux:*:* | or1k*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ padre:Linux:*:*)
+ GUESS=sparc-unknown-linux-$LIBC
+ ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ GUESS=hppa64-unknown-linux-$LIBC
+ ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
+ PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
+ *) GUESS=hppa-unknown-linux-$LIBC ;;
+ esac
+ ;;
+ ppc64:Linux:*:*)
+ GUESS=powerpc64-unknown-linux-$LIBC
+ ;;
+ ppc:Linux:*:*)
+ GUESS=powerpc-unknown-linux-$LIBC
+ ;;
+ ppc64le:Linux:*:*)
+ GUESS=powerpc64le-unknown-linux-$LIBC
+ ;;
+ ppcle:Linux:*:*)
+ GUESS=powerpcle-unknown-linux-$LIBC
+ ;;
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
+ ;;
+ sh64*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ sh*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ tile*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ vax:Linux:*:*)
+ GUESS=$UNAME_MACHINE-dec-linux-$LIBC
+ ;;
+ x86_64:Linux:*:*)
+ set_cc_for_build
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_X32 >/dev/null
+ then
+ LIBCABI=${LIBC}x32
+ fi
+ fi
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
+ ;;
+ xtensa*:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ GUESS=i386-sequent-sysv4
+ ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
+ ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ GUESS=$UNAME_MACHINE-pc-os2-emx
+ ;;
+ i*86:XTS-300:*:STOP)
+ GUESS=$UNAME_MACHINE-unknown-stop
+ ;;
+ i*86:atheos:*:*)
+ GUESS=$UNAME_MACHINE-unknown-atheos
+ ;;
+ i*86:syllable:*:*)
+ GUESS=$UNAME_MACHINE-pc-syllable
+ ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ GUESS=i386-unknown-lynxos$UNAME_RELEASE
+ ;;
+ i*86:*DOS:*:*)
+ GUESS=$UNAME_MACHINE-pc-msdosdjgpp
+ ;;
+ i*86:*:4.*:*)
+ UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
+ else
+ GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
+ fi
+ ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
+ else
+ GUESS=$UNAME_MACHINE-pc-sysv32
+ fi
+ ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configure will decide that
+ # this is a cross-build.
+ GUESS=i586-pc-msdosdjgpp
+ ;;
+ Intel:Mach:3*:*)
+ GUESS=i386-pc-mach3
+ ;;
+ paragon:*:*:*)
+ GUESS=i860-intel-osf1
+ ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4
+ fi
+ ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ GUESS=m68010-convergent-sysv
+ ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ GUESS=m68k-convergent-sysv
+ ;;
+ M680?0:D-NIX:5.3:*)
+ GUESS=m68k-diab-dnix
+ ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ GUESS=m68k-unknown-lynxos$UNAME_RELEASE
+ ;;
+ mc68030:UNIX_System_V:4.*:*)
+ GUESS=m68k-atari-sysv4
+ ;;
+ TSUNAMI:LynxOS:2.*:*)
+ GUESS=sparc-unknown-lynxos$UNAME_RELEASE
+ ;;
+ rs6000:LynxOS:2.*:*)
+ GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
+ ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
+ ;;
+ SM[BE]S:UNIX_SV:*:*)
+ GUESS=mips-dde-sysv$UNAME_RELEASE
+ ;;
+ RM*:ReliantUNIX-*:*:*)
+ GUESS=mips-sni-sysv4
+ ;;
+ RM*:SINIX-*:*:*)
+ GUESS=mips-sni-sysv4
+ ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ GUESS=$UNAME_MACHINE-sni-sysv4
+ else
+ GUESS=ns32k-sni-sysv
+ fi
+ ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ GUESS=i586-unisys-sysv4
+ ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ GUESS=hppa1.1-stratus-sysv4
+ ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ GUESS=i860-stratus-sysv4
+ ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ GUESS=$UNAME_MACHINE-stratus-vos
+ ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ GUESS=hppa1.1-stratus-vos
+ ;;
+ mc68*:A/UX:*:*)
+ GUESS=m68k-apple-aux$UNAME_RELEASE
+ ;;
+ news*:NEWS-OS:6*:*)
+ GUESS=mips-sony-newsos6
+ ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if test -d /usr/nec; then
+ GUESS=mips-nec-sysv$UNAME_RELEASE
+ else
+ GUESS=mips-unknown-sysv$UNAME_RELEASE
+ fi
+ ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ GUESS=powerpc-be-beos
+ ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ GUESS=powerpc-apple-beos
+ ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ GUESS=i586-pc-beos
+ ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ GUESS=i586-pc-haiku
+ ;;
+ x86_64:Haiku:*:*)
+ GUESS=x86_64-unknown-haiku
+ ;;
+ SX-4:SUPER-UX:*:*)
+ GUESS=sx4-nec-superux$UNAME_RELEASE
+ ;;
+ SX-5:SUPER-UX:*:*)
+ GUESS=sx5-nec-superux$UNAME_RELEASE
+ ;;
+ SX-6:SUPER-UX:*:*)
+ GUESS=sx6-nec-superux$UNAME_RELEASE
+ ;;
+ SX-7:SUPER-UX:*:*)
+ GUESS=sx7-nec-superux$UNAME_RELEASE
+ ;;
+ SX-8:SUPER-UX:*:*)
+ GUESS=sx8-nec-superux$UNAME_RELEASE
+ ;;
+ SX-8R:SUPER-UX:*:*)
+ GUESS=sx8r-nec-superux$UNAME_RELEASE
+ ;;
+ SX-ACE:SUPER-UX:*:*)
+ GUESS=sxace-nec-superux$UNAME_RELEASE
+ ;;
+ Power*:Rhapsody:*:*)
+ GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
+ ;;
+ *:Rhapsody:*:*)
+ GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
+ ;;
+ arm64:Darwin:*:*)
+ GUESS=aarch64-apple-darwin$UNAME_RELEASE
+ ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p`
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
+ fi
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
+ fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
+ fi
+ GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
+ ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = x86; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
+ ;;
+ *:QNX:*:4*)
+ GUESS=i386-pc-qnx
+ ;;
+ NEO-*:NONSTOP_KERNEL:*:*)
+ GUESS=neo-tandem-nsk$UNAME_RELEASE
+ ;;
+ NSE-*:NONSTOP_KERNEL:*:*)
+ GUESS=nse-tandem-nsk$UNAME_RELEASE
+ ;;
+ NSR-*:NONSTOP_KERNEL:*:*)
+ GUESS=nsr-tandem-nsk$UNAME_RELEASE
+ ;;
+ NSV-*:NONSTOP_KERNEL:*:*)
+ GUESS=nsv-tandem-nsk$UNAME_RELEASE
+ ;;
+ NSX-*:NONSTOP_KERNEL:*:*)
+ GUESS=nsx-tandem-nsk$UNAME_RELEASE
+ ;;
+ *:NonStop-UX:*:*)
+ GUESS=mips-compaq-nonstopux
+ ;;
+ BS2000:POSIX*:*:*)
+ GUESS=bs2000-siemens-sysv
+ ;;
+ DS/*:UNIX_System_V:*:*)
+ GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
+ ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "${cputype-}" = 386; then
+ UNAME_MACHINE=i386
+ elif test "x${cputype-}" != x; then
+ UNAME_MACHINE=$cputype
+ fi
+ GUESS=$UNAME_MACHINE-unknown-plan9
+ ;;
+ *:TOPS-10:*:*)
+ GUESS=pdp10-unknown-tops10
+ ;;
+ *:TENEX:*:*)
+ GUESS=pdp10-unknown-tenex
+ ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ GUESS=pdp10-dec-tops20
+ ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ GUESS=pdp10-xkl-tops20
+ ;;
+ *:TOPS-20:*:*)
+ GUESS=pdp10-unknown-tops20
+ ;;
+ *:ITS:*:*)
+ GUESS=pdp10-unknown-its
+ ;;
+ SEI:*:*:SEIUX)
+ GUESS=mips-sei-seiux$UNAME_RELEASE
+ ;;
+ *:DragonFly:*:*)
+ DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
+ ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case $UNAME_MACHINE in
+ A*) GUESS=alpha-dec-vms ;;
+ I*) GUESS=ia64-dec-vms ;;
+ V*) GUESS=vax-dec-vms ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ GUESS=i386-pc-xenix
+ ;;
+ i*86:skyos:*:*)
+ SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
+ GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
+ ;;
+ i*86:rdos:*:*)
+ GUESS=$UNAME_MACHINE-pc-rdos
+ ;;
+ *:AROS:*:*)
+ GUESS=$UNAME_MACHINE-unknown-aros
+ ;;
+ x86_64:VMkernel:*:*)
+ GUESS=$UNAME_MACHINE-unknown-esx
+ ;;
+ amd64:Isilon\ OneFS:*:*)
+ GUESS=x86_64-unknown-onefs
+ ;;
+ *:Unleashed:*:*)
+ GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
+ ;;
+esac
+
+# Do we have a guess based on uname results?
+if test "x$GUESS" != x; then
+ echo "$GUESS"
+ exit
+fi
+
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
+echo "$0: unable to guess system type" >&2
+
+case $UNAME_MACHINE:$UNAME_SYSTEM in
+ mips:Linux | mips64:Linux)
+ # If we got here on MIPS GNU/Linux, output extra information.
+ cat >&2 <<EOF
+
+NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+the system type. Please install a C compiler and try again.
+EOF
+ ;;
+esac
+
+cat >&2 <<EOF
+
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
+
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
+and
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
+EOF
+
+our_year=`echo $timestamp | sed 's,-.*,,'`
+thisyear=`date +%Y`
+# shellcheck disable=SC2003
+script_age=`expr "$thisyear" - "$our_year"`
+if test "$script_age" -lt 3 ; then
+ cat >&2 <<EOF
+
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
+EOF
+fi
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/config.sub b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/config.sub
new file mode 100755
index 0000000000..d74fb6deac
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/config.sub
@@ -0,0 +1,1884 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright 1992-2021 Free Software Foundation, Inc.
+
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2021-08-14'
+
+# This file 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches to <config-patches@gnu.org>.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
+
+Canonicalize a configuration name.
+
+Options:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2021 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo "$1"
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Split fields of configuration type
+# shellcheck disable=SC2162
+saved_IFS=$IFS
+IFS="-" read field1 field2 field3 field4 <<EOF
+$1
+EOF
+IFS=$saved_IFS
+
+# Separate into logical components for further validation
+case $1 in
+ *-*-*-*-*)
+ echo Invalid configuration \`"$1"\': more than four components >&2
+ exit 1
+ ;;
+ *-*-*-*)
+ basic_machine=$field1-$field2
+ basic_os=$field3-$field4
+ ;;
+ *-*-*)
+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+ # parts
+ maybe_os=$field2-$field3
+ case $maybe_os in
+ nto-qnx* | linux-* | uclinux-uclibc* \
+ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+ | storm-chaos* | os2-emx* | rtmk-nova*)
+ basic_machine=$field1
+ basic_os=$maybe_os
+ ;;
+ android-linux)
+ basic_machine=$field1-unknown
+ basic_os=linux-android
+ ;;
+ *)
+ basic_machine=$field1-$field2
+ basic_os=$field3
+ ;;
+ esac
+ ;;
+ *-*)
+ # A lone config we happen to match not fitting any pattern
+ case $field1-$field2 in
+ decstation-3100)
+ basic_machine=mips-dec
+ basic_os=
+ ;;
+ *-*)
+ # Second component is usually, but not always the OS
+ case $field2 in
+ # Prevent following clause from handling this valid os
+ sun*os*)
+ basic_machine=$field1
+ basic_os=$field2
+ ;;
+ zephyr*)
+ basic_machine=$field1-unknown
+ basic_os=$field2
+ ;;
+ # Manufacturers
+ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+ | unicom* | ibm* | next | hp | isi* | apollo | altos* \
+ | convergent* | ncr* | news | 32* | 3600* | 3100* \
+ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+ | ultra | tti* | harris | dolphin | highlevel | gould \
+ | cbm | ns | masscomp | apple | axis | knuth | cray \
+ | microblaze* | sim | cisco \
+ | oki | wec | wrs | winbond)
+ basic_machine=$field1-$field2
+ basic_os=
+ ;;
+ *)
+ basic_machine=$field1
+ basic_os=$field2
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ *)
+ # Convert single-component short-hands not valid as part of
+ # multi-component configurations.
+ case $field1 in
+ 386bsd)
+ basic_machine=i386-pc
+ basic_os=bsd
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ basic_os=scout
+ ;;
+ alliant)
+ basic_machine=fx80-alliant
+ basic_os=
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ basic_os=
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ basic_os=bsd
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ basic_os=sysv
+ ;;
+ amiga)
+ basic_machine=m68k-unknown
+ basic_os=
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ basic_os=amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ basic_os=sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ basic_os=sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ basic_os=bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ basic_os=aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ basic_os=aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ basic_os=dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ basic_os=linux
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ basic_os=cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ basic_os=bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ basic_os=bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ basic_os=bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ basic_os=bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ basic_os=bsd
+ ;;
+ cray)
+ basic_machine=j90-cray
+ basic_os=unicos
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ basic_os=
+ ;;
+ da30)
+ basic_machine=m68k-da30
+ basic_os=
+ ;;
+ decstation | pmax | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ basic_os=
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ basic_os=sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ basic_os=dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ basic_os=msdosdjgpp
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ basic_os=ebmon
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ basic_os=ose
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ basic_os=sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ basic_os=go32
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ basic_os=hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ basic_os=xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ basic_os=hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ basic_os=sysv3
+ ;;
+ hp300 | hp300hpux)
+ basic_machine=m68k-hp
+ basic_os=hpux
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ basic_os=bsd
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ basic_os=osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ basic_os=proelf
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ basic_os=mach
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ basic_os=sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ basic_os=linux
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ basic_os=sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ basic_os=sysv
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ basic_os=mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ basic_os=mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ basic_os=mingw32ce
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ basic_os=coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ basic_os=morphos
+ ;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ basic_os=moxiebox
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ basic_os=msdos
+ ;;
+ msys)
+ basic_machine=i686-pc
+ basic_os=msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ basic_os=mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ basic_os=nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ basic_os=sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-pc
+ basic_os=netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ basic_os=linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ basic_os=newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ basic_os=newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ basic_os=sysv
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ basic_os=cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ basic_os=cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ basic_os=nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ basic_os=mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ basic_os=nonstopux
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ basic_os=os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ basic_os=ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ basic_os=os68k
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ basic_os=osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ basic_os=linux
+ ;;
+ psp)
+ basic_machine=mipsallegrexel-sony
+ basic_os=psp
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ basic_os=pw32
+ ;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ basic_os=rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ basic_os=rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ basic_os=coff
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ sei)
+ basic_machine=mips-sei
+ basic_os=seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ basic_os=
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ basic_os=sysv2
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ basic_os=
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ basic_os=sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ basic_os=
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ basic_os=sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ basic_os=sunos4
+ ;;
+ sun3)
+ basic_machine=m68k-sun
+ basic_os=
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ basic_os=sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ basic_os=sunos4
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ basic_os=
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ basic_os=sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ basic_os=sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ basic_os=solaris2
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ basic_os=
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ basic_os=unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ basic_os=dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ basic_os=unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ basic_os=unicos
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ basic_os=tops20
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ basic_os=tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ basic_os=sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ basic_os=none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ basic_os=sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ basic_os=vms
+ ;;
+ vsta)
+ basic_machine=i386-pc
+ basic_os=vsta
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ basic_os=vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ basic_os=vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ basic_os=vxworks
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ basic_os=mingw32
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ basic_os=unicos
+ ;;
+ *)
+ basic_machine=$1
+ basic_os=
+ ;;
+ esac
+ ;;
+esac
+
+# Decode 1-component or ad-hoc basic machines
+case $basic_machine in
+ # Here we handle the default manufacturer of certain CPU types. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ cpu=hppa1.1
+ vendor=winbond
+ ;;
+ op50n)
+ cpu=hppa1.1
+ vendor=oki
+ ;;
+ op60c)
+ cpu=hppa1.1
+ vendor=oki
+ ;;
+ ibm*)
+ cpu=i370
+ vendor=ibm
+ ;;
+ orion105)
+ cpu=clipper
+ vendor=highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ cpu=m68k
+ vendor=apple
+ ;;
+ pmac | pmac-mpw)
+ cpu=powerpc
+ vendor=apple
+ ;;
+
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ cpu=m68000
+ vendor=att
+ ;;
+ 3b*)
+ cpu=we32k
+ vendor=att
+ ;;
+ bluegene*)
+ cpu=powerpc
+ vendor=ibm
+ basic_os=cnk
+ ;;
+ decsystem10* | dec10*)
+ cpu=pdp10
+ vendor=dec
+ basic_os=tops10
+ ;;
+ decsystem20* | dec20*)
+ cpu=pdp10
+ vendor=dec
+ basic_os=tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ cpu=m68k
+ vendor=motorola
+ ;;
+ dpx2*)
+ cpu=m68k
+ vendor=bull
+ basic_os=sysv3
+ ;;
+ encore | umax | mmax)
+ cpu=ns32k
+ vendor=encore
+ ;;
+ elxsi)
+ cpu=elxsi
+ vendor=elxsi
+ basic_os=${basic_os:-bsd}
+ ;;
+ fx2800)
+ cpu=i860
+ vendor=alliant
+ ;;
+ genix)
+ cpu=ns32k
+ vendor=ns
+ ;;
+ h3050r* | hiux*)
+ cpu=hppa1.1
+ vendor=hitachi
+ basic_os=hiuxwe2
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ cpu=hppa1.0
+ vendor=hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ cpu=m68000
+ vendor=hp
+ ;;
+ hp9k3[2-9][0-9])
+ cpu=m68k
+ vendor=hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ cpu=hppa1.0
+ vendor=hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ cpu=hppa1.1
+ vendor=hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ cpu=hppa1.1
+ vendor=hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ cpu=hppa1.1
+ vendor=hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ cpu=hppa1.1
+ vendor=hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ cpu=hppa1.0
+ vendor=hp
+ ;;
+ i*86v32)
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ basic_os=sysv32
+ ;;
+ i*86v4*)
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ basic_os=sysv4
+ ;;
+ i*86v)
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ basic_os=sysv
+ ;;
+ i*86sol2)
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ basic_os=solaris2
+ ;;
+ j90 | j90-cray)
+ cpu=j90
+ vendor=cray
+ basic_os=${basic_os:-unicos}
+ ;;
+ iris | iris4d)
+ cpu=mips
+ vendor=sgi
+ case $basic_os in
+ irix*)
+ ;;
+ *)
+ basic_os=irix4
+ ;;
+ esac
+ ;;
+ miniframe)
+ cpu=m68000
+ vendor=convergent
+ ;;
+ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ cpu=m68k
+ vendor=atari
+ basic_os=mint
+ ;;
+ news-3600 | risc-news)
+ cpu=mips
+ vendor=sony
+ basic_os=newsos
+ ;;
+ next | m*-next)
+ cpu=m68k
+ vendor=next
+ case $basic_os in
+ openstep*)
+ ;;
+ nextstep*)
+ ;;
+ ns2*)
+ basic_os=nextstep2
+ ;;
+ *)
+ basic_os=nextstep3
+ ;;
+ esac
+ ;;
+ np1)
+ cpu=np1
+ vendor=gould
+ ;;
+ op50n-* | op60c-*)
+ cpu=hppa1.1
+ vendor=oki
+ basic_os=proelf
+ ;;
+ pa-hitachi)
+ cpu=hppa1.1
+ vendor=hitachi
+ basic_os=hiuxwe2
+ ;;
+ pbd)
+ cpu=sparc
+ vendor=tti
+ ;;
+ pbb)
+ cpu=m68k
+ vendor=tti
+ ;;
+ pc532)
+ cpu=ns32k
+ vendor=pc532
+ ;;
+ pn)
+ cpu=pn
+ vendor=gould
+ ;;
+ power)
+ cpu=power
+ vendor=ibm
+ ;;
+ ps2)
+ cpu=i386
+ vendor=ibm
+ ;;
+ rm[46]00)
+ cpu=mips
+ vendor=siemens
+ ;;
+ rtpc | rtpc-*)
+ cpu=romp
+ vendor=ibm
+ ;;
+ sde)
+ cpu=mipsisa32
+ vendor=sde
+ basic_os=${basic_os:-elf}
+ ;;
+ simso-wrs)
+ cpu=sparclite
+ vendor=wrs
+ basic_os=vxworks
+ ;;
+ tower | tower-32)
+ cpu=m68k
+ vendor=ncr
+ ;;
+ vpp*|vx|vx-*)
+ cpu=f301
+ vendor=fujitsu
+ ;;
+ w65)
+ cpu=w65
+ vendor=wdc
+ ;;
+ w89k-*)
+ cpu=hppa1.1
+ vendor=winbond
+ basic_os=proelf
+ ;;
+ none)
+ cpu=none
+ vendor=none
+ ;;
+ leon|leon[3-9])
+ cpu=sparc
+ vendor=$basic_machine
+ ;;
+ leon-*|leon[3-9]-*)
+ cpu=sparc
+ vendor=`echo "$basic_machine" | sed 's/-.*//'`
+ ;;
+
+ *-*)
+ # shellcheck disable=SC2162
+ saved_IFS=$IFS
+ IFS="-" read cpu vendor <<EOF
+$basic_machine
+EOF
+ IFS=$saved_IFS
+ ;;
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ cpu=$basic_machine
+ vendor=pc
+ ;;
+ # These rules are duplicated from below for sake of the special case above;
+ # i.e. things that normalized to x86 arches should also default to "pc"
+ pc98)
+ cpu=i386
+ vendor=pc
+ ;;
+ x64 | amd64)
+ cpu=x86_64
+ vendor=pc
+ ;;
+ # Recognize the basic CPU types without company name.
+ *)
+ cpu=$basic_machine
+ vendor=unknown
+ ;;
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+ # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ craynv-unknown)
+ vendor=cray
+ basic_os=${basic_os:-unicosmp}
+ ;;
+ c90-unknown | c90-cray)
+ vendor=cray
+ basic_os=${Basic_os:-unicos}
+ ;;
+ fx80-unknown)
+ vendor=alliant
+ ;;
+ romp-unknown)
+ vendor=ibm
+ ;;
+ mmix-unknown)
+ vendor=knuth
+ ;;
+ microblaze-unknown | microblazeel-unknown)
+ vendor=xilinx
+ ;;
+ rs6000-unknown)
+ vendor=ibm
+ ;;
+ vax-unknown)
+ vendor=dec
+ ;;
+ pdp11-unknown)
+ vendor=dec
+ ;;
+ we32k-unknown)
+ vendor=att
+ ;;
+ cydra-unknown)
+ vendor=cydrome
+ ;;
+ i370-ibm*)
+ vendor=ibm
+ ;;
+ orion-unknown)
+ vendor=highlevel
+ ;;
+ xps-unknown | xps100-unknown)
+ cpu=xps100
+ vendor=honeywell
+ ;;
+
+ # Here we normalize CPU types with a missing or matching vendor
+ dpx20-unknown | dpx20-bull)
+ cpu=rs6000
+ vendor=bull
+ basic_os=${basic_os:-bosx}
+ ;;
+
+ # Here we normalize CPU types irrespective of the vendor
+ amd64-*)
+ cpu=x86_64
+ ;;
+ blackfin-*)
+ cpu=bfin
+ basic_os=linux
+ ;;
+ c54x-*)
+ cpu=tic54x
+ ;;
+ c55x-*)
+ cpu=tic55x
+ ;;
+ c6x-*)
+ cpu=tic6x
+ ;;
+ e500v[12]-*)
+ cpu=powerpc
+ basic_os=${basic_os}"spe"
+ ;;
+ mips3*-*)
+ cpu=mips64
+ ;;
+ ms1-*)
+ cpu=mt
+ ;;
+ m68knommu-*)
+ cpu=m68k
+ basic_os=linux
+ ;;
+ m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+ cpu=s12z
+ ;;
+ openrisc-*)
+ cpu=or32
+ ;;
+ parisc-*)
+ cpu=hppa
+ basic_os=linux
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ cpu=i586
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ cpu=i686
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ cpu=i686
+ ;;
+ pentium4-*)
+ cpu=i786
+ ;;
+ pc98-*)
+ cpu=i386
+ ;;
+ ppc-* | ppcbe-*)
+ cpu=powerpc
+ ;;
+ ppcle-* | powerpclittle-*)
+ cpu=powerpcle
+ ;;
+ ppc64-*)
+ cpu=powerpc64
+ ;;
+ ppc64le-* | powerpc64little-*)
+ cpu=powerpc64le
+ ;;
+ sb1-*)
+ cpu=mipsisa64sb1
+ ;;
+ sb1el-*)
+ cpu=mipsisa64sb1el
+ ;;
+ sh5e[lb]-*)
+ cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
+ ;;
+ spur-*)
+ cpu=spur
+ ;;
+ strongarm-* | thumb-*)
+ cpu=arm
+ ;;
+ tx39-*)
+ cpu=mipstx39
+ ;;
+ tx39el-*)
+ cpu=mipstx39el
+ ;;
+ x64-*)
+ cpu=x86_64
+ ;;
+ xscale-* | xscalee[bl]-*)
+ cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
+ ;;
+ arm64-*)
+ cpu=aarch64
+ ;;
+
+ # Recognize the canonical CPU Types that limit and/or modify the
+ # company names they are paired with.
+ cr16-*)
+ basic_os=${basic_os:-elf}
+ ;;
+ crisv32-* | etraxfs*-*)
+ cpu=crisv32
+ vendor=axis
+ ;;
+ cris-* | etrax*-*)
+ cpu=cris
+ vendor=axis
+ ;;
+ crx-*)
+ basic_os=${basic_os:-elf}
+ ;;
+ neo-tandem)
+ cpu=neo
+ vendor=tandem
+ ;;
+ nse-tandem)
+ cpu=nse
+ vendor=tandem
+ ;;
+ nsr-tandem)
+ cpu=nsr
+ vendor=tandem
+ ;;
+ nsv-tandem)
+ cpu=nsv
+ vendor=tandem
+ ;;
+ nsx-tandem)
+ cpu=nsx
+ vendor=tandem
+ ;;
+ mipsallegrexel-sony)
+ cpu=mipsallegrexel
+ vendor=sony
+ ;;
+ tile*-*)
+ basic_os=${basic_os:-linux-gnu}
+ ;;
+
+ *)
+ # Recognize the canonical CPU types that are allowed with any
+ # company name.
+ case $cpu in
+ 1750a | 580 \
+ | a29k \
+ | aarch64 | aarch64_be \
+ | abacus \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+ | alphapca5[67] | alpha64pca5[67] \
+ | am33_2.0 \
+ | amdgcn \
+ | arc | arceb | arc32 | arc64 \
+ | arm | arm[lb]e | arme[lb] | armv* \
+ | avr | avr32 \
+ | asmjs \
+ | ba \
+ | be32 | be64 \
+ | bfin | bpf | bs2000 \
+ | c[123]* | c30 | [cjt]90 | c4x \
+ | c8051 | clipper | craynv | csky | cydra \
+ | d10v | d30v | dlx | dsp16xx \
+ | e2k | elxsi | epiphany \
+ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+ | h8300 | h8500 \
+ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i*86 | i860 | i960 | ia16 | ia64 \
+ | ip2k | iq2000 \
+ | k1om \
+ | le32 | le64 \
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64eb | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r3 | mipsisa32r3el \
+ | mipsisa32r5 | mipsisa32r5el \
+ | mipsisa32r6 | mipsisa32r6el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r3 | mipsisa64r3el \
+ | mipsisa64r5 | mipsisa64r5el \
+ | mipsisa64r6 | mipsisa64r6el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+ | mipstx39 | mipstx39el \
+ | mmix \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nfp \
+ | nios | nios2 | nios2eb | nios2el \
+ | none | np1 | ns16k | ns32k | nvptx \
+ | open8 \
+ | or1k* \
+ | or32 \
+ | orion \
+ | picochip \
+ | pdp10 | pdp11 | pj | pjl | pn | power \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+ | pru \
+ | pyramid \
+ | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
+ | rl78 | romp | rs6000 | rx \
+ | s390 | s390x \
+ | score \
+ | sh | shl \
+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+ | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+ | spu \
+ | tahoe \
+ | thumbv7* \
+ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+ | tron \
+ | ubicom32 \
+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+ | vax \
+ | visium \
+ | w65 \
+ | wasm32 | wasm64 \
+ | we32k \
+ | x86 | x86_64 | xc16x | xgate | xps100 \
+ | xstormy16 | xtensa* \
+ | ymp \
+ | z8k | z80)
+ ;;
+
+ *)
+ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+ exit 1
+ ;;
+ esac
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $vendor in
+ digital*)
+ vendor=dec
+ ;;
+ commodore*)
+ vendor=cbm
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if test x$basic_os != x
+then
+
+# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+# set os.
+case $basic_os in
+ gnu/linux*)
+ kernel=linux
+ os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
+ ;;
+ os2-emx)
+ kernel=os2
+ os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
+ ;;
+ nto-qnx*)
+ kernel=nto
+ os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
+ ;;
+ *-*)
+ # shellcheck disable=SC2162
+ saved_IFS=$IFS
+ IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+ IFS=$saved_IFS
+ ;;
+ # Default OS when just kernel was specified
+ nto*)
+ kernel=nto
+ os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
+ ;;
+ linux*)
+ kernel=linux
+ os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
+ ;;
+ *)
+ kernel=
+ os=$basic_os
+ ;;
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
+case $os in
+ # First match some system type aliases that might get confused
+ # with valid system types.
+ # solaris* is a basic system type, with this one exception.
+ auroraux)
+ os=auroraux
+ ;;
+ bluegene*)
+ os=cnk
+ ;;
+ solaris1 | solaris1.*)
+ os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
+ ;;
+ solaris)
+ os=solaris2
+ ;;
+ unixware*)
+ os=sysv4.2uw
+ ;;
+ # es1800 is here to avoid being matched by es* (a different OS)
+ es1800*)
+ os=ose
+ ;;
+ # Some version numbers need modification
+ chorusos*)
+ os=chorusos
+ ;;
+ isc)
+ os=isc2.2
+ ;;
+ sco6)
+ os=sco5v6
+ ;;
+ sco5)
+ os=sco3.2v5
+ ;;
+ sco4)
+ os=sco3.2v4
+ ;;
+ sco3.2.[4-9]*)
+ os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
+ ;;
+ sco*v* | scout)
+ # Don't match below
+ ;;
+ sco*)
+ os=sco3.2v2
+ ;;
+ psos*)
+ os=psos
+ ;;
+ qnx*)
+ os=qnx
+ ;;
+ hiux*)
+ os=hiuxwe2
+ ;;
+ lynx*178)
+ os=lynxos178
+ ;;
+ lynx*5)
+ os=lynxos5
+ ;;
+ lynxos*)
+ # don't get caught up in next wildcard
+ ;;
+ lynx*)
+ os=lynxos
+ ;;
+ mac[0-9]*)
+ os=`echo "$os" | sed -e 's|mac|macos|'`
+ ;;
+ opened*)
+ os=openedition
+ ;;
+ os400*)
+ os=os400
+ ;;
+ sunos5*)
+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+ ;;
+ sunos6*)
+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+ ;;
+ wince*)
+ os=wince
+ ;;
+ utek*)
+ os=bsd
+ ;;
+ dynix*)
+ os=bsd
+ ;;
+ acis*)
+ os=aos
+ ;;
+ atheos*)
+ os=atheos
+ ;;
+ syllable*)
+ os=syllable
+ ;;
+ 386bsd)
+ os=bsd
+ ;;
+ ctix* | uts*)
+ os=sysv
+ ;;
+ nova*)
+ os=rtmk-nova
+ ;;
+ ns2)
+ os=nextstep2
+ ;;
+ # Preserve the version number of sinix5.
+ sinix5.*)
+ os=`echo "$os" | sed -e 's|sinix|sysv|'`
+ ;;
+ sinix*)
+ os=sysv4
+ ;;
+ tpf*)
+ os=tpf
+ ;;
+ triton*)
+ os=sysv3
+ ;;
+ oss*)
+ os=sysv3
+ ;;
+ svr4*)
+ os=sysv4
+ ;;
+ svr3)
+ os=sysv3
+ ;;
+ sysvr4)
+ os=sysv4
+ ;;
+ ose*)
+ os=ose
+ ;;
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ os=mint
+ ;;
+ dicos*)
+ os=dicos
+ ;;
+ pikeos*)
+ # Until real need of OS specific support for
+ # particular features comes up, bare metal
+ # configurations are quite functional.
+ case $cpu in
+ arm*)
+ os=eabi
+ ;;
+ *)
+ os=elf
+ ;;
+ esac
+ ;;
+ *)
+ # No normalization, but not necessarily accepted, that comes below.
+ ;;
+esac
+
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+kernel=
+case $cpu-$vendor in
+ score-*)
+ os=elf
+ ;;
+ spu-*)
+ os=elf
+ ;;
+ *-acorn)
+ os=riscix1.2
+ ;;
+ arm*-rebel)
+ kernel=linux
+ os=gnu
+ ;;
+ arm*-semi)
+ os=aout
+ ;;
+ c4x-* | tic4x-*)
+ os=coff
+ ;;
+ c8051-*)
+ os=elf
+ ;;
+ clipper-intergraph)
+ os=clix
+ ;;
+ hexagon-*)
+ os=elf
+ ;;
+ tic54x-*)
+ os=coff
+ ;;
+ tic55x-*)
+ os=coff
+ ;;
+ tic6x-*)
+ os=coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=tops20
+ ;;
+ pdp11-*)
+ os=none
+ ;;
+ *-dec | vax-*)
+ os=ultrix4.2
+ ;;
+ m68*-apollo)
+ os=domain
+ ;;
+ i386-sun)
+ os=sunos4.0.2
+ ;;
+ m68000-sun)
+ os=sunos3
+ ;;
+ m68*-cisco)
+ os=aout
+ ;;
+ mep-*)
+ os=elf
+ ;;
+ mips*-cisco)
+ os=elf
+ ;;
+ mips*-*)
+ os=elf
+ ;;
+ or32-*)
+ os=coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=sysv3
+ ;;
+ sparc-* | *-sun)
+ os=sunos4.1.1
+ ;;
+ pru-*)
+ os=elf
+ ;;
+ *-be)
+ os=beos
+ ;;
+ *-ibm)
+ os=aix
+ ;;
+ *-knuth)
+ os=mmixware
+ ;;
+ *-wec)
+ os=proelf
+ ;;
+ *-winbond)
+ os=proelf
+ ;;
+ *-oki)
+ os=proelf
+ ;;
+ *-hp)
+ os=hpux
+ ;;
+ *-hitachi)
+ os=hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=sysv
+ ;;
+ *-cbm)
+ os=amigaos
+ ;;
+ *-dg)
+ os=dgux
+ ;;
+ *-dolphin)
+ os=sysv3
+ ;;
+ m68k-ccur)
+ os=rtu
+ ;;
+ m88k-omron*)
+ os=luna
+ ;;
+ *-next)
+ os=nextstep
+ ;;
+ *-sequent)
+ os=ptx
+ ;;
+ *-crds)
+ os=unos
+ ;;
+ *-ns)
+ os=genix
+ ;;
+ i370-*)
+ os=mvs
+ ;;
+ *-gould)
+ os=sysv
+ ;;
+ *-highlevel)
+ os=bsd
+ ;;
+ *-encore)
+ os=bsd
+ ;;
+ *-sgi)
+ os=irix
+ ;;
+ *-siemens)
+ os=sysv4
+ ;;
+ *-masscomp)
+ os=rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=uxpv
+ ;;
+ *-rom68k)
+ os=coff
+ ;;
+ *-*bug)
+ os=coff
+ ;;
+ *-apple)
+ os=macos
+ ;;
+ *-atari*)
+ os=mint
+ ;;
+ *-wrs)
+ os=vxworks
+ ;;
+ *)
+ os=none
+ ;;
+esac
+
+fi
+
+# Now, validate our (potentially fixed-up) OS.
+case $os in
+ # Sometimes we do "kernel-libc", so those need to count as OSes.
+ musl* | newlib* | relibc* | uclibc*)
+ ;;
+ # Likewise for "kernel-abi"
+ eabi* | gnueabi*)
+ ;;
+ # VxWorks passes extra cpu info in the 4th filed.
+ simlinux | simwindows | spe)
+ ;;
+ # Now accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST end in a * to match a version number.
+ gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
+ | hiux* | abug | nacl* | netware* | windows* \
+ | os9* | macos* | osx* | ios* \
+ | mpw* | magic* | mmixware* | mon960* | lnews* \
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ | mirbsd* | netbsd* | dicos* | openedition* | ose* \
+ | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
+ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | udi* | lites* | ieee* | go32* | aux* | hcos* \
+ | chorusrdb* | cegcc* | glidix* | serenity* \
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | midipix* | mingw32* | mingw64* | mint* \
+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+ | interix* | uwin* | mks* | rhapsody* | darwin* \
+ | openstep* | oskit* | conix* | pw32* | nonstopux* \
+ | storm-chaos* | tops10* | tenex* | tops20* | its* \
+ | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
+ | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
+ ;;
+ # This one is extra strict with allowed versions
+ sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ ;;
+ none)
+ ;;
+ *)
+ echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# As a final step for OS-related things, validate the OS-kernel combination
+# (given a valid OS), if there is a kernel.
+case $kernel-$os in
+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
+ | linux-musl* | linux-relibc* | linux-uclibc* )
+ ;;
+ uclinux-uclibc* )
+ ;;
+ -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
+ # These are just libc implementations, not actual OSes, and thus
+ # require a kernel.
+ echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+ exit 1
+ ;;
+ kfreebsd*-gnu* | kopensolaris*-gnu*)
+ ;;
+ vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+ ;;
+ nto-qnx*)
+ ;;
+ os2-emx)
+ ;;
+ *-eabi* | *-gnueabi*)
+ ;;
+ -*)
+ # Blank kernel with real OS is always fine.
+ ;;
+ *-*)
+ echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+case $vendor in
+ unknown)
+ case $cpu-$os in
+ *-riscix*)
+ vendor=acorn
+ ;;
+ *-sunos*)
+ vendor=sun
+ ;;
+ *-cnk* | *-aix*)
+ vendor=ibm
+ ;;
+ *-beos*)
+ vendor=be
+ ;;
+ *-hpux*)
+ vendor=hp
+ ;;
+ *-mpeix*)
+ vendor=hp
+ ;;
+ *-hiux*)
+ vendor=hitachi
+ ;;
+ *-unos*)
+ vendor=crds
+ ;;
+ *-dgux*)
+ vendor=dg
+ ;;
+ *-luna*)
+ vendor=omron
+ ;;
+ *-genix*)
+ vendor=ns
+ ;;
+ *-clix*)
+ vendor=intergraph
+ ;;
+ *-mvs* | *-opened*)
+ vendor=ibm
+ ;;
+ *-os400*)
+ vendor=ibm
+ ;;
+ s390-* | s390x-*)
+ vendor=ibm
+ ;;
+ *-ptx*)
+ vendor=sequent
+ ;;
+ *-tpf*)
+ vendor=ibm
+ ;;
+ *-vxsim* | *-vxworks* | *-windiss*)
+ vendor=wrs
+ ;;
+ *-aux*)
+ vendor=apple
+ ;;
+ *-hms*)
+ vendor=hitachi
+ ;;
+ *-mpw* | *-macos*)
+ vendor=apple
+ ;;
+ *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
+ vendor=atari
+ ;;
+ *-vos*)
+ vendor=stratus
+ ;;
+ esac
+ ;;
+esac
+
+echo "$cpu-$vendor-${kernel:+$kernel-}$os"
+exit
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/configure b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/configure
new file mode 100755
index 0000000000..4fb6d6b7ce
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/configure
@@ -0,0 +1,5224 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.71.
+#
+#
+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else $as_nop
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
+as_nl='
+'
+export as_nl
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
+
+# The user is always right.
+if ${PATH_SEPARATOR+false} :; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="as_nop=:
+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else \$as_nop
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
+
+else \$as_nop
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+ if (eval "$as_required") 2>/dev/null
+then :
+ as_have_required=yes
+else $as_nop
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
+
+else $as_nop
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi
+fi
+
+
+ if test "x$CONFIG_SHELL" != x
+then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno
+then :
+ printf "%s\n" "$0: This script requires a shell more modern than all"
+ printf "%s\n" "$0: the shells that I found on your system."
+ if test ${ZSH_VERSION+y} ; then
+ printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+printf "%s\n" X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else $as_nop
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else $as_nop
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ printf "%s\n" "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+printf "%s\n" X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME=''
+PACKAGE_TARNAME=''
+PACKAGE_VERSION=''
+PACKAGE_STRING=''
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+ac_unique_file="hbf.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stddef.h>
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
+#endif
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+# include <string.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_header_c_list=
+ac_func_c_list=
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+RM
+no_strdup
+XX_CFLAGS
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+runstatedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_kpathsea_include
+with_kpathsea_lib
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir runstatedir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+printf "%s\n" X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+ --target=TARGET configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+ cat <<\_ACEOF
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-kpathsea-include=DIR
+ location of the kpathsea include dir
+ --with-kpathsea-lib=DIR
+ location of the kpathsea lib dir
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for configure.gnu first; this name is used for a wrapper for
+ # Metaconfig's "Configure" on case-insensitive file systems.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+configure
+generated by GNU Autoconf 2.71
+
+Copyright (C) 2021 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest.beam
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext
+then :
+ ac_retval=0
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }
+then :
+ ac_retval=0
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ eval "$3=yes"
+else $as_nop
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below. */
+
+#include <limits.h>
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main (void)
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ eval "$3=yes"
+else $as_nop
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+ac_configure_args_raw=
+for ac_arg
+do
+ case $ac_arg in
+ *\'*)
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+ *$as_nl*)
+ ac_safe_unquote= ;;
+ *)
+ ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab.
+ ac_unsafe_a="$ac_unsafe_z#~"
+ ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+ ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
+
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.71. Invocation command line was
+
+ $ $0$ac_configure_args_raw
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ printf "%s\n" "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Sanitize IFS.
+ IFS=" "" $as_nl"
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ printf "%s\n" "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ printf "%s\n" "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ printf "%s\n" "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ printf "%s\n" "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ printf "%s\n" "$as_me: caught signal $ac_signal"
+ printf "%s\n" "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+printf "%s\n" "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
+
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
+
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
+
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
+
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
+
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+if test -n "$CONFIG_SITE"; then
+ ac_site_files="$CONFIG_SITE"
+elif test "x$prefix" != xNONE; then
+ ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
+else
+ ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+fi
+
+for ac_site_file in $ac_site_files
+do
+ case $ac_site_file in #(
+ */*) :
+ ;; #(
+ *) :
+ ac_site_file=./$ac_site_file ;;
+esac
+ if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+ Do not test the value of __STDC__, because some compilers set it to 0
+ while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
+
+#include <stddef.h>
+#include <stdarg.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */
+struct buf { int x; };
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not \xHH hex character constants.
+ These do not provoke an error unfortunately, instead are silently treated
+ as an "x". The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously \x00 != x always comes out true, for an
+ array size at least. It is necessary to write \x00 == 0 to get something
+ that is true only with -std. */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+ int, int);'
+
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
+
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+// Does the compiler advertise C99 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
+
+#include <stdbool.h>
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ #error "your preprocessor is broken"
+#endif
+#if BIG_OK
+#else
+ #error "your preprocessor is broken"
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str = "";
+ int number = 0;
+ float fnumber = 0;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case '\''s'\'': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case '\''d'\'': // int
+ number = va_arg (args_copy, int);
+ break;
+ case '\''f'\'': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+
+ return *str && number && fnumber;
+}
+'
+
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
+ // Check bool.
+ _Bool success = false;
+ success |= (argc != 0);
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[0] = argv[0][0];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+ || dynamic_array[ni.number - 1] != 543);
+'
+
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+// Does the compiler advertise C11 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+ int_alignment = _Alignof (int),
+ int_array_alignment = _Alignof (int[100]),
+ char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+ int x;
+ _Static_assert (sizeof (int) <= sizeof (long int),
+ "_Static_assert does not work in struct");
+ long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+ union {
+ struct { int i; int j; };
+ struct { int k; long int l; } w;
+ };
+ int m;
+} v1;
+'
+
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+ _Static_assert ((offsetof (struct anonymous, i)
+ == offsetof (struct anonymous, w.k)),
+ "Anonymous union alignment botch");
+ v1.i = 2;
+ v1.w.k = 5;
+ ok |= v1.i != 5;
+'
+
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ ${ac_c_conftest_c11_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+as_fn_append ac_func_c_list " vprintf HAVE_VPRINTF"
+
+# Auxiliary files required by this configure script.
+ac_aux_files="install-sh config.guess config.sub"
+
+# Locations in which to look for auxiliary files.
+ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.."
+
+# Search for a directory containing all of the required auxiliary files,
+# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates.
+# If we don't find one directory that contains all the files we need,
+# we report the set of missing files from the *first* directory in
+# $ac_aux_dir_candidates and give up.
+ac_missing_aux_files=""
+ac_first_candidate=:
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in $ac_aux_dir_candidates
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ as_found=:
+
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5
+ ac_aux_dir_found=yes
+ ac_install_sh=
+ for ac_aux in $ac_aux_files
+ do
+ # As a special case, if "install-sh" is required, that requirement
+ # can be satisfied by any of "install-sh", "install.sh", or "shtool",
+ # and $ac_install_sh is set appropriately for whichever one is found.
+ if test x"$ac_aux" = x"install-sh"
+ then
+ if test -f "${as_dir}install-sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5
+ ac_install_sh="${as_dir}install-sh -c"
+ elif test -f "${as_dir}install.sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5
+ ac_install_sh="${as_dir}install.sh -c"
+ elif test -f "${as_dir}shtool"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5
+ ac_install_sh="${as_dir}shtool install -c"
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} install-sh"
+ else
+ break
+ fi
+ fi
+ else
+ if test -f "${as_dir}${ac_aux}"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}"
+ else
+ break
+ fi
+ fi
+ fi
+ done
+ if test "$ac_aux_dir_found" = yes; then
+ ac_aux_dir="$as_dir"
+ break
+ fi
+ ac_first_candidate=false
+
+ as_found=false
+done
+IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+fi
+
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+if test -f "${ac_aux_dir}config.guess"; then
+ ac_config_guess="$SHELL ${ac_aux_dir}config.guess"
+fi
+if test -f "${ac_aux_dir}config.sub"; then
+ ac_config_sub="$SHELL ${ac_aux_dir}config.sub"
+fi
+if test -f "$ac_aux_dir/configure"; then
+ ac_configure="$SHELL ${ac_aux_dir}configure"
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+ and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+ # Make sure we can run config.sub.
+$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+printf %s "checking build system type... " >&6; }
+if test ${ac_cv_build+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+printf "%s\n" "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+printf %s "checking host system type... " >&6; }
+if test ${ac_cv_host+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+printf "%s\n" "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+printf %s "checking target system type... " >&6; }
+if test ${ac_cv_target+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$target_alias" = x; then
+ ac_cv_target=$ac_cv_host
+else
+ ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+printf "%s\n" "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+fi
+
+
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion -version; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+printf %s "checking whether the C compiler works... " >&6; }
+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else $as_nop
+ ac_file=''
+fi
+if test -z "$ac_file"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+printf %s "checking for C compiler default output file name... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf "%s\n" "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+printf %s "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf "%s\n" "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main (void)
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+printf %s "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf "%s\n" "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+printf %s "checking for suffix of object files... " >&6; }
+if test ${ac_cv_objext+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf "%s\n" "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_compiler_gnu=yes
+else $as_nop
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+y}
+ac_save_CFLAGS=$CFLAGS
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_g=yes
+else $as_nop
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else $as_nop
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c11=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c11_program
+_ACEOF
+for ac_arg in '' -std=gnu11
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c11=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c11" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
+
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c11" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+ CC="$CC $ac_cv_prog_cc_c11"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+ ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c99_program
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
+
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c99" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+ CC="$CC $ac_cv_prog_cc_c99"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+ ac_prog_cc_stdc=c99
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c89_program
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
+
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c89" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+ CC="$CC $ac_cv_prog_cc_c89"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+ ac_prog_cc_stdc=c89
+fi
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+# Check whether --with-kpathsea-include was given.
+if test ${with_kpathsea_include+y}
+then :
+ withval=$with_kpathsea_include;
+ if test x$withval = xyes; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Usage is: --with-kpathsea-include=includedir" >&5
+printf "%s\n" "$as_me: WARNING: Usage is: --with-kpathsea-include=includedir" >&2;}
+ else
+ if test x$withval = xno; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Usage is: --with-kpathsea-include=includedir" >&5
+printf "%s\n" "$as_me: WARNING: Usage is: --with-kpathsea-include=includedir" >&2;}
+ else
+ kpathsea_include=$withval
+ fi
+ fi
+
+fi
+
+
+
+
+# Check whether --with-kpathsea-lib was given.
+if test ${with_kpathsea_lib+y}
+then :
+ withval=$with_kpathsea_lib;
+ if test x$withval = xyes; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Usage is: --with-kpathsea-lib=libdir" >&5
+printf "%s\n" "$as_me: WARNING: Usage is: --with-kpathsea-lib=libdir" >&2;}
+ else
+ if test x$withval = xno; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Usage is: --with-kpathsea-lib=libdir" >&5
+printf "%s\n" "$as_me: WARNING: Usage is: --with-kpathsea-lib=libdir" >&2;}
+ else
+ kpathsea_lib=$withval
+ fi
+ fi
+
+fi
+
+
+
+if test -n "$kpathsea_include" -o -n "$kpathsea_lib"; then
+ LIBS="$LIBS -L$kpathsea_lib"
+ CPPFLAGS="$CPPFLAGS -I$kpathsea_include -I$srcdir"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kpse_set_program_name in -lkpathsea" >&5
+printf %s "checking for kpse_set_program_name in -lkpathsea... " >&6; }
+if test ${ac_cv_lib_kpathsea_kpse_set_program_name+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkpathsea $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+char kpse_set_program_name ();
+int
+main (void)
+{
+return kpse_set_program_name ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_kpathsea_kpse_set_program_name=yes
+else $as_nop
+ ac_cv_lib_kpathsea_kpse_set_program_name=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kpathsea_kpse_set_program_name" >&5
+printf "%s\n" "$ac_cv_lib_kpathsea_kpse_set_program_name" >&6; }
+if test "x$ac_cv_lib_kpathsea_kpse_set_program_name" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBKPATHSEA 1" >>confdefs.h
+
+ LIBS="-lkpathsea $LIBS"
+
+else $as_nop
+ printf "%s\n" "#define OLD_KPATHSEA 1" >>confdefs.h
+
+fi
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kpse_init_prog in -lkpathsea" >&5
+printf %s "checking for kpse_init_prog in -lkpathsea... " >&6; }
+if test ${ac_cv_lib_kpathsea_kpse_init_prog+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkpathsea $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+char kpse_init_prog ();
+int
+main (void)
+{
+return kpse_init_prog ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_kpathsea_kpse_init_prog=yes
+else $as_nop
+ ac_cv_lib_kpathsea_kpse_init_prog=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kpathsea_kpse_init_prog" >&5
+printf "%s\n" "$ac_cv_lib_kpathsea_kpse_init_prog" >&6; }
+if test "x$ac_cv_lib_kpathsea_kpse_init_prog" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBKPATHSEA 1" >>confdefs.h
+
+ LIBS="-lkpathsea $LIBS"
+
+else $as_nop
+
+ as_fn_error $? "Can't find kpathsea library! Use --with-kpathsea-lib option." "$LINENO" 5
+fi
+
+
+ ac_header= ac_cache=
+for ac_item in $ac_header_c_list
+do
+ if test $ac_cache; then
+ ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+ if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+ printf "%s\n" "#define $ac_item 1" >> confdefs.h
+ fi
+ ac_header= ac_cache=
+ elif test $ac_header; then
+ ac_cache=$ac_item
+ else
+ ac_header=$ac_item
+ fi
+done
+
+
+
+
+
+
+
+
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
+
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "kpathsea/kpathsea.h" "ac_cv_header_kpathsea_kpathsea_h" "$ac_includes_default"
+if test "x$ac_cv_header_kpathsea_kpathsea_h" = xyes
+then :
+
+else $as_nop
+ printf "%s\n" "#define VERY_OLD_KPATHSEA 1" >>confdefs.h
+
+fi
+
+
+ ac_fn_c_check_header_compile "$LINENO" "kpathsea/c-auto.h" "ac_cv_header_kpathsea_c_auto_h" "$ac_includes_default"
+if test "x$ac_cv_header_kpathsea_c_auto_h" = xyes
+then :
+
+else $as_nop
+
+ as_fn_error $? "Can't find kpathsea include files! Use --with-kpathsea-include option." "$LINENO" 5
+fi
+
+else
+ CPPFLAGS="$CPPFLAGS -I$srcdir"
+fi
+
+
+if test "x$CC" = xgcc; then
+ XX_CFLAGS="-Wall"
+else
+ case "$host" in
+ alpha-dec-osf*)
+ XX_CFLAGS="-std1 -O2 -g3"
+ ;;
+ *)
+ XX_CFLAGS=
+ ;;
+ esac
+fi
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+printf %s "checking for an ANSI C-conforming const... " >&6; }
+if test ${ac_cv_c_const+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+#ifndef __cplusplus
+ /* Ultrix mips cc rejects this sort of thing. */
+ typedef int charset[2];
+ const charset cs = { 0, 0 };
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *pcpcc;
+ char **ppc;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+ /* IBM XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+ pcpcc = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+ ++pcpcc;
+ ppc = (char**) pcpcc;
+ pcpcc = (char const *const *) ppc;
+ { /* SCO 3.2v4 cc rejects this sort of thing. */
+ char tx;
+ char *t = &tx;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+ if (s) return 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+ }
+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+ }
+ { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; } bx;
+ struct s *b = &bx; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+ if (!foo) return 0;
+ }
+ return !cs[0] && !zero.x;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_c_const=yes
+else $as_nop
+ ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+printf "%s\n" "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+printf "%s\n" "#define const /**/" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
+printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; }
+if test ${ac_cv_struct_tm+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <time.h>
+
+int
+main (void)
+{
+struct tm tm;
+ int *p = &tm.tm_sec;
+ return !p;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_struct_tm=time.h
+else $as_nop
+ ac_cv_struct_tm=sys/time.h
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
+printf "%s\n" "$ac_cv_struct_tm" >&6; }
+if test $ac_cv_struct_tm = sys/time.h; then
+
+printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h
+
+fi
+
+
+
+ac_func=
+for ac_item in $ac_func_c_list
+do
+ if test $ac_func; then
+ ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func
+ if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then
+ echo "#define $ac_item 1" >> confdefs.h
+ fi
+ ac_func=
+ else
+ ac_func=$ac_item
+ fi
+done
+
+if test "x$ac_cv_func_vprintf" = xno
+then :
+ ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
+if test "x$ac_cv_func__doprnt" = xyes
+then :
+
+printf "%s\n" "#define HAVE_DOPRNT 1" >>confdefs.h
+
+fi
+
+fi
+ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
+if test "x$ac_cv_func_strdup" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strstr" "ac_cv_func_strstr"
+if test "x$ac_cv_func_strstr" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRSTR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol"
+if test "x$ac_cv_func_strtol" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul"
+if test "x$ac_cv_func_strtoul" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOUL 1" >>confdefs.h
+
+fi
+
+
+if test "x$ac_cv_func_strdup" = xno; then
+ no_strdup=-DNO_STRDUP
+fi
+
+
+# Extract the first word of "rm", so it can be a program name with args.
+set dummy rm; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_RM+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$RM"; then
+ ac_cv_prog_RM="$RM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RM="rm"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RM=$ac_cv_prog_RM
+if test -n "$RM"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
+printf "%s\n" "$RM" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+
+ # Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+printf %s "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test ${ac_cv_path_install+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ # Account for fact that we put trailing slashes in our PATH walk.
+case $as_dir in #((
+ ./ | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test ${ac_cv_path_install+y}; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+printf "%s\n" "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+if test -z "$kpathsea_include" -a -z "$kpathsea_lib"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
+
+ hbf2gf will be compiled without file search library support!
+ For kpathsea support use the --with-kpathsea-lib and
+ --with-kpathsea-include options.
+ " >&5
+printf "%s\n" "$as_me: WARNING:
+
+ hbf2gf will be compiled without file search library support!
+ For kpathsea support use the --with-kpathsea-lib and
+ --with-kpathsea-include options.
+ " >&2;}
+fi
+
+ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else $as_nop
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
+as_nl='
+'
+export as_nl
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
+
+# The user is always right.
+if ${PATH_SEPARATOR+false} :; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ printf "%s\n" "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else $as_nop
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else $as_nop
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+printf "%s\n" X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+printf "%s\n" X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.71. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to the package provider."
+
+_ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config='$ac_cs_config_escaped'
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.71,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2021 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ printf "%s\n" "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ printf "%s\n" "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ printf "%s\n" "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ printf "%s\n" "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES "
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`printf "%s\n" "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+printf "%s\n" X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+
+ esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/configure.ac b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/configure.ac
new file mode 100644
index 0000000000..2fb3878516
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/configure.ac
@@ -0,0 +1,128 @@
+dnl This file is part of the CJK package ver. 4.8.5
+
+dnl Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program in doc/COPYING; if not, write to the Free
+dnl Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+dnl MA 02110-1301 USA
+
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT
+AC_CONFIG_SRCDIR([hbf.h])
+
+
+dnl check host
+AC_CANONICAL_TARGET([])
+
+
+dnl Checks for programs.
+AC_PROG_CC
+
+
+AC_ARG_WITH(kpathsea-include,
+ [ --with-kpathsea-include=DIR
+ location of the kpathsea include dir],[
+ if test x$withval = xyes; then
+ AC_MSG_WARN(Usage is: --with-kpathsea-include=includedir)
+ else
+ if test x$withval = xno; then
+ AC_MSG_WARN(Usage is: --with-kpathsea-include=includedir)
+ else
+ kpathsea_include=$withval
+ fi
+ fi
+])
+
+
+dnl Checks for libraries.
+AC_ARG_WITH(kpathsea-lib,
+ [ --with-kpathsea-lib=DIR
+ location of the kpathsea lib dir],[
+ if test x$withval = xyes; then
+ AC_MSG_WARN(Usage is: --with-kpathsea-lib=libdir)
+ else
+ if test x$withval = xno; then
+ AC_MSG_WARN(Usage is: --with-kpathsea-lib=libdir)
+ else
+ kpathsea_lib=$withval
+ fi
+ fi
+])
+
+
+if test -n "$kpathsea_include" -o -n "$kpathsea_lib"; then
+ LIBS="$LIBS -L$kpathsea_lib"
+ CPPFLAGS="$CPPFLAGS -I$kpathsea_include -I$srcdir"
+
+ dnl the function kpse_set_program_name() is available since kpathsea 3.2
+ AC_CHECK_LIB(kpathsea, kpse_set_program_name, , AC_DEFINE(OLD_KPATHSEA))
+
+ AC_CHECK_LIB(kpathsea, kpse_init_prog, ,[
+ AC_MSG_ERROR([Can't find kpathsea library! Use --with-kpathsea-lib option.])])
+
+ dnl the header file kpathsea.h doesn't exist in kpathsea 2.6 and before
+ AC_CHECK_HEADER(kpathsea/kpathsea.h, , AC_DEFINE(VERY_OLD_KPATHSEA))
+
+ AC_CHECK_HEADER(kpathsea/c-auto.h, ,[
+ AC_MSG_ERROR([Can't find kpathsea include files! Use --with-kpathsea-include option.])])
+else
+ CPPFLAGS="$CPPFLAGS -I$srcdir"
+fi
+
+
+dnl Get compiler flags right.
+if test "x$CC" = xgcc; then
+ XX_CFLAGS="-Wall"
+else
+ case "$host" in
+ alpha-dec-osf*)
+ XX_CFLAGS="-std1 -O2 -g3"
+ ;;
+ *)
+ XX_CFLAGS=
+ ;;
+ esac
+fi
+AC_SUBST(XX_CFLAGS)
+
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_STRUCT_TM
+
+
+dnl Checks for library functions.
+AC_FUNC_VPRINTF
+AC_CHECK_FUNCS(strdup strstr strtol strtoul)
+
+dnl we need this for hbf.c
+if test "x$ac_cv_func_strdup" = xno; then
+ no_strdup=-DNO_STRDUP
+fi
+AC_SUBST(no_strdup)
+
+AC_CHECK_PROG(RM, rm, rm)
+AC_PROG_INSTALL
+
+if test -z "$kpathsea_include" -a -z "$kpathsea_lib"; then
+ AC_MSG_WARN([
+
+ hbf2gf will be compiled without file search library support!
+ For kpathsea support use the --with-kpathsea-lib and
+ --with-kpathsea-include options.
+ ])
+fi
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/dvidrv.btm b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/dvidrv.btm
new file mode 100644
index 0000000000..9b43c09100
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/dvidrv.btm
@@ -0,0 +1,352 @@
+setdos /y1
+::
+:: Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+::
+:: 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 in doc/COPYING; if not, write to the Free
+:: Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+:: MA 02110-1301 USA
+::
+::
+:: This is dvidrv.btm, a batch file for 4DOS/4OS2 written by
+:: Werner Lemberg <wl@gnu.org> partially based on the
+:: dvidrv.btm file of the 4allTeX package written by Phons Bloemen.
+::
+:: It is a replacement for dvidrv.exe of the emTeX package.
+::
+:: Additional features: support of ps2pk
+:: support of ttf2pk
+:: support of hbf2gf for HBFs (Hanzi bitmap fonts)
+::
+:: Only quadratic printer modes are supported for ttf2pk!
+::
+:: All needed binaries will be searched in the path.
+
+iff %# lt 2 then
+ echo ``
+ echo Usage: %0 dvi-driver dvi-file [parameters]
+ quit
+endiff
+
+setlocal
+ :: we set a default value only if the corresponding environment variable
+ :: is empty. The `=' must follow the variable name immediately.
+ alias set_def `iff "%[%@word["=",0,%1]]" eq "" then %+ set %& %+ endiff`
+
+ :: =========================================
+ :: ======== User defined variables. ========
+ :: =========================================
+ ::
+ :: Can be overridden in the environment (except %ps2pk, %ttf2pk, %hbf2gf,
+ :: %pre_dpi, and %post_dpi).
+
+ :: Comment out the programs you don't want to use.
+ set ps2pk=yes
+ set ttf2pk=yes
+ set hbf2gf=yes
+
+ :: where the PK files will be installed created by ps2pk, ttf2pk, and
+ :: hbf2gf.
+ :: dvidrv.btm adds `\modeless\XXXdpi' to this string (see below for the
+ :: exact string).
+ set_def pkdir=%emtexdir\pixel\tmp\pk
+
+ :: where the TrueType fonts reside.
+ set_def ttfonts=%emtexdir\fonts\truetype
+ :: where auxiliary files of ttf2pk are located.
+ set_def ttfcfg=%emtexdir\ttf2pk
+
+ :: where the HBF files reside.
+ set_def hbfonts=%emtexdir\fonts\hbf
+ :: where the hbf2gf config files are.
+ set_def hbfcfg=%emtexdir\hbf2gf
+
+ :: the dpi-subdirectory has various forms; the most common are XXXdpi and
+ :: dpiXXX, e.g. 300dpi and dpi300. Here we define two variables which
+ :: control this behaviour.
+ :: [dpiXXX is used for TDS compatible TeX trees.]
+ set pre_dpi=dpi
+ set post_dpi=
+
+ :: ================================================
+ :: ======== End of user defined variables. ========
+ :: ================================================
+
+ :: the base name for log files etc.
+ set basename=%@name[%1]
+
+ :: do we run dvips?
+ iff "%basename" ne "dvips" then
+ goto nodvips1
+ endiff
+
+ :: we delete dvips.mfj if it exists.
+ del dvips.mfj >& nul
+
+ :: now we run dvips with all supplied parameters.
+ %&
+
+ :: do we have to generate fonts?
+ iff exist dvips.mfj then
+ goto generate_fonts
+ endiff
+
+ :: else all is done.
+ goto end
+
+
+:nodvips1
+ :: here we call the dvi driver with all supplied parameters.
+ %& -pj:%basename.mfj
+
+ :: do we have to generate fonts?
+ iff errorlevel 8 then
+ goto generate_fonts
+ endiff
+
+ :: else all is done.
+ goto end
+
+
+:generate_fonts
+ gosub call_mfjob
+
+ :: do we run dvips?
+ iff "%basename" ne "dvips" then
+ goto nodvips2
+ endiff
+
+ :: we now call dvips a second time
+ %&
+
+ :: since no fonts will be generated in the second run we remove dvips.mfj
+ del dvips.mfj >& nul
+
+ goto end
+
+
+:nodvips2
+ :: we call the dvi driver a second time (without font generation).
+ %& -pj -fm
+
+ del %basename.mfj >& nul
+
+ goto end
+
+
+:: this is the main subroutine which calls mfjob and then parses the mfjob
+:: file for fonts which can be handled by ps2pk, ttf2pk, or hbf2gf.
+:call_mfjob
+ :: this alias prints a message on the screen and writes it into the logfile.
+ alias echolog=`echo %& | tee /a %basename.mlg`
+
+ echo ======== DVIDRV.BTM logfile ======== > %basename.mlg
+ echo Commandline: dvidrv.btm %& >> %basename.mlg
+ echo `` >> %basename.mlg
+ echo basename=%basename >> %basename.mlg
+ echo emtexdir=%emtexdir >> %basename.mlg
+ echo dvidrvfonts=%dvidrvfonts >> %basename.mlg
+ echo mfinput=%mfinput >> %basename.mlg
+ echo mfjobopt=%mfjobopt >> %basename.mlg
+ echo textfm=%textfm >> %basename.mlg
+ echo psfonts=%psfonts >> %basename.mlg
+ echo ttfonts=%ttfonts >> %basename.mlg
+ echo ttfcfg=%ttfcfg >> %basename.mlg
+ echo hbfonts=%hbfonts >> %basename.mlg
+ echo hbfcfg=%hbfcfg >> %basename.mlg
+ echo `` >> %basename.mlg
+
+ iff "%@search[mfjob]" eq "" then
+ echolog MFJOB not found in the path.
+ echolog Can't generate PK fonts from METAFONT automatically.
+ echo ``
+ quit
+ endiff
+
+ :: now we call mfjob.
+ echolog mfjob %mfjobopt -g%basename.mfl %basename.mfj
+ mfjob %mfjobopt -g%basename.mfl %basename.mfj
+ iff %? gt 0 then
+ echolog ``
+ echolog Something went wrong while running METAFONT.
+ echolog Look into the log files...
+ echolog ``
+ endiff
+
+ :: after running mfjob we scan the mfjob input file for fonts which can
+ :: be handled by ps2pk, ttf2pk or hbf2gf.
+ set lnnr=0
+ set totlines=%@lines[%basename.mfj]
+
+ do while %lnnr le %totlines
+ :: input a line.
+ set scratch=%@line[%basename.mfj,%lnnr]
+ set lnnr=%@inc[%lnnr]
+
+ :: get resolutions (METAFONT mode will be ignored).
+ :: example:
+ :: mode=lqlores[180 180];
+ iff %@index[%scratch,mode] ge 0 then
+ set temp=%@word["[]",1,%scratch]
+ set xdpi=%@word[0,%temp]
+ set ydpi=%@word[1,%temp]
+ endiff
+
+ :: get fontname and magnification; we then compute the font resolutions
+ :: (rounded to the nearest integer---there is no necessity to adjust
+ :: these values further because of possible rounding errors since both
+ :: emTeX's dvi drivers and dvips check neighbored values too).
+ :: example:
+ :: {font=cmr10; mag=0.5;}
+ iff %@index[%scratch,{font] ge 0 then
+ set testfont=%@word["=;",1,%scratch]
+ set temp=%@word["=;",3,%scratch]
+ :: we use highest arithmetic precision for these calculations.
+ :: Additionally we write 1/2 instead of 0.5 to avoid problems with
+ :: countries which use a comma instead of a colon as the decimal
+ :: separator.
+ set fontresx=%@int[%@eval[%xdpi*%temp+1/2=8]]
+ set fontresy=%@int[%@eval[%ydpi*%temp+1/2=8]]
+ set pksubdir=modeless\%[pre_dpi]%[fontresx]%post_dpi
+
+ set success=0
+
+ :: check whether %testfont leads to a PS font (we call ps2pkmfj).
+ iff %success == 0 .and. "%ps2pk" ne "" then
+ gosub call_ps2pk
+ endiff
+
+ :: check whether %testfont leads to a TrueType font.
+ iff %success == 0 .and. "%ttf2pk" ne "" then
+ gosub call_ttf2pk
+ endiff
+
+ :: check whether %testfont leads to a HBF file.
+ iff %success == 0 .and. "%hbf2gf" ne "" then
+ gosub call_hbf2gf
+ endiff
+ endiff
+ enddo
+
+ iff exist %basename.mfp then
+ echo `` >> %basename.mlg
+ echo `` >> %basename.mlg
+ echo ======== PS2PK logfile ======== >> %basename.mlg
+ echo `` >> %basename.mlg
+ type %basename.mfp >> %basename.mlg
+ echo `` >> %basename.mlg
+ del %basename.mfp >& nul
+ endiff
+
+ iff exist %basename.mfl then
+ echo `` >> %basename.mlg
+ type %basename.mfl >> %basename.mlg
+ echo `` >> %basename.mlg
+ del %basename.mfl >& nul
+ endiff
+
+ return
+
+
+:call_ttf2pk
+ iff "%@search[ttf2pk]" eq "" then
+ echolog TTF2PK not found in the path.
+ echolog Can't generate PK fonts from TrueType fonts automatically.
+ echo ``
+ quit
+ endiff
+
+ echolog ttf2pk -q -n %testfont %fontresx
+ ttf2pk -q -n %testfont %fontresx
+
+ iff %? == 0 then
+ echolog Font %pkdir\%pksubdir\%testfont.pk generated.
+ mkdir /s %pkdir\%pksubdir >& nul
+ move %testfont.pk %pkdir\%pksubdir >& nul
+ set success=1
+ elseiff %? == 2 then
+ echolog (%lnnr/%totlines): Font %testfont is no TrueType font.
+ set success=0
+ else
+ echolog Error running TTF2PK for font %testfont!
+ endiff
+
+ return
+
+
+:call_hbf2gf
+ iff "%@search[hbf2gf]" eq "" then
+ echolog HBF2GF not found in the path.
+ echolog Can't generate PK fonts from HBF files automatically.
+ echo ``
+ quit
+ endiff
+
+ echolog hbf2gf -q -p -n %testfont %fontresx %fontresy
+ hbf2gf -q -p -n %testfont %fontresx %fontresy
+
+ iff %? == 0 then
+ echolog Font %pkdir\%pksubdir\%testfont.pk generated.
+ mkdir /s %pkdir\%pksubdir >& nul
+ gftopk %testfont.gf %testfont.pk
+ move %testfont.pk %pkdir\%pksubdir >& nul
+ del %testfont.gf >& nul
+ set success=1
+ elseiff %? == 2 then
+ echolog (%lnnr/%totlines): Font %testfont is no HBF.
+ set success=0
+ else
+ echolog Error running HBF2GF for font %testfont!
+ endiff
+
+ return
+
+
+:call_ps2pk
+ iff not exist %pkdir\%pksubdir\%testfont.pk then
+ iff "%@search[ps2pkmfj]" eq "" .or. "%@search[ps2pk]" eq "" then
+ echolog PS2PKMFJ and/or PS2PK not found in the path.
+ echolog Can't generate PK fonts from PostScript fonts automatically.
+ echo ``
+ quit
+ endiff
+
+ echolog ps2pkmfj -X%fontresx -Y%fontresy %testfont %testfont.pk
+ ps2pkmfj -X%fontresx -Y%fontresy %testfont %testfont.pk | input %%pspkline
+
+ iff errorlevel != 1 then
+ %pspkline >> %basename.mfp
+ iff %? == 0 then
+ echolog Font %pkdir\%pksubdir\%testfont.pk generated.
+ mkdir /s %pkdir\%pksubdir >& nul
+ move %testfont.pk %pkdir\%pksubdir >& nul
+ success=1
+ else
+ echolog Error running PS2PK for font %testfont!
+ endiff
+ else
+ echolog (%lnnr/%totlines): Font %testfont is no PS font.
+ success=0
+ endiff
+ else
+ echolog Font %pkdir\%pksubdir\%testfont.pk already exists.
+ endiff
+
+ return
+
+
+:end
+
+endlocal
+
+:: ==== end of dvidrv.btm ====
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emdir.c b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emdir.c
new file mode 100644
index 0000000000..4e759c83eb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emdir.c
@@ -0,0 +1,109 @@
+/* emdir.c -- Written by Eberhard Mattes, donated to the public domain */
+
+#include "emdir.h"
+
+#ifdef OS2
+
+#undef HPS
+#define INCL_DOSFILEMGR
+#include <os2.h>
+#include <string.h>
+
+#define FHDIR(b) (*(HDIR *)(b)->reserved)
+
+static void fconv (struct ll_findbuffer *dst, const FILEFINDBUF *src)
+{
+ dst->attr = src->attrFile;
+ dst->time = *(unsigned *)&src->ftimeLastWrite;
+ dst->date = *(unsigned *)&src->fdateLastWrite;
+ dst->size = src->cbFile;
+ strcpy (dst->name, src->achName);
+}
+
+
+int ll_findfirst (const char *path, int attr, struct ll_findbuffer *buffer)
+{
+ USHORT rc;
+ ULONG count;
+ HDIR hdir;
+ FILEFINDBUF ffbuf;
+
+ hdir = HDIR_CREATE;
+ count = 1;
+ rc = DosFindFirst ((PSZ)path, &hdir, attr, &ffbuf, sizeof (ffbuf),
+ &count, 0L);
+ if (rc != 0 || count != 1)
+ return 0;
+ FHDIR (buffer) = hdir;
+ fconv (buffer, &ffbuf);
+ return 1;
+}
+
+
+int ll_findnext (struct ll_findbuffer *buffer)
+{
+ USHORT rc;
+ ULONG count;
+ HDIR hdir;
+ FILEFINDBUF ffbuf;
+
+ hdir = FHDIR (buffer);
+ count = 1;
+ rc = DosFindNext (hdir, &ffbuf, sizeof (ffbuf), &count);
+ if (rc != 0 || count != 1)
+ {
+ DosFindClose (hdir);
+ return 0;
+ }
+ fconv (buffer, &ffbuf);
+ return 1;
+}
+
+
+#elif defined(DJGPP)
+
+/* djgpp support by Hartmut Schirmer (hsc@techfak.uni-kiel.de), May 30, 1997 */
+
+#include <dos.h>
+#include <dir.h>
+
+static int ll_attr = 0;
+int ll_findnext (struct ll_findbuffer *buffer)
+{
+ int res;
+ do {
+ res = _dos_findnext ((struct find_t *)buffer);
+ if (res != 0) return 0;
+ } while ( (buffer->attrib&ll_attr) == 0);
+ return 1;
+}
+
+int ll_findfirst (const char *path, int attr, struct ll_findbuffer *buffer)
+{
+ int res;
+ ll_attr = attr;
+ res = _dos_findfirst((char *)path, attr, (struct find_t *)buffer);
+ if (res != 0) return 0;
+ if ( (buffer->attrib&ll_attr) == 0)
+ return ll_findnext(buffer);
+ return 1;
+}
+
+#elif !defined(__EMX__) /* if not OS2 nor DJGPP nor __EMX__ defined */
+
+/* Not tested */
+
+#include <dos.h>
+
+int ll_findfirst (const char *path, int attr, struct ll_findbuffer *buffer)
+{
+ return _dos_findfirst (path, attr, (struct find_t *)buffer) == 0;
+}
+
+
+int ll_findnext (struct ll_findbuffer *buffer)
+{
+ return _dos_findnext ((struct find_t *)buffer) == 0;
+}
+
+#endif
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emdir.h b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emdir.h
new file mode 100644
index 0000000000..0606d476ab
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emdir.h
@@ -0,0 +1,25 @@
+/* emdir.h -- Written by Eberhard Mattes, donated to the public domain */
+
+#if defined(DJGPP)
+
+/* djgpp support by Hartmut Schirmer (hsc@techfak.uni-kiel.de), May 30, 1997 */
+#include <dos.h>
+#define ll_findbuffer find_t
+#define attr attrib
+
+#else
+
+struct ll_findbuffer
+{
+ char reserved[21];
+ unsigned char attr;
+ unsigned time;
+ unsigned date;
+ long size;
+ char name[257];
+};
+
+#endif
+
+int ll_findfirst (const char *path, int attr, struct ll_findbuffer *buffer);
+int ll_findnext (struct ll_findbuffer *buffer);
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emtexdir.c b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emtexdir.c
new file mode 100644
index 0000000000..9a35570adb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emtexdir.c
@@ -0,0 +1,405 @@
+/* emtexdir.c -- written by Eberhard Mattes, donated to the public domain */
+
+#if defined (__EMX__)
+#include <emx/syscalls.h>
+#else
+#include "emdir.h"
+#endif
+#if defined(DJGPP) || defined(GO32)
+#include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <io.h>
+#include "emtexdir.h"
+
+#define FALSE 0
+#define TRUE 1
+
+void (*emtex_dir_find_callback)(const char *name, int ok) = NULL;
+
+static int setup_add (struct emtex_dir *dst, const char *path)
+{
+ char *p;
+
+ if (dst->used >= dst->alloc)
+ {
+ dst->alloc += 8;
+ dst->list = realloc (dst->list, dst->alloc * sizeof (*dst->list));
+ if (dst->list == NULL)
+ return (FALSE);
+ }
+ p = strdup (path);
+ if (p == NULL)
+ return (FALSE);
+ dst->list[dst->used++] = p;
+ return (TRUE);
+}
+
+
+static int setup_subdir (struct emtex_dir *dst, char *path, size_t add,
+ unsigned flags, int recurse)
+{
+ int ok, i, end, len;
+#if defined (__EMX__)
+ struct _find find;
+#else
+ struct ll_findbuffer find;
+#endif
+
+ i = dst->used;
+ strcpy (path + add, "*.*");
+#if defined (__EMX__)
+ ok = __findfirst (path, 0x10, &find) == 0;
+#else
+ ok = ll_findfirst (path, 0x10, &find);
+#endif
+ while (ok)
+ {
+ if ((find.attr & 0x10)
+ && !(strcmp (find.name, ".") == 0 || strcmp (find.name, "..") == 0))
+ {
+ len = strlen (find.name);
+ memcpy (path + add, find.name, len);
+ path[add+len] = '\\';
+ path[add+len+1] = 0;
+ if (!setup_add (dst, path))
+ return (FALSE);
+ }
+#if defined (__EMX__)
+ ok = __findnext (&find) == 0;
+#else
+ ok = ll_findnext (&find);
+#endif
+ }
+ if (recurse)
+ {
+ end = dst->used;
+ while (i < end)
+ {
+ strcpy (path, dst->list[i]);
+ if (!setup_subdir (dst, path, strlen (path), flags, TRUE))
+ return (FALSE);
+ ++i;
+ }
+ }
+ return (TRUE);
+}
+
+
+static int setup_dir (struct emtex_dir *dst, char *path,
+ const char *base_dir, size_t base_dir_len,
+ const char *sub_dir,
+ unsigned flags)
+{
+ size_t i, len;
+
+ memcpy (path, base_dir, base_dir_len);
+ i = base_dir_len;
+ if ((flags & EDS_BANG) && sub_dir == NULL)
+ {
+ flags &= ~(EDS_ONESUBDIR|EDS_ALLSUBDIR);
+ if (i >= 2 && path[i-1] == '!' && path[i-2] == '!')
+ {
+ flags |= EDS_ALLSUBDIR;
+ i -= 2;
+ }
+ else if (i >= 1 && path[i-1] == '!')
+ {
+ flags |= EDS_ONESUBDIR;
+ --i;
+ }
+ }
+ if (sub_dir != NULL && *sub_dir != 0)
+ {
+ if (i != 0 && path[i-1] != ':' && path[i-1] != '/' && path[i-1] != '\\')
+ path[i++] = '\\';
+ len = strlen (sub_dir);
+ memcpy (path+i, sub_dir, len);
+ i += len;
+ }
+ if (path[i-1] != ':' && path[i-1] != '/' && path[i-1] != '\\')
+ path[i++] = '\\';
+ path[i] = 0;
+ if (!setup_add (dst, path))
+ return (FALSE);
+ if (flags & EDS_ALLSUBDIR)
+ return (setup_subdir (dst, path, i, flags, TRUE));
+ else if (flags & EDS_ONESUBDIR)
+ return (setup_subdir (dst, path, i, flags, FALSE));
+ else
+ return (TRUE);
+}
+
+
+/*static */int setup_list (struct emtex_dir *dst, char *path,
+ const char *list, unsigned flags)
+{
+ const char *end;
+ size_t i;
+
+ for (;;)
+ {
+ while (*list == ' ' || *list == '\t')
+ ++list;
+ if (*list == 0)
+ return (TRUE);
+ end = list;
+ while (*end != 0 && *end != ';')
+ ++end;
+ i = end - list;
+ while (i > 0 && (list[i-1] == ' ' || list[i-1] == '\t'))
+ --i;
+ if (i != 0 && !setup_dir (dst, path, list, i, NULL, flags))
+ return (FALSE);
+ if (*end == 0)
+ return (TRUE);
+ list = end + 1;
+ }
+}
+
+
+int emtex_dir_setup (struct emtex_dir *ed, const char *env, const char *dir,
+ unsigned flags)
+{
+ const char *val;
+ char path[260];
+
+ ed->alloc = 0;
+ ed->used = 0;
+ ed->list = NULL;
+ if (env != NULL && (val = getenv (env)) != NULL)
+ return (setup_list (ed, path, val, flags));
+ else if ((val = getenv ("EMTEXDIR")) != NULL)
+ return (setup_dir (ed, path, val, strlen (val), dir, flags));
+ else
+ return (setup_dir (ed, path, "\\emtex", 6, dir, flags));
+}
+
+
+static void pretty (char *path, unsigned flags)
+{
+ char *p;
+
+ if (flags & EDF_FSLASH)
+ for (p = path; *p != 0; ++p)
+ if (*p == '\\')
+ *p = '/';
+}
+
+
+#define ADDCHAR(C) \
+ if (dst_size < 1) return (EDT_TOOLONG); \
+ *dst++ = (C); --dst_size
+
+int emtex_dir_trunc (char *dst, size_t dst_size, const char *src,
+ unsigned flags, int method)
+{
+ int len, truncated, dot;
+
+ if (src[0] != 0 && src[1] == ':')
+ {
+ ADDCHAR (src[0]);
+ ADDCHAR (src[1]);
+ src += 2;
+ }
+
+ truncated = FALSE; dot = FALSE; len = 0;
+ for (;;)
+ {
+ switch (*src)
+ {
+ case 0:
+ ADDCHAR (0);
+ return (truncated ? EDT_CHANGED : EDT_UNCHANGED);
+
+ case ':':
+ return (EDT_INVALID);
+
+ case '/':
+ case '\\':
+ ADDCHAR (*src);
+ len = 0; dot = FALSE;
+ break;
+
+ case '.':
+ if (dot)
+ return (EDT_INVALID);
+ ADDCHAR (*src);
+
+ /* ".." is allowed -- don't return EDT_INVALID for the next
+ dot. */
+
+ if (!(len == 0 && src[1] == '.'
+ && (src[2] == 0 || src[2] == '/' || src[2] == '\\')))
+ {
+ len = 0; dot = TRUE;
+ }
+ break;
+
+ default:
+ if (dot && len == 3)
+ truncated = TRUE;
+ else if (!dot && len == 8)
+ {
+ truncated = TRUE;
+ if (method == 0)
+ {
+ dst[-3] = dst[-2];
+ dst[-2] = dst[-1];
+ dst[-1] = *src;
+ }
+ }
+ else
+ {
+ ADDCHAR (*src);
+ ++len;
+ }
+ break;
+ }
+ ++src;
+ }
+}
+
+
+static int find2 (const char *name, unsigned flags)
+{
+ int ok;
+
+ ok = (access (name, 4) == 0);
+ if (flags & EDF_TRACE)
+ emtex_dir_find_callback (name, ok);
+ return (ok);
+}
+
+
+static int find1 (char *path, size_t path_size, const char *dir,
+ const char *fname, unsigned flags)
+{
+ char buf[260];
+ int method, rc;
+ size_t len, tmp;
+
+ len = 0;
+ if (dir != NULL)
+ {
+ tmp = strlen (dir);
+ if (tmp >= sizeof (buf))
+ return (FALSE);
+ memcpy (buf, dir, tmp);
+ len = tmp;
+ }
+ tmp = strlen (fname);
+ if (len + tmp >= sizeof (buf))
+ return (FALSE);
+ memcpy (buf + len, fname, tmp + 1);
+ len += tmp;
+#if 0 /* wkim */
+/* disabled for Win95's long file name support */
+/* -- Wonkoo Kim (wkim+@pitt.edu), May 18, 1997 */
+ if (_osmode == DOS_MODE)
+ {
+ rc = emtex_dir_trunc (path, path_size, buf, flags, EDT_5_PLUS_3);
+ if ((rc == EDT_UNCHANGED || rc == EDT_CHANGED) && find2 (path, flags))
+ {
+ pretty (path, flags);
+ return (TRUE);
+ }
+ rc = emtex_dir_trunc (path, path_size, buf, flags, EDT_8);
+ if (rc == EDT_CHANGED && find2 (path, flags))
+ {
+ pretty (path, flags);
+ return (TRUE);
+ }
+ return (FALSE);
+ }
+ else
+#endif /* wkim */
+ {
+ if (len < path_size && find2 (buf, flags))
+ {
+ memcpy (path, buf, len + 1);
+ pretty (path, flags);
+ return (TRUE);
+ }
+ for (method = 0; method < 2; ++method)
+ {
+ rc = emtex_dir_trunc (path, path_size, buf, flags, method);
+ if (rc == EDT_CHANGED && find2 (path, flags))
+ {
+ pretty (path, flags);
+ return (TRUE);
+ }
+ }
+ return (FALSE);
+ }
+}
+
+
+int emtex_dir_find (char *path, size_t path_size,
+ const struct emtex_dir *ed,
+ const char *fname, unsigned flags)
+{
+ int i, absp;
+ const char *p;
+
+ absp = FALSE;
+ for (p = fname; *p != 0; ++p)
+ if (*p == ':' || *p == '/' || *p == '\\')
+ {
+ absp = TRUE;
+ break;
+ }
+
+ if (absp)
+ return (find1 (path, path_size, NULL, fname, flags));
+
+ if ((flags & EDF_CWD) && find1 (path, path_size, NULL, fname, flags))
+ return (TRUE);
+
+ for (i = 0; i < ed->used; ++i)
+ if (find1 (path, path_size, ed->list[i], fname, flags))
+ return (TRUE);
+ return (FALSE);
+}
+
+
+#if defined (TEST)
+
+#include <stdio.h>
+
+int main (int argc, char *argv[])
+{
+ struct emtex_dir ed;
+ int i;
+ unsigned flags1, flags2;
+ char path[260];
+
+ if (argc != 6)
+ {
+ puts ("Usage: emtexdir <flags> <flags> <env> <dir> <fname>");
+ return (1);
+ }
+
+ flags1 = (unsigned)strtol (argv[1], NULL, 0);
+ flags2 = (unsigned)strtol (argv[2], NULL, 0);
+
+ if (!emtex_dir_setup (&ed, argv[3], argv[4], flags1))
+ {
+ fputs ("emtex_dir_setup failed\n", stderr);
+ return (2);
+ }
+
+ printf ("Directories:\n");
+ for (i = 0; i < ed.used; ++i)
+ printf (" %s\n", ed.list[i]);
+
+ if (!emtex_dir_find (path, sizeof (path), &ed, argv[5], flags2))
+ puts ("File not found");
+ else
+ printf ("Path: %s\n", path);
+ return (0);
+}
+
+#endif
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emtexdir.h b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emtexdir.h
new file mode 100644
index 0000000000..a9a986db05
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/emtexdir.h
@@ -0,0 +1,57 @@
+/* emtexdir.h -- written by Eberhard Mattes, donated to the public domain */
+
+#if !defined (_EMTEXDIR_H)
+#define _EMTEXDIR_H
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+
+/* Flags for emtex_dir_setup */
+
+#define EDS_ONESUBDIR 0x0001
+#define EDS_ALLSUBDIR 0x0002
+#define EDS_BANG 0x0004
+
+/* Flags for emtex_dir_find */
+
+#define EDF_CWD 0x0001
+#define EDF_FSLASH 0x0002
+#define EDF_TRACE 0x8000
+
+/* Methods for emtex_dir_trunc */
+
+#define EDT_5_PLUS_3 0 /* 5+3.3 */
+#define EDT_8 1 /* 8.3 */
+
+/* Return values for emtex_dir_trunc */
+
+#define EDT_UNCHANGED 0 /* Path name not changed */
+#define EDT_CHANGED 1 /* Path name truncated */
+#define EDT_TOOLONG 2 /* Path name too long */
+#define EDT_INVALID 3 /* Path name invalid */
+
+struct emtex_dir
+{
+ char **list;
+ int used;
+ int alloc;
+};
+
+extern void (*emtex_dir_find_callback)(const char *name, int ok);
+
+int emtex_dir_setup (struct emtex_dir *ed, const char *env, const char *dir,
+ unsigned flags);
+
+int emtex_dir_find (char *path, size_t path_size, const struct emtex_dir *ed,
+ const char *fname, unsigned flags);
+
+int emtex_dir_trunc (char *dst, size_t dst_size, const char *src,
+ unsigned flags, int method);
+
+#if defined (__cplusplus)
+}
+#endif
+
+#endif /* !defined (_EMTEXDIR_H) */
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf.c b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf.c
new file mode 100644
index 0000000000..dedb9650b2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf.c
@@ -0,0 +1,1494 @@
+/*
+ * Copyright 1993,1994,1995,2005 by Ross Paterson
+ *
+ * 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. The name of the author may not 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.
+ *
+ *
+ * Ross Paterson <ross@soi.city.ac.uk>
+ * 17 October 1995
+ *
+ * The following people have supplied bug fixes:
+ *
+ * Simon Chow <khsc@synoptics.com>
+ * Fung Fung Lee <lee@simd.stanford.edu>
+ * Man-Chi Pong <mcpong@cs.ust.hk>
+ * Steven Simpson <simpson@math.psu.edu>
+ * Charles Wang <charles.wang@infores.com>
+ * Werner Lemberg <wl@gnu.org>
+ *
+ * Ross no longer maintains this code. Please send bug reports to
+ * Werner Lemberg <wl@gnu.org>.
+ *
+ */
+
+/*
+ * Two C interfaces to HBF files.
+ *
+ * The multiple interfaces make this code rather messy; I intend
+ * to clean it up as experience is gained on what is really needed.
+ *
+ * There are also two modes of operation:
+ * - the default is to read each bitmap from its file as demanded
+ * - if IN_MEMORY is defined, the whole bitmap file is held in memory.
+ * In this case, if running under Unix, the bitmap files may be gzipped
+ * (but the filename used in the HBF file should be the name of the
+ * file before it was gzipped).
+ */
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include "hbf.h"
+
+#ifdef __MSDOS__
+#define msdos
+#endif
+
+/*
+ * if the linker complains about an unresolved identifier '_strdup',
+ * uncomment the following definition.
+ */
+/* #define NO_STRDUP */
+
+#ifdef __STDC__
+# define _(x) x
+#else
+# define _(x) ()
+#endif
+
+#define reg register
+
+typedef int bool;
+#define TRUE 1
+#define FALSE 0
+
+#define Bit(n) (1<<(7 - (n)))
+
+/*
+ * Messy file system issues
+ */
+
+#ifdef unix
+#define PATH_DELIMITER ':'
+#define RelativeFileName(fn) ((fn)[0] != '/')
+#define LocalFileName(fn) (strchr(fn, '/') == NULL)
+#endif /* unix */
+#ifdef msdos
+#define PATH_DELIMITER ';'
+#define HasDrive(fn) (isalpha((fn)[0]) && (fn)[1] == ':')
+#ifdef __EMX__
+#define RelativeFileName(fn) (! HasDrive(fn) && \
+ !((fn)[0] == '\\' || (fn)[0] == '/'))
+#define LocalFileName(fn) (! HasDrive(fn) && \
+ strchr(fn, '\\') == NULL && \
+ strchr(fn, '/') == NULL)
+#else
+#define RelativeFileName(fn) (! HasDrive(fn) && (fn)[0] != '\\')
+#define LocalFileName(fn) (! HasDrive(fn) && strchr(fn, '\\') == NULL)
+#endif /* __EMX__ */
+#define READ_BINARY "rb"
+#endif /* msdos */
+#ifdef vms
+#define PATH_DELIMITER ','
+#define RelativeFileName(fn) (strchr(fn, ':') == NULL && ((fn)[0] != '[' || (fn)[1] == '.' || (fn)[1] == '-'))
+#define LocalFileName(fn) (strchr(fn, ':') == NULL && strchr(fn, ']') == NULL)
+#endif
+
+#ifndef RelativeFileName
+#define RelativeFileName(fn) FALSE
+#endif
+
+#ifndef LocalFileName
+#define LocalFileName(fn) FALSE
+#endif
+
+#ifndef READ_BINARY
+#define READ_BINARY "r"
+#endif
+
+#define MAX_FILENAME 1024
+
+/*
+ * Internal structures
+ */
+
+typedef unsigned char byte;
+
+#define PROPERTY struct _PROPERTY
+#define BM_FILE struct _BM_FILE
+#define B2_RANGE struct _B2_RANGE
+#define CODE_RANGE struct _CODE_RANGE
+
+PROPERTY {
+ char *prop_name;
+ char *prop_value;
+ PROPERTY *prop_next;
+};
+
+BM_FILE {
+ char *bmf_name;
+#ifdef IN_MEMORY
+ byte *bmf_contents;
+#else
+ FILE *bmf_file;
+#endif
+ long bmf_size;
+ BM_FILE *bmf_next;
+};
+
+B2_RANGE {
+ byte b2r_start;
+ byte b2r_finish;
+ B2_RANGE *b2r_next;
+};
+
+typedef unsigned short CHAR;
+typedef unsigned int CHAR_INDEX; /* character index in file */
+#define BAD_CHAR_INDEX 0xffff
+
+CODE_RANGE {
+ CHAR code_start;
+ CHAR code_finish;
+ BM_FILE *code_bm_file;
+ long code_offset;
+ CHAR_INDEX code_pos;
+ bool code_transposed;
+ bool code_inverted;
+ CODE_RANGE *code_next;
+};
+
+/*
+ * Extended internal version of HBF
+ */
+
+typedef struct {
+ /* fields corresponding to the definition */
+ HBF public;
+ /* plus internal stuff */
+ char *filename;
+ byte *bitmap_buffer;
+ unsigned int b2_size; /* number of legal byte-2's */
+ PROPERTY *property;
+ B2_RANGE *byte_2_range;
+ CODE_RANGE *code_range;
+ BM_FILE *bm_file;
+} HBF_STRUCT;
+
+#define FirstByte(code) ((code)>>8)
+#define SecondByte(code) ((code)&0xff)
+#define MakeCode(byte1,byte2) (((byte1)<<8)|(byte2))
+
+/* size of a bitmap in the file (may be affected by transposition) */
+#define FileBitmapSize(hbfFile,cp) \
+ ((cp)->code_transposed ? \
+ (hbfBitmapBBox(hbfFile)->hbf_height + 7)/8 * \
+ hbfBitmapBBox(hbfFile)->hbf_width : \
+ HBF_BitmapSize(hbfFile))
+
+#define NEW(type) ((type *)malloc((unsigned)(sizeof(type))))
+
+#define QUOTE '"'
+
+#define MAXLINE 1024
+
+#ifdef WIN32
+#define strdup(x) _strdup(x)
+#else
+ extern char *strdup _((const char *s));
+#endif
+
+static void add_b2r _((B2_RANGE **last_b2r, int start, int finish));
+static bool add_code_range _((HBF_STRUCT *hbf, const char *line));
+static void add_property _((HBF_STRUCT *hbf, const char *lp));
+static CHAR_INDEX b2_pos _((HBF_STRUCT *hbf, HBF_CHAR code));
+static int b2_size _((B2_RANGE *b2r));
+static void clear_bbox _((HBF_BBOX *bbox));
+static void clear_record _((HBF_STRUCT *hbf));
+static char *concat _((const char *dir, int dirlen, const char *stem));
+static char *expand_filename _((const char *name, const char *filename));
+static const byte *get_bitmap
+ _((HBF_STRUCT *hbf, HBF_CHAR code, byte *buffer));
+static byte *local_buffer _((HBF_STRUCT *hbf));
+static void invert _((byte *buffer, unsigned length));
+#ifdef IN_MEMORY
+static bool read_bitmap_file _((BM_FILE *bmf, FILE *f));
+static bool copy_transposed
+ _((HBF *hbf, byte *bitmap, const byte *source));
+#else
+static bool get_transposed _((HBF *hbf, FILE *f, byte *bitmap));
+#endif
+static bool match _((const char *lp, const char *sp));
+static bool parse_file _((FILE *f, HBF_STRUCT *hbf));
+static FILE *path_open
+ _((const char *path, const char *filename, char **fullp));
+static bool real_open _((const char *filename, HBF_STRUCT *hbf));
+
+/* Error reporting */
+
+int hbfDebug; /* set this for error reporting */
+
+#ifdef __STDC__
+#include <stdarg.h>
+
+static void
+eprintf(const char *fmt, ...)
+{
+ if (hbfDebug) {
+ va_list args;
+
+ (void)fprintf(stderr, "HBF: ");
+ va_start(args, fmt);
+ (void)vfprintf(stderr, fmt, args);
+ va_end(args);
+ (void)fprintf(stderr, "\n");
+ }
+}
+#else /* ! __STDC__ */
+/* poor man's variable-length argument list */
+static void
+eprintf(fmt, x1, x2, x3, x4, x5, x6, x7, x8, x9)
+ const char *fmt;
+ int x1, x2, x3, x4, x5, x6, x7, x8, x9;
+{
+ if (hbfDebug) {
+ (void)fprintf(stderr, "HBF: ");
+ (void)fprintf(stderr, fmt, x1, x2, x3, x4, x5, x6, x7, x8, x9);
+ (void)fprintf(stderr, "\n");
+ }
+}
+#endif /* __STDC__ */
+
+static void
+clear_bbox(HBF_BBOX *bbox)
+{
+ bbox->hbf_width = bbox->hbf_height = 0;
+ bbox->hbf_xDisplacement = bbox->hbf_yDisplacement = 0;
+}
+
+static void
+clear_record(HBF_STRUCT *hbf)
+{
+ clear_bbox(&(hbf->public.hbf_bitmap_bbox));
+ clear_bbox(&(hbf->public.hbf_font_bbox));
+ hbf->property = NULL;
+ hbf->filename = NULL;
+ hbf->bitmap_buffer = NULL;
+ hbf->byte_2_range = NULL;
+ hbf->code_range = NULL;
+ hbf->bm_file = NULL;
+}
+
+/*
+ * Byte-2 ranges
+ */
+
+static void
+add_b2r(reg B2_RANGE **last_b2r, int start, int finish)
+{
+reg B2_RANGE *b2r;
+
+ b2r = NEW(B2_RANGE);
+ while (*last_b2r != NULL && (*last_b2r)->b2r_start < start)
+ last_b2r = &((*last_b2r)->b2r_next);
+ b2r->b2r_next = *last_b2r;
+ b2r->b2r_start = start;
+ b2r->b2r_finish = finish;
+ *last_b2r = b2r;
+}
+
+static CHAR_INDEX
+b2_pos(HBF_STRUCT *hbf, HBF_CHAR code)
+{
+reg B2_RANGE *b2r;
+reg unsigned c;
+reg CHAR_INDEX pos;
+
+ c = SecondByte(code);
+ pos = 0;
+ for (b2r = hbf->byte_2_range; b2r != NULL; b2r = b2r->b2r_next)
+ if (b2r->b2r_start <= c && c <= b2r->b2r_finish)
+ return pos + c - b2r->b2r_start;
+ else
+ pos += b2r->b2r_finish - b2r->b2r_start + 1;
+ return BAD_CHAR_INDEX;
+}
+
+static int
+b2_size(reg B2_RANGE *b2r)
+{
+reg int size;
+
+ size = 0;
+ for ( ; b2r != NULL; b2r = b2r->b2r_next)
+ size += b2r->b2r_finish - b2r->b2r_start + 1;
+ return size;
+}
+
+/* map a position to a character code */
+static long
+code_of(HBF_STRUCT *hbf, long pos)
+{
+ long code;
+ int residue;
+reg B2_RANGE *b2r;
+
+ code = pos / hbf->b2_size * 256;
+ residue = pos % hbf->b2_size;
+ for (b2r = hbf->byte_2_range; b2r != NULL; b2r = b2r->b2r_next)
+ if (b2r->b2r_start + residue <= b2r->b2r_finish)
+ return code + b2r->b2r_start + residue;
+ else
+ residue -= b2r->b2r_finish - b2r->b2r_start + 1;
+ /* should never get here */
+ return 0L;
+}
+
+/*
+ * String stuff
+ */
+
+static bool
+match(reg const char *lp, reg const char *sp)
+{
+ while (*lp == *sp && *sp != '\0') {
+ lp++;
+ sp++;
+ }
+ return (*lp == '\0' || isspace((unsigned char)*lp)) && *sp == '\0';
+}
+
+#ifdef NO_STRDUP
+char *
+strdup(const char *s)
+{
+ char *new_s;
+
+ new_s = malloc((unsigned)strlen(s) + 1);
+ strcpy(new_s, s);
+ return new_s;
+}
+#endif
+
+/*
+ * Properties
+ */
+
+static void
+add_property(reg HBF_STRUCT *hbf, const char *lp)
+{
+reg PROPERTY *prop;
+ char tmp[MAXLINE];
+reg char *tp;
+
+ prop = NEW(PROPERTY);
+
+ tp = tmp;
+ while (*lp != '\0' && ! isspace((unsigned char)*lp))
+ *tp++ = *lp++;
+ *tp = '\0';
+ prop->prop_name = strdup(tmp);
+
+ while (*lp != '\0' && isspace((unsigned char)*lp))
+ lp++;
+
+ tp = tmp;
+ if (*lp == QUOTE) {
+ lp++;
+ while (*lp != '\0' && ! (*lp == QUOTE && *++lp != QUOTE))
+ *tp++ = *lp++;
+ }
+ else
+ for (;;) {
+ while (*lp != '\0' && ! isspace((unsigned char)*lp))
+ *tp++ = *lp++;
+ while (*lp != '\0' && isspace((unsigned char)*lp))
+ lp++;
+ if (*lp == '\0')
+ break;
+ *tp++ = ' ';
+ }
+ *tp = '\0';
+ prop->prop_value = strdup(tmp);
+
+ prop->prop_next = hbf->property;
+ hbf->property = prop;
+}
+
+const char *
+hbfProperty(HBF *hbfFile, const char *propName)
+{
+reg HBF_STRUCT *hbf;
+reg PROPERTY *prop;
+
+ hbf = (HBF_STRUCT *)hbfFile;
+ for (prop = hbf->property; prop != NULL; prop = prop->prop_next)
+ if (strcmp(prop->prop_name, propName) == 0)
+ return prop->prop_value;
+ return NULL;
+}
+
+/*
+ * Compatability routines
+ */
+
+const char *
+HBF_GetProperty(HBF *handle, const char *propertyName)
+{
+ return hbfProperty(handle, propertyName);
+}
+
+int
+HBF_GetFontBoundingBox(HBF_Handle handle,
+ unsigned int *width, unsigned int *height,
+ int *xDisplacement, int *yDisplacement)
+{
+ if (width != NULL)
+ *width = hbfFontBBox(handle)->hbf_width;
+ if (height != NULL)
+ *height = hbfFontBBox(handle)->hbf_height;
+ if (xDisplacement != NULL)
+ *xDisplacement = hbfFontBBox(handle)->hbf_xDisplacement;
+ if (yDisplacement != NULL)
+ *yDisplacement = hbfFontBBox(handle)->hbf_yDisplacement;
+ return 0;
+}
+
+int
+HBF_GetBitmapBoundingBox(HBF_Handle handle,
+ unsigned int *width, unsigned int *height,
+ int *xDisplacement, int *yDisplacement)
+{
+ if (width != NULL)
+ *width = hbfBitmapBBox(handle)->hbf_width;
+ if (height != NULL)
+ *height = hbfBitmapBBox(handle)->hbf_height;
+ if (xDisplacement != NULL)
+ *xDisplacement = hbfBitmapBBox(handle)->hbf_xDisplacement;
+ if (yDisplacement != NULL)
+ *yDisplacement = hbfBitmapBBox(handle)->hbf_yDisplacement;
+ return 0;
+}
+
+/*
+ * Prepend a directory to a relative filename.
+ */
+static char *
+concat(const char *dir, /* not necessarily null-terminated */
+ int dirlen, /* number of significant chars in dir */
+ const char *stem) /* relative filename */
+{
+ char *fullname;
+
+ if (dirlen == 0) /* null: current directory */
+ return strdup(stem);
+#ifdef unix
+ fullname = malloc(dirlen + strlen(stem) + 2);
+ (void)sprintf(fullname, "%.*s/%s", dirlen, dir, stem);
+#else
+#ifdef msdos
+ fullname = malloc(dirlen + strlen(stem) + 2);
+ (void)sprintf(fullname, "%.*s\\%s", dirlen, dir, stem);
+#else
+#ifdef vms
+ if (dir[dirlen-1] == ']' && stem[0] == '[' && stem[1] == '-') {
+ dirlen--;
+ stem++;
+ fullname = malloc(dirlen + strlen(stem) + 2);
+ (void)sprintf(fullname, "%.*s.%s", dirlen, dir, stem);
+ }
+ else {
+ if (dir[dirlen-1] == ']' && stem[0] == '[' && stem[1] == '.') {
+ dirlen--;
+ stem++;
+ }
+ fullname = malloc(dirlen + strlen(stem) + 1);
+ (void)sprintf(fullname, "%.*s%s", dirlen, dir, stem);
+ }
+#else
+ fullname = strdup(stem);
+#endif /* vms */
+#endif /* msdos */
+#endif /* unix */
+ return fullname;
+}
+
+/*
+ * Bitmap files
+ *
+ * If the host operating system has a heirarchical file system and
+ * the bitmap file name is relative, it is relative to the directory
+ * containing the HBF file.
+ */
+static char *
+expand_filename(const char *name, const char *hbf_name)
+{
+#ifdef unix
+reg char *s;
+reg int size;
+
+ size = name[0] != '/' && (s = strrchr(hbf_name, '/')) != NULL ?
+ s - hbf_name + 1 : 0;
+ s = malloc((unsigned)size + strlen(name) + 1);
+ (void)sprintf(s, "%.*s%s", size, hbf_name, name);
+ return s;
+#else
+#ifdef msdos
+reg char *s;
+reg int size;
+
+#ifdef __EMX__
+ s = (unsigned char *)hbf_name + strlen((unsigned char *)hbf_name) - 1;
+ for(;;) {
+ if (*s == '\\' || *s == '/')
+ break;
+ if (s == hbf_name) {
+ s = NULL;
+ break;
+ }
+ s--;
+ }
+
+ size = HasDrive(name) ? 0 :
+ (name[0] == '\\' || name[0] == '/') ?
+ (HasDrive(hbf_name) ? 2 : 0) :
+ s != NULL ? s - hbf_name + 1 : 0;
+#else
+ size = HasDrive(name) ? 0 :
+ name[0] == '\\' ? (HasDrive(hbf_name) ? 2 : 0) :
+ (s = strrchr(hbf_name, '\\')) != NULL ?
+ s - hbf_name + 1 : 0;
+#endif /* __EMX__ */
+ s = malloc((unsigned)size + strlen(name) + 1);
+ (void)sprintf(s, "%.*s%s", size, hbf_name, name);
+ return s;
+#else
+#ifdef vms
+reg char *s;
+reg const char *copyto;
+reg int size;
+
+ if ((s = strchr(hbf_name, ']')) != NULL && RelativeFileName(name))
+ return concat(hbf_name, (s - hbf_name) + 1, name);
+
+ copyto = hbf_name;
+ if ((s = strstr(copyto, "::")) != NULL && strstr(name, "::") == NULL)
+ copyto = s+2;
+ if ((s = strchr(copyto, ':')) != NULL && strchr(name, ':') == NULL)
+ copyto = s+1;
+ size = copyto - hbf_name;
+ s = malloc((unsigned)size + strlen(name) + 1);
+ (void)sprintf(s, "%.*s%s", size, hbf_name, name);
+ return s;
+#else
+ return strdup(name);
+#endif /* vms */
+#endif /* msdos */
+#endif /* unix */
+}
+
+static BM_FILE *
+find_file(HBF_STRUCT *hbf, const char *filename)
+{
+ BM_FILE **fp;
+reg BM_FILE *file;
+ FILE *f;
+ char *bmfname;
+#ifdef IN_MEMORY
+#ifdef unix
+ bool from_pipe;
+#endif
+#endif
+
+ for (fp = &(hbf->bm_file); *fp != NULL; fp = &((*fp)->bmf_next)) {
+ bmfname = strrchr((*fp)->bmf_name, '/');
+ bmfname = (bmfname) ? bmfname + 1 : (*fp)->bmf_name;
+ if (strcmp(bmfname, filename) == 0)
+ return *fp;
+ }
+
+ file = NEW(BM_FILE);
+ if (file == NULL) {
+ eprintf("out of memory");
+ return NULL;
+ }
+ file->bmf_name = expand_filename(filename, hbf->filename);
+ if (file->bmf_name == NULL) {
+ free((char *)file);
+ return NULL;
+ }
+ f = fopen(file->bmf_name, READ_BINARY);
+#ifdef IN_MEMORY
+#ifdef unix
+ from_pipe = FALSE;
+ if (f == NULL) {
+ char tmp[400];
+
+ sprintf(tmp, "%s.gz", file->bmf_name);
+ if ((f = fopen(tmp, "r")) != NULL) {
+ fclose(f);
+ sprintf(tmp, "gzcat %s.gz", file->bmf_name);
+ if ((f = popen(tmp, "r")) != NULL)
+ from_pipe = TRUE;
+ }
+ }
+#endif /* unix */
+#endif /* IN_MEMORY */
+ if (f == NULL) {
+ eprintf("can't open bitmap file '%s'", file->bmf_name);
+ free(file->bmf_name);
+ free((char *)file);
+ return NULL;
+ }
+#ifdef IN_MEMORY
+ if (! read_bitmap_file(file, f)) {
+ free(file->bmf_name);
+ free((char *)file);
+ return NULL;
+ }
+#ifdef unix
+ if (from_pipe)
+ pclose(f);
+ else
+ fclose(f);
+#else /* ! unix */
+ fclose(f);
+#endif /* ! unix */
+#else /* ! IN_MEMORY */
+ file->bmf_file = f;
+ fseek(f, 0L, 2);
+ file->bmf_size = ftell(f);
+#endif /* ! IN_MEMORY */
+ file->bmf_next = NULL;
+ *fp = file;
+ return file;
+}
+
+#ifdef IN_MEMORY
+#define GRAIN_SIZE 512
+
+static bool
+read_bitmap_file(BM_FILE *bmf, FILE *f)
+{
+ byte *contents, *cp;
+ long size;
+ int c;
+
+ size = 0;
+ cp = contents = (byte *)malloc((unsigned)GRAIN_SIZE);
+ if (contents == NULL) {
+ eprintf("not enough space for bitmap file");
+ return NULL;
+ }
+ while ((c = getc(f)) != EOF) {
+ if (size%GRAIN_SIZE == 0) {
+ contents = (byte *)realloc((char *)contents,
+ (unsigned)(size + GRAIN_SIZE));
+ if (contents == NULL) {
+ eprintf("not enough space for bitmap file");
+ return NULL;
+ }
+ cp = contents + size;
+ }
+ *cp++ = c;
+ size++;
+ }
+ bmf->bmf_size = size;
+ bmf->bmf_contents = (byte *)realloc((char *)contents, (unsigned)size);
+ return TRUE;
+}
+#endif /* IN_MEMORY */
+
+/*
+ * Code ranges
+ */
+
+/* check that a code range fits within its bitmap file */
+static bool
+too_short(HBF_STRUCT *hbf, CODE_RANGE *cp)
+{
+ int bm_size;
+ long offset, end_offset;
+ BM_FILE *bmf;
+ long start, finish;
+
+ bm_size = FileBitmapSize(&(hbf->public), cp);
+ offset = cp->code_offset;
+ start = cp->code_start;
+ finish = cp->code_finish;
+ end_offset = offset + bm_size *
+ (hbf->b2_size*(long)FirstByte(finish) +
+ b2_pos(hbf, finish) - cp->code_pos + 1);
+ bmf = cp->code_bm_file;
+ if (end_offset <= bmf->bmf_size)
+ return FALSE;
+ /* bitmap file is too short: produce a specific error message */
+ if (offset > bmf->bmf_size)
+ eprintf("bitmap file '%s' is shorter than offset 0x%04lx",
+ bmf->bmf_name, offset);
+ else if (offset + bm_size > bmf->bmf_size)
+ eprintf("bitmap file '%s' too short: no room for any bitmaps at offset 0x%04lx",
+ bmf->bmf_name, offset);
+ else
+ eprintf("bitmap file '%s' is too short - code range appears to be 0x%04lx-0x%04lx",
+ bmf->bmf_name,
+ start,
+ code_of(hbf, cp->code_pos +
+ (bmf->bmf_size - offset)/bm_size) - 1);
+ return TRUE;
+}
+
+static const char *
+skip_word(int n, const char *s)
+{
+ for ( ; n > 0; n--) {
+ while (*s != '\0' && ! isspace((unsigned char)*s))
+ s++;
+ while (*s != '\0' && isspace((unsigned char)*s))
+ s++;
+ }
+ return s;
+}
+
+/* optional keywords at the end of a CODE_RANGE line */
+static void
+parse_keywords(CODE_RANGE *cp, const char *s)
+{
+ for (s = skip_word(4, s) ; *s != '\0'; s = skip_word(1, s)) {
+ switch (*s) {
+ case 's': case 'S': case 't': case 'T':
+ /* keyword "sideways" or "transposed" */
+ cp->code_transposed = TRUE;
+ break;
+ case 'i': case 'I':
+ /* keyword "inverted" */
+ cp->code_inverted = TRUE;
+ }
+ }
+}
+
+static bool
+add_code_range(HBF_STRUCT *hbf, const char *line)
+{
+ CODE_RANGE *cp;
+ CODE_RANGE **cpp;
+ long start, finish;
+ long offset;
+ char filename[MAXLINE];
+ BM_FILE *bmf;
+ CHAR_INDEX b2pos;
+
+ if (sscanf(line, "HBF_CODE_RANGE %li-%li %s %li",
+ &start, &finish, filename, &offset) != 4) {
+ eprintf("syntax error in HBF_CODE_RANGE");
+ return FALSE;
+ }
+ /* code ranges are checked in real_open() */
+ if ((bmf = find_file(hbf, filename)) == NULL)
+ return FALSE;
+ if ((cp = NEW(CODE_RANGE)) == NULL) {
+ eprintf("out of memory");
+ return FALSE;
+ }
+
+ cp->code_start = (CHAR)start;
+ cp->code_finish = (CHAR)finish;
+ cp->code_bm_file = bmf;
+ cp->code_offset = offset;
+ cp->code_transposed = cp->code_inverted = FALSE;
+ parse_keywords(cp, line);
+ /* insert it in order */
+ for (cpp = &hbf->code_range;
+ *cpp != NULL && (*cpp)->code_finish < start;
+ cpp = &((*cpp)->code_next))
+ ;
+ if (*cpp != NULL && (*cpp)->code_start <= finish) {
+ eprintf("code ranges overlap");
+ return FALSE;
+ }
+ cp->code_next = *cpp;
+ *cpp = cp;
+
+ /* set code_pos, and check range */
+ if (start > finish) {
+ eprintf("illegal code range 0x%04lx-0x%04lx", start, finish);
+ return FALSE;
+ }
+ if ((b2pos = b2_pos(hbf, start)) == BAD_CHAR_INDEX) {
+ eprintf("illegal start code 0x%04lx", start);
+ return FALSE;
+ }
+ cp->code_pos = hbf->b2_size*(long)FirstByte(start) + b2pos;
+ if ((b2pos = b2_pos(hbf, finish)) == BAD_CHAR_INDEX) {
+ eprintf("illegal finish code 0x%04lx", finish);
+ return FALSE;
+ }
+ /* check that the bitmap file has enough bitmaps */
+ return ! too_short(hbf, cp);
+}
+
+/*
+ * Reading and parsing of an HBF file
+ */
+
+/* get line, truncating to len, and trimming trailing spaces */
+static bool
+get_line(char *buf, int len, FILE *f)
+{
+ int c;
+ char *bp;
+
+ bp = buf;
+ for (;;) {
+ if ((c = getc(f)) == EOF) {
+ eprintf("unexpected end of file");
+ return FALSE;
+ }
+ if (c == '\n' || c == '\r') {
+ /* trim trailing space */
+ while (bp > buf && isspace((unsigned char)*(bp-1)))
+ bp--;
+ *bp = '\0';
+ return TRUE;
+ }
+ if (len > 0) {
+ *bp++ = c;
+ len--;
+ }
+ }
+}
+
+/* get next non-COMMENT line */
+static bool
+get_text_line(char *buf, int len, FILE *f)
+{
+ while (get_line(buf, len, f))
+ if (*buf != '\0' && ! match(buf, "COMMENT"))
+ return TRUE;
+ return FALSE;
+}
+
+static bool
+get_property(const char *line, const char *keyword, HBF_STRUCT *hbf)
+{
+ if (! match(line, keyword)) {
+ eprintf("%s expected", keyword);
+ return FALSE;
+ }
+ add_property(hbf, line);
+ return TRUE;
+}
+
+static bool
+get_bbox(const char *line, const char *keyword, HBF_BBOX *bbox)
+{
+ int w, h, xd, yd;
+
+ if (! match(line, keyword) ||
+ sscanf(line + strlen(keyword), "%i %i %i %i",
+ &w, &h, &xd, &yd) != 4) {
+ eprintf("%s expected", keyword);
+ return FALSE;
+ }
+ if (w <= 0 || h <= 0) {
+ eprintf("illegal %s dimensions %dx%d", keyword, w, h);
+ return FALSE;
+ }
+ bbox->hbf_width = w;
+ bbox->hbf_height = h;
+ bbox->hbf_xDisplacement = xd;
+ bbox->hbf_yDisplacement = yd;
+ return TRUE;
+}
+
+/*
+ * HBFHeaderFile ::=
+ * 'HBF_START_FONT' version EOLN
+ * 'HBF_CODE_SCHEME' word ... EOLN
+ * 'FONT' fontName EOLN
+ * 'SIZE' ptsize xres yres EOLN
+ * 'HBF_BITMAP_BOUNDING_BOX' w h xd yd EOLN
+ * 'FONTBOUNDINGBOX' w h xd yd EOLN
+ * X11R5FontPropertySection
+ * 'CHARS' n EOLN
+ * HBFByte2RangeSection
+ * HBFCodeRangeSection
+ * 'HBF_END_FONT' EOLN .
+ *
+ * This implementation allows extra lines before HBF_END_FONT.
+ * Anything after HBF_END_FONT is ignored.
+ */
+
+static bool
+parse_file(FILE *f, reg HBF_STRUCT *hbf)
+{
+ char line[MAXLINE];
+ int start, finish;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_property(line, "HBF_START_FONT", hbf))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_property(line, "HBF_CODE_SCHEME", hbf))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_property(line, "FONT", hbf))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_property(line, "SIZE", hbf))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_bbox(line, "HBF_BITMAP_BOUNDING_BOX",
+ &(hbf->public.hbf_bitmap_bbox)))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_bbox(line, "FONTBOUNDINGBOX", &(hbf->public.hbf_font_bbox)))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ if (match(line, "STARTPROPERTIES")) {
+ for (;;) {
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ if (match(line, "ENDPROPERTIES"))
+ break;
+ add_property(hbf, line);
+ }
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ }
+
+ if (match(line, "CHARS"))
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+
+ if (match(line, "HBF_START_BYTE_2_RANGES")) {
+ for (;;) {
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ if (match(line, "HBF_END_BYTE_2_RANGES"))
+ break;
+ if (sscanf(line, "HBF_BYTE_2_RANGE %i-%i",
+ &start, &finish) != 2) {
+ eprintf("HBF_BYTE_2_RANGE expected");
+ return FALSE;
+ }
+ add_b2r(&(hbf->byte_2_range), start, finish);
+ }
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ }
+ else
+ add_b2r(&(hbf->byte_2_range), 0, 0xff);
+ hbf->b2_size = b2_size(hbf->byte_2_range);
+
+ if (! match(line, "HBF_START_CODE_RANGES")) {
+ eprintf("HBF_START_CODE_RANGES expected");
+ return FALSE;
+ }
+ for (;;) {
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ if (match(line, "HBF_END_CODE_RANGES"))
+ break;
+ if (! add_code_range(hbf, line))
+ return FALSE;
+ }
+
+ for (;;) {
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ if (match(line, "HBF_END_FONT"))
+ break;
+ /* treat extra lines as properties (for private extensions) */
+ add_property(hbf, line);
+ }
+
+ return TRUE;
+}
+
+static FILE *
+path_open(const char *path, const char *filename, char **fullp)
+{
+ if (LocalFileName(filename) && path != NULL) {
+#ifdef PATH_DELIMITER
+ char *fullname;
+ FILE *f;
+ const char *p_next;
+
+ for (;;) {
+ p_next = strchr(path, PATH_DELIMITER);
+ if (p_next == NULL)
+ p_next = path + strlen(path);
+ fullname = concat(path, p_next - path, filename);
+ if ((f = fopen(fullname, "r")) != NULL) {
+ *fullp = fullname;
+ return f;
+ }
+ free(fullname);
+ if (*p_next == '\0')
+ break;
+ path = p_next + 1;
+ }
+#endif
+ return NULL;
+ }
+ else {
+ *fullp = strdup(filename);
+ return fopen(*fullp, "r");
+ }
+}
+
+static bool
+real_open(const char *filename, reg HBF_STRUCT *hbf)
+{
+ FILE *f;
+
+ f = path_open(getenv("HBFPATH"), filename, &(hbf->filename));
+ if (f == NULL) {
+ eprintf("can't read file '%s'", filename);
+ return FALSE;
+ }
+ if (! parse_file(f, hbf)) {
+ fclose(f);
+ return FALSE;
+ }
+ fclose(f);
+ return TRUE;
+}
+
+HBF *
+hbfOpen(const char *filename)
+{
+reg HBF_STRUCT *hbf;
+
+ if ((hbf = NEW(HBF_STRUCT)) == NULL) {
+ eprintf("can't allocate HBF structure");
+ return NULL;
+ }
+ clear_record(hbf);
+ if (real_open(filename, hbf))
+ return &(hbf->public);
+ hbfClose(&(hbf->public));
+ return NULL;
+}
+
+int
+HBF_OpenFont(const char *filename, HBF **ptrHandleStorage)
+{
+ return (*ptrHandleStorage = hbfOpen(filename)) == NULL ? -1 : 0;
+}
+
+/*
+ * Close files, free everything associated with the HBF.
+ */
+
+int
+HBF_CloseFont(HBF *hbfFile)
+{
+reg HBF_STRUCT *hbf;
+ PROPERTY *prop_ptr, *prop_next;
+ B2_RANGE *b2r_ptr, *b2r_next;
+ CODE_RANGE *code_ptr, *code_next;
+ BM_FILE *bmf_ptr, *bmf_next;
+ int status;
+
+ status = 0;
+ hbf = (HBF_STRUCT *)hbfFile;
+
+ if (hbf->filename != NULL)
+ free(hbf->filename);
+ if (hbf->bitmap_buffer != NULL)
+ free(hbf->bitmap_buffer);
+
+ for (prop_ptr = hbf->property;
+ prop_ptr != NULL;
+ prop_ptr = prop_next) {
+ prop_next = prop_ptr->prop_next;
+ free(prop_ptr->prop_name);
+ free(prop_ptr->prop_value);
+ free((char *)prop_ptr);
+ }
+
+ for (b2r_ptr = hbf->byte_2_range;
+ b2r_ptr != NULL;
+ b2r_ptr = b2r_next) {
+ b2r_next = b2r_ptr->b2r_next;
+ free((char *)b2r_ptr);
+ }
+
+ for (code_ptr = hbf->code_range;
+ code_ptr != NULL;
+ code_ptr = code_next) {
+ code_next = code_ptr->code_next;
+ free((char *)code_ptr);
+ }
+
+ for (bmf_ptr = hbf->bm_file;
+ bmf_ptr != NULL;
+ bmf_ptr = bmf_next) {
+ bmf_next = bmf_ptr->bmf_next;
+#ifdef IN_MEMORY
+ free((char *)(bmf_ptr->bmf_contents));
+#else
+ if (bmf_ptr->bmf_file != NULL &&
+ fclose(bmf_ptr->bmf_file) < 0)
+ status = -1;
+#endif
+ free(bmf_ptr->bmf_name);
+ free((char *)bmf_ptr);
+ }
+
+ free((char *)hbf);
+
+ return status;
+}
+
+void
+hbfClose(HBF *hbfFile)
+{
+ (void)HBF_CloseFont(hbfFile);
+}
+
+/*
+ * Fetch a bitmap
+ */
+
+const byte *
+hbfGetBitmap(HBF *hbf, HBF_CHAR code)
+{
+ return get_bitmap((HBF_STRUCT *)hbf, code, (byte *)NULL);
+}
+
+int
+HBF_GetBitmap(HBF *hbf, HBF_CHAR code, byte *buffer)
+{
+ return get_bitmap((HBF_STRUCT *)hbf, code, buffer) == NULL ? -1 : 0;
+}
+
+/*
+ * Internal function to fetch a bitmap.
+ * If buffer is non-null, it must be used.
+ */
+static const byte *
+get_bitmap(reg HBF_STRUCT *hbf, HBF_CHAR code, byte *buffer)
+{
+ CHAR_INDEX pos, b2pos;
+reg CODE_RANGE *cp;
+ BM_FILE *bmf;
+ int bm_size;
+ long offset;
+
+ if ((b2pos = b2_pos(hbf, code)) == BAD_CHAR_INDEX)
+ return NULL;
+ pos = hbf->b2_size*FirstByte(code) + b2pos;
+ for (cp = hbf->code_range; cp != NULL; cp = cp->code_next)
+ if (cp->code_start <= code && code <= cp->code_finish) {
+ bmf = cp->code_bm_file;
+ bm_size = FileBitmapSize(&(hbf->public), cp);
+ offset = cp->code_offset +
+ (long)(pos - cp->code_pos) * bm_size;
+#ifdef IN_MEMORY
+ if (buffer == NULL &&
+ ! cp->code_transposed && ! cp->code_inverted)
+ return bmf->bmf_contents + offset;
+#endif /* IN_MEMORY */
+ if (buffer == NULL &&
+ ((buffer = local_buffer(hbf)) == NULL))
+ return NULL;
+#ifdef IN_MEMORY
+ if (cp->code_transposed)
+ copy_transposed(&(hbf->public),
+ buffer,
+ bmf->bmf_contents + offset);
+ else
+ memcpy((char *)buffer,
+ (char *)(bmf->bmf_contents + offset),
+ bm_size);
+#else /* ! IN_MEMORY */
+ if (fseek(bmf->bmf_file, offset, 0) != 0) {
+ eprintf("seek error on code 0x%04x", code);
+ return NULL;
+ }
+ if (cp->code_transposed ?
+ ! get_transposed(&(hbf->public), bmf->bmf_file,
+ buffer) :
+ fread((char *)buffer,
+ bm_size, 1, bmf->bmf_file) != 1) {
+ eprintf("read error on code 0x%04x", code);
+ return NULL;
+ }
+#endif /* IN_MEMORY */
+ if (cp->code_inverted)
+ invert(buffer, HBF_BitmapSize(&(hbf->public)));
+ return buffer;
+ }
+ eprintf("code 0x%04x out of range", code);
+ return NULL;
+}
+
+static byte *
+local_buffer(HBF_STRUCT *hbf)
+{
+ if (hbf->bitmap_buffer == NULL &&
+ (hbf->bitmap_buffer = (byte *)malloc(HBF_BitmapSize(&(hbf->public)))) == NULL) {
+ eprintf("out of memory");
+ return NULL;
+ }
+ return hbf->bitmap_buffer;
+}
+
+static void
+invert(byte *buffer, unsigned int length)
+{
+ for ( ; length > 0; length--)
+ *buffer++ ^= 0xff;
+}
+
+#ifdef IN_MEMORY
+static bool
+copy_transposed(HBF *hbf, reg byte *bitmap, reg const byte *source)
+{
+reg byte *pos;
+reg byte *bm_end;
+ int x;
+ int width;
+reg int row_size;
+reg int c;
+reg int imask, omask;
+
+ width = hbfBitmapBBox(hbf)->hbf_width;
+ row_size = HBF_RowSize(hbf);
+ bm_end = bitmap + HBF_BitmapSize(hbf);
+ (void)memset((char *)bitmap, '\0', HBF_BitmapSize(hbf));
+ for (x = 0; x < width; x++) {
+ pos = bitmap + x/8;
+ omask = Bit(x%8);
+ /* y = 0 */
+ for (;;) {
+ c = *source++;
+ for (imask = Bit(0); imask != 0; imask >>= 1) {
+ /*
+ * At this point,
+ *
+ * imask == Bit(y%8)
+ * pos == bitmap + y*row_size + x/8
+ *
+ * We examine bit y of row x of the input,
+ * setting bit x of row y of the output if
+ * required, by applying omask to *pos.
+ */
+ if ((c & imask) != 0)
+ *pos |= omask;
+ /* if (++y > height) goto end_column */
+ pos += row_size;
+ if (pos >= bm_end)
+ goto end_column;
+ }
+ }
+end_column:
+ ;
+ }
+ return TRUE;
+}
+#else /* ! IN_MEMORY */
+static bool
+get_transposed(HBF *hbf, FILE *f, reg byte *bitmap)
+{
+reg byte *pos;
+reg byte *bm_end;
+ int x;
+ int width;
+reg int row_size;
+reg int c;
+reg int imask, omask;
+
+ width = hbfBitmapBBox(hbf)->hbf_width;
+ row_size = HBF_RowSize(hbf);
+ bm_end = bitmap + HBF_BitmapSize(hbf);
+ (void)memset((char *)bitmap, '\0', HBF_BitmapSize(hbf));
+ for (x = 0; x < width; x++) {
+ pos = bitmap + x/8;
+ omask = Bit(x%8);
+ /* y = 0 */
+ for (;;) {
+ if ((c = getc(f)) == EOF)
+ return FALSE;
+ for (imask = Bit(0); imask != 0; imask >>= 1) {
+ /*
+ * At this point,
+ *
+ * imask == Bit(y%8)
+ * pos == bitmap + y*row_size + x/8
+ *
+ * We examine bit y of row x of the input,
+ * setting bit x of row y of the output if
+ * required, by applying omask to *pos.
+ */
+ if ((c & imask) != 0)
+ *pos |= omask;
+ /* if (++y > height) goto end_column */
+ pos += row_size;
+ if (pos >= bm_end)
+ goto end_column;
+ }
+ }
+end_column:
+ ;
+ }
+ return TRUE;
+}
+#endif /* ! IN_MEMORY */
+
+/*
+ * Call function on each valid code in ascending order.
+ */
+void
+hbfForEach(reg HBF *hbfFile, void (*func)(HBF *, HBF_CHAR))
+{
+ HBF_STRUCT *hbf;
+ CODE_RANGE *cp;
+reg B2_RANGE *b2r;
+reg unsigned byte1, byte2;
+reg unsigned finish;
+
+ hbf = (HBF_STRUCT *)hbfFile;
+ for (cp = hbf->code_range; cp != NULL; cp = cp->code_next) {
+ byte1 = FirstByte(cp->code_start);
+ byte2 = SecondByte(cp->code_start);
+ while (MakeCode(byte1, byte2) <= cp->code_finish) {
+ for (b2r = hbf->byte_2_range;
+ b2r != NULL;
+ b2r = b2r->b2r_next) {
+ if (byte2 < b2r->b2r_start)
+ byte2 = b2r->b2r_start;
+ finish = b2r->b2r_finish;
+ if (byte1 == FirstByte(cp->code_finish) &&
+ finish > SecondByte(cp->code_finish))
+ finish = SecondByte(cp->code_finish);
+ while (byte2 <= finish) {
+ (*func)(hbfFile,
+ MakeCode(byte1, byte2));
+ byte2++;
+ }
+ }
+ byte1++;
+ byte2 = 0;
+ }
+ }
+}
+
+const char *
+hbfFileName(HBF *hbf)
+{
+ return ((HBF_STRUCT *)hbf)->filename;
+}
+
+long
+hbfChars(HBF *hbfFile)
+{
+ HBF_STRUCT *hbf;
+ CODE_RANGE *cp;
+ long num_chars;
+
+ hbf = (HBF_STRUCT *)hbfFile;
+ num_chars = 0;
+ for (cp = hbf->code_range; cp != NULL; cp = cp->code_next)
+ num_chars +=
+ hbf->b2_size*FirstByte(cp->code_finish) +
+ b2_pos(hbf, cp->code_finish) -
+ (hbf->b2_size*FirstByte(cp->code_start) +
+ b2_pos(hbf, cp->code_start)) + 1;
+ return num_chars;
+}
+
+/*
+ * Functions also implemented as macros
+ */
+
+#ifdef hbfBitmapBBox
+#undef hbfBitmapBBox
+#endif
+
+HBF_BBOX *
+hbfBitmapBBox(HBF *hbf)
+{
+ return &(hbf->hbf_bitmap_bbox);
+}
+
+#ifdef hbfFontBBox
+#undef hbfFontBBox
+#endif
+
+HBF_BBOX *
+hbfFontBBox(HBF *hbf)
+{
+ return &(hbf->hbf_font_bbox);
+}
+
+const void *
+hbfGetByte2Range(HBF *hbfFile, const void *b2r_pointer,
+ byte *startp, byte *finishp)
+{
+ HBF_STRUCT *hbf;
+ const B2_RANGE *b2r;
+
+ hbf = (HBF_STRUCT *)hbfFile;
+ if (b2r_pointer == NULL)
+ b2r = hbf->byte_2_range;
+ else
+ b2r = ((const B2_RANGE *)b2r_pointer)->b2r_next;
+ if(b2r == NULL)
+ return NULL;
+ *startp = b2r->b2r_start;
+ *finishp = b2r->b2r_finish;
+ return (const void *)b2r;
+}
+
+const void *
+hbfGetCodeRange(HBF *hbfFile, const void *code_pointer,
+ HBF_CHAR *startp, HBF_CHAR *finishp)
+{
+ HBF_STRUCT *hbf;
+ const CODE_RANGE *cp;
+
+ hbf = (HBF_STRUCT *)hbfFile;
+ if (code_pointer == NULL)
+ cp = hbf->code_range;
+ else
+ cp = ((const CODE_RANGE *)code_pointer)->code_next;
+ if(cp == NULL)
+ return NULL;
+ *startp = cp->code_start;
+ *finishp = cp->code_finish;
+ return (const void *)cp;
+}
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf.h b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf.h
new file mode 100644
index 0000000000..34f5940a71
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf.h
@@ -0,0 +1,215 @@
+/*
+ * Copyright 1993,1994,1995,2005 by Ross Paterson
+ *
+ * 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. The name of the author may not 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.
+ *
+ *
+ * Two interfaces to HBF files -- take your pick.
+ *
+ * Ross Paterson <ross@soi.city.ac.uk>
+ *
+ * Ross no longer maintains this code. Please send bug reports to
+ * Werner Lemberg <wl@gnu.org>.
+ *
+ */
+#ifndef _HBF_
+#define _HBF_
+
+#ifndef __STDC__
+# ifndef const
+# define const
+# endif
+#endif
+
+/*
+ * #1: a lightweight C interface.
+ */
+
+typedef unsigned int HBF_CHAR;
+
+typedef struct {
+ unsigned short hbf_width;
+ unsigned short hbf_height;
+ short hbf_xDisplacement;
+ short hbf_yDisplacement;
+} HBF_BBOX;
+
+typedef struct {
+ /* fields corresponding to the definition */
+ HBF_BBOX hbf_bitmap_bbox; /* HBF_BITMAP_BOUNDING_BOX */
+ HBF_BBOX hbf_font_bbox; /* FONTBOUNDINGBOX */
+} HBF;
+
+extern HBF *hbfOpen(
+#ifdef __STDC__
+ const char *filename
+#endif
+ );
+
+extern void hbfClose(
+#ifdef __STDC__
+ HBF *hbf
+#endif
+ );
+
+extern const char *hbfProperty(
+#ifdef __STDC__
+ HBF *hbf,
+ const char *propName
+#endif
+ );
+
+extern const unsigned char *hbfGetBitmap(
+#ifdef __STDC__
+ HBF *hbf,
+ HBF_CHAR code
+#endif
+ );
+
+extern void hbfForEach(
+#ifdef __STDC__
+ HBF *hbf,
+ void (*func)(HBF *sameHbf, HBF_CHAR code)
+#endif
+ );
+
+extern const char *hbfFileName(
+#ifdef __STDC__
+ HBF *hbf
+#endif
+ );
+
+extern long hbfChars(
+#ifdef __STDC__
+ HBF *hbf
+#endif
+ );
+
+extern HBF_BBOX *hbfBitmapBBox(
+#ifdef __STDC__
+ HBF *hbf
+#endif
+ );
+/* but defined here as a macro */
+#define hbfBitmapBBox(hbf) (&((hbf)->hbf_bitmap_bbox))
+
+extern HBF_BBOX *hbfFontBBox(
+#ifdef __STDC__
+ HBF *hbf
+#endif
+ );
+/* but defined here as a macro */
+#define hbfFontBBox(hbf) (&((hbf)->hbf_font_bbox))
+
+#define HBF_RowSize(hbf)\
+ ((hbfBitmapBBox(hbf)->hbf_width + 7)/8)
+
+#define HBF_BitmapSize(hbf)\
+ (HBF_RowSize(hbf) * hbfBitmapBBox(hbf)->hbf_height)
+
+#define HBF_GetBit(hbf,bitmap,x,y)\
+ (((bitmap)[(y)*HBF_RowSize(hbf) + (x)/8]>>(7 - (x)%8))&01)
+
+extern int hbfDebug; /* set non-zero for error reporting */
+
+extern const void *hbfGetCodeRange(
+#ifdef __STDC__
+ HBF *hbfFile,
+ const void *code_pointer,
+ HBF_CHAR *startp,
+ HBF_CHAR *finishp
+#endif
+ );
+
+extern const void *hbfGetByte2Range(
+#ifdef __STDC__
+ HBF *hbfFile,
+ const void *b2r_pointer,
+ unsigned char *startp,
+ unsigned char *finishp
+#endif
+ );
+
+/*
+ * #2: taken from Appendix 2 of the HBF draft.
+ */
+
+typedef unsigned int HBF_HzCode;
+typedef unsigned char HBF_Byte ;
+typedef HBF_Byte * HBF_BytePtr ;
+typedef HBF * HBF_Handle ;
+typedef HBF_Handle * HBF_HandlePtr ;
+typedef char * String ;
+
+extern int HBF_OpenFont(
+#ifdef __STDC__
+ const char * filename,
+ HBF_HandlePtr ptrHandleStorage
+#endif
+);
+
+extern int HBF_CloseFont(
+#ifdef __STDC__
+ HBF_Handle handle
+#endif
+);
+
+extern const char * HBF_GetProperty(
+#ifdef __STDC__
+ HBF_Handle handle,
+ const char * propertyName
+#endif
+);
+
+extern int HBF_GetFontBoundingBox(
+#ifdef __STDC__
+ HBF_Handle handle,
+ unsigned int *width,
+ unsigned int *height,
+ int *xDisplacement,
+ int *yDisplacement
+#endif
+);
+
+extern int HBF_GetBitmapBoundingBox(
+#ifdef __STDC__
+ HBF_Handle handle,
+ unsigned int *width,
+ unsigned int *height,
+ int *xDisplacement,
+ int *yDisplacement
+#endif
+);
+
+extern int HBF_GetBitmap(
+#ifdef __STDC__
+ HBF_Handle handle,
+ HBF_HzCode hanziCode,
+ HBF_BytePtr ptrBitmapBuffer
+#endif
+);
+
+#endif /* ! _HBF_ */
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.1 b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.1
new file mode 100644
index 0000000000..c856eff1c9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.1
@@ -0,0 +1,718 @@
+.\" man page for hbf2gf
+.\"
+.\" Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+.\"
+.\" 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 in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.\"
+.
+.TH HBF2GF 1 16-Oct-2021 "CJK Version 4.8.5"
+.SH NAME
+hbf2gf \- convert a CJK bitmap font into subfonts usable by TeX and Omega.
+.
+.
+.SH SYNOPSIS
+.na
+.nh
+.B hbf2gf
+.RB [ \-q ]
+.IR \%configuration-file [ .cfg ]
+.br
+.B hbf2gf
+'in +\n(.ku
+.RB [ \-q ]
+.RB [ \-p ]
+.RB [ \-g ]
+.RB [ \-n ]
+.I \%subfont-name \%x-resolution
+.RI [ \%y-scale \ | \ \%y-resolution ]
+.br
+.in
+.B hbf2gf
+.B \-t
+.RB [ \-q ]
+.I \%subfont-name
+.br
+.B "hbf2gf \-\-version"
+|
+.B \-\-help
+.ad
+.hy
+.
+.
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\h'-0.1667m'\v'0.20v'E\v'-0.20v'\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a definition for \Delta
+.if t .ds DE \(*D
+.if n .ds DE Delta_
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP\\$2
+..
+.\}
+.if n \{\
+.de C
+\\$1\\$2
+..
+.\}
+.
+.\" an addition to .TP to allow two labels for the same item
+.de TQ
+.br
+.ns
+.TP
+..
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH DESCRIPTION
+CJK bitmap fonts can't be directly used with \*(TX
+because the number of characters in such fonts exceeds\ 256, the limit of a
+\*(TX
+font.
+Thus it is necessary to split these fonts into subfonts, and this is
+exactly what
+.B hbf2gf
+does.
+.PP
+As the name says,
+.B hbf2gf
+uses CJK fonts in a certain format which is called
+.B Hanzi Bitmap Font
+.RB ( HBF )
+format.
+It simply consists of the CJK bitmap file(s) and a text file in a format
+very similar to the BDF format of the X\ Window System which describes the
+bitmap font files: the encoding, the size, etc.
+The produced
+.C GF
+files can then be converted with
+.B gftopk
+into standard
+.C PK
+files.
+.PP
+.B hbf2gf
+can be called in three modes:
+.
+.PP
+.in +2m
+.B hbf2gf
+.RB [ \-q ]
+.IR configuration-file [ .cfg ]
+.PP
+.in +5m
+This call normally creates a set of
+.C GF
+files, one
+.C PL
+file, and a batch file which must be executed after
+.B hbf2gf
+has finished.
+This script will then call
+.B gftopk
+to convert all
+.C GF
+files into
+.C PK
+files, and it will call
+.B pltotf
+to convert the
+.C PL
+file into a
+.C TFM
+file.
+Finally it will copy the
+.C TFM
+file so that each
+.C PK
+file has its
+.C TFM
+file (which are all identical).
+.PP
+.in +5m
+If
+.B ofm_file
+is set to \(oqyes\(cq in the configuration file,
+.C OFM
+and
+.C OVF
+files will be created too.
+.
+.PP
+.in +5m
+.B \-q
+makes
+.B hbf2gf
+quiet.
+.PP
+.in +2m
+.na
+.nh
+.B hbf2gf
+'in +\n(.ku
+.RB [ \-q ]
+.RB [ \-p ]
+.RB [ \-g ]
+.RB [ \-n ]
+.I \%subfont-name \%x-resolution
+.RI [ \%y-scale \ | \ \%y-resolution ]
+.ad
+.hy
+.PP
+.in +5m
+This mode is intended for use with
+.B \%mktexpk
+and its derivates.
+Only one
+.C GF
+file together with a
+.C PL
+file for the given subfont will be computed, taking the horizontal
+resolution and a vertical scaling factor (if the value is smaller than\ 10)
+resp. the vertical resolution (otherwise) from the command line, ignoring
+the
+.B nmb_fonts
+parameter of the configuration file.
+The last two characters (which are interpreted as the subfont number) are
+stripped to get the name for the configuration file (which must end with
+\(oq\c
+.C \&.cfg \(cq).
+No job file will be created.
+If option
+.B \-p
+is set, no
+.C PL
+file is created.
+If
+.B \-g
+is set, no
+.C GF
+file is created.
+The extension can be controlled with
+.BR \-n ;
+if set, the extension is \(oq\c
+.C \&.gf \(cq,
+otherwise \(oq\c
+.C \&. <\c
+.IR resolution >\c
+.C gf \(cq.
+.B \-q
+makes
+.B hbf2gf
+quiet.
+.
+.PP
+.in +2m
+.na
+.nh
+.B hbf2gf
+'in +\n(.ku
+.B \-t
+.RB [ \-q ]
+.I \%subfont-name
+.ad
+.hy
+.PP
+.in +5m
+This mode is intended for use with scripts like
+.BR \%mktexpk ;
+it tests whether the specified subfont name leads to an
+.B hbf2gf
+configuration file.
+It returns 0 on success and prints out the name of that configuration file
+(provided the
+.B \-q
+switch isn't set).
+This test isn't a thorough one; it only removes the last two characters
+and checks whether a configuration file with that name exists.
+.PP
+See the next section for more details about configuration files.
+.PP
+Specifying the option
+.B \-\-version
+returns the current version of
+.B hbf2gf
+and the used file search library (e.g.\ \c
+.BR kpathsea ).
+Usage information is shown with the
+.B \-\-help
+parameter.
+.
+.
+.SH "CONFIGURATION FILE"
+Here a sample configuration file (\c
+.C gsfs14.cfg )
+for a 56\(mu56 Chinese font in GB encoding; note that all information
+about the font is in the
+.C jfs56.hbf
+file.
+See the
+.B "FILE SEARCHING"
+section how HBF fonts and
+.B hbf2gf
+configuration files are found.
+See the
+.B AVAILABILITY
+section where to get CJK fonts together with its
+.C HBF
+files:
+.PP
+.if t \fC
+.nf
+ hbf_header jfs56.hbf
+ mag_x 1
+ threshold 128
+ comment jianti fansongti 56x56 pixel font
+
+ design_size 14.4
+
+ y_offset \-13
+
+ nmb_files \-1
+
+ output_name gsfs14
+
+ checksum 123456789
+
+ dpi_x 300
+
+ pk_files no
+ tfm_files yes
+
+ coding codingscheme GuoBiao encoded TeX text
+
+ pk_directory $HBF_TARGET/pk/modeless/gb2312/gsfs14/
+ tfm_directory $HBF_TARGET/tfm/gb2312/gsfs14/
+.fi
+.if t \fP
+.PP
+A configuration file is a plain text file consisting of keywords and its
+arguments.
+A keyword must start a line, otherwise the whole line will be ignored.
+If the word starting a line is not a keyword, the line will be ignored too.
+Empty lines will also be skipped.
+The search for keywords is case insensitive; in contrast, the arguments will
+be taken exactly as given (except \(oqyes\(cq and \(oqno\(cq which can be written with
+uppercase or lowercase letters).
+Each keyword has one argument which must be separated by whitespace (blanks
+or tabs) from the keyword and must be on the same line.
+Each line must not be longer than 256 characters.
+.PP
+You can use environment variables in the configuration file.
+The escape character starting an environment variable in the configuration
+file is always \(oq\c
+.C $ \(cq,
+even for operating systems like DOS which has other conventions.
+.B hbf2gf
+recognizes only environment variable names which start with a letter or an
+underscore, followed by alphanumeric characters or underscores.
+You can surround the variable with braces to indicate where the variable
+name ends, for example
+.C ${FOO} .
+To get a dollar sign you must write \(oq\c
+.C $$ \(cq.
+The expansion of environment variables in hbf2gf itself (without the help of
+either kpathsea, emtexdir, or MiKTeX searching routines) is very limited;
+this feature has been carried over from previous versions.
+It can't expand variables set in texmf.cnf; it also can't handle more than
+one directory as the variable's value.
+.B Don't use it except for the \(oqpk_directory\(cq and \(oqtfm_directory\(cq
+.B parameters!
+.PP
+This is the list of all necessary keywords:
+.TP
+.B hbf_header
+The HBF header file name of the input font(s).
+.B hbf2gf
+uses the given searching mechanism (kpathsea, emtexdir, or MiKTeX) to locate
+this file.
+.TP
+.B output_name
+The name stem of the output files.
+A running two digit decimal number starting with \(oq\c
+.C 01 \(cq
+will be appended.
+For Unicode fonts see the keyword
+.B unicode
+below.
+This value is in almost all cases identical to the name of the configuration
+file.
+.PP
+And now all optional keywords:
+.TP
+.B x_offset
+Increases the character width.
+Will be applied on both sides; default for non-rotated glyphs is the value
+given in the HBF header
+.RB ( HBF_BITMAP_BOUNDING_BOX )
+scaled to
+.B design_size
+(in pixels).
+.TP
+.B y_offset
+Shifts all characters up or down; default for non-rotated glyphs is the value
+given in the HBF header
+.RB ( HBF_BITMAP_BOUNDING_BOX )
+scaled to
+.B design_size
+(in pixels).
+.TP
+.B design_size
+The design size (in points) of the font.
+.B x_offset
+and
+.B y_offset
+refer to this size.
+Default is\ 10.0.
+.TP
+.B slant
+The slant of the font (given as \*(DEx\ /\ \*(DEy).
+Only values in the range 0\ \(<=\ \fBslant\fP\ \(<=\ 1 are allowed.
+Default is\ 0.0.
+.TP
+.B rotation
+If set to \(oqyes\(cq, all glyphs will be rotated 90\ degrees counter-clockwise.
+The default offsets as given in the HBF header will be ignored (and set
+to\ 0).
+Default is \(oqno\(cq.
+.TP
+.B mag_x
+.TQ
+.B mag_y
+Scaling values of the characters to reach design size.
+If only one magnification is given, x and y values are assumed to be equal.
+Default is \fBmag_x\fP\ =\ \fBmag_y\fP\ =\ 1.0.
+.PP
+.TP
+.B threshold
+A value between 1 and\ 254 defining a threshold for converting the internal
+graymap into the output bitmap; lower values cut more pixels.
+Default value is\ 128.
+.PP
+.TP
+.B comment
+A comment describing the font; default is none.
+.PP
+.TP
+.B nmb_fonts
+The number of subfonts to create.
+Default value is \-1 for creating all fonts.
+.TP
+.B unicode
+If \(oqyes\(cq, a two digit hexadecimal number will be used as a running number,
+starting with the value of the first byte of the first code range.
+Default is \(oqno\(cq.
+.TP
+.B min_char
+The minimum value of the encoding.
+You should set this value to get correct subfile offsets if it is not
+identical to the lowest character code in the HBF file.
+.PP
+.TP
+.B dpi_x
+.TQ
+.B dpi_y
+The horizontal and vertical resolution (in dpi) of the printer.
+If only one resolution is given, x and y values are assumed to be equal.
+Default is\ 300.
+.TP
+.B checksum
+A checksum to identify the
+.C GF
+files with the appropriate
+.C TFM
+files.
+The default value of this unsigned 32bit integer is\ 0.
+.TP
+.B coding
+A comment describing the coding scheme; default is none.
+.PP
+.TP
+.B pk_directory
+The destination directory of the
+.C PK
+files; default: none.
+Attention!
+The batch file will not check whether this directory exists.
+.TP
+.B tfm_directory
+The destination directory of the
+.C TFM
+files; default: none.
+Attention!
+The batch file will not check whether this directory exists.
+.TP
+.B pk_files
+Whether to create
+.C PK
+files or not; default is \(oqyes\(cq.
+.TP
+.B tfm_files
+Whether to create
+.C TFM
+files or not; default is \(oqyes\(cq.
+.TP
+.B ofm_file
+Whether to create an
+.C OPL
+file or not; default is \(oqno\(cq.
+The batch file will then use
+.B ovp2ovf
+of the Omega distribution to convert it into an
+.C OFM
+and an
+.C OVF
+file.
+The
+.C OPL
+file simply maps all subfonts back to a single Omega font.
+.TP
+.B long_extension
+If \(oqyes\(cq,
+.C PK
+files will include the resolution in the extension (e.g.
+.C gsso1201.300pk ).
+This affects the batch file only (default is \(oqyes\(cq).
+.TP
+.B rm_command
+The shell command to remove files; default: \(oqrm\(cq.
+.TP
+.B cp_command
+The shell command to copy files; default: \(oqcp\(cq.
+.TP
+.B job_extension
+The extension of the batch file which calls
+.B gftopk
+and
+.B pltotf
+to convert the
+.C GF
+and the
+.C PL
+files into
+.C PK
+and
+.C TFM
+files respectively; default is none.
+.
+.
+.SH "FILE SEARCHING"
+.B hbf2gf
+uses either the
+.BR kpathsea ,
+.BR emtexdir ,
+or
+.B MiKTeX
+library for searching files
+.RB ( emtexdir
+will work only on operating systems which have an MS-DOSish background,
+i.e., MS-DOS, OS/2, Windows;
+.B MiKTeX
+is for Win32 systems).
+.
+.SS kpathsea
+The actual version of kpathsea is displayed on screen if you call
+.B hbf2gf
+.BR \-\-version .
+.PP
+Here is a table of the file type and the corresponding
+.B kpathsea
+variables.
+.PP
+.in +4m
+.ta 2i
+.br
+.C "\&.hbf MISCFONTS"
+.br
+.C "\&.cfg HBF2GFINPUTS"
+.PP
+Please consult the info files of
+.B kpathsea
+for details on these variables.
+The decision which naming scheme to use for variables will be done during
+compilation.
+.PP
+You should set the
+.C TEXMFCNF
+variable to the directory where your
+.C texmf.cnf
+configuration file resides.
+.PP
+Here is the proper command to find out to which value a
+.B kpathsea
+variable is set (we use
+.C MISCFONTS
+as an example).
+This is especially useful if a variable isn't set in
+.C texmf.cnf
+or in the environment, thus pointing to the default value which is
+hard-coded into the
+.B kpathsea
+library.
+.PP
+.in +2m
+.C "kpsewhich \-progname=hbf2gf \-expand\-var='$MISCFONTS'"
+.PP
+We select the program name also since it is possible to specify
+variables which are searched only for a certain program \(en in our
+example it would be
+.C MISCFONTS.hbf2gf .
+.PP
+A similar but not identical method is to say
+.PP
+.in +2m
+.C "kpsewhich \-progname=hbf2gf \-show\-path='misc fonts'"
+.PP
+[A full list of format types can be obtained by saying \(oq\c
+.C "kpsewhich \-\-help" \(cq
+on the command line prompt.]
+This is exactly how
+.B hbf2gf
+searches for files; the disadvantage is that all variables are expanded
+which can cause very long strings.
+.
+.SS emtexdir
+.PP
+Here the list of suffixes and its related environment variables to be set in
+.C autoexec.bat
+(resp. in
+.C config.sys
+for OS/2):
+.PP
+.in +4m
+.ta 2i
+.br
+.C "\&.hbf HBFONTS"
+.br
+.C "\&.cfg HBFCFG"
+.PP
+If one of the variables isn't set, a warning message is emitted.
+The current directory will always be searched.
+As usual, one exclamation mark appended to a directory path causes
+subdirectories one level deep to be searched, two exclamation marks causes
+all subdirectories to be searched.
+Example:
+.PP
+.in +2m
+.C HBFONTS=c:\\\\fonts\\\\hbf!!;d:\\\\myfonts\\\\hbf!
+.PP
+Constructions like \(oq\c
+.C c:\\\\fonts!!\\\\hbf \(cq
+aren't possible.
+.
+.SS MikTeX
+.PP
+Please consult the documentation files of
+.B MiKTeX
+for more details.
+.
+.
+.SH LIMITATIONS
+The x and y output size must not exceed
+.BR MAX_CHAR_SIZE ,
+which is defined at compile time; its default value is 1023\ (pixel).
+.
+.
+.SH "SEE ALSO"
+.BR ttf2pk (1)
+.PP
+.C hbf2gf.w :
+'in +\n(.ku
+this is the source code written in
+.B CWEB
+which can be converted into a pretty-printed \*(TX
+document using
+.BR cweave .
+The CJK package also contains a preformatted
+.C hbf2gf.pdf
+file.
+.PP
+the
+.B CJK
+documentation files (\c
+.C hbf2gf.txt ).
+.PP
+the
+.B Hanzi Bitmap File
+.RB ( HBF )
+standard version\ 1.3; available at
+.C \%ftp.ifcss.org .
+.PP
+the Omega documentation available at
+.C ftp.ens.fr
+and the CTAN hosts and mirrors.
+.
+.
+.SH FILES
+.TP
+.C *.cfg
+The
+.B hbf2gf
+configuration scripts.
+.TP
+.C *.hbf
+HBF header files which describe fixed-width bitmap fonts.
+Note that the bitmap font name(s) themselves as specified in the header files
+are irrelevant for
+.BR hbf2gf .
+.
+.
+.SH AVAILABILITY
+.B hbf2gf
+is part of the CJK macro package for \*(LE
+available at the CTAN hosts and its mirrors.
+.PP
+CJK fonts together with HBF header files can be found at
+.C ftp.ifcss.org
+and its mirrors.
+.
+.
+.SH AUTHORS
+Werner Lemberg
+.C <wl@gnu.org>
+.br
+Ross Paterson (the HBF API)
+.C <ross@soi.city.ac.uk>
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.c b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.c
new file mode 100644
index 0000000000..c6f666581d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.c
@@ -0,0 +1,2250 @@
+#define banner \
+"hbf2gf (CJK ver. 4.8.5)" \
+ \
+
+#define TRUE 1
+#define FALSE 0 \
+
+#define STRING_LENGTH 255 \
+
+#define FILE_NAME_LENGTH 1024 \
+ \
+
+#define VERSION \
+"\n" \
+"Copyright (C) 1996-1999 Werner Lemberg.\n" \
+"There is NO warranty. You may redistribute this software\n" \
+"under the terms of the GNU General Public License\n" \
+"and the HBF library copyright.\n" \
+"\n" \
+"For more information about these matters, see the files\n" \
+"named COPYING and hbf.c.\n" \
+"\n" \
+
+#define USAGE \
+"\n" \
+"Usage: hbf2gf [-q] configuration_file[.cfg]\n" \
+" hbf2gf [options] font_name x_resolution [y_scale | y_resolution]\n" \
+" hbf2gf -t [-q] font_name\n" \
+"\n" \
+" Convert a font in HBF format to TeX's GF resp. PK format.\n" \
+"\n" \
+" -q be silent\n" \
+" -p don't produce a PL file\n" \
+" -g don't produce a GF file\n" \
+" -n use no resolution in extension (only `.gf')\n" \
+" -t test for font_name (returns 0 on success)\n" \
+" --help print this message and exit\n" \
+" --version print version number and exit\n" \
+"\n" \
+
+#define GF_ID 131
+#define PRE 247 \
+
+#define header " hbf2gf output " \
+
+#define BOC 67
+#define BOC1 68
+#define EOC 69 \
+
+#define _2_16 65536.0
+#define _2_20 1048576.0 \
+
+#define XXX1 239
+#define XXX2 240
+#define XXX3 241
+#define XXX4 242 \
+
+#define YYY 243 \
+
+#define POST 248 \
+
+#define CHAR_LOC 245
+#define CHAR_LOC0 246 \
+
+#define POSTPOST 249
+#define POSTPOST_ID 223 \
+
+#define BLACK 1
+#define WHITE 0 \
+
+#define PIXEL_MAXVAL 255
+#define SCALE 4096
+#define HALFSCALE 2048 \
+
+#define MAX_CHAR_SIZE 1023 \
+
+#define PAINT_(x) (x)
+#define PAINT1 64
+#define PAINT2 65
+#define PAINT3 66 \
+
+#define SKIP0 70
+#define SKIP1 71
+#define SKIP2 72
+#define SKIP3 73 \
+
+#define NEW_ROW_(x) ((x) +74) \
+
+#define NOOP 244 \
+
+#define EXTENSION_LENGTH 8 \
+
+#define GFTOPK_NAME "gftopk"
+#define PLTOTF_NAME "pltotf"
+#define OVP2OVF_NAME "ovp2ovf" \
+
+#define PRINTER_MIN_RES_X 50
+#define PRINTER_MIN_RES_Y 50 \
+
+#define VALID_SUBCODE 1 \
+
+/*4:*/
+#line 191 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+/*10:*/
+#line 408 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_CONFIG_H
+#include <c-auto.h>
+#endif
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#ifdef TM_IN_SYS_TIME
+#include <sys/time.h>
+#endif
+#include "hbf.h"
+
+
+
+/*:10*//*69:*/
+#line 2473 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+#if defined(HAVE_LIBKPATHSEA)
+#include "kpathsea/kpathsea.h"
+
+#elif defined(HAVE_EMTEXDIR)
+#include "emtexdir.h"
+
+#elif defined(HAVE_MIKTEX)
+#include "miktex.h"
+#endif
+
+/*:69*/
+#line 192 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+/*11:*/
+#line 429 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_file(void);
+
+
+/*:11*//*13:*/
+#line 491 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_pre(void);
+
+
+/*:13*//*16:*/
+#line 579 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_data(void);
+
+
+/*:16*//*20:*/
+#line 690 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_post(void);
+
+
+/*:20*//*25:*/
+#line 834 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void fputl(long,FILE*);
+
+
+/*:25*//*29:*/
+#line 994 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void make_pixel_array(void);
+
+
+/*:29*//*36:*/
+#line 1222 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void read_row(unsigned char*);
+
+
+/*:36*//*39:*/
+#line 1274 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void write_row(unsigned char*);
+
+
+/*:39*//*41:*/
+#line 1329 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_coding(void);
+
+
+/*:41*//*45:*/
+#line 1490 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_pl(void);
+
+
+/*:45*//*47:*/
+#line 1587 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_ovp(void);
+
+
+/*:47*//*50:*/
+#line 1732 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_job(void);
+
+
+/*:50*//*54:*/
+#line 1981 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void read_config(void);
+
+
+/*:54*//*64:*/
+#line 2312 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static int fsearch(const char*);
+
+
+/*:64*//*67:*/
+#line 2451 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void config_error(const char*);
+
+
+/*:67*//*71:*/
+#line 2494 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static const char*TeX_search_version(void);
+
+
+/*:71*//*74:*/
+#line 2529 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_EMTEXDIR
+extern int setup_list(struct emtex_dir*,char*,const char*,unsigned);
+static int dir_setup(struct emtex_dir*,const char*,const char*,unsigned);
+static char*file_find(char*,struct emtex_dir*);
+#endif
+
+
+/*:74*//*79:*/
+#line 2621 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static char*TeX_search_cfg_file(char*);
+static char*TeX_search_hbf_file(char*);
+
+
+/*:79*/
+#line 193 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+/*2:*/
+#line 127 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+int nmb_files= -1;
+int unicode= FALSE;
+
+int testing= FALSE;
+
+int mf_like= FALSE;
+int file_number= 0;
+
+double x_resolution= 0.0;
+double y_scale= 1.0;
+
+int pk_files= TRUE;
+int tfm_files= TRUE;
+int long_extension= TRUE;
+int quiet= FALSE;
+
+char config_file[FILE_NAME_LENGTH+4+1];
+
+char output_name[STRING_LENGTH+1];
+
+FILE*config,*out;
+HBF*hbf;
+
+#ifdef msdos
+#define WRITE_BIN "wb"
+#define WRITE_TXT "wt"
+#define READ_BIN "rb"
+#define READ_TXT "rt"
+#else
+#define WRITE_BIN "w"
+#define WRITE_TXT "w"
+#define READ_BIN "r"
+#define READ_TXT "r"
+#endif
+
+int end_of_file= FALSE;
+
+
+/*:2*//*15:*/
+#line 538 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+long char_adr[256];
+long*char_adr_p;
+
+int pk_offset_x;
+
+
+double tfm_offset_x;
+int pk_offset_y;
+
+double tfm_offset_y;
+
+int input_size_x;
+int input_size_y;
+const char*font_encoding;
+int pk_width;
+int pk_output_size_x;
+
+double tfm_output_size_x;
+int pk_output_size_y;
+double tfm_output_size_y;
+
+double design_size= 10.0;
+double target_size_x;
+double target_size_y;
+double magstep_x;
+double magstep_y;
+double slant;
+int rotation;
+
+double mag_x;
+double mag_y;
+
+int empty_char;
+int last_char;
+
+int dot_count;
+
+
+
+/*:15*//*19:*/
+#line 667 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+char coding[STRING_LENGTH+1];
+char comment[STRING_LENGTH+1];
+
+unsigned long checksum;
+
+long pk_total_min_x;
+long pk_total_max_x;
+long pk_total_min_y;
+long pk_total_max_y;
+
+int dpi_x;
+int dpi_y;
+double ppp_x;
+double ppp_y;
+
+
+/*:19*//*27:*/
+#line 871 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+HBF_CHAR code;
+const unsigned char*bitmap;
+
+const unsigned char*bP;
+
+unsigned char out_char[MAX_CHAR_SIZE*MAX_CHAR_SIZE+1];
+
+unsigned char*out_char_p;
+
+unsigned char pixelrow[MAX_CHAR_SIZE];
+unsigned char temp_pixelrow[MAX_CHAR_SIZE];
+unsigned char new_pixelrow[MAX_CHAR_SIZE+1];
+
+int curr_row;
+
+long grayrow[MAX_CHAR_SIZE];
+
+long s_mag_x,s_mag_y,s_slant;
+
+
+/*:27*//*38:*/
+#line 1269 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+int threshold= 128;
+
+
+/*:38*//*49:*/
+#line 1721 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+char job_extension[EXTENSION_LENGTH+1];
+char rm_command[STRING_LENGTH+1];
+char cp_command[STRING_LENGTH+1];
+char pk_directory[STRING_LENGTH+1];
+char tfm_directory[STRING_LENGTH+1];
+
+int ofm_file= FALSE;
+
+
+/*:49*//*53:*/
+#line 1976 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+char Buffer[STRING_LENGTH+1];
+
+
+/*:53*//*58:*/
+#line 2094 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+int offset_x;
+int offset_y;
+
+HBF_CHAR user_min_char;
+int have_min_char= FALSE;
+
+/*:58*//*60:*/
+#line 2251 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+HBF_CHAR min_char,max_char;
+
+
+/*:60*//*62:*/
+#line 2278 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+char b2_codes[256];
+unsigned char min_2_byte,max_2_byte;
+int nmb_2_bytes= 0;
+
+
+/*:62*//*70:*/
+#line 2485 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+#if defined(HAVE_EMTEXDIR)
+char emtex_version_string[]= "emTeXdir";
+#elif !defined(HAVE_MIKTEX)
+char no_version_string[]= "no search library";
+#endif
+
+
+/*:70*//*73:*/
+#line 2522 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_EMTEXDIR
+struct emtex_dir cfg_path,hbf_path;
+#endif
+
+
+/*:73*//*76:*/
+#line 2569 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_EMTEXDIR
+char name_buffer[FILE_NAME_LENGTH+1];
+#endif
+
+
+/*:76*/
+#line 194 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+
+
+int main(int argc,char*argv[])
+{char*p;
+
+/*78:*/
+#line 2594 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+#if defined(HAVE_LIBKPATHSEA)
+kpse_set_program_name(argv[0],"hbf2gf");
+kpse_init_prog("HBF2GF",300,"cx","cmr10");
+
+#elif defined(HAVE_EMTEXDIR)
+if(!dir_setup(&cfg_path,"HBFCFG",NULL,EDS_BANG))
+{fprintf(stderr,
+"Couldn't setup search path for configuration files\n");
+exit(1);
+}
+if(!dir_setup(&hbf_path,"HBFONTS",NULL,EDS_BANG))
+{fprintf(stderr,
+"Couldn't setup search path for HBF header files\n");
+exit(1);
+}
+#endif
+
+
+/*:78*/
+#line 200 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+
+/*7:*/
+#line 307 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+if(argc==2)
+{if(strcmp(argv[1],"--help")==0)
+/*6:*/
+#line 288 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{printf(USAGE);
+exit(0);
+}
+
+
+/*:6*/
+#line 310 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+else if(strcmp(argv[1],"--version")==0)
+/*5:*/
+#line 261 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{printf("\n");
+printf(banner);
+printf(" (%s)\n",TeX_search_version());
+printf(VERSION);
+exit(0);
+}
+
+
+/*:5*/
+#line 312 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+}
+
+while(argc> 1)
+{p= argv[1];
+if(p[0]!='-')
+break;
+if(p[1]=='p')
+tfm_files= FALSE;
+else if(p[1]=='g')
+pk_files= FALSE;
+else if(p[1]=='n')
+long_extension= FALSE;
+else if(p[1]=='q')
+quiet= TRUE;
+else if(p[1]=='t')
+testing= TRUE;
+
+argv++;
+argc--;
+}
+
+if(testing)
+{if(argc!=2)
+{fprintf(stderr,"Need exactly one parameter for `-t' option.\n");
+fprintf(stderr,"Try `hbf2gf --help' for more information.\n");
+exit(1);
+}
+}
+else if(argc<2||argc> 4)
+{fprintf(stderr,"Invalid number of parameters.\n");
+fprintf(stderr,"Try `hbf2gf --help' for more information.\n");
+exit(1);
+}
+
+
+/*:7*/
+#line 202 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+
+if(!quiet)
+printf("\n%s\n\n",banner);
+
+strncpy(config_file,argv[1],FILE_NAME_LENGTH);
+config_file[FILE_NAME_LENGTH]= '\0';
+
+if(argc> 2||testing)
+{int l= strlen(config_file);
+
+if(l> 2)
+config_file[l-2]= '\0';
+
+else
+{if(!quiet)
+printf("`%s' can't be a subfont created by hbf2gf\n",
+config_file);
+exit(2);
+}
+
+mf_like= TRUE;
+}
+
+read_config();
+
+if(mf_like)
+/*8:*/
+#line 352 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{if(unicode)
+file_number= (int)strtol(&argv[1][strlen(argv[1])-2],
+(char**)NULL,16);
+else
+file_number= atoi(&argv[1][strlen(argv[1])-2]);
+
+x_resolution= atof(argv[2]);
+if(x_resolution<PRINTER_MIN_RES_X)
+{fprintf(stderr,"Invalid horizontal resolution\n");
+exit(1);
+}
+
+if(argc> 3)
+{y_scale= atof(argv[3]);
+if(y_scale<0.01)
+{fprintf(stderr,
+"Invalid vertical scaling factor or resolution\n");
+exit(1);
+}
+if(y_scale> 10.0)
+y_scale= (double)x_resolution/y_scale;
+}
+}
+
+
+/*:8*/
+#line 229 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+
+/*28:*/
+#line 903 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{int col,offset;
+
+if(rotation)
+{int tmp;
+
+
+tmp= input_size_x;
+input_size_x= input_size_y;
+input_size_y= tmp;
+}
+
+if(mf_like)
+{target_size_x= design_size*(x_resolution/dpi_x);
+target_size_y= design_size*(x_resolution*y_scale/dpi_y);
+}
+else
+target_size_x= target_size_y= design_size;
+magstep_x= target_size_x/design_size;
+magstep_y= target_size_y/design_size;
+
+pk_offset_x= offset_x*magstep_x+0.5;
+pk_offset_y= offset_y*magstep_y+0.5;
+tfm_offset_x= offset_x/(dpi_x/72.27)/design_size;
+tfm_offset_y= offset_y/(dpi_y/72.27)/design_size;
+
+pk_width= input_size_x*mag_x*magstep_x+0.5;
+pk_output_size_x= input_size_x*mag_x*magstep_x+
+input_size_y*mag_y*magstep_y*slant+0.5;
+pk_output_size_y= input_size_y*mag_y*magstep_y+0.5;
+tfm_output_size_x= input_size_x*mag_x/
+(dpi_x/72.27)/design_size;
+tfm_output_size_y= input_size_y*mag_y/
+(dpi_y/72.27)/design_size;
+if(pk_output_size_x> MAX_CHAR_SIZE)
+{fprintf(stderr,"Output character box width too big\n");
+exit(1);
+}
+if(pk_output_size_y> MAX_CHAR_SIZE)
+{fprintf(stderr,"Output character box height too big\n");
+exit(1);
+}
+
+for(col= 0;col<input_size_x;++col)
+grayrow[col]= HALFSCALE;
+
+if(!mf_like)
+code= (min_char&0xFF00)+min_2_byte;
+else
+{if((file_number<(unicode?0:1))||(file_number>=0x100))
+{fprintf(stderr,"Invalid subfile number\n");
+exit(1);
+}
+
+if(unicode)
+{offset= 0;
+code= file_number*0x100;
+}
+else
+{offset= (file_number-1)*256%nmb_2_bytes;
+code= (min_char&0xFF00)+min_2_byte+
+(file_number-1)*256/nmb_2_bytes*0x100;
+}
+
+while(offset--)
+while(!b2_codes[code++&0xFF])
+
+;
+
+if(code> max_char)
+{fprintf(stderr,"Invalid subfile number\n");
+exit(1);
+}
+}
+
+s_mag_x= mag_x*magstep_x*SCALE;
+s_mag_y= mag_y*magstep_y*SCALE;
+s_slant= slant*SCALE;
+}
+
+
+/*:28*/
+#line 231 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+
+/*9:*/
+#line 387 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{int j,max_numb;
+
+if(!mf_like)
+{file_number= (unicode==TRUE?(min_char>>8):1);
+if(nmb_files==-1)
+max_numb= (unicode==TRUE?0x100:100);
+else
+max_numb= nmb_files;
+}
+else
+max_numb= 1;
+
+for(j= 0;(j<max_numb)&&!end_of_file;file_number++,j++)
+write_file();
+
+nmb_files= j;
+}
+
+
+/*:9*/
+#line 233 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+
+if(tfm_files)
+write_pl();
+if(ofm_file)
+write_ovp();
+if(!mf_like)
+write_job();
+
+hbfClose(hbf);
+
+exit(0);
+return 0;
+}
+
+
+/*:4*//*12:*/
+#line 437 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_file(void)
+{char output_file[FILE_NAME_LENGTH+1];
+
+
+if(pk_files)
+{if(mf_like)
+{if(unicode)
+sprintf(output_file,"%s%02x.%.0igf",
+output_name,file_number,
+long_extension?(int)(x_resolution+0.5):0);
+else
+sprintf(output_file,"%s%02i.%.0igf",
+output_name,file_number,
+long_extension?(int)(x_resolution+0.5):0);
+}
+else
+{if(unicode)
+sprintf(output_file,"%s%02x.gf",output_name,file_number);
+else
+sprintf(output_file,"%s%02i.gf",output_name,file_number);
+}
+if(!(out= fopen(output_file,WRITE_BIN)))
+{fprintf(stderr,"Couldn't open `%s'\n",output_file);
+exit(1);
+}
+if(!quiet)
+printf("Writing `%s' ",output_file);
+
+write_pre();
+write_data();
+write_post();
+fclose(out);
+
+if(!quiet)
+printf("\n");
+}
+else
+write_data();
+}
+
+
+/*:12*//*14:*/
+#line 498 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_pre(void)
+{char out_s[40],s[20];
+time_t secs_now;
+struct tm*time_now;
+
+
+strcpy(out_s,header);
+
+secs_now= time(NULL);
+time_now= localtime(&secs_now);
+strftime(s,20,"%Y.%m.%d:%H.%M",time_now);
+strcat(out_s,s);
+
+fputc(PRE,out);
+fputc(GF_ID,out);
+fputc(strlen(out_s),out);
+fputs(out_s,out);
+}
+
+
+/*:14*//*17:*/
+#line 584 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_data(void)
+{dot_count= 0;
+char_adr_p= char_adr;
+
+for(last_char= 0;(last_char<256)&&!end_of_file;last_char++)
+/*18:*/
+#line 609 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{if(dot_count++%10==0)
+if(pk_files&&!quiet)
+{printf(".");
+fflush(stdout);
+}
+
+empty_char= FALSE;
+make_pixel_array();
+if(end_of_file)
+return;
+
+if(pk_files)
+{*char_adr_p= ftell(out);
+char_adr_p++;
+
+if(empty_char)
+{fputc(BOC1,out);
+fputc((unsigned char)last_char,out);
+fputc(0,out);
+fputc(0,out);
+fputc(0,out);
+fputc(0,out);
+fputc(EOC,out);
+}
+else
+{fputc(BOC,out);
+fputl(last_char,out);
+fputl(-1L,out);
+fputl(pk_offset_x,out);
+fputl(pk_output_size_x+pk_offset_x,out);
+fputl(pk_offset_y,out);
+fputl(pk_output_size_y+pk_offset_y,out);
+
+write_coding();
+
+fputc(EOC,out);
+}
+}
+}
+
+
+/*:18*/
+#line 590 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+}
+
+
+/*:17*//*21:*/
+#line 695 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_post(void)
+{long special_adr;
+long post_adr;
+
+long designsize= design_size*_2_20;
+
+int pk_dx;
+long tfm_width;
+
+int i;
+long temp;
+
+
+ppp_x= dpi_x/72.27*magstep_x;
+ppp_y= dpi_y/72.27*magstep_y;
+
+pk_total_min_x= pk_offset_x;
+pk_total_max_x= pk_output_size_x+2*pk_offset_x;
+pk_total_min_y= pk_offset_y;
+pk_total_max_y= pk_output_size_y+pk_offset_y;
+
+pk_dx= pk_width+2*pk_offset_x;
+tfm_width= (tfm_output_size_x+2*tfm_offset_x)*_2_20;
+
+
+/*22:*/
+#line 741 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+special_adr= ftell(out);
+
+if(*coding)
+{fputc(XXX1,out);
+fputc(strlen(coding),out);
+fputs(coding,out);
+}
+
+if(*comment)
+{fputc(XXX1,out);
+fputc(strlen(comment),out);
+fputs(comment,out);
+}
+
+
+/*:22*/
+#line 721 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+/*23:*/
+#line 770 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+post_adr= ftell(out);
+fputc(POST,out);
+fputl(special_adr,out);
+
+fputl(designsize,out);
+fputl(checksum,out);
+fputl(ppp_x*_2_16,out);
+fputl(ppp_y*_2_16,out);
+fputl(pk_total_min_x,out);
+fputl(pk_total_max_x,out);
+fputl(pk_total_min_y,out);
+fputl(pk_total_max_y,out);
+
+char_adr_p= char_adr;
+
+if(pk_dx<256)
+{for(i= 0;i<last_char;i++)
+{fputc(CHAR_LOC0,out);
+fputc(i,out);
+fputc(pk_dx,out);
+fputl(tfm_width,out);
+fputl(*char_adr_p++,out);
+}
+}
+else
+{for(i= 0;i<last_char;i++)
+{fputc(CHAR_LOC,out);
+fputc(i,out);
+fputl(pk_dx*_2_16,out);
+fputl(0,out);
+fputl(tfm_width,out);
+fputl(*char_adr_p++,out);
+}
+}
+
+
+/*:23*/
+#line 722 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+/*24:*/
+#line 821 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+fputc(POSTPOST,out);
+fputl(post_adr,out);
+fputc(GF_ID,out);
+temp= ftell(out);
+i= (int)(temp%4)+4;
+while(i--)
+fputc(POSTPOST_ID,out);
+
+
+/*:24*/
+#line 723 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+}
+
+
+/*:21*//*26:*/
+#line 839 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void fputl(long num,FILE*f)
+{fputc(num>>24,f);
+fputc(num>>16,f);
+fputc(num>>8,f);
+fputc(num,f);
+}
+
+
+/*:26*//*30:*/
+#line 999 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void make_pixel_array(void)
+{unsigned char*prP;
+unsigned char*temp_prP;
+unsigned char*new_prP;
+long*grP;
+
+register unsigned char*xP;
+register unsigned char*nxP;
+
+register int row,col;
+int rows_read= 0;
+register int need_to_read_row= 1;
+
+long frac_row_to_fill= SCALE;
+long frac_row_left= s_mag_y;
+
+int no_code= FALSE;
+
+
+prP= pixelrow;
+temp_prP= temp_pixelrow;
+new_prP= new_pixelrow;
+grP= grayrow;
+out_char_p= out_char;
+
+again:
+if(b2_codes[code&0xFF])
+{if(pk_files)
+{bitmap= hbfGetBitmap(hbf,code);
+bP= bitmap;
+
+
+if(!bitmap)
+empty_char= TRUE;
+else
+/*31:*/
+#line 1058 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{if(pk_output_size_y==input_size_y)
+temp_prP= prP;
+
+curr_row= input_size_y-1;
+for(row= 0;row<pk_output_size_y;++row)
+{/*32:*/
+#line 1072 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+if(pk_output_size_y==input_size_y)
+
+read_row(prP);
+else
+{while(frac_row_left<frac_row_to_fill)
+{if(need_to_read_row)
+if(rows_read<input_size_y)
+{read_row(prP);
+++rows_read;
+}
+
+for(col= 0,xP= prP;col<input_size_x;++col,++xP)
+grP[col]+= frac_row_left*(*xP);
+
+frac_row_to_fill-= frac_row_left;
+frac_row_left= s_mag_y;
+need_to_read_row= 1;
+}
+
+/*33:*/
+#line 1099 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+if(need_to_read_row)
+if(rows_read<input_size_y)
+{read_row(prP);
+++rows_read;
+need_to_read_row= 0;
+}
+
+for(col= 0,xP= prP,nxP= temp_prP;
+col<input_size_x;++col,++xP,++nxP)
+{register long g;
+
+
+g= grP[col]+frac_row_to_fill*(*xP);
+g/= SCALE;
+if(g> PIXEL_MAXVAL)
+g= PIXEL_MAXVAL;
+
+*nxP= g;
+grP[col]= HALFSCALE;
+}
+
+frac_row_left-= frac_row_to_fill;
+if(frac_row_left==0)
+{frac_row_left= s_mag_y;
+need_to_read_row= 1;
+}
+frac_row_to_fill= SCALE;
+
+
+/*:33*/
+#line 1092 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+}
+
+
+/*:32*/
+#line 1064 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+/*34:*/
+#line 1140 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+if(pk_width==input_size_x&&s_slant==0)
+
+write_row(temp_prP);
+else
+{register long g= HALFSCALE;
+register long frac_col_to_fill= SCALE;
+register long frac_col_left;
+register int need_col= 0;
+
+
+nxP= new_prP;
+
+frac_col_left= (pk_output_size_y-row)*s_slant;
+while(frac_col_left>=frac_col_to_fill)
+{*(nxP++)= 0;
+frac_col_left-= frac_col_to_fill;
+}
+
+if(frac_col_left> 0)
+frac_col_to_fill-= frac_col_left;
+
+for(col= 0,xP= temp_prP;col<input_size_x;++col,++xP)
+{frac_col_left= s_mag_x;
+while(frac_col_left>=frac_col_to_fill)
+{if(need_col)
+{++nxP;
+g= HALFSCALE;
+}
+
+g+= frac_col_to_fill*(*xP);
+g/= SCALE;
+if(g> PIXEL_MAXVAL)
+g= PIXEL_MAXVAL;
+
+*nxP= g;
+frac_col_left-= frac_col_to_fill;
+frac_col_to_fill= SCALE;
+need_col= 1;
+}
+
+if(frac_col_left> 0)
+{if(need_col)
+{++nxP;
+g= HALFSCALE;
+need_col= 0;
+}
+
+g+= frac_col_left*(*xP);
+frac_col_to_fill-= frac_col_left;
+}
+}
+
+/*35:*/
+#line 1198 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+if(frac_col_to_fill> 0)
+{--xP;
+g+= frac_col_to_fill*(*xP);
+}
+
+if(!need_col)
+{g/= SCALE;
+if(g> PIXEL_MAXVAL)
+g= PIXEL_MAXVAL;
+*nxP= g;
+}
+
+*(++nxP)= 0;
+
+write_row(new_prP);
+
+
+/*:35*/
+#line 1193 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+}
+
+
+/*:34*/
+#line 1066 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+}
+}
+
+
+/*:31*/
+#line 1035 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+}
+}
+else
+no_code= TRUE;
+
+if((code&0xFF)==max_2_byte)
+code+= 0xFF-(max_2_byte-min_2_byte);
+if(code>=max_char)
+{end_of_file= TRUE;
+return;
+}
+
+code++;
+
+if(no_code)
+{no_code= FALSE;
+goto again;
+}
+}
+
+
+/*:30*//*37:*/
+#line 1231 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void read_row(unsigned char*pixelrow)
+{register int col,bitshift,offset;
+register unsigned char*xP;
+register unsigned char item= 0;
+
+if(rotation)
+{bitshift= 7-(curr_row%8);
+offset= (input_size_y+7)/8;
+bP= bitmap+curr_row/8;
+for(col= 0,xP= pixelrow;col<input_size_x;++col,++xP)
+{*xP= ((*bP>>bitshift)&1)==1?PIXEL_MAXVAL:0;
+bP+= offset;
+}
+curr_row--;
+}
+else
+{bitshift= -1;
+for(col= 0,xP= pixelrow;col<input_size_x;++col,++xP)
+{if(bitshift==-1)
+{item= *(bP++);
+bitshift= 7;
+}
+*xP= ((item>>bitshift)&1)==1?PIXEL_MAXVAL:0;
+--bitshift;
+}
+}
+}
+
+
+/*:37*//*40:*/
+#line 1283 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void write_row(unsigned char*pixelrow)
+{register int col;
+register unsigned char*xP;
+
+for(col= 0,xP= pixelrow;col<pk_output_size_x;++col,++xP)
+*(out_char_p++)= (*xP>=threshold)?1:0;
+
+}
+
+
+/*:40*//*42:*/
+#line 1337 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_coding(void)
+{register int count,skip;
+register unsigned char paint;
+register int x,y;
+register unsigned char*cp;
+
+x= 0;
+y= 0;
+cp= out_char+y*pk_output_size_x+x;
+count= skip= 0;
+paint= WHITE;
+goto start;
+
+while(y<pk_output_size_y)
+{/*43:*/
+#line 1361 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+count= 0;
+x= 0;
+cp= out_char+y*pk_output_size_x+x;
+
+while(x<pk_output_size_x)
+{if(*cp==paint)
+count++;
+else
+{if(skip==0)
+{if(count<=164)
+fputc(NEW_ROW_(count),out);
+else
+{fputc(SKIP0,out);
+
+if(count<256)
+{fputc(PAINT1,out);
+fputc(count,out);
+}
+else
+{fputc(PAINT2,out);
+fputc(count>>8,out);
+fputc(count&0xFF,out);
+}
+}
+}
+else
+{if(skip==1)
+fputc(SKIP0,out);
+else
+{if(skip<256)
+{fputc(SKIP1,out);
+fputc(skip,out);
+}
+else
+{fputc(SKIP2,out);
+fputc(skip>>8,out);
+fputc(skip&0xFF,out);
+}
+}
+skip= 0;
+if(count<64)
+fputc(PAINT_(count),out);
+else if(count<256)
+{fputc(PAINT1,out);
+fputc(count,out);
+}
+else
+{fputc(PAINT2,out);
+fputc(count>>8,out);
+fputc(count&0xFF,out);
+}
+}
+count= 0;
+paint= BLACK;
+break;
+}
+x++;
+cp++;
+}
+if(x>=pk_output_size_x)
+{skip++;
+y++;
+continue;
+}
+
+
+/*:43*/
+#line 1352 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+start:
+/*44:*/
+#line 1429 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+while(x<pk_output_size_x)
+{if(*cp==paint)
+count++;
+else
+{if(count<64)
+fputc(PAINT_(count),out);
+else if(count<256)
+{fputc(PAINT1,out);
+fputc(count,out);
+}
+else
+{fputc(PAINT2,out);
+fputc(count>>8,out);
+fputc(count&0xFF,out);
+}
+count= 1;
+paint= BLACK-paint;
+}
+x++;
+cp++;
+}
+if(paint==BLACK)
+{if(count<64)
+fputc(PAINT_(count),out);
+else if(count<256)
+{fputc(PAINT1,out);
+fputc(count,out);
+}
+else
+{fputc(PAINT2,out);
+fputc(count>>8,out);
+fputc(count&0xFF,out);
+}
+paint= WHITE;
+}
+
+
+
+/*:44*/
+#line 1354 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+y++;
+}
+}
+
+
+/*:42*//*46:*/
+#line 1495 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_pl(void)
+{int i,pos;
+char output_file[FILE_NAME_LENGTH+1];
+long t,sc;
+char*s;
+char tfm_header[]= "Created by hbf2gf";
+
+file_number--;
+
+if(mf_like)
+{if(unicode)
+sprintf(output_file,"%s%02x.pl",output_name,file_number);
+else
+sprintf(output_file,"%s%02i.pl",output_name,file_number);
+}
+else
+sprintf(output_file,"%s.pl",output_name);
+
+if(!(out= fopen(output_file,WRITE_TXT)))
+{fprintf(stderr,"Couldn't open `%s'\n",output_file);
+exit(1);
+}
+if(!quiet)
+printf("\nWriting `%s'\n",output_file);
+
+fprintf(out,
+"\n(FAMILY %s%d)"
+"\n(CODINGSCHEME CJK-%s)",
+output_name,file_number,font_encoding);
+
+fprintf(out,
+"\n(DESIGNSIZE R %.6f)"
+"\n(COMMENT DESIGNSIZE IS IN POINTS)"
+"\n(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)"
+"\n(CHECKSUM O %lo)"
+"\n(FONTDIMEN"
+"\n (SLANT R %.6f)"
+"\n (SPACE R 0.0)"
+"\n (STRETCH R 0.0)"
+"\n (SHRINK R 0.0)"
+"\n (XHEIGHT R 1.0)"
+"\n (QUAD R 1.0)"
+"\n (EXTRASPACE R 0.0)"
+"\n )",design_size,checksum,slant);
+
+s= tfm_header;
+i= strlen(s);
+t= ((long)i)<<24;
+sc= 16;
+pos= 18;
+
+fprintf(out,"\n");
+while(i> 0)
+{t|= ((long)(*(unsigned char*)s++))<<sc;
+sc-= 8;
+if(sc<0)
+{fprintf(out,"\n(HEADER D %d O %lo)",pos,t);
+t= 0;
+sc= 24;
+pos++;
+}
+i--;
+}
+if(t)
+fprintf(out,"\n(HEADER D %d O %lo)",pos,t);
+fprintf(out,"\n");
+
+for(i= 0;i<256;i++)
+{fprintf(out,
+"\n(CHARACTER O %o"
+"\n (CHARWD R %.6f)"
+"\n (CHARHT R %.6f)"
+"\n (CHARDP R %.6f)"
+"\n (CHARIC R %.6f)"
+"\n )",
+i,
+tfm_output_size_x+2*tfm_offset_x,
+tfm_output_size_y+tfm_offset_y,
+-tfm_offset_y,
+slant*(tfm_output_size_y+tfm_offset_y));
+}
+
+fclose(out);
+}
+
+
+
+/*:46*//*48:*/
+#line 1592 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_ovp(void)
+{int c,i,nmb_subfonts,remainder,count,pos;
+char output_file[FILE_NAME_LENGTH+1];
+long t,sc;
+char*s;
+char ofm_header[]= "Created by hbf2gf";
+
+nmb_subfonts= ((max_char-(min_char&0xFF00))/256*nmb_2_bytes)
+/256+1;
+remainder= ((max_char-(min_char&0xFF00))/256*nmb_2_bytes)
+%256;
+
+
+for(count= 0;count<(max_char&0xFF);count++)
+if(b2_codes[count])
+remainder++;
+if(remainder>=256)
+nmb_subfonts++;
+
+sprintf(output_file,"%s.ovp",output_name);
+
+if(!(out= fopen(output_file,WRITE_TXT)))
+{fprintf(stderr,"Couldn't open `%s'\n",output_file);
+exit(1);
+}
+if(!quiet)
+printf("\nWriting `%s'\n",output_file);
+
+fprintf(out,
+"\n(VTITLE Omega virtual font created by hbf2gf)"
+"\n(DESIGNSIZE R %.6f)"
+"\n(COMMENT DESIGNSIZE IS IN POINTS)"
+"\n(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)"
+"\n(CHECKSUM O %lo)"
+"\n(FONTDIMEN"
+"\n (SLANT R %.6f)"
+"\n (SPACE R 0.0)"
+"\n (STRETCH R 0.0)"
+"\n (SHRINK R 0.0)"
+"\n (XHEIGHT R 1.0)"
+"\n (QUAD R 1.0)"
+"\n (EXTRASPACE R 0.0)"
+"\n )",design_size,checksum,slant);
+
+s= ofm_header;
+i= strlen(s);
+t= ((long)i)<<24;
+sc= 16;
+pos= 18;
+
+fprintf(out,"\n");
+while(i> 0)
+{t|= ((long)(*(unsigned char*)s++))<<sc;
+sc-= 8;
+if(sc<0)
+{fprintf(out,"\n(HEADER D %d O %lo)",pos,t);
+t= 0;
+sc= 24;
+pos++;
+}
+i--;
+}
+if(t)
+fprintf(out,"\n(HEADER D %d O %lo)",pos,t);
+fprintf(out,"\n");
+
+for(i= 0;i<nmb_subfonts;i++)
+{fprintf(out,
+"\n(MAPFONT D %i"
+"\n (FONTNAME %s%02i)"
+"\n (FONTCHECKSUM O %lo)"
+"\n (FONTAT R 1.0)"
+"\n (FONTDSIZE R %.6f)"
+"\n )",i,output_name,i+1,checksum,design_size);
+}
+
+for(c= min_char,i= 0,count= 0;c<=max_char;c++)
+{if(b2_codes[c&0xFF]==VALID_SUBCODE)
+{fprintf(out,
+"\n(CHARACTER O %o"
+"\n (CHARWD R %.6f)"
+"\n (CHARHT R %.6f)"
+"\n (CHARDP R %.6f)"
+"\n (CHARIC R %.6f)"
+"\n (MAP"
+"\n (SELECTFONT D %i)"
+"\n (SETCHAR O %o)"
+"\n )"
+"\n )",
+c,
+tfm_output_size_x+2*tfm_offset_x,
+tfm_output_size_y+tfm_offset_y,
+-tfm_offset_y,
+slant*(tfm_output_size_y+tfm_offset_y),
+i,
+count);
+
+count++;
+if(count==256)
+{count= 0;
+i++;
+}
+}
+else
+continue;
+}
+
+fclose(out);
+}
+
+
+
+/*:48*//*51:*/
+#line 1737 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void write_job(void)
+{FILE*out;
+int i,j;
+char buffer[FILE_NAME_LENGTH+1];
+
+
+strcpy(buffer,output_name);
+strcat(buffer,job_extension);
+if(!(out= fopen(buffer,WRITE_TXT)))
+{fprintf(stderr,"Couldn't open `%s'\n",buffer);
+exit(1);
+}
+if(!quiet)
+printf("\nWriting `%s'\n",buffer);
+
+if(pk_files)
+{if(unicode)
+{for(i= (min_char>>8),j= 0;j<nmb_files;i++,j++)
+fprintf(out,
+"%s %s%02x.gf %s%s%02x.%.0ipk\n"
+"%s %s%02x.gf\n",
+GFTOPK_NAME,output_name,i,
+pk_directory,output_name,i,
+long_extension?(int)(dpi_x*magstep_x+0.5):0,
+rm_command,output_name,i);
+}
+else
+{for(i= 1;i<=nmb_files;i++)
+fprintf(out,
+"%s %s%02i.gf %s%s%02i.%.0ipk\n"
+"%s %s%02i.gf\n",
+GFTOPK_NAME,output_name,i,
+pk_directory,output_name,i,
+long_extension?(int)(dpi_x*magstep_x+0.5):0,
+rm_command,output_name,i);
+}
+}
+
+if(tfm_files)
+{fprintf(out,
+"\n"
+"%s %s.pl %s.tfm\n"
+"%s %s.pl\n"
+"\n",
+PLTOTF_NAME,output_name,output_name,
+rm_command,output_name);
+
+if(unicode)
+{for(i= (min_char>>8),j= 0;j<nmb_files;i++,j++)
+fprintf(out,
+"%s %s.tfm %s%s%02x.tfm\n",
+cp_command,output_name,
+tfm_directory,output_name,i);
+}
+else
+{for(i= 1;i<=nmb_files;i++)
+fprintf(out,
+"%s %s.tfm %s%s%02i.tfm\n",
+cp_command,output_name,
+tfm_directory,output_name,i);
+}
+
+fprintf(out,
+"\n"
+"%s %s.tfm",
+rm_command,output_name);
+}
+
+if(ofm_file)
+{fprintf(out,
+"\n"
+"%s %s.ovp %s.ovf %s.ofm\n"
+"%s %s.ovp\n"
+"\n",
+OVP2OVF_NAME,output_name,output_name,output_name,
+rm_command,output_name);
+}
+
+fclose(out);
+}
+
+
+
+/*:51*//*55:*/
+#line 1989 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void read_config(void)
+{HBF_BBOX*boxp;
+char*real_config_file;
+
+
+/*56:*/
+#line 2041 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{int i,lastext= -1;
+
+for(i= 0;config_file[i];i++)
+if(config_file[i]=='.')
+lastext= i;
+else if(config_file[i]=='/'||
+config_file[i]==':'||
+config_file[i]=='\\')
+lastext= -1;
+
+if(lastext==-1)
+strcat(config_file,".cfg");
+}
+
+
+/*:56*/
+#line 1995 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+
+real_config_file= TeX_search_cfg_file(config_file);
+if(!real_config_file)
+{if(mf_like)
+{if(!quiet)
+printf("Couldn't find `%s'\n",config_file);
+exit(2);
+}
+else
+{fprintf(stderr,"Couldn't find `%s'\n",config_file);
+exit(1);
+}
+}
+
+if(!(config= fopen(real_config_file,READ_TXT)))
+{if(!testing)
+{fprintf(stderr,"Couldn't open `%s'\n",config_file);
+exit(1);
+}
+else
+{if(!quiet)
+fprintf(stderr,"Couldn't find or open `%s'\n",config_file);
+exit(2);
+}
+}
+
+if(testing)
+{if(!quiet)
+printf("%s\n",real_config_file);
+exit(0);
+}
+
+/*57:*/
+#line 2058 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{char hbf_header[STRING_LENGTH+1];
+char*real_hbf_header;
+
+if(!fsearch("hbf_header"))
+config_error("hbf_header");
+else
+strcpy(hbf_header,Buffer);
+
+real_hbf_header= TeX_search_hbf_file(hbf_header);
+if(!real_hbf_header)
+{fprintf(stderr,"Couldn't find `%s'\n",hbf_header);
+exit(1);
+}
+
+hbfDebug= 1;
+
+
+if(!(hbf= hbfOpen(real_hbf_header)))
+exit(1);
+
+hbfDebug= 0;
+
+boxp= hbfBitmapBBox(hbf);
+input_size_x= boxp->hbf_height;
+input_size_y= boxp->hbf_width;
+font_encoding= hbfProperty(hbf,"HBF_CODE_SCHEME");
+
+if(!fsearch("output_name"))
+config_error("output_name");
+else
+strcpy(output_name,Buffer);
+}
+
+
+/*:57*/
+#line 2028 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+/*59:*/
+#line 2102 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{if(fsearch("nmb_files"))
+nmb_files= atoi(Buffer);
+if(fsearch("unicode"))
+if(Buffer[0]=='y'||Buffer[0]=='Y')
+unicode= TRUE;
+if(fsearch("min_char"))
+{user_min_char= strtoul(Buffer,(char**)NULL,0);
+have_min_char= TRUE;
+}
+
+if(!mf_like)
+{if(fsearch("pk_files"))
+if(Buffer[0]=='n'||Buffer[0]=='N')
+pk_files= FALSE;
+if(fsearch("tfm_files"))
+if(Buffer[0]=='n'||Buffer[0]=='N')
+tfm_files= FALSE;
+if(fsearch("ofm_file"))
+if(Buffer[0]=='y'||Buffer[0]=='Y')
+ofm_file= TRUE;
+if(fsearch("long_extension"))
+if(Buffer[0]=='n'||Buffer[0]=='N')
+long_extension= FALSE;
+}
+
+if(fsearch("slant"))
+slant= atof(Buffer);
+if(slant<0.0||slant> 1.0)
+{fprintf(stderr,"Invalid slant\n");
+exit(1);
+}
+if(fsearch("rotation"))
+if(Buffer[0]=='y'||Buffer[0]=='Y')
+rotation= TRUE;
+
+if(fsearch("mag_x"))
+mag_x= atof(Buffer);
+if(fsearch("mag_y"))
+mag_y= atof(Buffer);
+if(!mag_x&&!mag_y)
+{mag_x= 1.0;
+mag_y= 1.0;
+}
+if(mag_x&&!mag_y)
+mag_y= mag_x;
+if(mag_y&&!mag_x)
+mag_x= mag_y;
+if(mag_x<=0.0)
+{fprintf(stderr,"Invalid horizontal magnification\n");
+exit(1);
+}
+if(mag_y<=0.0)
+{fprintf(stderr,"Invalid vertical magnification\n");
+exit(1);
+}
+
+if(fsearch("dpi_x"))
+dpi_x= atoi(Buffer);
+if(fsearch("dpi_y"))
+dpi_y= atoi(Buffer);
+if(!dpi_x&&!dpi_y)
+{dpi_x= 300;
+dpi_y= 300;
+}
+if(dpi_x&&!dpi_y)
+dpi_y= dpi_x;
+if(dpi_y&&!dpi_x)
+dpi_x= dpi_y;
+if(dpi_x<=PRINTER_MIN_RES_X)
+{fprintf(stderr,"Invalid horizontal printer resolution\n");
+exit(1);
+}
+if(dpi_y<=PRINTER_MIN_RES_Y)
+{fprintf(stderr,"Invalid vertical printer resolution\n");
+exit(1);
+}
+
+if(fsearch("design_size"))
+design_size= atof(Buffer);
+
+if(fsearch("x_offset"))
+offset_x= atoi(Buffer);
+else
+offset_x= rotation?0:(boxp->hbf_xDisplacement*mag_x+0.5);
+if(fsearch("y_offset"))
+offset_y= atoi(Buffer);
+else
+offset_y= rotation?0:(boxp->hbf_yDisplacement*mag_y+0.5);
+if(!fsearch("comment"))
+comment[0]= '\0';
+else
+strcpy(comment,Buffer);
+
+if(fsearch("threshold"))
+threshold= atoi(Buffer);
+if(threshold<=0||threshold>=255)
+{fprintf(stderr,"Invalid threshold\n");
+exit(1);
+}
+
+if(!fsearch("checksum"))
+checksum= 0;
+else
+checksum= strtoul(Buffer,(char**)NULL,0);
+
+if(!fsearch("coding"))
+coding[0]= '\0';
+else
+strcpy(coding,Buffer);
+
+if(!fsearch("pk_directory"))
+pk_directory[0]= '\0';
+else
+strcpy(pk_directory,Buffer);
+
+if(!fsearch("tfm_directory"))
+tfm_directory[0]= '\0';
+else
+strcpy(tfm_directory,Buffer);
+
+if(fsearch("rm_command"))
+strcpy(rm_command,Buffer);
+else
+strcpy(rm_command,"rm");
+
+if(fsearch("cp_command"))
+strcpy(cp_command,Buffer);
+else
+strcpy(cp_command,"cp");
+
+if(!fsearch("job_extension"))
+job_extension[0]= '\0';
+else
+{strncpy(job_extension,Buffer,EXTENSION_LENGTH);
+job_extension[EXTENSION_LENGTH]= '\0';
+}
+}
+
+
+/*:59*/
+#line 2029 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+
+/*61:*/
+#line 2256 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{const void*cp;
+HBF_CHAR dummy;
+
+cp= hbfGetCodeRange(hbf,NULL,&min_char,&max_char);
+for(;cp!=NULL;cp= hbfGetCodeRange(hbf,cp,&dummy,&max_char))
+;
+
+if(have_min_char)
+min_char= user_min_char;
+}
+
+
+/*:61*/
+#line 2031 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+/*63:*/
+#line 2285 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{const void*b2r;
+unsigned char dummy;
+int i;
+
+for(i= 0;i<256;i++)
+b2_codes[i]= 0;
+
+b2r= hbfGetByte2Range(hbf,NULL,&min_2_byte,&max_2_byte);
+dummy= min_2_byte;
+for(;b2r!=NULL;b2r= hbfGetByte2Range(hbf,b2r,&dummy,&max_2_byte))
+{for(i= dummy;i<=max_2_byte;i++)
+b2_codes[i]= VALID_SUBCODE;
+}
+
+for(i= 0;i<256;i++)
+if(b2_codes[i]==VALID_SUBCODE)
+nmb_2_bytes++;
+}
+
+
+/*:63*/
+#line 2032 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+
+fclose(config);
+}
+
+
+/*:55*//*65:*/
+#line 2317 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static int fsearch(const char*search_string)
+{char*P,p;
+const char*Q;
+char temp_buffer[STRING_LENGTH+1];
+char env_name[STRING_LENGTH+1];
+char*env_p;
+char*env_value;
+char*Buf_p;
+int Ch,ch,old_ch= '\n';
+int count= STRING_LENGTH;
+
+rewind(config);
+
+do
+{Q= search_string;
+p= tolower((unsigned char)*Q);
+Ch= fgetc(config);
+ch= tolower(Ch);
+while(!(ch==p&&old_ch=='\n')&&Ch!=EOF)
+
+
+{old_ch= ch;
+Ch= fgetc(config);
+ch= tolower(Ch);
+}
+
+for(;;)
+{if(*(++Q)=='\0')
+if((Ch= fgetc(config))==' '||Ch=='\t')
+
+goto success;
+Ch= fgetc(config);
+if(tolower(Ch)!=tolower((unsigned char)*Q))
+break;
+}
+}
+while(Ch!=EOF);
+
+return 0;
+
+success:
+P= temp_buffer;
+
+while((Ch= fgetc(config))==' '||Ch=='\t')
+
+;
+while(Ch!='\n'&&--count> 0&&Ch!=EOF)
+{*P++= Ch;
+Ch= fgetc(config);
+}
+*P= '\0';
+
+if(*temp_buffer)
+/*66:*/
+#line 2396 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+{P= temp_buffer;
+Buf_p= Buffer;
+count= STRING_LENGTH-1;
+
+while(*P&&count> 0)
+{env_p= env_name;
+
+if(*P=='$')
+{P++;
+if(*P=='$')
+{*(Buf_p++)= *(P++);
+count--;
+continue;
+}
+while(*P=='{')
+P++;
+if(!(isalpha((unsigned char)*P)||*P=='_'))
+{fprintf(stderr,
+"Invalid environment variable name in configuration file\n");
+exit(1);
+}
+*(env_p++)= *(P++);
+while(*P)
+{if(isalnum((unsigned char)*P)||*P=='_')
+*(env_p++)= *(P++);
+else
+{while(*P=='}')
+P++;
+*env_p= '\0';
+break;
+}
+}
+
+env_value= getenv(env_name);
+if(env_value)
+{while(*env_value&&count> 0)
+{*(Buf_p++)= *(env_value++);
+count--;
+}
+}
+}
+else
+{*(Buf_p++)= *(P++);
+count--;
+}
+}
+*Buf_p= '\0';
+}
+
+
+/*:66*/
+#line 2371 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+else
+*Buffer= '\0';
+
+return(*Buffer)?1:0;
+}
+
+
+/*:65*//*68:*/
+#line 2456 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static void config_error(const char*message)
+{fprintf(stderr,"Couldn't find `%s' entry in configuration file\n",
+message);
+exit(1);
+}
+
+
+
+/*:68*//*72:*/
+#line 2499 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+static const char*TeX_search_version(void)
+{
+#if defined(HAVE_LIBKPATHSEA)
+return kpathsea_version_string;
+#elif defined(HAVE_EMTEXDIR)
+return emtex_version_string;
+#elif defined(HAVE_MIKTEX)
+char buf[200];
+
+strcpy(buf,"MiKTeX ");
+miktex_get_miktex_version_string_ex(buf+7,sizeof(buf)-7);
+
+return buf;
+#else
+return no_version_string;
+#endif
+}
+
+
+/*:72*//*75:*/
+#line 2541 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_EMTEXDIR
+static int dir_setup(ed,env,dir,flags)
+struct emtex_dir*ed;
+const char*env;
+const char*dir;
+unsigned flags;
+
+{const char*val;
+char path[260];
+
+ed->alloc= 0;
+ed->used= 0;
+ed->list= NULL;
+
+if(env!=NULL&&(val= getenv(env))!=NULL)
+return setup_list(ed,path,val,flags);
+else
+fprintf(stderr,
+"Environment variable `%s' not set; use current directory\n",
+env);
+
+return TRUE;
+}
+#endif
+
+
+/*:75*//*77:*/
+#line 2576 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_EMTEXDIR
+static char*file_find(name,list)
+char*name;
+struct emtex_dir*list;
+
+{if(emtex_dir_find(name_buffer,sizeof(name_buffer),list,name,EDF_CWD))
+return name_buffer;
+
+return NULL;
+}
+#endif
+
+
+/*:77*//*80:*/
+#line 2627 "/home/wl/git/cjk/cjk-4.8.5/utils/hbf2gf/hbf2gf.w"
+
+#if defined(HAVE_LIBKPATHSEA)
+static char*TeX_search_cfg_file(char*name)
+{
+return kpse_find_file(name,kpse_program_text_format,TRUE);
+}
+
+
+static char*TeX_search_hbf_file(char*name)
+{
+return kpse_find_file(name,kpse_miscfonts_format,TRUE);
+}
+
+
+#elif defined(HAVE_EMTEXDIR)
+static char*TeX_search_cfg_file(char*name)
+{return file_find(name,&cfg_path);
+}
+
+
+static char*TeX_search_hbf_file(char*name)
+{return file_find(name,&hbf_path);
+}
+
+
+#elif defined(HAVE_MIKTEX)
+static char*TeX_search_cfg_file(char*name)
+{char result[_MAX_PATH];
+
+if(!miktex_find_input_file("hbf2gf",*name,result))
+return 0;
+return strdup(result);
+}
+
+
+static char*TeX_search_hbf_file(char*name)
+{char result[_MAX_PATH];
+
+
+if(!miktex_find_miscfont_file(*name,result))
+return 0;
+return strdup(result);
+}
+
+
+#else
+static char*TeX_search_cfg_file(char*name)
+{return name;
+}
+
+
+static char*TeX_search_hbf_file(char*name)
+{return name;
+}
+#endif
+
+
+
+/*:80*/
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.def b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.def
new file mode 100644
index 0000000000..6f4d22ee8c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.def
@@ -0,0 +1,3 @@
+NAME HBF2GF WINDOWCOMPAT
+DESCRIPTION 'hbf2gf (CJK Ver. 4.8.5)'
+STACKSIZE 0x80000
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.w b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.w
new file mode 100644
index 0000000000..b248ecc694
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/hbf2gf.w
@@ -0,0 +1,2816 @@
+% This is the cweb file hbf2gf.w of the CJK package ver. 4.8.5 16-Oct-2021
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +ai hbf2gf.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\font\meta=logo10
+\def\mf{{\meta META}\-{\meta FONT}}
+\def\Om{\char "0A} % Omega symbol
+
+\def\title{hbf2gf (CJK Version 4.8.5)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont hbf2gf} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.5)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright~1996-1999 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice are
+ preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+
+\def\msdos{\.{msdos}}
+@s msdos TeX
+
+@s HBF int
+@s HBF_CHAR int
+@s HBF_BBOX int
+
+@s __inline__ int
+
+
+@* Introduction.
+This is the \.{hbf2gf} program by Werner Lemberg
+(\.{wl@@gnu.org}).
+
+The ``banner line'' defined here should be changed whenever \.{hbf2gf} is
+modified.
+
+@d banner
+"hbf2gf (CJK ver. 4.8.5)"
+
+
+@
+\.{hbf2gf} is intended to convert Hanzi Bitmap Fonts (HBF) into \TeX\
+generic font files (\.{GF} files) according to the \\{CJK} package, which
+\.{hbf2gf} is part of.
+
+The outline of \.{hbf2gf} is simple: a CJK (Chinese/Japanese/Korean) bitmap
+file will be scaled and written in at most |nmb_files| \.{GF} files, each
+file containing |256|~characters (except the last and possibly the first
+one). In the normal case it's not necessary to compute the right value of
+|nmb_files| because \.{hbf2gf} will do this; you should use |-1| instead to
+indicate this. See the last section for an example.
+
+Alternatively you can call \.{hbf2gf} similar to \mf, i.e., the program will
+compute one font on demand. This mode will be used if two or three input
+parameters instead of one are given: the font name, the horizontal
+resolution, and optionally a vertical scaling factor or resolution to allow
+modes for e.g.\ $300\times600\,\hbox{dpi}$ printers. \.{hbf2gf} will extract
+the configuration file name from the font name; if this file isn't found,
+the program exits with error code~|2| (this is useful for scripts like
+\.{mktexpk}). If the configuration file is found but an error occurs while
+computing the font, error code~|1| is returned. In case of success, the exit
+code is zero.
+
+The characters in the input font files are completely described by the HBF
+header file. This program uses the HBF API implementation of Ross Paterson
+(\.{ross@@soi.city.ac.uk}; with small extensions). You will find a
+description of the HBF standard at \.{ftp.ifcss.org}.
+
+A batch file created by \.{hbf2gf} too (if the program computes a whole set
+of subfonts) will convert the \.{GF} files to \.{PK} files using
+\.{GFtoPK}, a part of every \TeX\ package.
+
+@d TRUE 1
+@d FALSE 0@#
+
+@d STRING_LENGTH 255
+ /* the maximal length of an input string in the configuration file */
+@d FILE_NAME_LENGTH 1024
+ /* the maximal length (including the path) of a filename */@#
+
+@<Global variables@>=
+int nmb_files = -1; /* create all files by default */
+int unicode = FALSE; /* whether a Unicode font should be processed */@#
+
+int testing = FALSE; /* whether we test only the font name */@#
+
+int mf_like = FALSE; /* whether we are in the \mf-like mode */
+int file_number = 0; /* the subfont number */@#
+
+double x_resolution = 0.0; /* the second and third input parameter */
+double y_scale = 1.0;@#
+
+int pk_files = TRUE; /* command line options */
+int tfm_files = TRUE;
+int long_extension = TRUE;
+int quiet = FALSE;@#
+
+char config_file[FILE_NAME_LENGTH + 4 + 1];
+ /* we probably must add `\.{.cfg}' */
+char output_name[STRING_LENGTH + 1];@#
+
+FILE *config, *out;
+HBF *hbf;@#
+
+#ifdef msdos /* if we compile under DOS or OS/2 */
+#define WRITE_BIN "wb"
+#define WRITE_TXT "wt"
+#define READ_BIN "rb"
+#define READ_TXT "rt"
+#else
+#define WRITE_BIN "w"
+#define WRITE_TXT "w"
+#define READ_BIN "r"
+#define READ_TXT "r"
+#endif@#
+
+int end_of_file = FALSE;
+
+
+@
+One \.{PL} file will be created additionally, which describes the font
+metrics in a readable way. Because all CJK characters have identical
+bounding boxes, one metrics file is enough---the batch job created by
+\.{hbf2gf} calls \.{PLtoTF} to produce this \.{TFM} file and then copies
+it into |nmb_files| metrics files. There usually will be a discrepancy
+between the number of characters in the last \.{GF} file and the
+\.{TFM} file, but this does not harm.
+
+If you specify the \.{ofm\_file} option in the configuration file, an
+extended virtual property file (such files have the extension \.{.ovp}) for
+the \Om\ system is written; this will be then converted with
+\.{ovp2ovf} into an \.{OFM} and an \.{OVF} file to map all the subfonts
+into one large virtual font.
+
+
+
+@* The main routine.
+The main routine takes |file_name|, |x_resolution|, and |y_scale| as command
+line parameters if in \mf-like mode, otherwise |config_file| as the only
+argument. |read_config()| scans the configuration file and fills the global
+variables, |write_file()| writes the \.{GF} files, |write_pl()| and
+|write_ovp()| write the \.{PL} and \.{OVP} files respectively, and
+|write_job()| the batch file.
+
+@c
+@<Include files@>@;
+@<Prototypes@>@;
+@<Global variables@>@;@#
+
+
+int main(int argc, char *argv[])
+ {char *p;
+
+ @<Initialize \TeX\ file searching@>@;@#
+
+ @<Scan options@>@;@#
+
+ if(!quiet)
+ printf("\n%s\n\n", banner);@#
+
+ strncpy(config_file, argv[1], FILE_NAME_LENGTH);
+ config_file[FILE_NAME_LENGTH] = '\0';@#
+
+ if(argc > 2 || testing)
+ {int l = strlen(config_file);
+
+ if(l > 2)
+ config_file[l - 2] = '\0';
+ /* strip subfont number from file name */
+ else
+ {if(!quiet)
+ printf("`%s' can't be a subfont created by hbf2gf\n",
+ config_file);
+ exit(2);
+ }@#
+
+ mf_like = TRUE;
+ }@#
+
+ read_config(); /* will call |exit(1)| on errors */@#
+
+ if(mf_like)
+ @<Check other arguments@>@;@#
+
+ @<Initialize variables@>@;@#
+
+ @<Write files@>@;@#
+
+ if(tfm_files)
+ write_pl();
+ if(ofm_file)
+ write_ovp();
+ if(!mf_like)
+ write_job();@#
+
+ hbfClose(hbf);@#
+
+ exit(0);
+ return 0; /* never reached */
+ }
+
+
+@
+@d VERSION @/
+"\n"@/
+"Copyright (C) 1996-1999 Werner Lemberg.\n"@/
+"There is NO warranty. You may redistribute this software\n"@/
+"under the terms of the GNU General Public License\n"@/
+"and the HBF library copyright.\n"@/
+"\n"@/
+"For more information about these matters, see the files\n"@/
+"named COPYING and hbf.c.\n"@/
+"\n"
+
+@<Print version@>=
+ {printf("\n");
+ printf(banner);
+ printf(" (%s)\n", TeX_search_version());
+ printf(VERSION);
+ exit(0);
+ }
+
+
+@
+@d USAGE @/
+"\n"@/
+"Usage: hbf2gf [-q] configuration_file[.cfg]\n"@/
+" hbf2gf [options] font_name x_resolution [y_scale | y_resolution]\n"@/
+" hbf2gf -t [-q] font_name\n"@/
+"\n"@/
+" Convert a font in HBF format to TeX's GF resp. PK format.\n"@/
+"\n"@/
+" -q be silent\n"@/
+" -p don't produce a PL file\n"@/
+" -g don't produce a GF file\n"@/
+" -n use no resolution in extension (only `.gf')\n"@/
+" -t test for font_name (returns 0 on success)\n"@/
+" --help print this message and exit\n"@/
+" --version print version number and exit\n"@/
+"\n"
+
+@<Print help information@>=
+ {printf(USAGE);
+ exit(0);
+ }
+
+
+@
+Three options can be specified to the program (\.{-p}, \.{-g}, and \.{-n})
+if in \mf-like mode to suppress creation of a \.{PL} resp.\ a
+\.{GF} file, and to force a `\.{.gf}' extension (instead of
+e.g.\ `\.{.300gf}'). The corresponding setting of a particular switch in the
+configuration file is ignored then.
+
+Additionally, the option \.{-t} tests whether the specified subfont name
+leads to an \.{hbf2gf} configuration file. It returns 0 on success and prints
+out the name of that configuration file (provided the \.{-q} switch isn't
+set). This test isn't a thorough one; it only removes the last two characters
+and checks whether a configuration file with that name exists.
+
+@<Scan options@>=
+ if(argc == 2)
+ {if(strcmp(argv[1], "--help") == 0)
+ @<Print help information@>@;
+ else if(strcmp(argv[1], "--version") == 0)
+ @<Print version@>@;
+ }@#
+
+ while(argc > 1)
+ {p = argv[1];
+ if(p[0] != '-')
+ break;
+ if(p[1] == 'p')
+ tfm_files = FALSE;
+ else if(p[1] == 'g')
+ pk_files = FALSE;
+ else if(p[1] == 'n')
+ long_extension = FALSE;
+ else if(p[1] == 'q')
+ quiet = TRUE;
+ else if(p[1] == 't')
+ testing = TRUE;@#
+
+ argv++;
+ argc--;
+ }@#
+
+ if(testing)
+ {if(argc != 2)
+ {fprintf(stderr, "Need exactly one parameter for `-t' option.\n");
+ fprintf(stderr, "Try `hbf2gf --help' for more information.\n");
+ exit(1);
+ }
+ }
+ else if(argc < 2 || argc > 4)
+ {fprintf(stderr, "Invalid number of parameters.\n");
+ fprintf(stderr, "Try `hbf2gf --help' for more information.\n");
+ exit(1);
+ }@#
+
+
+@
+If the (optional) argument is larger than~|10|, we treat it as a value for
+the vertical resolution (in dpi), otherwise as a vertical scaling factor.
+
+@<Check other arguments@>=
+ {if(unicode)
+ file_number = (int)strtol(&argv[1][strlen(argv[1]) - 2],
+ (char **)NULL, 16);
+ else
+ file_number = atoi(&argv[1][strlen(argv[1]) - 2]);@#
+
+ x_resolution = atof(argv[2]);
+ if(x_resolution < PRINTER_MIN_RES_X)
+ {fprintf(stderr, "Invalid horizontal resolution\n");
+ exit(1);
+ }@#
+
+ if(argc > 3)
+ {y_scale = atof(argv[3]);
+ if(y_scale < 0.01)
+ {fprintf(stderr,
+ "Invalid vertical scaling factor or resolution\n");
+ exit(1);
+ }
+ if(y_scale > 10.0)
+ y_scale = (double)x_resolution / y_scale;
+ }
+ }
+
+
+@
+If |unicode| is |TRUE|, the start value of the running number appended to
+the base name of the output font files is taken from the HBF header file,
+otherwise it starts with~`\.{01}'. |min_char| represents the lower bound of
+the code range.
+
+If we are in \mf-like mode, |file_number| is taken from the command line,
+and |max_numb| will be set to~|1|.
+
+@<Write files@>=
+ {int j, max_numb;
+
+ if(!mf_like)
+ {file_number = (unicode == TRUE ? (min_char >> 8) : 1);
+ if(nmb_files == -1)
+ max_numb = (unicode == TRUE ? 0x100 : 100);
+ else
+ max_numb = nmb_files;
+ }
+ else
+ max_numb = 1;@#
+
+ for(j = 0; (j < max_numb) && !end_of_file; file_number++, j++)
+ write_file();@#
+
+ nmb_files = j; /* the real number of output font files */
+ }
+
+
+@
+@<Include files@>=
+#ifdef HAVE_CONFIG_H
+#include <c-auto.h>
+#endif
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#ifdef TM_IN_SYS_TIME
+#include <sys/time.h>
+#endif
+#include "hbf.h"
+
+
+
+@* The functions.
+The first function to be described is |write_file()|. Each \.{GF} file
+consists of three sections: a preamble, a data section, and a postamble. The
+functions |write_pre()|, |write_data()|, and |write_post()| handle this.
+
+@<Prototypes@>=
+static void write_file(void);
+
+
+@
+In \mf-like mode we create font file name extensions similar to \mf\ if
+the \.{-n} option isn't specified; otherwise only `\.{.gf}' will be appended.
+
+@c
+static void write_file(void)
+ {char output_file[FILE_NAME_LENGTH + 1];
+
+
+ if(pk_files)
+ {if(mf_like)
+ {if(unicode)
+ sprintf(output_file, "%s%02x.%.0igf",@/
+ output_name, file_number,
+ long_extension ? (int)(x_resolution + 0.5) : 0);
+ else
+ sprintf(output_file, "%s%02i.%.0igf",@/
+ output_name, file_number,
+ long_extension ? (int)(x_resolution + 0.5) : 0);
+ }
+ else
+ {if(unicode)
+ sprintf(output_file, "%s%02x.gf", output_name, file_number);
+ else
+ sprintf(output_file, "%s%02i.gf", output_name, file_number);
+ }
+ if(!(out = fopen(output_file, WRITE_BIN)))
+ {fprintf(stderr, "Couldn't open `%s'\n", output_file);
+ exit(1);
+ }
+ if(!quiet)
+ printf("Writing `%s' ", output_file);@#
+
+ write_pre();
+ write_data();
+ write_post();
+ fclose(out);@#
+
+ if(!quiet)
+ printf("\n");
+ }
+ else
+ write_data();
+ }
+
+
+@
+The preamble has two bytes at the very beginning, |PRE| and |GF_ID|. |PRE|
+starts the preamble, and |GF_ID| is the Generic Font Identity Byte. The next
+bytes are a string in Pascal format containing a header, the date, and the
+time. Strings in Pascal format start with the length of the string and have
+no terminating NULL byte.
+
+@d GF_ID 131
+@d PRE 247@#
+
+@d header " hbf2gf output "
+
+@<Prototypes@>=
+static void write_pre(void);
+
+
+@
+@s tm int
+
+@c
+static void write_pre(void)
+ {char out_s[40], s[20];
+ time_t secs_now;
+ struct tm *time_now;
+
+
+ strcpy(out_s, header);@#
+
+ secs_now = time(NULL); /* system date and time */
+ time_now = localtime(&secs_now);
+ strftime(s, 20, "%Y.%m.%d:%H.%M", time_now);
+ strcat(out_s, s);@#
+
+ fputc(PRE, out);
+ fputc(GF_ID, out);
+ fputc(strlen(out_s), out);
+ fputs(out_s, out);
+ }
+
+
+@
+|write_data()| produces the middle part of the \.{GF} file. It first sets
+|char_adr_p| equal to the address of |char_adr[]| which will contain file
+offsets of the compressed characters.
+
+|input_size_x| and |input_size_y| reflect the original dimensions of the
+bitmap font, |pk_output_size_x| and |pk_output_size_y| contain the width and
+height of the output character box (in pixels), |pk_offset_x| and
+|pk_offset_y| define the baseline of the font. The same names starting with
+`\\{tfm\_}' instead of `\\{pk\_}' are used for \.{TFM} files (values are
+multiples of design size). |mag_x| and |mag_y| hold the scaling factors
+which are needed to reach |design_size|. |slant| defines the slant ($\Delta
+x / \Delta y$), |target_size_x| and |target_size_y| will be the final
+dimensions; |magstep_x = target_size_x / design_size| is \TeX's
+\.{\\magstep}.
+
+The \CEE/ standard specifies that all global values will be automatically
+set to~|0| if no initialization value is given.
+
+@<Global...@>=
+long char_adr[256];
+long *char_adr_p;@#
+
+int pk_offset_x;
+ /* horizontal offset (increase character width a bit; will be applied on
+ both the left and the right side) */
+double tfm_offset_x;
+int pk_offset_y;
+ /* vertical offset (must be configured to desired font size) */
+double tfm_offset_y;@#
+
+int input_size_x;
+int input_size_y;
+const char *font_encoding; /* taken from the HBF file */
+int pk_width; /* without slant */
+int pk_output_size_x;
+ /* the output character box dimensions without offsets */
+double tfm_output_size_x;
+int pk_output_size_y;
+double tfm_output_size_y;@#
+
+double design_size = 10.0; /* in points */
+double target_size_x; /* in points */
+double target_size_y;
+double magstep_x;
+double magstep_y;
+double slant;
+int rotation;@#
+
+double mag_x; /* horizontal and vertical magnification values */
+double mag_y;@#
+
+int empty_char; /* a flag whether the character does not exist or is empty */
+int last_char; /* the last valid character in a \.{GF} file */@#
+
+int dot_count; /* this counts the processed characters;
+ every ten characters a dot is output to the screen */
+
+
+@
+@<Prototypes@>=
+static void write_data(void);
+
+
+@
+@c
+static void write_data(void)
+ {dot_count = 0;
+ char_adr_p = char_adr;@#
+
+ for(last_char = 0; (last_char < 256) && !end_of_file; last_char++)
+ @<Write character@>@;
+ }
+
+
+@
+The code in this section saves the current file position first and calls
+|make_pixel_array()|, which expands and scales the character bitmap.
+
+|BOC| (and |BOC1|), the Begin Of Character command byte, must be followed by
+the character code and the dimensions of the character as explained in
+``\mf---the program'' (corrected by vertical and horizontal offsets).
+
+|write_coding()| compresses and outputs the bitmap; |EOC| (End Of Character)
+finishes the current character.
+
+@d BOC 67
+@d BOC1 68 /* simplified version of |BOC| */
+@d EOC 69
+
+@<Write character@>=
+ {if(dot_count++ % 10 == 0) /* a progress report for impatient users */
+ if(pk_files && !quiet)
+ {printf(".");
+ fflush(stdout);
+ }@#
+
+ empty_char = FALSE;
+ make_pixel_array();
+ if(end_of_file)
+ return;@#
+
+ if(pk_files)
+ {*char_adr_p = ftell(out);
+ char_adr_p++;@#
+
+ if(empty_char)
+ {fputc(BOC1, out);
+ fputc((unsigned char)last_char, out);
+ fputc(0, out);
+ fputc(0, out);
+ fputc(0, out);
+ fputc(0, out);
+ fputc(EOC, out);
+ }
+ else
+ {fputc(BOC, out);
+ fputl(last_char, out);
+ fputl(-1L, out);
+ fputl(pk_offset_x, out);
+ fputl(pk_output_size_x + pk_offset_x, out);
+ fputl(pk_offset_y, out);
+ fputl(pk_output_size_y + pk_offset_y, out);@#
+
+ write_coding();@#
+
+ fputc(EOC, out);
+ }
+ }
+ }
+
+
+@
+The current \.{GF} file will be completed with data written by
+|write_post()|. The end consists of three sections: ``special'', ``post'',
+and ``postpost''. The first contains material not used by \TeX\ itself but
+which can be used by other programs like \.{GFtoDVI} or for documentary
+purposes (|coding[]| and |comment[]|). The second describes the font as a
+whole, and the last marks the end of the file.
+
+|pk_total_min_x| up to |pk_total_max_y| define the greatest bounding box of
+this file (including offsets); the horizontal character escapement after
+drawing the character is |pk_dx|. |tfm_width| is the width in multiples of
+the design size ignoring the target size.
+
+@d _2_16 65536.0 /* $2^{16}$ */
+@d _2_20 1048576.0 /* $2^{20}$ */
+
+@<Global...@>=
+char coding[STRING_LENGTH + 1]; /* a comment describing the font encoding */
+char comment[STRING_LENGTH + 1]; /* a comment describing the font */@#
+
+unsigned long checksum;@#
+
+long pk_total_min_x;
+long pk_total_max_x;
+long pk_total_min_y;
+long pk_total_max_y;@#
+
+int dpi_x; /* printer resolution */
+int dpi_y;
+double ppp_x; /* pixels per point */
+double ppp_y;
+
+
+@
+To clarify the meaning of these values see the sections about the metrics
+and configuration file also.
+
+\TeX\ defines that 72.27~points are exactly 1~inch.
+
+@<Prototypes@>=
+static void write_post(void);
+
+
+@
+@c
+static void write_post(void)
+ {long special_adr;
+ long post_adr;@#
+
+ long designsize = design_size * _2_20; /* design size $* 2^{20}$ */@#
+
+ int pk_dx;
+ long tfm_width;@#
+
+ int i;
+ long temp;
+
+
+ ppp_x = dpi_x / 72.27 * magstep_x;
+ ppp_y = dpi_y / 72.27 * magstep_y;@#
+
+ pk_total_min_x = pk_offset_x;
+ pk_total_max_x = pk_output_size_x + 2 * pk_offset_x;
+ pk_total_min_y = pk_offset_y;
+ pk_total_max_y = pk_output_size_y + pk_offset_y;@#
+
+ pk_dx = pk_width + 2 * pk_offset_x; /* no slant */
+ tfm_width = (tfm_output_size_x + 2 * tfm_offset_x) * _2_20;
+ /* width in multiples of design size $* 2^{20}$ */@#
+
+ @<Special section@>@;
+ @<Post section@>@;
+ @<Postpost section@>@;
+ }
+
+
+@
+\.{XXXn} will be followed by n~bytes representing the length of a string
+which follows immediately. |YYY| is a 32~bit integer which is normally
+connected with the preceding string (but not used here). |special_adr|
+contains the address of the ``special section''. All items here are
+optional.
+
+@d XXX1 239 /* these are all special command bytes */
+@d XXX2 240 /* not used */
+@d XXX3 241 /* not used */
+@d XXX4 242 /* not used */@#
+
+@d YYY 243 /* not used */
+
+@<Special section@>=
+ special_adr = ftell(out);@#
+
+ if(*coding)
+ {fputc(XXX1, out); /* |XXX1| implies a string length |< 256| */
+ fputc(strlen(coding), out);
+ fputs(coding, out);
+ }@#
+
+ if(*comment)
+ {fputc(XXX1, out);
+ fputc(strlen(comment), out);
+ fputs(comment, out);
+ }
+
+
+@
+All character offsets collected in |char_adr| will be written to the output
+file. |fputl()| writes a 32~bit integer into a file.
+
+|CHAR_LOC0| (and |CHAR_LOC|) is the first byte of a character locator
+(i.e., offset, character code, and width information). |POST| starts the
+postamble, and |post_adr| points to the beginning byte of the postamble.
+
+@d POST 248@#
+
+@d CHAR_LOC 245
+@d CHAR_LOC0 246 /* simplified version of |CHAR_LOC| */
+
+@<Post section@>=
+ post_adr = ftell(out);
+ fputc(POST, out);
+ fputl(special_adr, out);@#
+
+ fputl(designsize, out);
+ fputl(checksum, out);
+ fputl(ppp_x * _2_16, out);
+ fputl(ppp_y * _2_16, out);
+ fputl(pk_total_min_x, out);
+ fputl(pk_total_max_x, out);
+ fputl(pk_total_min_y, out);
+ fputl(pk_total_max_y, out);@#
+
+ char_adr_p = char_adr;@#
+
+ if(pk_dx < 256)
+ {for(i = 0; i < last_char; i++) /* the character locators */
+ {fputc(CHAR_LOC0, out);
+ fputc(i, out);
+ fputc(pk_dx, out);
+ fputl(tfm_width, out);
+ fputl(*char_adr_p++, out);
+ }
+ }
+ else /* will only happen if |MAX_CHAR_SIZE >= 256| */
+ {for(i = 0; i < last_char; i++)
+ {fputc(CHAR_LOC, out);
+ fputc(i, out);
+ fputl(pk_dx * _2_16, out);
+ fputl(0, out);
+ fputl(tfm_width, out);
+ fputl(*char_adr_p++, out);
+ }
+ }
+
+
+@
+|POSTPOST| starts the section after the postamble. To get all information in
+a \.{GF} file, you must start here. The very last bytes of the file have
+the value |POSTPOST_ID| (the file is filled with at least 4 of these bytes
+until a file length of a multiple of~4 is reached). Going backwards a
+|GF_ID| will be next, then comes the address of the postamble section.
+
+Jumping to the postamble, a |POST| byte comes first, then the address of
+the special section, and afterwards all character offsets. These offsets and
+addresses describe the whole file.
+
+@d POSTPOST 249
+@d POSTPOST_ID 223
+
+@<Postpost section@>=
+ fputc(POSTPOST, out);
+ fputl(post_adr, out);
+ fputc(GF_ID, out);
+ temp = ftell(out);
+ i = (int)(temp % 4) + 4;
+ while(i--)
+ fputc(POSTPOST_ID, out);
+
+
+@
+\TeX\ wants the most significant byte first.
+
+@<Prototypes@>=
+static void fputl(long, FILE *);
+
+
+@
+@c
+static void fputl(long num, FILE *f)
+ {fputc(num >> 24, f);
+ fputc(num >> 16, f);
+ fputc(num >> 8, f);
+ fputc(num, f);
+ }
+
+
+@
+|make_pixel_array()| scales a character into the array |out_char[]| where
+each \\{byte} represents one pixel, contrary to the input file where each
+\\{bit} is used to store the character bitmap. |BLACK| indicates a black
+pixel.
+
+The scaling routine was modeled after the program \.{pnmscale} of the
+\.{pbmplus} package. \.{pbmplus} was designed to handle arbitrary pictures,
+and bitmaps are only a special case of a graymap with values from~0 for
+white up to |PIXEL_MAXVAL = 255| for black.
+
+If |EOF| is encountered, |end_of_file| is set and the function returns
+immediately.
+
+@d BLACK 1
+@d WHITE 0@#
+
+@d PIXEL_MAXVAL 255
+@d SCALE 4096
+@d HALFSCALE 2048@#
+
+@d MAX_CHAR_SIZE 1023
+
+@<Global...@>=
+HBF_CHAR code;
+const unsigned char *bitmap;
+ /* a proper input bitmap array will be allocated by the HBF API */
+const unsigned char *bP;@#
+
+unsigned char out_char[MAX_CHAR_SIZE * MAX_CHAR_SIZE + 1];
+ /* the output bitmap array */
+unsigned char *out_char_p;@#
+
+unsigned char pixelrow[MAX_CHAR_SIZE];
+unsigned char temp_pixelrow[MAX_CHAR_SIZE];
+unsigned char new_pixelrow[MAX_CHAR_SIZE + 1];
+ /* we need space to append a white pixel */@#
+int curr_row; /* for |read_row()| if we access the glyph rotated */
+
+long grayrow[MAX_CHAR_SIZE];@#
+
+long s_mag_x, s_mag_y, s_slant;
+
+
+@
+We need to initialize the |grayrow[]| array together with some other
+variables.
+
+Two steps are necessary to compute the |code| if we are in the \mf-like
+mode. Assuming that we search the code \.{0xXXYY}, we first set |code| to
+the value \.{0xXXAA}, where \.{0xAA} is equal to |min_2_byte| (getting
+|offset| as the number of remaining characters to reach the first character
+in our given subfont), then we increment |code| (and decrement |offset|)
+until |offset| equals~0.
+
+@<Initialize variables@>=
+ {int col, offset;
+
+ if(rotation)
+ {int tmp;
+
+
+ tmp = input_size_x;
+ input_size_x = input_size_y;
+ input_size_y = tmp;
+ }@#
+
+ if(mf_like)
+ {target_size_x = design_size * (x_resolution / dpi_x);
+ target_size_y = design_size * (x_resolution * y_scale / dpi_y);
+ }
+ else
+ target_size_x = target_size_y = design_size;
+ magstep_x = target_size_x / design_size;
+ magstep_y = target_size_y / design_size;@#
+
+ pk_offset_x = offset_x * magstep_x + 0.5;
+ pk_offset_y = offset_y * magstep_y + 0.5;
+ tfm_offset_x = offset_x / (dpi_x / 72.27) / design_size;
+ tfm_offset_y = offset_y / (dpi_y / 72.27) / design_size;@#
+
+ pk_width = input_size_x * mag_x * magstep_x + 0.5; /* without slant */
+ pk_output_size_x = input_size_x * mag_x * magstep_x +
+ input_size_y * mag_y * magstep_y * slant + 0.5;
+ pk_output_size_y = input_size_y * mag_y * magstep_y + 0.5;
+ tfm_output_size_x = input_size_x * mag_x /
+ (dpi_x / 72.27) / design_size;
+ tfm_output_size_y = input_size_y * mag_y /
+ (dpi_y / 72.27) / design_size;
+ if(pk_output_size_x > MAX_CHAR_SIZE)
+ {fprintf(stderr, "Output character box width too big\n");
+ exit(1);
+ }
+ if(pk_output_size_y > MAX_CHAR_SIZE)
+ {fprintf(stderr, "Output character box height too big\n");
+ exit(1);
+ }@#
+
+ for(col = 0; col < input_size_x; ++col)
+ grayrow[col] = HALFSCALE;@#
+
+ if(!mf_like)
+ code = (min_char & 0xFF00) + min_2_byte;
+ else
+ {if((file_number < (unicode ? 0 : 1)) || (file_number >= 0x100))
+ {fprintf(stderr, "Invalid subfile number\n");
+ exit(1);
+ }@#
+
+ if(unicode)
+ {offset = 0;
+ code = file_number * 0x100;
+ }
+ else
+ {offset = (file_number - 1) * 256 % nmb_2_bytes;
+ code = (min_char & 0xFF00) + min_2_byte +
+ (file_number - 1) * 256 / nmb_2_bytes * 0x100;
+ }@#
+
+ while(offset--)
+ while(!b2_codes[code++ & 0xFF])
+ /* eliminate invalid |b2_codes| */
+ ;@#
+
+ if(code > max_char)
+ {fprintf(stderr, "Invalid subfile number\n");
+ exit(1);
+ }
+ }
+
+ s_mag_x = mag_x * magstep_x * SCALE;
+ s_mag_y = mag_y * magstep_y * SCALE;
+ s_slant = slant * SCALE;
+ }
+
+
+@
+All arrays of the \\{pixelrow} family contain gray values. While scaling
+with non-integer values a pixel of the input bitmap will normally not align
+with the pixel grid of the output bitmap (geometrically spoken). In this
+case we first compute the fractions of input pixel rows scaled vertically
+and add the corresponding gray values until a temporary row is produced.
+Then we repeat this procedure horizontally pixel by pixel and write the
+result into an output array.
+
+
+@<Prototypes@>=
+static void make_pixel_array(void);
+
+
+@
+@c
+static void make_pixel_array(void)
+ {unsigned char *prP;
+ unsigned char *temp_prP;
+ unsigned char *new_prP;
+ long *grP;@#
+
+ register unsigned char *xP;
+ register unsigned char *nxP;@#
+
+ register int row, col;
+ int rows_read = 0;
+ register int need_to_read_row = 1;@#
+
+ long frac_row_to_fill = SCALE;
+ long frac_row_left = s_mag_y;@#
+
+ int no_code = FALSE;
+
+
+ prP = pixelrow;
+ temp_prP = temp_pixelrow;
+ new_prP = new_pixelrow;
+ grP = grayrow;
+ out_char_p = out_char; /* will be increased by |write_row()| */@#
+
+again:
+ if(b2_codes[code & 0xFF]) /* a valid second byte? */
+ {if(pk_files)
+ {bitmap = hbfGetBitmap(hbf, code);
+ bP = bitmap;
+ /* will be increased by |read_row()| */@#
+
+ if(!bitmap)
+ empty_char = TRUE;
+ else
+ @<Scale row by row@>@;
+ }
+ }
+ else
+ no_code = TRUE;@#
+
+ if((code & 0xFF) == max_2_byte)
+ code += 0xFF - (max_2_byte - min_2_byte); /* go to next plane */
+ if(code >= max_char)
+ {end_of_file = TRUE;
+ return;
+ }@#
+
+ code++;@#
+
+ if(no_code)
+ {no_code = FALSE;
+ goto again;
+ }
+ }
+
+
+@
+@<Scale row by row@>=
+ {if(pk_output_size_y == input_size_y) /* shortcut Y~scaling if possible */
+ temp_prP = prP;@#
+
+ curr_row = input_size_y - 1; /* only needed for rotated glyphs */
+ for(row = 0; row < pk_output_size_y; ++row)
+ {@<Scale Y from |pixelrow[]| into |temp_pixelrow[]|@>@;
+ @<Scale X from |temp_pixelrow[]| into |new_pixelrow[]|
+ and write it into |out_char[]|@>@;
+ }
+ }
+
+
+@
+@<Scale Y from |pixelrow[]| into |temp_pixelrow[]|@>=
+ if(pk_output_size_y == input_size_y)
+ /* shortcut Y~scaling if possible */
+ read_row(prP);
+ else
+ {while(frac_row_left < frac_row_to_fill)
+ {if(need_to_read_row)
+ if(rows_read < input_size_y)
+ {read_row(prP);
+ ++rows_read;
+ }@#
+
+ for(col = 0, xP = prP; col < input_size_x; ++col, ++xP)
+ grP[col] += frac_row_left * (*xP);@#
+
+ frac_row_to_fill -= frac_row_left;
+ frac_row_left = s_mag_y;
+ need_to_read_row = 1;
+ }@#
+
+ @<Produce a temporary row@>@;
+ }
+
+
+@
+Now |frac_row_left >= frac_row_to_fill|, so we can produce a row.
+
+@<Produce a temporary row@>=
+ if(need_to_read_row)
+ if(rows_read < input_size_y)
+ {read_row(prP);
+ ++rows_read;
+ need_to_read_row = 0;
+ }@#
+
+ for(col = 0, xP = prP, nxP = temp_prP;
+ col < input_size_x; ++col, ++xP, ++nxP)
+ {register long g;
+
+
+ g = grP[col] + frac_row_to_fill * (*xP);
+ g /= SCALE;
+ if(g > PIXEL_MAXVAL)
+ g = PIXEL_MAXVAL;@#
+
+ *nxP = g;
+ grP[col] = HALFSCALE;
+ }@#
+
+ frac_row_left -= frac_row_to_fill;
+ if(frac_row_left == 0)
+ {frac_row_left = s_mag_y;
+ need_to_read_row = 1;
+ }
+ frac_row_to_fill = SCALE;
+
+
+@
+To implement the slant we move the starting point |nxP| to the right
+according to the corresponding |y|~value. To simplify life only positive
+shift values are allowed.
+
+We always append a white pixel to avoid artefacts at the end of the line
+produced by the last line. This rule sets the second condition that the
+slant must not be greater than~|1|---such a large slant would be unusable
+anyway for typesetting purposes.
+
+@<Scale X from |temp_pixelrow[]| into |new_pixelrow[]|
+ and write it into |out_char[]|@>=
+ if(pk_width == input_size_x && s_slant == 0)
+ /* shortcut X~scaling if possible */
+ write_row(temp_prP);
+ else
+ {register long g = HALFSCALE;
+ register long frac_col_to_fill = SCALE;
+ register long frac_col_left;
+ register int need_col = 0;
+
+
+ nxP = new_prP;@#
+
+ frac_col_left = (pk_output_size_y - row) * s_slant;
+ while(frac_col_left >= frac_col_to_fill)
+ {*(nxP++) = 0;
+ frac_col_left -= frac_col_to_fill;
+ }@#
+
+ if(frac_col_left > 0)
+ frac_col_to_fill -= frac_col_left;@#
+
+ for(col = 0, xP = temp_prP; col < input_size_x; ++col, ++xP)
+ {frac_col_left = s_mag_x;
+ while(frac_col_left >= frac_col_to_fill)
+ {if(need_col)
+ {++nxP;
+ g = HALFSCALE;
+ }@#
+
+ g += frac_col_to_fill * (*xP);
+ g /= SCALE;
+ if(g > PIXEL_MAXVAL)
+ g = PIXEL_MAXVAL;@#
+
+ *nxP = g;
+ frac_col_left -= frac_col_to_fill;
+ frac_col_to_fill = SCALE;
+ need_col = 1;
+ }@#
+
+ if(frac_col_left > 0)
+ {if(need_col)
+ {++nxP;
+ g = HALFSCALE;
+ need_col = 0;
+ }@#
+
+ g += frac_col_left * (*xP);
+ frac_col_to_fill -= frac_col_left;
+ }
+ }@#
+
+ @<Write out a row@>@;
+ }
+
+
+@
+@<Write out a row@>=
+ if(frac_col_to_fill > 0)
+ {--xP;
+ g += frac_col_to_fill * (*xP);
+ }@#
+
+ if(!need_col)
+ {g /= SCALE;
+ if(g > PIXEL_MAXVAL)
+ g = PIXEL_MAXVAL;
+ *nxP = g;
+ }@#
+
+ *(++nxP) = 0; /* append a blank pixel */@#
+
+ write_row(new_prP);
+
+
+@
+|read_row()| reads a row from |bitmap[]| and converts it into a graymap row.
+If the |rotation| flag has been set, we get the proper column instead (note
+that in this case |input_size_x| already reflects the width of the rotated
+glyph).
+
+@<Prototypes@>=
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void read_row(unsigned char *);
+
+
+@
+@c
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void read_row(unsigned char *pixelrow)
+ {register int col, bitshift, offset;
+ register unsigned char *xP;
+ register unsigned char item = 0;
+
+ if(rotation)
+ {bitshift = 7 - (curr_row % 8);
+ offset = (input_size_y + 7) / 8;
+ bP = bitmap + curr_row / 8;
+ for(col = 0, xP = pixelrow; col < input_size_x; ++col, ++xP)
+ {*xP = ((*bP >> bitshift) & 1) == 1 ? PIXEL_MAXVAL : 0;
+ bP += offset;
+ }
+ curr_row--;
+ }
+ else
+ {bitshift = -1;
+ for(col = 0, xP = pixelrow; col < input_size_x; ++col, ++xP)
+ {if(bitshift == -1)
+ {item = *(bP++); /* increase input bitmap pointer */
+ bitshift = 7;
+ }
+ *xP = ((item >> bitshift) & 1) == 1 ? PIXEL_MAXVAL : 0;
+ --bitshift;
+ }
+ }
+ }
+
+
+@
+|write_row()| converts the graymap back into a bitmap using a simple
+threshold.
+
+@<Global...@>=
+int threshold = 128;
+
+
+@
+@<Prototypes@>=
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void write_row(unsigned char *);
+
+
+@
+@c
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void write_row(unsigned char *pixelrow)
+ {register int col;
+ register unsigned char *xP;
+
+ for(col = 0, xP = pixelrow; col < pk_output_size_x; ++col, ++xP)
+ *(out_char_p++) = (*xP >= threshold) ? 1 : 0;
+ /* increase output bitmap pointer */
+ }
+
+
+@
+Now comes the most interesting routine. The pixel array will be compressed
+in sequences of black and white pixels.
+
+|SKIP0|, |SKIP1|, and |SKIP2| indicate how many blank lines will be skipped.
+|PAINT_(x)| means that the next x~pixels will have the same color, then the
+color changes. |NEW_ROW_(x)| is the first black pixel in the next row.
+
+An example: the pixel sequence 111100011001 [new row] 000111011110 will be
+output as 4 3 2 2 1 77 3 1 4 1.
+
+Commands with an ending~`n' in its name indicate that the next n~bytes
+should be read as the counter. Example: |SKIP1|~26 means `skip the next
+26~rows'.
+
+For further details please refer to ``\mf---the program''.
+
+@d PAINT_(x) (x) /* $0 \le x \le 63$ */
+@d PAINT1 64
+@d PAINT2 65
+@d PAINT3 66 /* not used */@#
+
+@d SKIP0 70
+@d SKIP1 71
+@d SKIP2 72
+@d SKIP3 73 /* not used */@#
+
+@d NEW_ROW_(x) ((x) + 74) /* $0 \le x \le 164$ */@#
+
+@d NOOP 244 /* not used */
+
+@<Prototypes@>=
+static void write_coding(void);
+
+
+@
+The |goto start| instruction causes some compilers to complain about
+``Unreachable code $\ldots$'' or something similar.
+
+@c
+static void write_coding(void)
+ {register int count, skip;
+ register unsigned char paint;
+ register int x, y;
+ register unsigned char *cp;
+
+ x = 0;
+ y = 0;
+ cp = out_char + y * pk_output_size_x + x;
+ count = skip = 0;
+ paint = WHITE;
+ goto start;@#
+
+ while (y < pk_output_size_y)
+ {@<Search blank lines@>@;
+start:
+ @<Process rest of line@>@;
+ y++;
+ }
+ }@#
+
+
+@
+@<Search blank lines@>=
+ count = 0;
+ x = 0;
+ cp = out_char + y * pk_output_size_x + x;@#
+
+ while(x < pk_output_size_x)
+ {if(*cp == paint)
+ count++;
+ else
+ {if(skip == 0)
+ {if(count <= 164)
+ fputc(NEW_ROW_(count), out);
+ else
+ {fputc(SKIP0, out);@#
+
+ if(count < 256)
+ {fputc(PAINT1, out);
+ fputc(count, out);
+ }
+ else
+ {fputc(PAINT2, out);
+ fputc(count >> 8, out);
+ fputc(count & 0xFF, out);
+ }
+ }
+ }
+ else
+ {if(skip == 1)
+ fputc(SKIP0, out);
+ else
+ {if(skip < 256)
+ {fputc(SKIP1, out);
+ fputc(skip, out);
+ }
+ else
+ {fputc(SKIP2, out);
+ fputc(skip >> 8, out);
+ fputc(skip & 0xFF, out);
+ }
+ }
+ skip = 0;
+ if(count < 64)
+ fputc(PAINT_(count), out);
+ else if(count < 256)
+ {fputc(PAINT1, out);
+ fputc(count, out);
+ }
+ else
+ {fputc(PAINT2, out);
+ fputc(count >> 8, out);
+ fputc(count & 0xFF, out);
+ }
+ }
+ count = 0;
+ paint = BLACK;
+ break;
+ }
+ x++;
+ cp++;
+ }
+ if(x >= pk_output_size_x)
+ {skip++;
+ y++;
+ continue;
+ }
+
+
+@
+@<Process rest of line@>=
+ while(x < pk_output_size_x)
+ {if(*cp == paint)
+ count++;
+ else
+ {if(count < 64)
+ fputc(PAINT_(count), out);
+ else if(count < 256)
+ {fputc(PAINT1, out);
+ fputc(count, out);
+ }
+ else
+ {fputc(PAINT2, out);
+ fputc(count >> 8, out);
+ fputc(count & 0xFF, out);
+ }
+ count = 1;
+ paint = BLACK - paint;
+ }
+ x++;
+ cp++;
+ }
+ if(paint == BLACK)
+ {if(count < 64)
+ fputc(PAINT_(count), out);
+ else if(count < 256)
+ {fputc(PAINT1, out);
+ fputc(count, out);
+ }
+ else
+ {fputc(PAINT2, out);
+ fputc(count >> 8, out);
+ fputc(count & 0xFF, out);
+ }
+ paint = WHITE;
+ }
+
+
+
+@* The font metrics file.
+This routine creates one \.{PL} file with the font properties. None of the
+\TeX\ font dimensions are needed because you never will use CJK fonts
+directly, and intercharacter stretching is handled by the \\{CJK} macro
+\.{\\CJKglue}. (Other packages may define similar commands.)
+
+The name of the \.{PL} file will contain the running two digits in
+\mf-like mode only.
+
+It makes sense \\{not} to compute the check sum automatically for two
+reasons. Firstly, since \TeX's checksum algorithm is based on the character
+width, the number of valid characters, and the designsize, there is a much
+higher chance that two subfonts from different HBF fonts have the same check
+sum than it is for ordinary fonts, because all characters have the same
+width, usually 256~characters in a subfont, and very often the same design
+size. Secondly, and this is more important, we create just one
+\.{TFM} file for all subfonts regardless of the real number of characters
+in a particular subfont.
+
+To have an identification string in the \.{TFM} file, we split it into
+single bytes and use the \.{HEADER} command repeatedly.
+
+@<Prototypes@>=
+static void write_pl(void);
+
+
+@
+@c
+static void write_pl(void)
+ {int i, pos;
+ char output_file[FILE_NAME_LENGTH + 1];
+ long t, sc;
+ char *s;
+ char tfm_header[] = "Created by hbf2gf";
+
+ file_number--; /* for \mf-like mode */@#
+
+ if(mf_like)
+ {if(unicode)
+ sprintf(output_file, "%s%02x.pl", output_name, file_number);
+ else
+ sprintf(output_file, "%s%02i.pl", output_name, file_number);
+ }
+ else
+ sprintf(output_file, "%s.pl", output_name);@#
+
+ if(!(out = fopen(output_file, WRITE_TXT)))
+ {fprintf(stderr, "Couldn't open `%s'\n", output_file);
+ exit(1);
+ }
+ if(!quiet)
+ printf("\nWriting `%s'\n", output_file);@#
+
+ fprintf(out,@/
+ "\n(FAMILY %s%d)"@/
+ "\n(CODINGSCHEME CJK-%s)",
+ output_name, file_number, font_encoding);@#
+
+ fprintf(out,@/
+ "\n(DESIGNSIZE R %.6f)"@/
+ "\n(COMMENT DESIGNSIZE IS IN POINTS)"@/
+ "\n(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)"@/
+ "\n(CHECKSUM O %lo)"@/
+ "\n(FONTDIMEN"@/
+ "\n (SLANT R %.6f)"@/
+ "\n (SPACE R 0.0)"@/
+ "\n (STRETCH R 0.0)"@/
+ "\n (SHRINK R 0.0)"@/
+ "\n (XHEIGHT R 1.0)"@/
+ "\n (QUAD R 1.0)"@/
+ "\n (EXTRASPACE R 0.0)"@/
+ "\n )", design_size, checksum, slant);@#
+
+ s = tfm_header;
+ i = strlen(s);
+ t = ((long)i) << 24;
+ sc = 16;
+ pos = 18;@#
+
+ fprintf(out, "\n");
+ while(i > 0)
+ {t |= ((long)(*(unsigned char *)s++)) << sc;
+ sc -= 8;
+ if(sc < 0)
+ {fprintf(out, "\n(HEADER D %d O %lo)", pos, t);
+ t = 0;
+ sc = 24;
+ pos++;
+ }
+ i--;
+ }
+ if(t)
+ fprintf(out, "\n(HEADER D %d O %lo)", pos, t);
+ fprintf(out, "\n");@#
+
+ for(i = 0; i < 256; i++)
+ {fprintf(out,@/
+ "\n(CHARACTER O %o"@/
+ "\n (CHARWD R %.6f)"@/
+ "\n (CHARHT R %.6f)"@/
+ "\n (CHARDP R %.6f)"@/
+ "\n (CHARIC R %.6f)"@/
+ "\n )",@/
+ i,
+ tfm_output_size_x + 2 * tfm_offset_x,
+ tfm_output_size_y + tfm_offset_y,
+ -tfm_offset_y,
+ slant * (tfm_output_size_y + tfm_offset_y));
+ }@#
+
+ fclose(out);
+ }
+
+
+
+@* The extended virtual font file for \Om.
+The following is very similar to |write_pl()|; we simply map the glyphs
+of the subfonts back to the original encoding positions.
+
+@<Prototypes@>=
+static void write_ovp(void);
+
+
+@
+@c
+static void write_ovp(void)
+ {int c, i, nmb_subfonts, remainder, count, pos;
+ char output_file[FILE_NAME_LENGTH + 1];
+ long t, sc;
+ char *s;
+ char ofm_header[] = "Created by hbf2gf";
+
+ nmb_subfonts = ((max_char - (min_char & 0xFF00)) / 256 * nmb_2_bytes)
+ / 256 + 1;
+ remainder = ((max_char - (min_char & 0xFF00)) / 256 * nmb_2_bytes)
+ % 256;@#
+
+ /* correction for the last incomplete second byte range */
+ for(count = 0; count < (max_char & 0xFF); count++)
+ if(b2_codes[count])
+ remainder++;
+ if(remainder >= 256)
+ nmb_subfonts++;@#
+
+ sprintf(output_file, "%s.ovp", output_name);@#
+
+ if(!(out = fopen(output_file, WRITE_TXT)))
+ {fprintf(stderr, "Couldn't open `%s'\n", output_file);
+ exit(1);
+ }
+ if(!quiet)
+ printf("\nWriting `%s'\n", output_file);@#
+
+ fprintf(out,@/
+ "\n(VTITLE Omega virtual font created by hbf2gf)"@/
+ "\n(DESIGNSIZE R %.6f)"@/
+ "\n(COMMENT DESIGNSIZE IS IN POINTS)"@/
+ "\n(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)"@/
+ "\n(CHECKSUM O %lo)"@/
+ "\n(FONTDIMEN"@/
+ "\n (SLANT R %.6f)"@/
+ "\n (SPACE R 0.0)"@/
+ "\n (STRETCH R 0.0)"@/
+ "\n (SHRINK R 0.0)"@/
+ "\n (XHEIGHT R 1.0)"@/
+ "\n (QUAD R 1.0)"@/
+ "\n (EXTRASPACE R 0.0)"@/
+ "\n )", design_size, checksum, slant);@#
+
+ s = ofm_header;
+ i = strlen(s);
+ t = ((long)i) << 24;
+ sc = 16;
+ pos = 18;@#
+
+ fprintf(out, "\n");
+ while(i > 0)
+ {t |= ((long)(*(unsigned char *)s++)) << sc;
+ sc -= 8;
+ if(sc < 0)
+ {fprintf(out, "\n(HEADER D %d O %lo)", pos, t);
+ t = 0;
+ sc = 24;
+ pos++;
+ }
+ i--;
+ }
+ if(t)
+ fprintf(out, "\n(HEADER D %d O %lo)", pos, t);
+ fprintf(out, "\n");@#
+
+ for(i = 0; i < nmb_subfonts; i++)
+ {fprintf(out,@/
+ "\n(MAPFONT D %i"@/
+ "\n (FONTNAME %s%02i)"@/
+ "\n (FONTCHECKSUM O %lo)"@/
+ "\n (FONTAT R 1.0)"@/
+ "\n (FONTDSIZE R %.6f)"@/
+ "\n )", i, output_name, i + 1, checksum, design_size);
+ }@#
+
+ for(c = min_char, i = 0, count = 0; c <= max_char; c++)
+ {if(b2_codes[c & 0xFF] == VALID_SUBCODE)
+ {fprintf(out,@/
+ "\n(CHARACTER O %o"@/
+ "\n (CHARWD R %.6f)"@/
+ "\n (CHARHT R %.6f)"@/
+ "\n (CHARDP R %.6f)"@/
+ "\n (CHARIC R %.6f)"@/
+ "\n (MAP"@/
+ "\n (SELECTFONT D %i)"@/
+ "\n (SETCHAR O %o)"@/
+ "\n )"@/
+ "\n )",@/
+ c,
+ tfm_output_size_x + 2 * tfm_offset_x,
+ tfm_output_size_y + tfm_offset_y,
+ -tfm_offset_y,
+ slant * (tfm_output_size_y + tfm_offset_y),
+ i,
+ count);@#
+
+ count++;
+ if(count == 256)
+ {count = 0;
+ i++;
+ }
+ }
+ else
+ continue;
+ }@#
+
+ fclose(out);
+ }
+
+
+
+@* The job file.
+This routine is the most system specific one. If your operating system needs
+a different outline, make appropriate changes here.
+
+You have to call this batch file after \.{hbf2gf} has finished (if not in
+\mf-like mode). It will transform the \.{GF} files into \.{PK} files and
+delete the now unnecessary \.{GF} files, then transform the \.{PL} file into
+a \.{TFM} file and copy it |nmb_files| times. The name of the job file is
+|output_name|.
+
+@d EXTENSION_LENGTH 8 /* the maximal length of a file extension */@#
+
+@d GFTOPK_NAME "gftopk"
+@d PLTOTF_NAME "pltotf"
+@d OVP2OVF_NAME "ovp2ovf"
+
+@<Global...@>=
+char job_extension[EXTENSION_LENGTH + 1];
+char rm_command[STRING_LENGTH + 1];
+char cp_command[STRING_LENGTH + 1];
+char pk_directory[STRING_LENGTH + 1];
+char tfm_directory[STRING_LENGTH + 1];@#
+
+int ofm_file = FALSE;
+
+
+@
+@<Prototypes@>=
+static void write_job(void);
+
+
+@
+@c
+static void write_job(void)
+ {FILE *out;
+ int i, j;
+ char buffer[FILE_NAME_LENGTH + 1];
+
+
+ strcpy(buffer, output_name);
+ strcat(buffer, job_extension);
+ if(!(out = fopen(buffer, WRITE_TXT)))
+ {fprintf(stderr, "Couldn't open `%s'\n", buffer);
+ exit(1);
+ }
+ if(!quiet)
+ printf("\nWriting `%s'\n", buffer);@#
+
+ if(pk_files)
+ {if(unicode)
+ {for(i = (min_char >> 8), j = 0; j < nmb_files; i++, j++)
+ fprintf(out,@/
+ "%s %s%02x.gf %s%s%02x.%.0ipk\n"@/
+ "%s %s%02x.gf\n",@/
+ GFTOPK_NAME, output_name, i,@/
+ pk_directory, output_name, i,
+ long_extension ? (int)(dpi_x * magstep_x + 0.5) : 0,@/
+ rm_command, output_name, i);
+ }
+ else
+ {for(i = 1; i <= nmb_files; i++)
+ fprintf(out,@/
+ "%s %s%02i.gf %s%s%02i.%.0ipk\n"@/
+ "%s %s%02i.gf\n",@/
+ GFTOPK_NAME, output_name, i,@/
+ pk_directory, output_name, i,
+ long_extension ? (int)(dpi_x * magstep_x + 0.5) : 0,@/
+ rm_command, output_name, i);
+ }
+ }@#
+
+ if(tfm_files)
+ {fprintf(out,@/
+ "\n"@/
+ "%s %s.pl %s.tfm\n"@/
+ "%s %s.pl\n"@/
+ "\n",@/
+ PLTOTF_NAME, output_name, output_name,@/
+ rm_command, output_name);@#
+
+ if(unicode)
+ {for(i = (min_char >> 8), j = 0; j < nmb_files; i++, j++)
+ fprintf(out,@/
+ "%s %s.tfm %s%s%02x.tfm\n",@/
+ cp_command, output_name,
+ tfm_directory, output_name, i);
+ }
+ else
+ {for(i = 1; i <= nmb_files; i++)
+ fprintf(out,@/
+ "%s %s.tfm %s%s%02i.tfm\n",@/
+ cp_command, output_name,
+ tfm_directory, output_name, i);
+ }@#
+
+ fprintf(out,@/
+ "\n"@/
+ "%s %s.tfm",@/
+ rm_command, output_name);
+ }@#
+
+ if(ofm_file)
+ {fprintf(out,@/
+ "\n"@/
+ "%s %s.ovp %s.ovf %s.ofm\n"@/
+ "%s %s.ovp\n"@/
+ "\n",@/
+ OVP2OVF_NAME, output_name, output_name, output_name,@/
+ rm_command, output_name);
+ }@#
+
+ fclose(out);
+ }
+
+
+
+@* The configuration file.
+Here is a list with all necessary keywords (and parameters):
+\medskip
+\halign{\quad\.{#}\hfil&\quad#\hfil\cr
+ hbf\_header & the HBF header file name of the input font(s). \cr
+ output\_name & the name stem of the output files. \cr
+ & Should be equal to the name of the configuration file
+ in most cases.\cr
+ & A running two digit decimal number starting with
+ \.{01} will be appended. \cr
+ & (For Unicode fonts see the keyword \.{unicode}
+ below.) \cr
+ }
+\bigskip
+And now all optional keywords:
+\medskip
+\halign{\quad\.{#}\hfil&\quad#\hfil\cr
+ x\_offset & increases the character width. \cr
+ & Will be applied on both sides; \cr
+ & default is the value given in the HBF header
+ (\.{HBF\_BITMAP\_BOUNDING\_BOX}) \cr
+ & scaled to \\{design\/}size (in pixels). \cr
+ y\_offset & shifts all characters up or down; \cr
+ & default is the value given in the HBF header
+ (\.{HBF\_BITMAP\_BOUNDING\_BOX}) \cr
+ & scaled to \\{design\/}size (in pixels). \cr
+ design\_size & the design size (in points) of the font. \cr
+ & \.{x\_offset} and \.{y\_offset} refer to this
+ size. \cr
+ & Default is |10.0| \cr
+ target\_size & This command is obsolete now and will be
+ ignored.\cr
+ & \cr
+ slant & the slant of the font (given as $\Delta x /
+ \Delta y$). \cr
+ & Only values in the range |0 <= slant <= 1|
+ are allowed. \cr
+ & Default is |0.0| \cr
+ rotation & if set to `yes'. the glyphs are rotated
+ 90~degrees counter-clockwise. \cr
+ & The default offsets as given in the HBF header
+ will be ignored (and set to~|0|). \cr
+ & Default is `no'. \cr
+ & \cr
+ mag\_x & \cr
+ mag\_y & scaling values of the characters to reach
+ design size. \cr
+ & If only one magnification is given, x and y
+ values are assumed to be equal. \cr
+ & Default is \.{mag\_x} $=$ \.{mag\_y} $=$ |1.0|
+ \cr
+ threshold & A value between |1| and |254| defining a
+ threshold for converting the internal \cr
+ & graymap into the output bitmap; lower values
+ cut more pixels. \cr
+ & Default value is |128|. \cr
+ & \cr
+ comment & a comment describing the font; \cr
+ & default is none. \cr
+ & \cr
+ nmb\_fonts & the number of the fonts. \cr
+ & Default value is~|-1| for creating all
+ fonts. \cr
+ unicode & if `yes', a two digit hexadecimal number will
+ be used as a running number, \cr
+ & starting with the value of the first byte of
+ the first code range. \cr
+ & Default is `no'. \cr
+ min\_char & the minimum of the encoding range. \cr
+ & Specify this value if it is not identical to
+ the lowest code value \cr
+ & in the HBF file (to which it defaults). \cr
+ & \cr
+ dpi\_x & \cr
+ dpi\_y & the horizontal and vertical resolution (in
+ dpi) of the printer. \cr
+ & If only one resolution is given, x and y
+ values are assumed to be equal. \cr
+ & Default is |300|. \cr
+ checksum & a checksum to identify the \.{GF} files
+ with the appropriate \.{TFM} files. \cr
+ & The default of this 32~bit unsigned integer
+ is |0|. \cr
+ coding & a comment describing the coding scheme; \cr
+ & default is none. \cr
+ & \cr
+ pk\_directory & the destination directory of the
+ \.{PK} files; \cr
+ & default: none. \cr
+ & Attention! The batch file will not check
+ whether this directory exists. \cr
+ tfm\_directory & the destination directory of the
+ \.{TFM} files; \cr
+ & default: none. \cr
+ & Attention! The batch file will not check
+ whether this directory exists. \cr
+ pk\_files & whether to create \.{PK} files or not; \cr
+ & default is `yes'. \cr
+ tfm\_files & whether to create \.{TFM} files or not; \cr
+ & default is `yes'. \cr
+ ofm\_file & whether to create an \.{OFM} and an
+ \.{OVF} file or not; \cr
+ & default is `no'. \cr
+ long\_extension & if `yes', \.{PK} files will include the
+ resolution in the extension \cr
+ & (e.g. \.{gsso1201.300pk}). \cr
+ & This affects the batch file only (default is
+ `yes'). \cr
+ rm\_command & this shell command removes files; \cr
+ & default: `rm'. \cr
+ cp\_command & this shell command copies files; \cr
+ & default: `cp'. \cr
+ job\_extension & the extension of the batch file which calls
+ \.{GFtoPK} and \.{PLtoTF} \cr
+ & to convert the \.{GF} and the
+ \.{PL} files into \.{PK} and
+ \.{TFM} files; \cr
+ & default is none. \cr
+ }
+\bigskip
+
+The searching algorithm (for the keywords) of \.{hbf2gf} is case
+insensitive; it makes no difference whether you write for example \.{comment}
+or \.{CommenT}. The keywords must start a line (be in the first column), and
+the corresponding parameters must be on the same line with the keyword and
+separated by at least one space or tabulator stop. Lines starting not with a
+keyword are ignored.
+
+Key values \\{are} case sensitive (except \.{yes} and \.{no}).
+
+The default system dependent values are for \UNIX/-like operating systems;
+if you use for example DOS, you must write
+\medskip
+\halign{\quad\.{#}\hfil&\quad\.{#}\hfil\cr
+ long\_extension & no \cr
+ rm\_command & del \cr
+ cp\_command & copy \cr
+ job\_extension & .bat \cr
+ }
+\medskip
+
+Both the values |pk_output_size_x| and |pk_output_size_y| must not exceed
+|MAX_CHAR_SIZE|; \.{x\_offset} and \.{y\_offset} are related to the
+design size (and not to the input size).
+
+In \mf-like mode, one \.{GF} file and one \.{PL} file will be computed
+(depending on the command line options \.{-g} and \.{-p}), taking
+|x_resolution| and |y_scale| from the command line. \.{nmb\_fonts} will
+always be set to~|1|; no job file will be created.
+
+
+@
+@d PRINTER_MIN_RES_X 50
+@d PRINTER_MIN_RES_Y 50
+
+@<Global...@>=
+char Buffer[STRING_LENGTH + 1];
+
+
+@
+@<Prototypes@>=
+static void read_config(void);
+
+
+@
+If |config_file| isn't found in \mf-like mode we assume that the font
+isn't a HBF font at all.
+
+@c
+static void read_config(void)
+ {HBF_BBOX *boxp;
+ char *real_config_file;
+
+
+ @<Handle extension@>@;@#
+
+ real_config_file = TeX_search_cfg_file(config_file);
+ if(!real_config_file)
+ {if(mf_like)
+ {if(!quiet)
+ printf("Couldn't find `%s'\n", config_file);
+ exit(2);
+ }
+ else
+ {fprintf(stderr, "Couldn't find `%s'\n", config_file);
+ exit(1);
+ }
+ }@#
+
+ if(!(config = fopen(real_config_file, READ_TXT)))
+ {if(!testing)
+ {fprintf(stderr, "Couldn't open `%s'\n", config_file);
+ exit(1);
+ }
+ else /* We reach this point only if no searching library is used */
+ {if(!quiet)
+ fprintf(stderr, "Couldn't find or open `%s'\n", config_file);
+ exit(2);
+ }
+ }@#
+
+ if(testing)
+ {if(!quiet)
+ printf("%s\n", real_config_file);
+ exit(0);
+ }
+
+ @<Necessary parameters@>@;
+ @<Optional parameters@>@;@#
+
+ @<Get code range@>@;
+ @<Get sub code range@>@;@#
+
+ fclose(config);
+ }
+
+
+@
+Here we check whether we have to add an extension.
+
+@<Handle extension@>=
+ {int i, lastext = -1;
+
+ for(i = 0; config_file[i]; i++)
+ if(config_file[i] == '.')
+ lastext = i;
+ else if (config_file[i] == '/' ||
+ config_file[i] == ':' ||
+ config_file[i] == '\\')
+ lastext = -1;@#
+
+ if(lastext == -1)
+ strcat(config_file, ".cfg");
+ }
+
+
+@
+@<Necess...@>=
+ {char hbf_header[STRING_LENGTH + 1];
+ char *real_hbf_header;
+
+ if(!fsearch("hbf_header"))
+ config_error("hbf_header");
+ else
+ strcpy(hbf_header, Buffer);@#
+
+ real_hbf_header = TeX_search_hbf_file(hbf_header);
+ if(!real_hbf_header)
+ {fprintf(stderr, "Couldn't find `%s'\n", hbf_header);
+ exit(1);
+ }@#
+
+ hbfDebug = 1; /* we activate error messages of the HBF API
+ while scanning the HBF header file */@#
+
+ if(!(hbf = hbfOpen(real_hbf_header)))
+ exit(1);@#
+
+ hbfDebug = 0;@#
+
+ boxp = hbfBitmapBBox(hbf);
+ input_size_x = boxp->hbf_height; /* will be checked later for rotation */
+ input_size_y = boxp->hbf_width;
+ font_encoding = hbfProperty(hbf, "HBF_CODE_SCHEME");@#
+
+ if(!fsearch("output_name"))
+ config_error("output_name");
+ else
+ strcpy(output_name, Buffer);
+ }
+
+
+@
+@<Global...@>=
+int offset_x;
+int offset_y;@#
+
+HBF_CHAR user_min_char;
+int have_min_char = FALSE;
+
+@
+@<Opt...@>=
+ {if(fsearch("nmb_files"))
+ nmb_files = atoi(Buffer);
+ if(fsearch("unicode"))
+ if(Buffer[0] == 'y' || Buffer[0] == 'Y')
+ unicode = TRUE;
+ if(fsearch("min_char"))
+ {user_min_char = strtoul(Buffer, (char **)NULL, 0);
+ have_min_char = TRUE;
+ }@#
+
+ if(!mf_like)
+ {if(fsearch("pk_files"))
+ if(Buffer[0] == 'n' || Buffer[0] == 'N')
+ pk_files = FALSE;
+ if(fsearch("tfm_files"))
+ if(Buffer[0] == 'n' || Buffer[0] == 'N')
+ tfm_files = FALSE;
+ if(fsearch("ofm_file"))
+ if(Buffer[0] == 'y' || Buffer[0] == 'Y')
+ ofm_file = TRUE;
+ if(fsearch("long_extension"))
+ if(Buffer[0] == 'n' || Buffer[0] == 'N')
+ long_extension = FALSE;
+ }@#
+
+ if(fsearch("slant"))
+ slant = atof(Buffer);
+ if(slant < 0.0 || slant > 1.0)
+ {fprintf(stderr, "Invalid slant\n");
+ exit(1);
+ }
+ if(fsearch("rotation"))
+ if(Buffer[0] == 'y' || Buffer[0] == 'Y')
+ rotation = TRUE;@#
+
+ if(fsearch("mag_x"))
+ mag_x = atof(Buffer);
+ if(fsearch("mag_y"))
+ mag_y = atof(Buffer);
+ if(!mag_x && !mag_y)
+ {mag_x = 1.0;
+ mag_y = 1.0;
+ }
+ if(mag_x && !mag_y)
+ mag_y = mag_x;
+ if(mag_y && !mag_x)
+ mag_x = mag_y;
+ if(mag_x <= 0.0)
+ {fprintf(stderr, "Invalid horizontal magnification\n");
+ exit(1);
+ }
+ if(mag_y <= 0.0)
+ {fprintf(stderr, "Invalid vertical magnification\n");
+ exit(1);
+ }@#
+
+ if(fsearch("dpi_x"))
+ dpi_x = atoi(Buffer);
+ if(fsearch("dpi_y"))
+ dpi_y = atoi(Buffer);
+ if(!dpi_x && !dpi_y)
+ {dpi_x = 300;
+ dpi_y = 300;
+ }
+ if(dpi_x && !dpi_y)
+ dpi_y = dpi_x;
+ if(dpi_y && !dpi_x)
+ dpi_x = dpi_y;
+ if(dpi_x <= PRINTER_MIN_RES_X)
+ {fprintf(stderr, "Invalid horizontal printer resolution\n");
+ exit(1);
+ }
+ if(dpi_y <= PRINTER_MIN_RES_Y)
+ {fprintf(stderr, "Invalid vertical printer resolution\n");
+ exit(1);
+ }@#
+
+ if(fsearch("design_size"))
+ design_size = atof(Buffer);@#
+
+ if(fsearch("x_offset"))
+ offset_x = atoi(Buffer);
+ else
+ offset_x = rotation ? 0 : (boxp->hbf_xDisplacement * mag_x + 0.5);
+ if(fsearch("y_offset"))
+ offset_y = atoi(Buffer);
+ else
+ offset_y = rotation ? 0 : (boxp->hbf_yDisplacement * mag_y + 0.5);
+ if(!fsearch("comment"))
+ comment[0] = '\0';
+ else
+ strcpy(comment, Buffer);@#
+
+ if(fsearch("threshold"))
+ threshold = atoi(Buffer);
+ if(threshold <= 0 || threshold >= 255)
+ {fprintf(stderr, "Invalid threshold\n");
+ exit(1);
+ }@#
+
+ if(!fsearch("checksum"))
+ checksum = 0;
+ else
+ checksum = strtoul(Buffer, (char **)NULL, 0);@#
+
+ if(!fsearch("coding"))
+ coding[0] = '\0';
+ else
+ strcpy(coding, Buffer);@#
+
+ if(!fsearch("pk_directory"))
+ pk_directory[0] = '\0';
+ else
+ strcpy(pk_directory, Buffer);@#
+
+ if(!fsearch("tfm_directory"))
+ tfm_directory[0] = '\0';
+ else
+ strcpy(tfm_directory, Buffer);@#
+
+ if(fsearch("rm_command"))
+ strcpy(rm_command, Buffer);
+ else
+ strcpy(rm_command, "rm");@#
+
+ if(fsearch("cp_command"))
+ strcpy(cp_command, Buffer);
+ else
+ strcpy(cp_command, "cp");@#
+
+ if(!fsearch("job_extension"))
+ job_extension[0] = '\0';
+ else
+ {strncpy(job_extension, Buffer, EXTENSION_LENGTH);
+ job_extension[EXTENSION_LENGTH] = '\0';
+ }
+ }
+
+
+@
+The function |hbfGetCodeRange()| is an extension to the HBF API.
+
+Successive calls return the code ranges in ascending order; we only need the
+extrema of the whole code range.
+
+In case |min_char| has been supplied in the configuration file, we use that
+value instead.
+
+@<Global...@>=
+HBF_CHAR min_char, max_char;
+
+
+@
+@<Get code range@>=
+ {const void *cp;
+ HBF_CHAR dummy;
+
+ cp = hbfGetCodeRange(hbf, NULL, &min_char, &max_char);
+ for(; cp != NULL; cp = hbfGetCodeRange(hbf, cp, &dummy, &max_char))
+ ;@#
+
+ if(have_min_char)
+ min_char = user_min_char;
+ }
+
+
+@
+The function |hbfGetByte2Range()| is an extension to the HBF API.
+
+Successive calls return the byte~2 ranges in ascending order. We raise
+|VALID_SUBCODE| in the array |b2_codes[]| for all characters in subcode
+ranges.
+
+@d VALID_SUBCODE 1
+
+@<Global...@>=
+char b2_codes[256];
+unsigned char min_2_byte, max_2_byte;
+int nmb_2_bytes = 0;
+
+
+@
+@<Get sub code range@>=
+ {const void *b2r;
+ unsigned char dummy;
+ int i;
+
+ for(i = 0; i < 256; i++)
+ b2_codes[i] = 0;@#
+
+ b2r = hbfGetByte2Range(hbf, NULL, &min_2_byte, &max_2_byte);
+ dummy = min_2_byte;
+ for(; b2r != NULL; b2r = hbfGetByte2Range(hbf, b2r, &dummy, &max_2_byte))
+ {for(i = dummy; i <= max_2_byte; i++)
+ b2_codes[i] = VALID_SUBCODE;
+ }@#
+
+ for(i = 0; i < 256; i++) /* compute the number of valid |b2_codes| */
+ if(b2_codes[i] == VALID_SUBCODE)
+ nmb_2_bytes++;
+ }
+
+
+@
+This search routine is case insignificant. Each keyword must start a line;
+the function checks whether the character before the keyword is a newline
+character (|'\n'|). It also checks the presence of a parameter and fills
+|Buffer| if existent. |fsearch()| returns~1 on success.
+
+@<Prototypes@>=
+static int fsearch(const char *);
+
+
+@
+@c
+static int fsearch(const char *search_string)
+ {char *P, p;
+ const char *Q;
+ char temp_buffer[STRING_LENGTH + 1];
+ char env_name[STRING_LENGTH + 1];
+ char *env_p;
+ char *env_value;
+ char *Buf_p;
+ int Ch, ch, old_ch = '\n';
+ int count = STRING_LENGTH;
+
+ rewind(config); /* we start at offset~0 */@#
+
+ do
+ {Q = search_string;
+ p = tolower((unsigned char)*Q);
+ Ch = fgetc(config);
+ ch = tolower(Ch);
+ while(!(ch == p && old_ch == '\n') && Ch != EOF)
+ /* search first character of |search_string|;
+ |'\n'| must be the character before */
+ {old_ch = ch;
+ Ch = fgetc(config);
+ ch = tolower(Ch);
+ }@#
+
+ for(;;)
+ {if(*(++Q) == '\0')
+ if((Ch = fgetc(config)) == ' ' || Ch == '\t')
+ /* there must be a space or a tab stop after the keyword */
+ goto success;
+ Ch = fgetc(config);
+ if(tolower(Ch) != tolower((unsigned char)*Q))
+ break;
+ }
+ }
+ while(Ch != EOF);@#
+
+ return 0;@#
+
+success:
+ P = temp_buffer;@#
+
+ while((Ch = fgetc(config)) == ' ' || Ch == '\t')
+ /* remove leading blanks and tabs */
+ ;
+ while(Ch != '\n' && --count > 0 && Ch != EOF) /* fill |Buffer| */
+ {*P++ = Ch;
+ Ch = fgetc(config);
+ }
+ *P = '\0';@#
+
+ if (*temp_buffer)
+ @<Check for environment variables@>@;
+ else
+ *Buffer = '\0';@#
+
+ return (*Buffer) ? 1 : 0; /* is there something in the buffer? */
+ }
+
+
+@
+To make the configuration file more flexible we allow environment variables
+in the arguments. We scan the parameter stored in |temp_buffer| whether it
+contains a `\.{\$}' character. If yes, the following code fragment tries to
+get an environment variable name whose value will be then fetched with
+|getenv()|. An environment variable name recognized by \.{hbf2gf} must start
+with a letter or underscore; the other characters may be alphanumeric or an
+underscore. You can surround the environment variable name with braces to
+indicate where the name ends, e.g. \.{\$\{FOO\}}. The interpolated
+configuration parameter will be truncated to |STRING_LENGTH| characters. If
+you want to have `\.{\$}' you must write `\.{\$\$}'.
+
+Note that you should avoid to use such environment variables for specifying
+the location of the configuration file in case you have support for a file
+searching library like kpathsea. Its primary aim is to specify the target
+directories for the \.{pk\_directory} and the \.{tfm\_directory} keywords.
+
+@<Check for environment variables@>=
+ {P = temp_buffer;
+ Buf_p = Buffer;
+ count = STRING_LENGTH - 1;@#
+
+ while(*P && count > 0)
+ {env_p = env_name;@#
+
+ if(*P == '$')
+ {P++;
+ if(*P == '$')
+ {*(Buf_p++) = *(P++);
+ count--;
+ continue;
+ }
+ while(*P == '{') @q } @>
+ P++;
+ if(!(isalpha((unsigned char)*P) || *P == '_'))
+ {fprintf(stderr,@/
+ "Invalid environment variable name in configuration file\n");
+ exit(1);
+ }
+ *(env_p++) = *(P++);
+ while(*P)
+ {if(isalnum((unsigned char)*P) || *P == '_')
+ *(env_p++) = *(P++);
+ else
+ {@q { @> while(*P == '}')
+ P++;
+ *env_p = '\0';
+ break;
+ }
+ }@#
+
+ env_value = getenv(env_name);
+ if(env_value) /* append the environment value to |Buffer| */
+ {while(*env_value && count > 0)
+ {*(Buf_p++) = *(env_value++);
+ count--;
+ }
+ }
+ }
+ else
+ {*(Buf_p++) = *(P++);
+ count--;
+ }
+ }
+ *Buf_p = '\0';
+ }
+
+
+@
+If an error occurs, |config_error()| will leave the program with an error
+message.
+
+@<Prototypes@>=
+static void config_error(const char *);
+
+
+@
+@c
+static void config_error(const char *message)
+ {fprintf(stderr, "Couldn't find `%s' entry in configuration file\n",
+ message);
+ exit(1);
+ }
+
+
+
+@* File searching.
+
+We support three searching engines: emtexdir, kpathsea, and MiKTeX (which is
+a Win32 port of kpathsea). For emtexdir, define |HAVE_EMTEXDIR| while
+compiling. For kpathsea, define |HAVE_LIBKPATHSEA|. For MikTeX, define
+|HAVE_MIKTEX|. If none of these macros is defined, a simple |fopen()| will
+be used instead.
+
+@<Include files@>=
+#if defined(HAVE_LIBKPATHSEA)
+#include "kpathsea/kpathsea.h"
+
+#elif defined(HAVE_EMTEXDIR)
+#include "emtexdir.h"
+
+#elif defined(HAVE_MIKTEX)
+#include "miktex.h"
+#endif
+
+@
+@<Global variables@>=
+#if defined(HAVE_EMTEXDIR)
+char emtex_version_string[] = "emTeXdir";
+#elif !defined(HAVE_MIKTEX)
+char no_version_string[] = "no search library";
+#endif
+
+
+@
+@<Prototypes@>=
+static const char *TeX_search_version(void);
+
+
+@
+@c
+static const char *TeX_search_version(void)
+ {
+#if defined(HAVE_LIBKPATHSEA)
+ return kpathsea_version_string;
+#elif defined(HAVE_EMTEXDIR)
+ return emtex_version_string;
+#elif defined(HAVE_MIKTEX)
+ char buf[200];
+
+ strcpy(buf, "MiKTeX ");
+ miktex_get_miktex_version_string_ex(buf + 7, sizeof (buf) - 7);
+
+ return buf;
+#else
+ return no_version_string;
+#endif
+ }
+
+
+@
+@s emtex_dir int
+
+@<Global variables@>=
+#ifdef HAVE_EMTEXDIR
+struct emtex_dir cfg_path, hbf_path;
+#endif
+
+
+@
+@<Prototypes@>=
+#ifdef HAVE_EMTEXDIR
+extern int setup_list(struct emtex_dir *, char *, const char *, unsigned);
+static int dir_setup(struct emtex_dir *, const char *, const char *, unsigned);
+static char *file_find(char *, struct emtex_dir *);
+#endif
+
+
+@
+We slightly modify |emtex_dir_setup()| (from the file \.{emtexdir.c}) to
+output a warning in case the environment variable |env| isn't set properly.
+
+@c
+#ifdef HAVE_EMTEXDIR
+static int dir_setup(ed, env, dir, flags)
+ struct emtex_dir *ed;
+ const char *env;
+ const char *dir;
+ unsigned flags;
+
+ {const char *val;
+ char path[260];
+
+ ed->alloc = 0;
+ ed->used = 0;
+ ed->list = NULL;@#
+
+ if(env != NULL && (val = getenv(env)) != NULL)
+ return setup_list(ed, path, val, flags);
+ else
+ fprintf(stderr,
+ "Environment variable `%s' not set; use current directory\n",
+ env);@#
+
+ return TRUE;
+ }
+#endif
+
+
+@
+@<Global variables@>=
+#ifdef HAVE_EMTEXDIR
+char name_buffer[FILE_NAME_LENGTH + 1];
+#endif
+
+
+@
+@c
+#ifdef HAVE_EMTEXDIR
+static char *file_find(name, list)
+ char *name;
+ struct emtex_dir *list;
+
+ {if(emtex_dir_find(name_buffer, sizeof(name_buffer), list, name, EDF_CWD))
+ return name_buffer;@#
+
+ return NULL;
+ }
+#endif
+
+
+@
+For emtexdir we use the environment variables \.{HBFCFG} and \.{HBFONTS} for
+configuration resp.\ HBF header files.
+
+@<Initialize \TeX\ file searching@>=
+#if defined(HAVE_LIBKPATHSEA)
+ kpse_set_program_name(argv[0], "hbf2gf");
+ kpse_init_prog("HBF2GF", 300, "cx", "cmr10");@#
+
+#elif defined(HAVE_EMTEXDIR)
+ if(!dir_setup(&cfg_path, "HBFCFG", NULL, EDS_BANG))
+ {fprintf(stderr,
+ "Couldn't setup search path for configuration files\n");
+ exit(1);
+ }
+ if(!dir_setup(&hbf_path, "HBFONTS", NULL, EDS_BANG))
+ {fprintf(stderr,
+ "Couldn't setup search path for HBF header files\n");
+ exit(1);
+ }
+#endif
+
+
+@
+Finally, here are the searching routines. A special format in the kpathsea
+library for fonts which are neither PostScript nor TrueType (\.{MISCFONTS})
+is available with version~3.3 and newer. For older versions we use the path
+for PostScript fonts (\.{T1FONTS}) to find HBF files. Configuration files
+are searched in the path specified within \.{TEXCONFIG} for old kpathsea
+versions, and within \.{HBF2GFINPUTS} for new versions.
+
+@<Prototypes@>=
+static char *TeX_search_cfg_file(char *);
+static char *TeX_search_hbf_file(char *);
+
+
+@
+@c
+#if defined(HAVE_LIBKPATHSEA)
+static char *TeX_search_cfg_file(char *name)
+ {
+ return kpse_find_file(name, kpse_program_text_format, TRUE);
+ }@#
+
+
+static char *TeX_search_hbf_file(char *name)
+ {
+ return kpse_find_file(name, kpse_miscfonts_format, TRUE);
+ }@#
+
+
+#elif defined(HAVE_EMTEXDIR)
+static char *TeX_search_cfg_file(char *name)
+ {return file_find(name, &cfg_path);
+ }@#
+
+
+static char *TeX_search_hbf_file(char *name)
+ {return file_find(name, &hbf_path);
+ }@#
+
+
+#elif defined(HAVE_MIKTEX)
+static char *TeX_search_cfg_file(char *name)
+ {char result[_MAX_PATH];
+
+ if (!miktex_find_input_file("hbf2gf", *name, result))
+ return 0;
+ return strdup(result);
+ }@#
+
+
+static char *TeX_search_hbf_file(char *name)
+ {char result[_MAX_PATH];
+
+
+ if (!miktex_find_miscfont_file(*name, result))
+ return 0;
+ return strdup(result);
+ }@#
+
+
+#else
+static char *TeX_search_cfg_file(char *name)
+ {return name;
+ }@#
+
+
+static char *TeX_search_hbf_file(char *name)
+ {return name;
+ }
+#endif
+
+
+
+@* An example.
+This is the example configuration file \.{b5so12.cfg} (for use with DOS or
+OS/2 and the emtexdir searching engine):
+\bigskip
+\halign{\quad\.{#}\hfil&\quad\.{#}\hfil\cr
+ hbf\_header & et24.hbf \cr
+ mag\_x & 2.076 \cr
+ x\_offset & 3 \cr
+ y\_offset & -8 \cr
+ comment & fanti songti 24x24 pixel font scaled and
+ adapted to 12 pt \cr
+ & \cr
+ design\_size & 12.0 \cr
+ & \cr
+ nmb\_fonts & -1 \cr
+ & \cr
+ output\_name & b5so12 \cr
+ & \cr
+ dpi\_x & 300 \cr
+ checksum & 123456789 \cr
+ coding & codingscheme Big 5 encoded TeX text \cr
+ & \cr
+ long\_extension & no \cr
+ job\_extension & .cmd \cr
+ rm\_command & del \cr
+ cp\_command & copy \cr
+ pk\_directory & \$HBF\_TARGET\\pk\\360dpi\\ \cr
+ tfm\_directory & \$HBF\_TARGET\\tfm\\ \cr
+ }
+\bigskip
+If you say e.g.
+\medskip
+\quad \.{set HBF\_TARGET=c:\\emtex\\texfonts}
+\medskip
+on your DOS prompt (or in your \.{autoexec.bat} file), then the interpolated
+value of the \.{tfm\_directory} keyword is \.{c:\\emtex\\texfonts\\tfm\\}.
+The HBF header file \.{et24.hbf} will be searched in the path specified by
+the \.{HBFCFG} environment variable.
+\bigskip
+The call
+\medskip
+\quad \.{hbf2gf b5so12.cfg}
+\medskip
+creates the files
+\medskip
+\quad \.{b5so1201.gf}, \.{b5so1202.gf}, $\ldots$ , \.{b5so1255.gf},
+\.{b5so12.pl}, and \.{b5so12.cmd}
+\bigskip
+After calling
+\medskip
+\quad \.{b5so12.cmd}
+\medskip
+you will find the \.{PK} files in the
+\.{c:\\emtex\\texfonts\\pk\\360dpi} directory and the \.{TFM} files in
+the \.{c:\\emtex\\texfonts\\tfm} directory; all \.{GF} files and
+\.{b5so12.pl} will be deleted.
+\bigskip
+The call
+\medskip
+\quad \.{hbf2gf -n b5so1220 417}
+\medskip
+creates two files:
+\medskip
+\quad \.{b5so1220.gf} and \.{b5so1220.pl}
+\medskip
+using the configuration file \.{b5so12.cfg}. The \.{GF} file would be
+named \.{b5so1220.417gf} if the flag \.{-n} had not been used.
+
+\medskip
+
+It is possible to convert bitmap fonts to \.{PK} files almost
+automatically. The HBF header file already has the entry
+\.{HBF\_BITMAP\_BOUNDING\_BOX} which defines vertical and horizontal offsets
+(in pixels), but these values are not in all cases optimal. If you omit
+\.{x\_offset} and \.{y\_offset} in the configuration file, the third and
+fourth parameter of \.{HBF\_BITMAP\_BOUNDING\_BOX} is used, scaled to design
+size (to say it in other words: \.{x\_offset} and \.{y\_offset} will always
+apply to the design size to be synchronous with the \.{TFM} files).
+
+Don't confuse scaling and magnification: Scaling here means that you choose
+a (arbitrary) design size and compute scaling values (\.{mag\_x} and
+\.{mag\_y}) which scales the bitmap to this particular design size at a
+certain (arbitrarily chosen) resolution (\.{dpi\_x} and \.{dpi\_y}).
+Magnification means that the scaled bitmap will be then magnified to a
+certain target size while still using the font parameters (i.e., the
+\.{TFM} file) of the design size.
+
+In the sample, you have a $24 \times 24$ bitmap font which will be scaled to
+$12\,\hbox{pt}$ having a resolution of $300\,\hbox{dpi}$:
+\medskip
+\quad $1\,\hbox{pt}$ are $300 / 72.27 = 4.1511$ pixel;
+
+\quad $12\,\hbox{pt}$ are $4.1511 * 12 = 49.813$ pixel;
+
+\quad thus the theoretical scaling value is $49.813 / 24 = 2.076$.
+
+\medskip
+
+But especially for small sizes, this may not be the best value if the font
+should harmonize with, say, Knuth's Computer Modern fonts. I recommend to
+compute, say, 5~\.{PK} fonts, then check the CJK font with different \TeX\
+fonts to see whether the offsets and/or the scaling value is good. The
+greater the design size the finer you can control the offsets---as an
+example you could use a design size of $30\,\hbox{pt}$ (nevertheless there
+is a compile-time constant |MAX_CHAR_SIZE| which limits the maximal
+character size; default is 255~pixels).
+
+If you have found optimal offsets, you can produce many different
+magnifications of the CJK font using the same set of \.{TFM} files
+analogous to ordinary \TeX\ fonts; as a simplification, we assume that
+\.{PK} files with a resolution of $300\,\hbox{dpi}$ and a design size of
+$10\,\hbox{pt}$ have the extension `\.{.300pk}' (respectively come into a
+`\.{300dpi}' subdirectory)---this is the reason why in the above example for
+the $12\,\hbox{pt}$ design size a `\.{360dpi}' target directory has been
+used. Now we can use the following formula:
+
+ $$ \\{needed\_dpi} = \\{your\_horizontal\_resolution} *
+ {\\{your\_target\_size} \over 10.0} $$
+
+Example: assuming that your printer has a resolution of
+$300\times400\,\hbox{dpi}$, and you want $14.4\,\hbox{pt}$:
+
+ $$ 300 * {14.4 \over 10.0} = 432 $$
+
+The vertical scaling value is $400 / 300 = 1.3333$. Use these values now to
+call \.{hbf2gf} in \mf-like mode:
+
+\quad \.{hbf2gf b5so1220 432 1.3333}
+
+
+
+@* Index.
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/install-sh b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/install-sh
new file mode 100755
index 0000000000..ec298b5374
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/install-sh
@@ -0,0 +1,541 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2020-11-14.01; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# 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
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+tab=' '
+nl='
+'
+IFS=" $tab$nl"
+
+# Set DOITPROG to "echo" to test this script.
+
+doit=${DOITPROG-}
+doit_exec=${doit:-exec}
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+# Create dirs (including intermediate dirs) using mode 755.
+# This is like GNU 'install' as of coreutils 8.32 (2020).
+mkdir_umask=22
+
+backupsuffix=
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+is_target_a_directory=possibly
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -p pass -p to $cpprog.
+ -s $stripprog installed files.
+ -S SUFFIX attempt to back up existing files, with suffix SUFFIX.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+
+By default, rm is invoked with -f; when overridden with RMPROG,
+it's up to you to specify -f if you want it.
+
+If -S is not specified, no backups are attempted.
+
+Email bug reports to bug-automake@gnu.org.
+Automake home page: https://www.gnu.org/software/automake/
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -p) cpprog="$cpprog -p";;
+
+ -s) stripcmd=$stripprog;;
+
+ -S) backupsuffix="$2"
+ shift;;
+
+ -t)
+ is_target_a_directory=always
+ dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
+
+ -T) is_target_a_directory=never;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+ if test -n "$dst_arg"; then
+ echo "$0: target directory not allowed when installing a directory." >&2
+ exit 1
+ fi
+fi
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call 'install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ if test $# -gt 1 || test "$is_target_a_directory" = always; then
+ if test ! -d "$dst_arg"; then
+ echo "$0: $dst_arg: Is not a directory." >&2
+ exit 1
+ fi
+ fi
+fi
+
+if test -z "$dir_arg"; then
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names problematic for 'test' and other utilities.
+ case $src in
+ -* | [=\(\)!]) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ # Don't chown directories that already exist.
+ if test $dstdir_status = 0; then
+ chowncmd=""
+ fi
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+ dst=$dst_arg
+
+ # If destination is a directory, append the input filename.
+ if test -d "$dst"; then
+ if test "$is_target_a_directory" = never; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dstbase=`basename "$src"`
+ case $dst in
+ */) dst=$dst$dstbase;;
+ *) dst=$dst/$dstbase;;
+ esac
+ dstdir_status=0
+ else
+ dstdir=`dirname "$dst"`
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ case $dstdir in
+ */) dstdirslash=$dstdir;;
+ *) dstdirslash=$dstdir/;;
+ esac
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ # The $RANDOM variable is not portable (e.g., dash). Use it
+ # here however when possible just to lower collision chance.
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+
+ trap '
+ ret=$?
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
+ exit $ret
+ ' 0
+
+ # Because "mkdir -p" follows existing symlinks and we likely work
+ # directly in world-writeable /tmp, make sure that the '$tmpdir'
+ # directory is successfully created first before we actually test
+ # 'mkdir -p'.
+ if (umask $mkdir_umask &&
+ $mkdirprog $mkdir_mode "$tmpdir" &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ test_tmpdir="$tmpdir/a"
+ ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+ fi
+ trap '' 0;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ oIFS=$IFS
+ IFS=/
+ set -f
+ set fnord $dstdir
+ shift
+ set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=${dstdirslash}_inst.$$_
+ rmtmp=${dstdirslash}_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask &&
+ { test -z "$stripcmd" || {
+ # Create $dsttmp read-write so that cp doesn't create it read-only,
+ # which would cause strip to fail.
+ if test -z "$doit"; then
+ : >"$dsttmp" # No need to fork-exec 'touch'.
+ else
+ $doit touch "$dsttmp"
+ fi
+ }
+ } &&
+ $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+ set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ set +f &&
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # If $backupsuffix is set, and the file being installed
+ # already exists, attempt a backup. Don't worry if it fails,
+ # e.g., if mv doesn't support -f.
+ if test -n "$backupsuffix" && test -f "$dst"; then
+ $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
+ fi
+
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/mkinstalldirs b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/mkinstalldirs
new file mode 100755
index 0000000000..c364f3d5e1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/mkinstalldirs
@@ -0,0 +1,162 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2020-07-26.22; # UTC
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" "" $nl"
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+ case $1 in
+ -h | --help | --h*) # -h for help
+ echo "$usage"
+ exit $?
+ ;;
+ -m) # -m PERM arg
+ shift
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+ dirmode=$1
+ shift
+ ;;
+ --version)
+ echo "$0 $scriptversion"
+ exit $?
+ ;;
+ --) # stop option processing
+ shift
+ break
+ ;;
+ -*) # unknown option
+ echo "$usage" 1>&2
+ exit 1
+ ;;
+ *) # first non-opt arg
+ break
+ ;;
+ esac
+done
+
+for file
+do
+ if test -d "$file"; then
+ shift
+ else
+ break
+ fi
+done
+
+case $# in
+ 0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error. This is a problem when calling mkinstalldirs
+# from a parallel make. We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+ '')
+ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ echo "mkdir -p -- $*"
+ exec mkdir -p -- "$@"
+ else
+ # On NextStep and OpenStep, the 'mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because '.' already
+ # exists.
+ test -d ./-p && rmdir ./-p
+ test -d ./--version && rmdir ./--version
+ fi
+ ;;
+ *)
+ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+ test ! -d ./--version; then
+ echo "umask 22"
+ umask 22
+ echo "mkdir -m $dirmode -p -- $*"
+ exec mkdir -m "$dirmode" -p -- "$@"
+ else
+ # Clean up after NextStep and OpenStep mkdir.
+ for d in ./-m ./-p ./--version "./$dirmode";
+ do
+ test -d $d && rmdir $d
+ done
+ fi
+ ;;
+esac
+
+echo "umask 22"
+umask 22
+
+for file
+do
+ case $file in
+ /*) pathcomp=/ ;;
+ *) pathcomp= ;;
+ esac
+ oIFS=$IFS
+ IFS=/
+ set fnord $file
+ shift
+ IFS=$oIFS
+
+ for d
+ do
+ test "x$d" = x && continue
+
+ pathcomp=$pathcomp$d
+ case $pathcomp in
+ -*) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp"
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ fi
+ fi
+
+ pathcomp=$pathcomp/
+ done
+
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $file"
+ chmod "$dirmode" "$file" || errstatus=$?
+ fi
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXPK.diff b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXPK.diff
new file mode 100644
index 0000000000..02f6250898
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXPK.diff
@@ -0,0 +1,63 @@
+--- MakeTeXPK.orig Sun Feb 23 22:12:05 1997
++++ MakeTeXPK Tue Aug 18 08:07:40 1998
+@@ -80,18 +80,57 @@
+ : ${MAKETEXDIR=$TEXMF/maketex}
+ export TEXMF MAKETEXDIR
+
++unset cmd
++
++# test for TTF fonts
++if test -z "$cmd"; then
++ ttf2pk -q $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "ttf2pk failed" >&2
++ exit 1
++ fi
++ MODE=ttf2pk # preferred mode for TDS would be `modeless'
++ cmd=true
++ fi
++fi
++
++# test for HBF fonts
++if test -z "$cmd"; then
++ hbf2gf -q -p $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "hbf2gf failed" >&2
++ exit 1
++ fi
++ MODE=hbf2gf # preferred mode for TDS would be `modeless'
++ cmd=true
++ fi
++fi
++
++unset psline
++
+ # grep for the font in $PSMAPFILE, if some ps-to-pk is claimed to be supported.
+ # We have to figure out the name of the base font -- $NAME is probably
+ # something like pplr, but it's rpplr or pplr0 or pplr8r that's in psfonts.map.
+-pattern="^r?$NAME"'(0|8r)?([ ]|$)'
+-psline=`egrep "$pattern" $PSMAPFILE`
++if test -z "$cmd"; then
++ pattern="^r?$NAME"'(0|8r)?([ ]|$)'
++ psline=`egrep "$pattern" $PSMAPFILE`
++fi
++
+ if test -n "$psline"; then
+ cmd="gsftopk $NAME $DPI"
+ MODE=gsftopk
+ # some installations have set up gs in such a way that creating files
+ # is only allowed if the parameter -DNOSAFER is used:
+ GS_OPTIONS=-DNOSAFER; export GS_OPTIONS
+-else
++fi
++
++if test -z "$cmd"; then
+ # If an explicit mode is not supplied, try to guess. You can get a
+ # list of extant modes from ftp.cs.umb.edu:pub/tex/modes.mf.
+ if test -z "$MODE" || test "$MODE" = default; then
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXTFM.diff b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXTFM.diff
new file mode 100644
index 0000000000..52cd52e1c1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXTFM.diff
@@ -0,0 +1,28 @@
+--- MakeTeXTFM.orig Mon Feb 10 22:40:31 1997
++++ MakeTeXTFM Tue Aug 18 08:14:40 1998
+@@ -48,7 +48,24 @@
+ BDPI=${MT_DEF_BDPI-600}
+ DPI=$BDPI
+
+-cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++unset cmd
++
++# test for CJK bitmap font in HBF format
++hbf2gf -q $NAME $DPI
++errstatus=$?
++
++if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "$progname: \`hbf2gf failed." >&2
++ exit 1
++ fi
++ pltotf ./$NAME.pl $TFMNAME || exit 1
++ cmd=true
++fi
++
++if test -z "$cmd"; then
++ cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++fi
+
+ set x `MakeTeXnames $NAME $DPI $MODE $DEST`
+ PKDEST=$2
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-6.1/MakeTeXPK.diff b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-6.1/MakeTeXPK.diff
new file mode 100644
index 0000000000..0536dbc7a4
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-6.1/MakeTeXPK.diff
@@ -0,0 +1,75 @@
+--- MakeTeXPK.orig Sun Aug 16 08:05:07 1998
++++ MakeTeXPK Tue Aug 18 07:53:57 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original MakeTeXPK -- make a new PK font, because one wasn't found.
++# MakeTeXPK -- make a new PK font, because one wasn't found.
+ # Version of 12dec94.
+ #
+ # (If you change or delete the word `original' on the previous line,
+@@ -142,11 +142,52 @@
+ test -d $TEMPDIR || mkdir $TEMPDIR
+ cd $TEMPDIR || exit 1
+
++unset cmd
++
++# test for TTF fonts
++if test -z "$cmd"; then
++ ttf2pk -q $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "ttf2pk failed" >&2
++ exit 1
++ fi
++ test -z "$6" && DESTDIR="$DESTROOT/ttf2pk" # preferred mode for TDS
++ # would be `modeless'
++ echo "Successful call to ttf2pk" >&2
++ cmd=ttf2pk
++ fi
++fi
++
++# test for HBF fonts
++if test -z "$cmd"; then
++ hbf2gf -q -p $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "hbf2gf failed" >&2
++ exit 1
++ fi
++ test -z "$6" && DESTDIR="$DESTROOT/hbf2gf" # preferred mode for TDS
++ # would be `modeless'
++ echo "Successful call to hbf2gf" >&2
++ cmd=hbf2gf
++
++ gftopk ./$GFNAME $PKNAME || exit 1
++ fi
++fi
++
+ # grep for the font in $PSMAPFILE, if some ps-to-pk is claimed to be supported.
+ # We have to figure out the name of the base font -- $NAME is probably
+ # something like pplr, but it's rpplr or pplr0 or pplr8r that's in psfonts.map.
+-pattern="^r?$NAME"'(0|8r)?([ ]|$)'
+-test -n "$ps_to_pk" && egrep "$pattern" $PSMAPFILE >psline
++if test -z "$cmd"; then
++ pattern="^r?$NAME"'(0|8r)?([ ]|$)'
++ test -n "$ps_to_pk" && egrep "$pattern" $PSMAPFILE > psline
++fi
++
+ if test -s psline; then
+ # This is a PostScript font.
+ MODE=$ps_to_pk
+@@ -173,8 +214,9 @@
+ export DVIPSHEADERS
+ echo "$0: Running $cmd" >&2
+ $cmd >&2 || { echo "$0: $ps_to_pk failed." >&2; exit 1; }
++fi
+
+-else
++if test -z "$cmd"; then
+ # Try Metafont.
+ MFINPUTS="$MFINPUTS:$SAVEPWD"
+ export MFINPUTS
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-6.1/README b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-6.1/README
new file mode 100644
index 0000000000..eb12bec7a3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-6.1/README
@@ -0,0 +1 @@
+This is for web2c-6.1 with the patch for kpathsea 2.6
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.0/MakeTeXPK.diff b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.0/MakeTeXPK.diff
new file mode 100644
index 0000000000..23f7cb58fe
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.0/MakeTeXPK.diff
@@ -0,0 +1,67 @@
+--- MakeTeXPK.orig Sat Feb 8 15:52:00 1997
++++ MakeTeXPK Tue Aug 18 07:58:22 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original MakeTeXPK -- make a new PK font, because one wasn't found.
++# MakeTeXPK -- make a new PK font, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -44,15 +44,54 @@
+ MODE=$5
+ DEST=$6
+
++unset cmd
++
++# test for TTF fonts
++if test -z "$cmd"; then
++ ttf2pk -q $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "ttf2pk failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++# test for HBF fonts
++if test -z "$cmd"; then
++ hbf2gf -q -p $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "hbf2gf failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++unset psline
++
+ # grep for the font in $PSMAPFILE. These are base font names, such as
+ # rpplr (the original) or pplr0 (an interim step) or pplr8r (current).
+-pattern="^r?$NAME"'(0|8r)?([ ]|$)'
+-psline=`egrep "$pattern" $PSMAPFILE`
++if test -z "$cmd"; then
++ pattern="^r?$NAME"'(0|8r)?([ ]|$)'
++ psline=`egrep "$pattern" $PSMAPFILE`
++fi
++
+ if test -n "$psline"; then
+ MODE=modeless
+ # ps_to_pk set in MakeTeXcommon and/or MakeTeX.site.
+ cmd="$ps_to_pk $NAME $DPI"
+-else
++fi
++
++if test -z "$cmd"; then
+ # Check that $BDPI and $MODE are consistent; if not, ignore the mode and
+ # hope we can correctly guess it from bdpi. (People like to specify the
+ # resolution on the command line, not the mode so much.)
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.0/MakeTeXTFM.diff b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.0/MakeTeXTFM.diff
new file mode 100644
index 0000000000..a67df4e14b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.0/MakeTeXTFM.diff
@@ -0,0 +1,36 @@
+--- MakeTeXTFM.orig Sat Feb 8 15:52:00 1997
++++ MakeTeXTFM Sun Aug 16 15:41:39 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original MakeTeXTFM -- make a new TFM file, because one wasn't found.
++# MakeTeXTFM -- make a new TFM file, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -50,7 +50,25 @@
+ exit 1
+ fi
+
+-cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++unset cmd
++
++# test for CJK bitmap font in HBF format
++hbf2gf -q $NAME $DPI
++errstatus=$?
++
++if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "$progname: \`hbf2gf failed." >&2
++ exit 1
++ fi
++ pltotf ./$NAME.pl $TFMNAME || exit 1
++ cmd=true
++fi
++
++if test -z "$cmd"; then
++ cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++fi
++
+ echo "$0: Running $cmd"
+ $cmd </dev/null
+ test -r $TFMNAME || { echo "$0: \`$cmd' failed to make $TFMNAME."; exit 1; }
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.1/MakeTeXPK.diff b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.1/MakeTeXPK.diff
new file mode 100644
index 0000000000..1faf078adb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.1/MakeTeXPK.diff
@@ -0,0 +1,72 @@
+--- MakeTeXPK.orig Fri Oct 31 09:30:54 1997
++++ MakeTeXPK Tue Aug 18 08:01:33 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original MakeTeXPK -- make a new PK font, because one wasn't found.
++# MakeTeXPK -- make a new PK font, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -57,11 +57,48 @@
+ MODE=$5
+ DEST=$6
+
++unset cmd
++
++# test for TTF fonts
++if test -z "$cmd"; then
++ ttf2pk -q $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "ttf2pk failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++# test for HBF fonts
++if test -z "$cmd"; then
++ hbf2gf -q -p $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "hbf2gf failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++unset psline
++
+ # grep for the font in $PSMAPFILE. These are base font names, such as
+ # rpplr (the original) or pplr0 (an interim step) or pplr8r (current).
+-: ${PSMAPFILE=`kpsewhich psfonts.map`}
+-pattern="^$NAME"'([ ]|$)'
+-psline=`egrep "$pattern" $PSMAPFILE`
++if test -z "$cmd"; then
++ : ${PSMAPFILE=`kpsewhich psfonts.map`}
++ pattern="^r?$NAME"'(0|8r)?([ ]|$)'
++ psline=`egrep "$pattern" $PSMAPFILE`
++fi
++
+ if test -n "$psline"; then
+ MODE=modeless
+ # ps_to_pk is set in MakeTeX.cnf
+@@ -100,7 +137,9 @@
+ cmd="$ps_to_pk $NAME $DPI"
+ ;;
+ esac
+-else
++fi
++
++if test -z "$cmd"; then
+ # Check that $BDPI and $MODE are consistent; if not, ignore the mode and
+ # hope we can correctly guess it from bdpi. (People like to specify the
+ # resolution on the command line, not the mode so much.)
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.1/MakeTeXTFM.diff b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.1/MakeTeXTFM.diff
new file mode 100644
index 0000000000..3fd17f9453
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.1/MakeTeXTFM.diff
@@ -0,0 +1,36 @@
+--- MakeTeXTFM.orig Tue Oct 21 21:22:12 1997
++++ MakeTeXTFM Sun Aug 16 15:51:20 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original MakeTeXTFM -- make a new TFM file, because one wasn't found.
++# MakeTeXTFM -- make a new TFM file, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -53,7 +53,25 @@
+ exit 1
+ fi
+
+-cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++unset cmd
++
++# test for CJK bitmap font in HBF format
++hbf2gf -q $NAME $DPI
++errstatus=$?
++
++if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "$progname: \`hbf2gf failed." >&2
++ exit 1
++ fi
++ pltotf ./$NAME.pl $TFMNAME || exit 1
++ cmd=true
++fi
++
++if test -z "$cmd"; then
++ cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++fi
++
+ echo "$progname: Running $cmd"
+
+ $cmd </dev/null || {
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.2/mktexpk.diff b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.2/mktexpk.diff
new file mode 100644
index 0000000000..ac703fd7d3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.2/mktexpk.diff
@@ -0,0 +1,72 @@
+--- mktexpk.orig Fri Feb 20 16:23:22 1998
++++ mktexpk Tue Aug 18 08:04:40 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original mktexpk -- make a new PK font, because one wasn't found.
++# mktexpk -- make a new PK font, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -73,11 +73,48 @@
+
+ NAME=$1
+
++unset cmd
++
++# test for TTF fonts
++if test -z "$cmd"; then
++ ttf2pk -q $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "ttf2pk failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++# test for HBF fonts
++if test -z "$cmd"; then
++ hbf2gf -q -p $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "hbf2gf failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++unset psline
++
+ # grep for the font in $PSMAPFILE. These are base font names, such as
+ # rpplr (the original) or pplr0 (an interim step) or pplr8r (current).
+-: ${PSMAPFILE=`kpsewhich psfonts.map`}
+-pattern="^$NAME"'([ ]|$)'
+-psline=`egrep "$pattern" $PSMAPFILE`
++if test -z "$cmd"; then
++ : ${PSMAPFILE=`kpsewhich psfonts.map`}
++ pattern="^r?$NAME"'(0|8r)?([ ]|$)'
++ psline=`egrep "$pattern" $PSMAPFILE`
++fi
++
+ if test -n "$psline"; then
+ MODE=modeless
+ # ps_to_pk is set in mktex.opt
+@@ -116,7 +153,9 @@
+ cmd="$ps_to_pk $NAME $DPI"
+ ;;
+ esac
+-else
++fi
++
++if test -z "$cmd"; then
+ # Check that $BDPI and $MODE are consistent; if not, ignore the mode and
+ # hope we can correctly guess it from bdpi. (People like to specify the
+ # resolution on the command line, not the mode so much.)
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.2/mktextfm.diff b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.2/mktextfm.diff
new file mode 100644
index 0000000000..b7bf872e8c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/hbf2gf/scripts/web2c-7.2/mktextfm.diff
@@ -0,0 +1,36 @@
+--- mktextfm.orig Mon Feb 16 08:56:13 1998
++++ mktextfm Tue Aug 18 06:13:22 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original mktextfm -- make a new TFM file, because one wasn't found.
++# mktextfm -- make a new TFM file, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -70,7 +70,25 @@
+ exit 1
+ fi
+
+-cmd="mf \mode:=$MODE; mag:=$MAG; nonstopmode; input $NAME"
++unset cmd
++
++# test for CJK bitmap font in HBF format
++hbf2gf -q $NAME $DPI
++errstatus=$?
++
++if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "$progname: \`hbf2gf failed." >&2
++ exit 1
++ fi
++ pltotf ./$NAME.pl $TFMNAME || exit 1
++ cmd=true
++fi
++
++if test -z "$cmd"; then
++ cmd="mf \mode:=$MODE; mag:=$MAG; nonstopmode; input $NAME"
++fi
++
+ echo "$progname: Running $cmd"
+
+ $cmd </dev/null || {
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/lisp/cjkspace.el b/language/chinese/CJK/cjk-4.8.5/utils/lisp/cjkspace.el
new file mode 100644
index 0000000000..4903f300de
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/lisp/cjkspace.el
@@ -0,0 +1,102 @@
+;;; cjkspace.el --- provide a tilde character if you type a space.
+;;; use this file with AUCTeX.
+
+;; Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+;;
+;; 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 in doc/COPYING; if not, write to the Free
+;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+;; MA 02110-1301 USA
+
+;; This file is part of the CJK package Version 4.8.5 (16-Oct-2021)
+
+;; Insert tilde characters instead of spaces for LaTeX CJK documents.
+;; If `CJK-space-after-space' is non-nil, typing a space yields a space.
+;; Typing two consecutive spaces yields a tilde. If `CJK-space-after-space'
+;; is nil, the behaviour is reversed.
+;;
+;; You should put the following in your .emacs file (additionally to the
+;; common AUCTeX adaptations):
+;;
+;; (autoload 'CJK-insert-space "cjkspace"
+;; "Insert tildes appropriately in CJK document." t)
+;; (defun my-LaTeX-mode-hook ()
+;; "Key definitions for LaTeX mode."
+;; (define-key LaTeX-mode-map " " 'CJK-insert-space)
+;; )
+;; (add-hook 'LaTeX-mode-hook 'my-LaTeX-mode-hook)
+
+
+;;; Code:
+
+(provide 'cjkspace)
+
+
+(defvar CJK-space "~")
+
+(defvar CJK-space-after-space nil
+
+ "*If non-nil, typing a space yields a space. Typing two consecutive
+spaces yields a tilde. If nil the behaviour is reversed.")
+
+(make-variable-buffer-local 'CJK-space-after-space)
+
+
+;;;###autoload
+(defun CJK-insert-space (arg)
+
+ "Insert tilde characters instead of spaces for LaTeX CJK documents.
+If `CJK-space-after-space' is non-nil, typing a space yields a space.
+Typing two consecutive spaces yields a tilde. If `CJK-space-after-space'
+is nil, the behaviour is reversed.
+
+With prefix argument, always inserts space characters."
+
+ (interactive "*P")
+
+ (if arg
+ (self-insert-command (prefix-numeric-value arg))
+ (TeX-update-style)
+ (if CJK-space-after-space
+ (insert (cond ((bobp)
+ ?\ )
+ ((not (= (preceding-char) ?\ ))
+ ?\ )
+ ((and (> (point) 2)
+ (save-excursion
+ (forward-char -2)
+ (looking-at (concat "[" CJK-space
+ (regexp-quote TeX-esc) "]"))))
+ ?\ )
+ (t
+ (delete-backward-char 1)
+ CJK-space)))
+ (insert (cond ((bobp)
+ ?\ )
+ ((= (preceding-char) (string-to-char TeX-esc))
+ ?\ )
+ ((= (preceding-char) ?\ )
+ ?\ )
+ ((and (> (point) 2)
+ (save-excursion
+ (forward-char -2)
+ (looking-at (concat (regexp-quote TeX-esc)
+ CJK-space))))
+ CJK-space)
+ ((= (preceding-char) (string-to-char CJK-space))
+ (delete-backward-char 1)
+ ?\ )
+ (t
+ CJK-space))))))
+
+;;; EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/lisp/cjktilde.el b/language/chinese/CJK/cjk-4.8.5/utils/lisp/cjktilde.el
new file mode 100644
index 0000000000..2d961ddd12
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/lisp/cjktilde.el
@@ -0,0 +1,111 @@
+;;; cjktilde.el -- minor mode exchanging `~' and ` ' keys.
+
+;; Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+;;
+;; 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 in doc/COPYING; if not, write to the Free
+;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+;; MA 02110-1301 USA
+
+;; This file is part of the CJK package Version 4.8.5 (16-Oct-2021)
+
+;; Function `cjk-tilde-mode' activates a minor mode (`cjk-tilde-minor-mode')
+;; which exchanges the tilde key with the space key. This is useful for
+;; writing Chinese or Japanese with the CJK macro package for LaTeX 2e which
+;; redefines the `~' command to insert a shibuaki space (see documentation
+;; of the \CJKtilde macro for further details).
+
+;;; Code:
+
+(provide 'cjktilde)
+
+
+(defvar cjk-tilde-minor-mode nil
+
+ "*Non-nil enables CJK tilde mode.
+Setting this variable makes it local to the current buffer.
+See `cjk-tilde-mode' for details.")
+
+(make-variable-buffer-local 'cjk-tilde-minor-mode)
+
+
+;; the following two functions do the exchange.
+(defun electric-cjk-tilde (arg)
+
+ "insert space if tilde key is pressed provided cjk-tilde-minor-mode is
+activated."
+
+ (if cjk-tilde-minor-mode
+ (char-to-string ?\ )
+ (char-to-string ?\~)
+ )
+)
+
+
+(defun electric-cjk-space (arg)
+
+ "insert tilde if space key is pressed provided cjk-tilde-minor-mode is
+activated."
+
+ (if cjk-tilde-minor-mode
+ (char-to-string ?\~)
+ (char-to-string ?\ )
+ )
+)
+
+
+(or key-translation-map (setq key-translation-map (make-sparse-keymap)))
+
+(define-key key-translation-map " " 'electric-cjk-space)
+(define-key key-translation-map "~" 'electric-cjk-tilde)
+
+
+;; we indicate the minor mode in the mode line.
+(or (assq 'cjk-tilde-minor-mode minor-mode-map-alist)
+ (setq minor-mode-alist
+ (append minor-mode-alist
+ '((cjk-tilde-minor-mode " ~"))
+ )
+ )
+)
+
+;;;###autoload
+(defun cjk-tilde-mode (&optional arg)
+
+ "Toggle CJK tilde mode. If enabled, a tilde character will be inserted if
+the space key is pressed and vice versa.
+
+Use with caution! This minor mode makes only sense for CJK environments
+after insertion of the \\CJKtilde command. See the documentation of the
+CJK package for further details.
+
+With an argument, a positive argument enables CJK tilde mode,
+and a negative argument disables it."
+
+ (interactive "P")
+
+ (if (if arg
+ ;; negative arg: switch off
+ (<= (prefix-numeric-value arg) 0)
+ ;; no arg: toggle
+ cjk-tilde-minor-mode)
+ (setq cjk-tilde-minor-mode nil)
+
+ ;; positive arg: switch on
+ (setq cjk-tilde-minor-mode t)
+ )
+ (force-mode-line-update)
+)
+
+
+;;; end of cjktilde.el
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/lisp/emacs/cjk-enc.el b/language/chinese/CJK/cjk-4.8.5/utils/lisp/emacs/cjk-enc.el
new file mode 100644
index 0000000000..93add2d75b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/lisp/emacs/cjk-enc.el
@@ -0,0 +1,1183 @@
+;;; cjk-enc.el --- provide a coding system for LaTeX2e CJK package
+
+;; Copyright (C) 1996-2000 Electrotechnical Laboratory, JAPAN.
+
+;; Author: Kenichi HANDA <handa@etl.go.jp>
+;; Werner LEMBERG <wl@gnu.org>
+;; Hin-Tak Leung <htl10@users.sourceforge.net>
+
+;; Keywords: CJK package, LaTeX2e, emacs, xemacs
+
+;; 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, 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 GNU Emacs; see the file COPYING. If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;
+;; CJK Version 4.8.5 (16-Oct-2021)
+;;
+
+;;; Code
+
+;; This file will work with both Emacs (>=20.3) and XEmacs (>=21). In
+;; the following `Emacs' is used for both Emacs and XEmacs except where
+;; it differs.
+
+;; XXX: Thai stuff not yet ported to XEmacs. I don't know whether it
+;; makes sense currently to support it because the Thai implementation
+;; in XEmacs (version 21.1 and probably the upcoming 21.2) is not
+;; complete: For example, there is no correct display handling of IR
+;; 166 (this is the right part of TIS-620) in an ISO-2022 data stream,
+;; decomposition of precomposed Thai (in xtis character set) doesn't
+;; provide linguistic properties, etc.
+
+;; The following tables map from Emacs's character sets to LaTeX2e
+;; macros. Note that not all macros defined here really do exist. See
+;; MULEenc.sty and cjk-enc.txt for further details.
+;;
+;; MULEenc.sty makes TeX character 0x7F `active' and assigns to it a
+;; multiplex command which executes its first argument. To make the
+;; macro expansion robust against \uppercase and \lowercase, only
+;; numbers are used as parameters which index the various commands.
+;;
+;; 0x7F will be used as a parameter delimiting character also.
+;;
+(defconst cjk-latin-1
+ [;0xa0
+ "99\177" "1\177" "2\177" "3\177"
+ "4\177" "5\177" "6\177" "7\177"
+ "8\177\\ " "9\177" "10\177" "11\177"
+ "12\177" "0\177-{}" "14\177" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "20\177\\ " "21\177" "22\177" "23\177"
+ "24\177\\ " "25\177" "26\177" "27\177"
+ "28\177" "29\177" "30\177" "31\177"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "0\177\\DJ" "34\177N" "32\177O" "20\177O"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "32\177U" "20\177U" "33\177U"
+ "8\177U" "20\177Y" "0\177\\TH" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "0\177\\dj" "34\177n" "32\177o" "20\177o"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "32\177u" "20\177u" "33\177u"
+ "8\177u" "20\177y" "0\177\\th" "8\177y"
+ ])
+
+(defconst cjk-latin-2
+ [; 0xa0
+ "99\177" "48\177A" "49\177\\ " "0\177\\L"
+ "4\177" "51\177L" "20\177S" "7\177"
+ "8\177\\ " "51\177S" "24\177S" "51\177T"
+ "20\177Z" "0\177-{}" "51\177Z" "52\177Z"
+
+ ; 0xb0
+ "16\177" "48\177a" "48\177\\ " "0\177\\l"
+ "20\177\\ " "51\177l" "20\177s" "51\177\\ "
+ "24\177\\ " "51\177s" "24\177s" "51\177t"
+ "20\177z" "55\177\\ " "51\177z" "52\177z"
+
+ ; 0xc0
+ "20\177R" "20\177A" "33\177A" "49\177A"
+ "8\177A" "20\177L" "20\177C" "24\177C"
+ "51\177C" "20\177E" "48\177E" "8\177E"
+ "51\177E" "20\177I" "33\177I" "51\177D"
+
+ ; 0xd0
+ "0\177\\DJ" "20\177N" "51\177N" "20\177O"
+ "33\177O" "55\177O" "8\177O" "38\177"
+ "51\177R" "53\177U" "20\177U" "55\177U"
+ "8\177U" "20\177Y" "24\177T" "0\177\\ss"
+
+ ; 0xe0
+ "20\177r" "20\177a" "33\177a" "49\177a"
+ "8\177a" "20\177l" "20\177c" "24\177c"
+ "51\177c" "20\177e" "48\177e" "8\177e"
+ "51\177e" "20\177\\i" "33\177\\i" "51\177d"
+
+ ; 0xf0
+ "0\177\\dj" "20\177n" "51\177n" "20\177o"
+ "33\177o" "55\177o" "8\177o" "45\177"
+ "51\177r" "53\177u" "20\177u" "55\177u"
+ "8\177u" "20\177y" "24\177t" "52\177\\ "
+ ])
+
+(defconst cjk-latin-3
+ [; 0xa0
+ "99\177" "0\177\\TEXTMALTESEH" "49\177\\ " "3\177"
+ "4\177" "" "33\177H" "7\177"
+ "8\177\\ " "52\177I" "24\177S" "49\177G"
+ "33\177J" "0\177-{}" "" "52\177Z"
+
+ ; 0xb0
+ "16\177" "0\177\\textmalteseh" "18\177" "19\177"
+ "20\177\\ " "21\177" "33\177h" "23\177"
+ "24\177\\ " "0\177\\i" "24\177s" "49\177g"
+ "33\177\\j" "29\177" "" "52\177z"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" ""
+ "8\177A" "52\177C" "33\177C" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "" "34\177N" "32\177O" "20\177O"
+ "33\177O" "52\177G" "8\177O" "38\177"
+ "33\177G" "32\177U" "20\177U" "33\177U"
+ "8\177U" "49\177U" "33\177S" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" ""
+ "8\177a" "52\177c" "33\177c" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "" "34\177n" "32\177o" "20\177o"
+ "33\177o" "52\177g" "8\177o" "45\177"
+ "33\177g" "32\177u" "20\177u" "33\177u"
+ "8\177u" "49\177u" "33\177s" "52\177\\ "
+ ])
+
+(defconst cjk-latin-4
+ [; 0xa0
+ "99\177" "48\177A" "59\177" "24\177R"
+ "4\177" "34\177I" "24\177L" "7\177"
+ "8\177\\ " "51\177S" "15\177E" "24\177G"
+ "0\177\\TEXTTSTROKE" "0\177-{}" "51\177Z" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "48\177a" "48\177\\ " "24\177r"
+ "20\177\\ " "34\177\\i" "24\177l" "51\177\\ "
+ "24\177\\ " "51\177s" "15\177e" "24\177g"
+ "0\177\\texttstroke" "0\177\\NG" "51\177z" "0\177\\ng"
+
+ ; 0xc0
+ "15\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "48\177I"
+ "51\177C" "20\177E" "48\177E" "8\177E"
+ "52\177E" "20\177I" "33\177I" "15\177I"
+
+ ; 0xd0
+ "0\177\\DJ" "24\177N" "15\177O" "24\177K"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "48\177U" "20\177U" "33\177U"
+ "8\177U" "34\177U" "15\177U" "0\177\\ss"
+
+ ; 0xe0
+ "15\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "48\177i"
+ "51\177c" "20\177e" "48\177e" "8\177e"
+ "52\177e" "20\177\\i" "33\177\\i" "15\177\\i"
+
+ ; 0xf0
+ "0\177\\dj" "24\177n" "15\177o" "24\177k"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "48\177u" "20\177u" "33\177u"
+ "8\177u" "34\177u" "15\177u" "52\177\\ "
+ ])
+
+(defconst cjk-latin-5 ; ISO 8859-9
+ [; 0xa0
+ "99\177" "1\177" "2\177" "3\177"
+ "4\177" "5\177" "6\177" "7\177"
+ "8\177\\ " "9\177" "10\177" "11\177"
+ "12\177" "0\177-{}" "14\177" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "20\177\\ " "21\177" "22\177" "23\177"
+ "24\177\\ " "25\177" "26\177" "27\177"
+ "28\177" "29\177" "30\177" "31\177"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "49\177G" "34\177N" "32\177O" "20\177O"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "32\177U" "20\177U" "33\177U"
+ "8\177U" "52\177I" "24\177S" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "49\177g" "34\177n" "32\177o" "20\177o"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "32\177u" "20\177u" "33\177u"
+ "8\177u" "0\177\\i" "24\177s" "8\177y"
+ ])
+
+(defconst cjk-latin-jisx ; JIS X 0201 lower half
+ [; 0xa0
+ "" "0\177!" "37\177" "0\177\\#"
+ "39\177" "0\177\\%" "0\177\\&" "40\177"
+ "0\177(" "0\177)" "0\177*" "0\177+"
+ "0\177," "0\177-" "0\177." "0\177/"
+
+ ; 0xb0
+ "0\1770" "0\1771" "0\1772" "0\1773"
+ "0\1774" "0\1775" "0\1776" "0\1777"
+ "0\1778" "0\1779" "0\177:" "0\177;"
+ "41\177" "0\177=" "42\177" "0\177?"
+
+ ; 0xc0
+ "36\177" "0\177A" "0\177B" "0\177C"
+ "0\177D" "0\177E" "0\177F" "0\177G"
+ "0\177H" "0\177I" "0\177J" "0\177K"
+ "0\177L" "0\177M" "0\177N" "0\177O"
+
+ ; 0xd0
+ "0\177P" "0\177Q" "0\177R" "0\177S"
+ "0\177T" "0\177U" "0\177V" "0\177W"
+ "0\177X" "0\177Y" "0\177Z" "0\177["
+ "5\177" "0\177]" "43\177" "44\177"
+
+ ; 0xe0
+ "46\177" "0\177a" "0\177b" "0\177c"
+ "0\177d" "0\177e" "0\177f" "0\177g"
+ "0\177h" "0\177i" "0\177j" "0\177k"
+ "0\177l" "0\177m" "0\177n" "0\177o"
+
+ ; 0xf0
+ "0\177p" "0\177q" "0\177r" "0\177s"
+ "0\177t" "0\177u" "0\177v" "0\177w"
+ "0\177x" "0\177y" "0\177z" "47\177"
+ "50\177" "54\177" "56\177" ""
+ ])
+
+(defconst cjk-cyrillic ; ISO 8859-5
+ [; 0xa0
+ "99\177" "0\177\\CYRYO" "0\177\\CYRDJE" "20\177\\CYRG"
+ "0\177\\CYRIE" "0\177\\CYRDZE" "0\177\\CYRII" "0\177\\CYRYI"
+ "0\177\\CYRJE" "0\177\\CYRLJE" "0\177\\CYRNJE" "0\177\\CYRTSHE"
+ "20\177\\CYRK" "0\177-{}" "0\177\\CYRUSHRT" "0\177\\CYRDZHE"
+
+ ; 0xb0
+ "0\177\\CYRA" "0\177\\CYRB" "0\177\\CYRV" "0\177\\CYRG"
+ "0\177\\CYRD" "0\177\\CYRE" "0\177\\CYRZH" "0\177\\CYRZ"
+ "0\177\\CYRI" "0\177\\CYRISHRT" "0\177\\CYRK" "0\177\\CYRL"
+ "0\177\\CYRM" "0\177\\CYRN" "0\177\\CYRO" "0\177\\CYRP"
+
+ ; 0xc0
+ "0\177\\CYRR" "0\177\\CYRS" "0\177\\CYRT" "0\177\\CYRU"
+ "0\177\\CYRF" "0\177\\CYRH" "0\177\\CYRC" "0\177\\CYRCH"
+ "0\177\\CYRSH" "0\177\\CYRSHCH" "0\177\\CYRHRDSN" "0\177\\CYRERY"
+ "0\177\\CYRSFTSN" "0\177\\CYREREV" "0\177\\CYRYU" "0\177\\CYRYA"
+
+ ; 0xd0
+ "0\177\\cyra" "0\177\\cyrb" "0\177\\cyrv" "0\177\\cyrg"
+ "0\177\\cyrd" "0\177\\cyre" "0\177\\cyrzh" "0\177\\cyrz"
+ "0\177\\cyri" "0\177\\cyrishrt" "0\177\\cyrk" "0\177\\cyrl"
+ "0\177\\cyrm" "0\177\\cyrn" "0\177\\cyro" "0\177\\cyrp"
+
+ ; 0xe0
+ "0\177\\cyrr" "0\177\\cyrs" "0\177\\cyrt" "0\177\\cyru"
+ "0\177\\cyrf" "0\177\\cyrh" "0\177\\cyrc" "0\177\\cyrch"
+ "0\177\\cyrsh" "0\177\\cyrshch" "0\177\\cyrhrdsn" "0\177\\cyrery"
+ "0\177\\cyrsftsn" "0\177\\cyrerev" "0\177\\cyryu" "0\177\\cyrya"
+
+ ; 0xf0
+ "35\177" "0\177\\cyryo" "0\177\\cyrdje" "20\177\\cyrg"
+ "0\177\\cyrie" "0\177\\cyrdze" "0\177\\cyrii" "0\177\\cyryi"
+ "0\177\\cyrje" "0\177\\cyrlje" "0\177\\cyrnje" "0\177\\cyrtshe"
+ "20\177\\cyrk" "7\177" "0\177\\cyrushrt" "0\177\\cyrdzhe"
+ ])
+
+(defconst cjk-greek ; ISO 8859-7
+ [;0xa0
+ "99\177" "0\177<{}" "0\177>{}" "3\177"
+ "" "" "6\177" "7\177"
+ "8\177\\ " "9\177" "" "0\177(("
+ "12\177" "0\177-{}" "" "0\177---"
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "0\177'{}" "0\177\"'{}" "0\177'A" "0\177;"
+ "0\177'E" "0\177'H" "0\177'I" "0\177))"
+ "0\177'O" "29\177" "0\177'U" "0\177'W"
+
+ ; 0xc0
+ "0\177\"'i" "0\177A" "0\177B" "0\177G"
+ "0\177D" "0\177E" "0\177Z" "0\177H"
+ "0\177J" "0\177I" "0\177K" "0\177L"
+ "0\177M" "0\177N" "0\177X" "0\177O"
+
+ ; 0xd0
+ "0\177P" "0\177R" "" "0\177S"
+ "0\177T" "0\177U" "0\177F" "0\177Q"
+ "0\177Y" "0\177W" "0\177\"I" "0\177\"U"
+ "0\177'a" "0\177'e" "0\177'h" "0\177'i"
+
+ ; 0xe0
+ "0\177\"'u" "0\177a" "0\177b" "0\177g"
+ "0\177d" "0\177e" "0\177z" "0\177h"
+ "0\177j" "0\177i" "0\177k" "0\177l"
+ "0\177m" "0\177n" "0\177x" "0\177o"
+
+ ; 0xf0
+ "0\177p" "0\177r" "0\177c" "0\177s"
+ "0\177t" "0\177u" "0\177f" "0\177q"
+ "0\177y" "0\177w" "0\177\"i" "0\177\"u"
+ "0\177'o" "0\177'u" "0\177'w" ""
+ ])
+
+(defconst cjk-viscii-lower
+ [; 0xA0
+ "" "20\177\\abreve" "32\177\\abreve" "71\177\\abreve"
+ "20\177\\acircumflex" "32\177\\acircumflex" "73\177\\acircumflex" "71\177\\acircumflex"
+ "34\177e" "71\177e" "20\177\\ecircumflex" "32\177\\ecircumflex"
+ "73\177\\ecircumflex" "34\177\\ecircumflex" "71\177\\ecircumflex" "20\177\\ocircumflex"
+
+ ; 0xB0
+ "32\177\\ocircumflex" "73\177\\ocircumflex" "34\177\\ocircumflex" ""
+ "" "71\177\\ocircumflex" "32\177\\ohorn" "73\177\\ohorn"
+ "71\177i" "" "" ""
+ "" "0\177\\ohorn" "20\177\\ohorn" ""
+
+ ; 0xC0
+ "" "" "" ""
+ "" "" "73\177\\abreve" "34\177\\abreve"
+ "" "" "" ""
+ "" "" "" "32\177y"
+
+ ; 0xD0
+ "" "20\177\\uhorn" "" ""
+ "" "71\177a" "73\177y" "32\177\\uhorn"
+ "73\177\\uhorn" "" "" "34\177y"
+ "71\177y" "" "34\177\\ohorn" "0\177\\uhorn"
+
+ ; 0xE0
+ "32\177a" "20\177a" "0\177\\acircumflex" "34\177a"
+ "73\177a" "0\177\\abreve" "34\177\\uhorn" "34\177\\acircumflex"
+ "32\177e" "20\177e" "0\177\\ecircumflex" "73\177e"
+ "32\177i" "20\177i" "34\177i" "73\177i"
+
+ ; 0xF0
+ "0\177\\dj" "71\177\\uhorn" "32\177o" "20\177o"
+ "0\177\\ocircumflex" "34\177o" "73\177o" "71\177o"
+ "71\177u" "32\177u" "20\177u" "34\177u"
+ "73\177u" "20\177y" "71\177\\ohorn" ""
+ ])
+
+(defconst cjk-viscii-upper
+ [; 0xA0
+ "" "20\177\\ABREVE" "32\177\\ABREVE" "71\177\\ABREVE"
+ "20\177\\ACIRCUMFLEX" "32\177\\ACIRCUMFLEX" "73\177\\ACIRCUMFLEX" "71\177\\ACIRCUMFLEX"
+ "34\177E" "71\177E" "20\177\\ECIRCUMFLEX" "32\177\\ECIRCUMFLEX"
+ "73\177\\ECIRCUMFLEX" "34\177\\ECIRCUMFLEX" "71\177\\ECIRCUMFLEX" "20\177\\OCIRCUMFLEX"
+
+ ; 0xB0
+ "32\177\\OCIRCUMFLEX" "73\177\\OCIRCUMFLEX" "34\177\\OCIRCUMFLEX" ""
+ "" "71\177\\OCIRCUMFLEX" "32\177\\OHORN" "73\177\\OHORN"
+ "71\177I" "" "" ""
+ "" "0\177\\OHORN" "20\177\\OHORN" ""
+
+ ; 0xC0
+ "" "" "" ""
+ "" "" "73\177\\ABREVE" "34\177\\ABREVE"
+ "" "" "" ""
+ "" "" "" "32\177Y"
+
+ ; 0xD0
+ "" "20\177\\UHORN" "" ""
+ "" "71\177A" "73\177Y" "32\177\\UHORN"
+ "73\177\\UHORN" "" "" "34\177Y"
+ "71\177Y" "" "34\177\\OHORN" "0\177\\UHORN"
+
+ ; 0xE0
+ "32\177A" "20\177A" "0\177\\ACIRCUMFLEX" "34\177A"
+ "73\177A" "0\177\\ABREVE" "34\177\\UHORN" "34\177\\ACIRCUMFLEX"
+ "32\177E" "20\177E" "0\177\\ECIRCUMFLEX" "73\177E"
+ "32\177I" "20\177I" "34\177I" "73\177I"
+
+ ; 0xF0
+ "0\177\\DJ" "71\177\\UHORN" "32\177O" "20\177O"
+ "0\177\\OCIRCUMFLEX" "34\177O" "73\177O" "71\177O"
+ "71\177U" "32\177U" "20\177U" "34\177U"
+ "73\177U" "20\177Y" "71\177\\OHORN" ""
+ ])
+
+
+;; The following encodings will be selected (if they occur in the input
+;; buffer) at the very beginning of the output buffer to load the
+;; corresponding CJK macros.
+;;
+(defconst cjk-enc-table
+ '((chinese-gb2312 . GB)
+ (katakana-jisx0201 . SJIS)
+ (japanese-jisx0208 . JIS)
+ (japanese-jisx0212 . JIS2)
+ (korean-ksc5601 . KS)
+ (chinese-big5-1 . Bg5)
+ (chinese-big5-2 . Bg5)
+ (big5 . Bg5)
+ (chinese-cns11643-1 . CNS1)
+ (chinese-cns11643-2 . CNS2)
+ (chinese-cns11643-3 . CNS3)
+ (chinese-cns11643-4 . CNS4)
+ (chinese-cns11643-5 . CNS5)
+ (chinese-cns11643-6 . CNS6)
+ (chinese-cns11643-7 . CNS7)))
+
+
+;; MULEenc's versions of \CJKspace and \CJKnospace
+;;
+(defconst cjk-space "\17764\177\177")
+(defconst cjk-nospace "\17765\177\177")
+
+;; MULEenc's command to insert a word break.
+;;
+(defconst cjk-word-break "\17761\177\177")
+
+
+;; Here we have the format specification table which defines what to do
+;; for each encoding.
+;;
+;; Later in the code we check to which group of commands the encoding
+;; belongs. This is done by testing how the encoding and its data is
+;; stored, e.g. whether it is a vector, or a cons cell, etc.
+;;
+(defconst cjk-format-spec-table
+ `(
+ ;; Cdr part is a vector VEC. Each character is formatted as:
+ ;;
+ ;; (format "\177%s\177" (aref VEC (- char-position-code-1 32)))
+ ;;
+ (latin-iso8859-1 . ,cjk-latin-1)
+ (latin-iso8859-2 . ,cjk-latin-2)
+ (latin-iso8859-3 . ,cjk-latin-3)
+ (latin-iso8859-4 . ,cjk-latin-4)
+ (latin-iso8859-9 . ,cjk-latin-5)
+ (latin-jisx0201 . ,cjk-latin-jisx)
+ ;; T2A encoding is used for Cyrillic letters. You must explicitly
+ ;; switch between T2 and T1/OT1 encoding.
+ (cyrillic-iso8859-5 . ,cjk-cyrillic)
+ ;; LGR encoding (resp. its ligatures) is used for Greek letters.
+ ;; You must explicitly switch between LGR and T1/OT1 encoding (using
+ ;; e.g. Babel's `greek' option).
+ (greek-iso8859-7 . ,cjk-greek)
+ ;; For Vietnamese a Vietnamese TeX-font has to be used which
+ ;; contains ASCII characters too! You must explicitly switch
+ ;; between Vietnamese T5 and T1/OT1 encoding.
+ (vietnamese-viscii-lower . ,cjk-viscii-lower)
+ (vietnamese-viscii-upper . ,cjk-viscii-upper)
+
+ ;; Cdr part is a cons of header HEAD and formatter FORMAT. HEAD is
+ ;; printed first, then each character is formatted as:
+ ;;
+ ;; (format FORMAT char-code-1 [char-code-2])
+ ;;
+ (katakana-jisx0201 . ("\17770\177\177" . "\177%c\177\177"))
+ (japanese-jisx0208 . ("\17766\177\177" . "\177%c\177%d\177"))
+ (chinese-gb2312 . ("\17767\177\177" . "\177%c\177%d\177"))
+ (chinese-big5-1 . ("\17768\177\177" . "\177%c\177%d\177"))
+ (chinese-big5-2 . ("\17768\177\177" . "\177%c\177%d\177"))
+ (big5 . ("\17768\177\177" . "\177%c\177%d\177"))
+ (korean-ksc5601 . ("\17769\177\177" . "\177%c\177%d\177"))
+
+ ;; Cdr part is a formatter string FORMAT. Each character is
+ ;; formatted as:
+ ;;
+ ;; (format FORMAT char-code-1 char-code-2)
+ ;;
+ (japanese-jisx0212 . "\17772\177JIS2\177\177%d\177%d\177")
+ (chinese-cns11643-1 . "\17772\177CNS1\177\177%d\177%d\177")
+ (chinese-cns11643-2 . "\17772\177CNS2\177\177%d\177%d\177")
+ (chinese-cns11643-3 . "\17772\177CNS3\177\177%d\177%d\177")
+ (chinese-cns11643-4 . "\17772\177CNS4\177\177%d\177%d\177")
+ (chinese-cns11643-5 . "\17772\177CNS5\177\177%d\177%d\177")
+ (chinese-cns11643-6 . "\17772\177CNS6\177\177%d\177%d\177")
+ (chinese-cns11643-7 . "\17772\177CNS7\177\177%d\177%d\177")
+
+ ;; Cdr part is a list of the form (SYMBOL ARG1 ARG2 ...). SYMBOL
+ ;; indicates how to process the following characters.
+ ;;
+ (thai-tis620 . (thai
+ "\17757\177\177" ; Thai start
+ "\17758\177\177" ; Thai end
+ "\17762\177%d\177" ; Thai base character
+ "\17760\177%d\177" ; Thai upper/lower vowel and tone
+ "\17763\177\177" ; Thai EOL
+ ))
+ ))
+
+
+;; An alist of charsets vs list of features required for processing
+;; the corresponding charset. The feature is loaded then on demand.
+;;
+(defconst cjk-feature-table
+ '((thai-tis620 thai-word)))
+
+
+;; Create an output encoding called `cjk-coding', using the function
+;; cjk-encode to actually convert the output.
+;;
+(if (featurep 'xemacs)
+ (make-coding-system
+ 'cjk-coding 'no-conversion
+ "Coding-system for LaTeX2e CJK Package"
+ '(mnemonic "CJK"
+ pre-write-conversion cjk-encode))
+ (if (< emacs-major-version 23)
+ (make-coding-system
+ 'cjk-coding 0 ?c
+ "Coding-system for LaTeX2e CJK Package"
+ nil
+ '((pre-write-conversion . cjk-encode)))
+ (define-coding-system
+ 'cjk-coding
+ "Coding-system for LaTeX2e CJK Package"
+ :mnemonic ?c
+ :coding-type 'emacs-mule
+ :default-char ?
+ :charset-list '(ascii
+ latin-iso8859-1
+ latin-iso8859-2
+ latin-iso8859-3
+ latin-iso8859-4
+ cyrillic-iso8859-5
+ greek-iso8859-7
+ thai-tis620
+ vietnamese-viscii-lower
+ vietnamese-viscii-upper
+ latin-jisx0201
+ katakana-jisx0201
+ japanese-jisx0208
+ japanese-jisx0212
+ korean-ksc5601
+ chinese-gb2312
+ chinese-big5-1
+ chinese-big5-2
+ chinese-cns11643-1
+ chinese-cns11643-2
+ chinese-cns11643-3
+ chinese-cns11643-4
+ chinese-cns11643-5
+ chinese-cns11643-6
+ chinese-cns11643-7)
+ :pre-write-conversion 'cjk-encode)))
+
+;; XEmacs doesn't have set-buffer-multibyte.
+;;
+(defmacro cjk-set-buffer-multibyte (arg)
+ (if (fboundp 'set-buffer-multibyte)
+ `(set-buffer-multibyte ,arg)))
+
+
+;; The conversion routine. Its main idea is to analyze the character
+;; set for each character and then to do something if the previous
+;; character has a different character set. For Thai, we must
+;; additionally find proper word breaks using a large word list.
+;;
+(defun cjk-encode (from to)
+ (let ((old-buf (current-buffer))
+ (temp-buf (get-buffer-create " *cjk-tmp*"))
+ (work-buf (get-buffer-create " *cjk-work*"))
+ (required-features (copy-sequence cjk-feature-table)))
+ ;; Initialize all working buffers.
+ (set-buffer work-buf)
+ (erase-buffer)
+ (cjk-set-buffer-multibyte nil)
+
+ (set-buffer temp-buf)
+ (erase-buffer)
+ (cjk-set-buffer-multibyte t)
+
+ ;; Copy the original contents into TEMP-BUF.
+ (insert-buffer-substring old-buf from to)
+ (if (and (not (featurep 'xemacs))
+ (string< emacs-version "21.0"))
+ (progn
+ (message "Decomposing...")
+ (decompose-region (point-min) (point-max))))
+
+ (let ((enc nil)
+ (space-state nil)
+ prev-charset charset
+ ch ch1 ch2
+ format-spec
+ (skipped-whitespace nil)
+ (last-pos 0)
+ (unsupported-charset-warned nil))
+ ;; Now we go to beginning of TEMP-BUF and start the loop.
+ (goto-char (point-min))
+ (setq prev-charset 'ascii)
+
+ (while (not (eobp))
+ ;; In emacs 23+, the `charset' property holds the original
+ ;; encoding value; in emacs 22 and earlier, we get `nil'.
+ (setq tpch (get-text-property (point) 'charset))
+ (setq ch (following-char))
+ (set-buffer work-buf)
+
+ ;; Set CHARSET to the character set of the current character.
+ ;; Use text property in preference to `char-charset'.
+ (if (not (eq tpch nil))
+ (setq charset tpch)
+ (setq charset (char-charset ch)))
+
+ ;; Avoid `tis620-2533' (new with emacs 23+); we replace it with
+ ;; Thai and ASCII (as a new optional argument to
+ ;; `char-charset'.
+ (if (eq charset 'tis620-2533)
+ (setq charset (char-charset ch '(thai-tis620 ascii))))
+
+ ;; emacs 25+: Language-detection heuristics changed.
+ ;; `big5' is preferred over `chinese-big5-1' and `chinese-big5-1'.
+ ;; If not overridden, can also swallow LaTeX (ascii) instructions
+ ;; afterwards.
+ (if (eq charset 'big5)
+ (setq charset (char-charset ch '(ascii big5))))
+
+ ;; Check whether we have Unicode based input.
+ (if (eq charset 'unicode)
+ (let ((l (split-char ch)))
+ (progn
+ ;; Unicode 0x0E00-0x0E7F is Thai. Transform back to TIS620
+ (setq ch2 (nth 2 l)
+ ch3 (nth 3 l))
+ (if (and (eq ch2 14) (< ch3 128))
+ (setq charset 'thai-tis620
+ ch (encode-char ch 'thai-tis620))))))
+
+ ;; `split-char' in emacs 23+ is sensitive to charset priority.
+ (cond ((> emacs-major-version 22)
+ (if (not (eq charset 'ascii))
+ (set-charset-priority charset))))
+
+ (if (eq charset 'ascii)
+ ;; Not a multibyte character.
+ (progn
+ ;; Don't modify PREV-CHARSET for whitespace characters.
+ (setq skipped-whitespace (string-match "[ \t\n]"
+ (string ch)))
+ (if (not skipped-whitespace)
+ (setq prev-charset 'ascii))
+ (insert ch))
+
+ ;; Now we are at a multibyte character. Set the following
+ ;; variables:
+ ;;
+ ;; CH1 -- first character code
+ ;; CH2 -- second character code (of two-byte characters)
+ ;; if any
+ (if (or (eq charset 'big5)
+ (or (eq charset 'chinese-big5-1)
+ (eq charset 'chinese-big5-2)))
+ ;; Emacs uses two special character sets for Big5
+ ;; characters. We must decode the current character to
+ ;; get the real Big5 character code.
+ (progn
+ (setq ch (encode-big5-char ch))
+ (if (consp ch)
+ ;; XEmacs
+ (setq ch1 (car ch)
+ ch2 (cdr ch))
+ ;; Emacs
+ (setq ch1 (lsh ch -8)
+ ch2 (logand ch 255)))
+ ;; 128 will be later added again.
+ (setq ch1 (- ch1 128))
+ (setq ch2 (- ch2 128)))
+ ;; For all other character sets, split-char does the right
+ ;; thing. Note that CH2 can be zero in case it is a
+ ;; single-byte character set.
+ (let ((l (split-char ch)))
+ (setq ch1 (nth 1 l)
+ ch2 (or (nth 2 l) 0))))
+
+ ;; FORMAT-SPEC tells how to encode this character.
+ (setq format-spec (cdr (assq charset cjk-format-spec-table)))
+ (if (null format-spec)
+ ;; Unsupported character set.
+ (when (not unsupported-charset-warned)
+ (let ((coding-system-for-write (terminal-coding-system)))
+ (message "WARNING: Detected unsupported character set %s"
+ charset)
+ (message "Consider using \`coding:\' or setting LANG."))
+ ;; Suppress further warning in the same lang block.
+ (setq unsupported-charset-warned t))
+ ;; Ok, it is supported. If this character set is a CJK
+ ;; character set (i.e., it is in CJK-ENC-TABLE), we need a
+ ;; special header at the beginning of the output file.
+ ;; This information is stored in the ENC list.
+ (let ((tag (cdr (assq charset cjk-enc-table))))
+ (if tag
+ (or (memq tag enc)
+ (setq enc (cons tag enc)))))
+
+ ;; Load all features which are required to handle this
+ ;; character set.
+ (let ((tail (assq charset required-features)))
+ ;; We remove all occurrences of TAIL in the feature list
+ ;; to avoid loading packages multiple times.
+ (setq required-features (delete tail required-features)
+ tail (cdr tail))
+ (while tail
+ (require (car tail))
+ (setq tail (cdr tail))))
+
+ (cond
+ ;; If FORMAT-SPEC has the form (SYMBOL ARG1 ARG2 ...),
+ ;; SYMBOL indicates how to process the following
+ ;; characters.
+ ((and (consp format-spec) (symbolp (car format-spec)))
+ (cond
+ ((eq (car format-spec) 'thai)
+ ;; FORMAT-SPEC has this form:
+ ;; (thai START-STRING END-STRING
+ ;; BASE-CHAR-FORMAT COMBINING-CHAR-FORMAT
+ ;; EOL-STRING)
+ (let ((base-format (nth 3 format-spec))
+ (combining-format (nth 4 format-spec))
+ pos
+ start
+ end
+ str
+ len
+ (i 0))
+ ;; First, insert the code for starting Thai.
+ (if (not (eq prev-charset charset))
+ (insert (nth 1 format-spec)))
+ ;; Analyze the maximum run of Thai characters in
+ ;; TEMP-BUF and insert `|' at all word boundaries.
+ (set-buffer temp-buf)
+ (setq start (point))
+ ;; "\\ct+" searches for characters which have the
+ ;; category `t', i.e. are Thai characters.
+ (re-search-forward "\\ct+" nil t)
+ (setq end (point-marker))
+ (goto-char start)
+ ;; THAI-BREAK-WORDS is in `thai-word.el',
+ ;; shipped with emacs 22+ onwards.
+ ;; loads from cjk for emacs 21 or below.
+ (thai-break-words "|" end)
+ ;; Extract this run.
+ (setq str (buffer-substring start end)
+ len (length str))
+ (goto-char end)
+ (set-marker end nil)
+ ;; Insert characters in STR one by one while
+ ;; converting `|' to `cjk-word-break' and formatting
+ ;; Thai characters according to FORMAT-SPEC.
+ (set-buffer work-buf)
+ (while (< i len)
+ (setq ch (aref str i)
+ i (1+ i))
+ (if (= ch ?|)
+ (insert cjk-word-break)
+ (let* ((split (split-char ch))
+ (category-set (char-category-set ch)))
+ ;; We now analyze the linguistic category
+ ;; assigned to the current character and take
+ ;; the appropriate format. Then we add 128
+ ;; for producing TIS-620 output.
+ (insert (format
+ (if (or (aref category-set ?2)
+ (aref category-set ?3)
+ (aref category-set ?4))
+ combining-format
+ base-format)
+ (+ (nth 1 split) 128))))))
+ ;; It depends on the following characters what to do
+ ;; next. If we have tabs and spaces followed by a
+ ;; Thai character, nothing will be done. If we have
+ ;; a newline character additionally, we insert a
+ ;; special command which usually expands to
+ ;; `\ignorespaces' (which will suppress all
+ ;; whitespace characters). In all other cases, we
+ ;; close the Thai block.
+ ;;
+ ;; Reason for this algorithm is the fact that in the
+ ;; Thai language a space isn't used to separate
+ ;; words but to structure a sentence. A normal line
+ ;; break shall not automatically cause the insertion
+ ;; of a space. The user has rather to explicitly
+ ;; type one or more space characters in the middle
+ ;; of a line to indicate that he or she really wants
+ ;; a space -- note that usually a Thai space is
+ ;; wider than a Roman space resp. can be stretched
+ ;; more.
+ (set-buffer temp-buf)
+ (if (looking-at "[ \t]+\\ct")
+ (setq str "")
+ (if (looking-at "[ \t]*\n[ \t]*\\ct")
+ (setq str (nth 5 format-spec))
+ (setq str (nth 2 format-spec))))
+ ;; To compensate the forward-char at the end of loop.
+ (forward-char -1)
+ (set-buffer work-buf)
+ (insert str)))))
+
+ ;; We may have to insert the car part of the cons and/or
+ ;; space controlling commands (cjk-space/cjk-nospace)
+ ;; depending on the current context.
+ ;;
+ ;; Note that this logic sometimes fails. In the example
+ ;; below, cjk-encode will insert \CJKspace in the comment
+ ;; instead of right after the comment. Since cjk-encode
+ ;; should be a low-level function we can't assume that
+ ;; `%' is always the TeX comment character. Only TeX
+ ;; itself can reliably detect the current comment
+ ;; character.
+ ;;
+ ;; Chinese Text
+ ;; % Korean comment
+ ;; Korean Text
+ ;;
+ ;; Two solutions: Either switch between Korean and other
+ ;; languages only outside of a comment, or manually insert
+ ;; \CJKspace and \CJKnospace commands as needed.
+ ((consp format-spec)
+ (if (eq charset 'korean-ksc5601)
+ (or (eq space-state cjk-space)
+ (insert (setq space-state cjk-space)))
+ (or (eq space-state cjk-nospace)
+ (insert (setq space-state cjk-nospace))))
+
+ ;; Now insert the the header and character(s)
+ ;; according to CJK-FORMAT-SPEC-TABLE. The CJK
+ ;; package needs the characters in GR notation, so
+ ;; we add 0x80.
+ (if (not (eq prev-charset charset))
+ (insert (car format-spec)))
+ (insert (format (cdr format-spec)
+ (+ ch1 128) (+ ch2 128))))
+
+ ;; Since Emacs provides the character sets in GL
+ ;; notation, we simply subtract 0x20 to get the proper
+ ;; index.
+ ((vectorp format-spec)
+ (insert (format "\177%s\177"
+ (aref format-spec (- ch1 32)))))
+
+ ;; Otherwise, FORMAT-SPEC is just a formatting
+ ;; string.
+ (t
+ (insert (format format-spec ch1 ch2)))))
+
+ (setq prev-charset charset))
+
+ ;; We have finished the analysis of the character set. Print
+ ;; some progress information if we have done another 1000
+ ;; characters.
+ (set-buffer temp-buf)
+ (if (> (- (point) last-pos) 1000)
+ (progn
+ (setq last-pos (point))
+ (let ((coding-system-for-write (terminal-coding-system)))
+ (message "Converting: %2d%%"
+ (/ (* 100 (point)) (point-max))))))
+
+ ;; Advance to the next character and loop.
+ (forward-char 1))
+
+ ;; The remaining task is to insert an appropriate header at the
+ ;; very beginning of the output file. If ENC isn't empty, we need
+ ;; the extra LaTeX commands to load CJK package and to output all
+ ;; collected CJK encodings.
+ (set-buffer work-buf)
+ (goto-char (point-min))
+ (if enc
+ (progn
+ (insert "\\def\\CJKhook{")
+ (while enc
+ (insert (format "\\CJKenc{%s}" (car enc)))
+ (setq enc (cdr enc)))
+ (insert "}")
+ (insert "\\ifx\\CJKpreproc\\undefined")
+ (insert "\\def\\CJKpreproc{cjk-enc}")
+ (insert "\\RequirePackage[global]{CJK}")
+ (insert "\\AtBeginDocument{\\begin{CJK}{}{}\\CJKspace}")
+ (insert "\\AtEndDocument{\\end{CJK}}")
+ (insert "\\else\\CJKhook\\fi "))
+ (insert "\\ifx\\CJKpreproc\\undefined")
+ (insert "\\def\\CJKpreproc{cjk-enc}")
+ (insert "\\RequirePackage{MULEenc}")
+ (insert "\\fi ")))))
+
+
+(defun cjk-get-name (filename)
+ "Replace the extension of the file name with `.cjk'.
+If the extension of FILENAME is `.bib', `-cjk.bib' will be appended
+to the file name without extension."
+
+ (concat (file-name-sans-extension filename)
+ (if (string-equal (file-name-extension filename) "bib")
+ "-cjk.bib"
+ ".cjk")))
+
+
+(defun cjk-write-file ()
+ "Save current buffer and <buffername>.cjk in cjk-coding.
+Files of the form <buffername>.bib are saved as <buffername>-cjk.bib.
+
+If no file is associated with the buffer, you are asked to specify a
+file name."
+
+ (interactive)
+ (save-buffer)
+ (let* ((bufname (buffer-file-name))
+ (newbufname (cjk-get-name bufname)))
+ (message "Saving %s and %s" bufname newbufname)
+ (let ((coding-system-for-write 'cjk-coding))
+ (write-region (point-min) (point-max) newbufname))))
+
+
+(defun cjk-file-write-file (filename &optional load)
+ "Save FILENAME as <FILENAME>.cjk in cjk-coding.
+With prefix arg (noninteractively: 2nd arg LOAD), load FILENAME into
+current buffer also."
+
+ (interactive
+ (let ((file buffer-file-name)
+ (file-name nil)
+ (file-dir nil))
+ (and file
+ ;; If we are in LaTeX mode, we present the file associated
+ ;; with the current buffer as the default.
+ (eq (cdr (assq 'major-mode (buffer-local-variables)))
+ 'latex-mode)
+ (setq file-name (file-name-nondirectory file)
+ file-dir (file-name-directory file)))
+ ;; Now we build the argument list.
+ (list (read-file-name (if current-prefix-arg
+ "Load file and save it in cjk-coding: "
+ "Save file in cjk-coding: ")
+ file-dir file-name nil)
+ current-prefix-arg)))
+
+ (setq filename (expand-file-name filename))
+
+ (let (input-buffer
+ (new-filename (cjk-get-name filename)))
+ (save-excursion
+ (setq input-buffer (get-buffer-create " *cjk-temp*"))
+ (set-buffer input-buffer)
+ (erase-buffer)
+ (cjk-set-buffer-multibyte t)
+ (insert-file-contents filename)
+ (let ((coding-system-for-write 'cjk-coding))
+ (write-region (point-min) (point-max) new-filename))))
+
+ (if load
+ (find-file filename)))
+
+
+;; To be independent from AUC TeX, we copy the TeX-in-comment function.
+
+(defvar cjk-tex-esc "\\"
+ "The TeX escape character.")
+
+
+(defconst cjk-comment-start-skip (concat "\\(\\(^\\|[^\\]\\)\\("
+ (regexp-quote cjk-tex-esc)
+ (regexp-quote cjk-tex-esc)
+ "\\)*\\)\\(%+ *\\)")
+ "A regexp to identify the beginning of a comment in TeX.")
+
+
+(defun cjk-tex-in-comment ()
+ "Return non-nil if point is in a TeX comment."
+
+ (if (or (bolp)
+ (eq (preceding-char) ?\r))
+ nil
+ (save-excursion
+ (let ((pos (point)))
+ (re-search-backward "^\\|\r" nil t)
+ (or (looking-at cjk-comment-start-skip)
+ (re-search-forward cjk-comment-start-skip pos t))))))
+
+
+(defun cjk-write-all-files (filename &optional load force)
+ "Save FILENAME and all files included in FILENAME in cjk-coding.
+This function runs `cjk-file-write-file' on each file if necessary.
+The inclusion commands scanned for are `\\CJKinput', `\\CJKinclude',
+and `\\CJKbibliography'.
+
+With 1 \\[universal-argument] (noninteractively: 2nd arg LOAD),
+ load FILENAME into current buffer also.
+With 2 \\[universal-argument]'s (noninteractively: 3rd arg FORCE),
+ run `cjk-file-write-file' unconditionally.
+With 3 \\[universal-argument]'s, do both."
+
+ (interactive
+ (let ((file buffer-file-name)
+ (file-name nil)
+ (file-dir nil))
+ (and file
+ ;; If we are in LaTeX mode, we present the file associated
+ ;; with the current buffer as the default.
+ (eq (cdr (assq 'major-mode (buffer-local-variables)))
+ 'latex-mode)
+ (setq file-name (file-name-nondirectory file)
+ file-dir (file-name-directory file)))
+ ;; Now we build the argument list.
+ (setq load (member current-prefix-arg '((4) (64))))
+ (setq force (member current-prefix-arg '((16) (64))))
+ (list
+ (read-file-name (if load
+ "Load file and save it in cjk-coding: "
+ "Save file in cjk-coding: ")
+ file-dir file-name nil)
+ load
+ force)))
+
+ (let (input-buffer
+ (dir (file-name-directory filename))
+ (tex-include-regexp "\\\\CJKinclude *{\\(.*\\)}")
+ (tex-input-regexp "\\\\CJKinput *{\\(.*\\)}")
+ (bib-regexp "\\\\CJKbibliography *{\\(.*\\)}")
+ (result '())
+ (newresult '()))
+ (save-excursion
+ ;; First, load the file associated with FILENAME into INPUT-BUFFER
+ (setq input-buffer (get-buffer-create " *cjk-temp*"))
+ (set-buffer input-buffer)
+ (erase-buffer)
+ (cjk-set-buffer-multibyte t)
+ (insert-file-contents filename)
+ (goto-char (point-min))
+
+ ;; Then, search `\CJKinput', `\CJKinclude', and `\CJKbibliography' and
+ ;; append the found filenames to the RESULT list.
+ (while (re-search-forward tex-include-regexp nil t)
+ ;; We assume that the include file name is well behaved and
+ ;; doesn't contain a comment character.
+ (let ((match (match-string 1)))
+ (if (not (cjk-tex-in-comment))
+ (setq result (cons (concat match ".tex") result)))))
+ (while (re-search-forward tex-input-regexp nil t)
+ (let ((match (match-string 1)))
+ (if (not (cjk-tex-in-comment))
+ (if (string-equal (file-name-sans-extension match) match)
+ (setq result (cons (concat match ".tex") result))
+ (setq result (cons match result))))))
+ (while (re-search-forward bib-regexp nil t)
+ (let ((match (match-string 1)))
+ (if (not (cjk-tex-in-comment))
+ (setq result (cons (concat match ".bib") result))))))
+
+ ;; Add directory to each element.
+ (dolist (elt result)
+ (setq newresult (cons (concat dir elt) newresult)))
+
+ ;; Add the master file itself to the list.
+ (setq newresult (cons filename newresult))
+
+ ;; Process file by file.
+ (dolist (source newresult)
+ (if (not (file-readable-p source))
+ (message "Can't operate on %s" source)
+ (if (or (file-newer-than-file-p source (cjk-get-name source))
+ force)
+ (cjk-file-write-file source)))))
+
+ (if load
+ (find-file filename)))
+
+
+(defun batch-cjk-write-file ()
+ "Run `cjk-file-write-file' on the remaining files if necessary.
+Use this from the command line, with `--batch' (or `-batch'); it won't
+work in an interactive Emacs. For example, invoke
+
+ \"emacs -batch -l cjk-enc -f batch-cjk-write-file *.tex\"
+
+Note that if you specify a directory name, all files in this directory
+are processed."
+
+ (do-batch-cjk-write-file))
+
+
+(defun batch-force-cjk-write-file ()
+ "Run `cjk-file-write-file' on the remaining files unconditionally.
+Use this from the command line, with `--batch' (or `-batch'); it won't
+work in an interactive Emacs. For example, invoke
+
+ \"emacs -b -l cjk-enc -f batch-force-cjk-write-file *.tex\"
+
+Note that if you specify a directory name, all files in this directory
+are processed.
+
+This function is useful for Makefiles to let the make program do the
+file time management."
+
+ (do-batch-cjk-write-file t))
+
+
+(defun do-batch-cjk-write-file (&optional force)
+ "Run `cjk-file-write-file' on remaining arguments.
+If optional argument FORCE is non-nil, run it unconditionally."
+
+ (defvar command-line-args-left) ; Avoid `free variable' warning.
+
+ (if (not noninteractive)
+ (error "`batch-write-cjk-file' is to be used only with --batch"))
+
+ (while command-line-args-left
+ (let ((source (car command-line-args-left))
+ dest)
+ (if (file-directory-p (expand-file-name source))
+ ;; Handle all files in directory.
+ (let ((files (directory-files source)))
+ (while files
+ (if (and (not (auto-save-file-name-p (car files)))
+ ;; Replace the directory name saved in `source'
+ ;; with a file name.
+ (setq source
+ (expand-file-name (car files) source))
+ (setq dest (cjk-get-name source))
+ (not (file-directory-p source))
+ (or (file-newer-than-file-p source dest)
+ force))
+ (cjk-file-write-file source))
+ (setq files (cdr files))))
+ ;; Otherwise, process a single file.
+ (if (not (file-readable-p source))
+ (message "Can't operate on %s" source)
+ (if (or (file-newer-than-file-p source (cjk-get-name source))
+ force)
+ (cjk-file-write-file source)))))
+
+ (setq command-line-args-left (cdr command-line-args-left)))
+
+ (message "Done")
+ (kill-emacs 0))
+
+;;; EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/lisp/emacs/thai-word.el b/language/chinese/CJK/cjk-4.8.5/utils/lisp/emacs/thai-word.el
new file mode 100644
index 0000000000..956cf27b06
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/lisp/emacs/thai-word.el
@@ -0,0 +1,11052 @@
+;;; thai-word.el -- find Thai word boundaries
+
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004
+;; Electrotechnical Laboratory, JAPAN.
+
+;; Author: Kenichi HANDA <handa@etl.go.jp>
+
+;; Keywords: thai, word break, emacs
+
+;; 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, 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 GNU Emacs; see the file COPYING. If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;; The used Thai word list has been taken from IBM's ICU4J project
+;; (file `thai6.ucs', version 1.4, converted to TIS encoding, with
+;; removal of three incorrect entries) to which the following license
+;; applies:
+;;
+;; COPYRIGHT AND PERMISSION NOTICE
+;;
+;;
+;; Copyright (c) 1995-2001 International Business Machines
+;; Corporation and others
+;;
+;; All rights reserved.
+;;
+;;
+;; 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, and/or sell copies of
+;; the Software, and to permit persons to whom the Software is
+;; furnished to do so, provided that the above copyright notice(s)
+;; and this permission notice appear in all copies of the Software
+;; and that both the above copyright notice(s) and this permission
+;; notice appear in supporting documentation.
+;;
+;; 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE
+;; COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE
+;; FOR ANY CLAIM, OR 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.
+;;
+;; Except as contained in this notice, the name of a copyright
+;; holder shall not be used in advertising or otherwise to promote
+;; the sale, use or other dealings in this Software without prior
+;; written authorization of the copyright holder.
+
+
+;; This file implements an algorithm to find Thai word breaks using a
+;; dictionary. It is based on the C program `cttex' written by
+;; Vuthichai Ampornaramveth <vuthi@nii.ac.jp>.
+
+
+;; Table of Thai words. It is a nested alist (see `nested-alist-p'),
+;; which means that you can easily index the list character by
+;; character.
+
+(defconst thai-word-table nil)
+
+
+;; Set up `thai-word-table'.
+
+(let
+ ((l
+ '("¡¡"
+ "¡¡Å"
+ "¡¡Ø¸Àѳ±ì"
+ "¡§"
+ "¡§¡ÒÃ"
+ "¡§ÊØÅ"
+ "¡§àµê¡"
+ "¡®"
+ "¡®ËÁÒÂ"
+ "¡°Ô¹"
+ "¡´"
+ "¡µÑ­ªÅÕ"
+ "¡µÑ­­ØµÒ"
+ "¡µÑ­­Ù"
+ "¡µÒ¸Ô¡ÒÃ"
+ "¡µÒÀÔ¹ÔËÒÃ"
+ "¡µÔ¡Ò"
+ "¡µàÇ·ÔµÒ"
+ "¡µàÇ·Õ"
+ "¡¶Ò"
+ "¡·Á"
+ "¡·ÅÕ"
+ "¡¹"
+ "¡¹¡"
+ "¡¹ÔÉ°Ò"
+ "¡º"
+ "¡º¯"
+ "¡º´Ò¹"
+ "¡º·Ù"
+ "¡ºÒÅ"
+ "¡ºÔ¹·Ãì"
+ "¡ºÔÅ"
+ "¡ºÕè"
+ "¡ÁÅ"
+ "¡Ã"
+ "¡Ã¡®"
+ "¡Ã¡®Ò¤Á"
+ "¡Ã¡¯"
+ "¡Ã§"
+ "¡Ã³±ì"
+ "¡Ã³Õ"
+ "¡Ã³Õ¡Ԩ"
+ "¡Ã³ÕÂì"
+ "¡Ã´"
+ "¡Ã¹"
+ "¡Ãº"
+ "¡ÃºÙÃ"
+ "¡ÃÁ"
+ "¡ÃÁ·èÒ"
+ "¡ÃÁ¸ÃÃÁì"
+ "¡ÃÃ"
+ "¡Ãêԧ"
+ "¡Ãó"
+ "¡ÃóԡÒÃì"
+ "¡ÃþØÁ"
+ "¡ÃÃÁ"
+ "¡ÃÃÁ¡Ã"
+ "¡ÃÃÁ¡ÒÃ"
+ "¡ÃÃÁªÇÒµ"
+ "¡ÃÃÁÒª¹"
+ "¡ÃÃÁÒªÕ¾"
+ "¡ÃÃÁÒ¸Ô¡ÒÃ"
+ "¡ÃÃà¨Õ¡"
+ "¡ÃÃàªÕ§"
+ "¡ÃÃá·Ã¡"
+ "¡ÃÃ⪡"
+ "¡ÃÃä¡Ã"
+ "¡ÃÇ´"
+ "¡ÃǺ"
+ "¡ÃÇÂ"
+ "¡ÃÍ"
+ "¡ÃÍ¡"
+ "¡ÃÍ¡á¡Ã¡"
+ "¡Ãͧ"
+ "¡Ãͧ¡ÃÍÂ"
+ "¡ÃÍ´"
+ "¡Ãͺ"
+ "¡ÃÍÁ"
+ "¡ÃÐ"
+ "¡ÃЧ¡¡ÃÐà§Ôè¹"
+ "¡ÃЧèͧ¡ÃÐá§è§"
+ "¡ÃЧè͹¡ÃÐá§è¹"
+ "¡ÃШ¡"
+ "¡ÃШ͡"
+ "¡ÃШͧÍá§"
+ "¡ÃШѧ"
+ "¡ÃШѺ"
+ "¡ÃШҴ"
+ "¡ÃШҺ"
+ "¡ÃШÒÂ"
+ "¡ÃШԴ"
+ "¡ÃШԺ"
+ "¡ÃШÔÃÔ´"
+ "¡ÃШء"
+ "¡ÃШغ¡ÃШԺ"
+ "¡ÃШØÂ"
+ "¡ÃШØ맡ÃШÔë§"
+ "¡ÃШØëÁ¡ÃШÔëÁ"
+ "¡ÃШÙë¡ÃШÕë"
+ "¡ÃШèÒ§"
+ "¡ÃШé͹"
+ "¡ÃЩ͡"
+ "¡ÃЩѺ¡ÃÐ੧"
+ "¡ÃЩٴ"
+ "¡ÃЩè͹"
+ "¡ÃЪ͹"
+ "¡ÃЪѺ"
+ "¡ÃЪÑé¹"
+ "¡ÃЪҡ"
+ "¡ÃЪØ"
+ "¡ÃЫԡ"
+ "¡ÃЫԺ"
+ "¡ÃЮØÁ¾Õ"
+ "¡Ãд¡"
+ "¡Ãдͧ"
+ "¡Ãд͹"
+ "¡Ãдѧ§Ò"
+ "¡Ãдҡ"
+ "¡ÃдҧÅÒ§"
+ "¡Ãдҹ"
+ "¡ÃдÒÉ"
+ "¡Ãдԡ"
+ "¡ÃдÔè§"
+ "¡ÃдÕè"
+ "¡Ãд׺"
+ "¡ÃдØÁ"
+ "¡Ãд١"
+ "¡Ãдé§"
+ "¡ÃдéÒ§"
+ "¡Ãеԡ"
+ "¡ÃеԺ"
+ "¡ÃеÔê´"
+ "¡Ãе×ÍÃ×ÍÃé¹"
+ "¡Ãеء"
+ "¡ÃеØ駡ÃеÔé§"
+ "¡ÃеØé¹"
+ "¡Ãеèͧ¡ÃÐáµè§"
+ "¡ÃеèÒÂ"
+ "¡ÃеéÇÁ¡ÃÐàµÕéÂÁ"
+ "¡Ãеêͺ"
+ "¡ÃжԹ"
+ "¡Ãз§"
+ "¡Ãзº"
+ "¡ÃзÃǧ"
+ "¡ÃзÐ"
+ "¡ÃзÑè§"
+ "¡Ãзԧ"
+ "¡Ãз׺"
+ "¡Ãзا"
+ "¡ÃзÙé"
+ "¡ÃзèÍÁ"
+ "¡Ãзé͹"
+ "¡ÃзéÍÁ¡ÃÐá·éÁ"
+ "¡ÃйÑé¹"
+ "¡Ãкǹ"
+ "¡ÃкÇÂ"
+ "¡Ãк͡"
+ "¡Ãкͧ"
+ "¡ÃкÐ"
+ "¡ÃкÔ"
+ "¡ÃкÕè"
+ "¡Ãк×Í"
+ "¡Ãкا"
+ "¡ÃлÃÕé¡ÃÐà»ÃèÒ"
+ "¡ÃлÑéÇ¡ÃÐà»ÕéÂ"
+ "¡ÃлèÓ"
+ "¡ÃлéÍ¡ÃÐá»é"
+ "¡Ãлëͧ"
+ "¡ÃмÅÕ¡ÃмÅÒÁ"
+ "¡Ãмա"
+ "¡ÃоÕé"
+ "¡Ãо×Í"
+ "¡ÃоØé§"
+ "¡ÃпѴ¡ÃÐà¿Õ´"
+ "¡ÃпÙÁ¡ÃпÒÂ"
+ "¡ÃÐÁÍÁ¡ÃÐáÁÁ"
+ "¡ÃÐÁѧ"
+ "¡ÃÐÂÒ˧ѹ"
+ "¡ÃÐÂÖ¡¡ÃÐÂ×Í"
+ "¡ÃÐÂè͹"
+ "¡ÃÐÃÍ¡"
+ "¡ÃÐÅÍÁ"
+ "¡ÃÐÅÑÁ¾Ã"
+ "¡ÃÐÇÔ¹"
+ "¡ÃÐÇÕ¡ÃÐÇÒ´"
+ "¡ÃÐÉÑÂ"
+ "¡ÃÐÉÒ»³ì"
+ "¡ÃÐÊͺ"
+ "¡ÃÐÊѧ"
+ "¡ÃÐÊѹ"
+ "¡ÃÐÊÒ"
+ "¡ÃÐÊ×Í"
+ "¡ÃÐÊا¡ÃÐÊÔ§"
+ "¡ÃÐÊع"
+ "¡ÃÐ˹¡"
+ "¡ÃÐ˹Һ"
+ "¡ÃÐ˹èÓ"
+ "¡ÃÐËÁÔº"
+ "¡ÃÐËÁèÍÁ"
+ "¡ÃÐËÂÔèÁ"
+ "¡ÃÐËÒÂ"
+ "¡ÃÐËÖÁ"
+ "¡ÃÐËÖèÁ"
+ "¡ÃÐÍͺ"
+ "¡ÃÐÍÑ¡"
+ "¡ÃÐÍÑ¡¡ÃÐÍèǹ"
+ "¡ÃÐà§éÒ¡ÃЧʹ"
+ "¡ÃÐà¨Ò"
+ "¡ÃÐà¨Ô§"
+ "¡ÃÐà¨Ô´¡ÃÐà¨Ô§"
+ "¡ÃÐà¨Õêº"
+ "¡ÃÐàªéÒ"
+ "¡ÃÐà«Í"
+ "¡ÃÐà«Ô§"
+ "¡ÃÐà«ç¹"
+ "¡ÃÐà«éÒ"
+ "¡ÃÐà´Ô´"
+ "¡ÃÐà´Õ´"
+ "¡ÃÐà´×Í¡"
+ "¡ÃÐà´×èͧ"
+ "¡ÃÐà´ç¹"
+ "¡ÃÐà´éÒ"
+ "¡ÃÐ൧"
+ "¡ÃÐàµÒÐ"
+ "¡ÃÐàµ×éͧ"
+ "¡ÃÐàµç¹"
+ "¡ÃÐà¶Ôº"
+ "¡ÃÐà·ÕÂÁ"
+ "¡ÃÐà·×͹"
+ "¡ÃÐູ"
+ "¡ÃÐàºÕ´"
+ "¡ÃÐàº×éͧ"
+ "¡ÃÐà»ÒÐ"
+ "¡ÃÐà»ëÒ"
+ "¡ÃÐà¾ÒÐ"
+ "¡ÃÐà¾×èÍÁ"
+ "¡ÃÐàÂéÍ¡ÃÐáËÂè§"
+ "¡ÃÐàÃÕ¹"
+ "¡ÃÐàÊÕ¹"
+ "¡ÃÐàÊÕÂÃ"
+ "¡ÃÐàÊ繡ÃÐÊÒÂ"
+ "¡ÃÐàÊèÒ"
+ "¡ÃÐàËÁç´¡ÃÐáËÁè"
+ "¡ÃÐá¨Ð"
+ "¡ÃÐá«Ð"
+ "¡ÃÐá´Ð"
+ "¡ÃÐá´èÇ"
+ "¡ÃÐáµ"
+ "¡ÃÐá·¡"
+ "¡ÃÐáÊ"
+ "¡ÃÐáÍÁ"
+ "¡ÃÐ⨹"
+ "¡ÃÐâ¨Á"
+ "¡ÃÐâ©¡¡ÃÐà©¡"
+ "¡ÃÐâ´¡"
+ "¡ÃÐâ´¡¡ÃÐà´¡"
+ "¡ÃÐâ´§"
+ "¡ÃÐâ´´"
+ "¡ÃÐⶹ"
+ "¡ÃÐâºÁ"
+ "¡ÃÐâ»Ã§"
+ "¡ÃÐâËé"
+ "¡ÃÑ¡"
+ "¡Ãѧ"
+ "¡Ãѹ"
+ "¡ÃѺ"
+ "¡ÃÑÁ"
+ "¡ÃÒ¡"
+ "¡ÃÒ§"
+ "¡ÃÒ´"
+ "¡ÃÒ¹"
+ "¡ÃÒº"
+ "¡ÃÒ¿"
+ "¡ÃÒ¿¿Ô¡"
+ "¡ÃÒ¿Ô¡"
+ "¡ÃÒÁ"
+ "¡ÃÒÂ"
+ "¡ÃÒÇ"
+ "¡ÃÓ"
+ "¡ÃÔ¡"
+ "¡ÃÔ§¡ÃÔÇ"
+ "¡ÃÔª"
+ "¡ÃÔº"
+ "¡ÃÔÁ"
+ "¡ÃÔÂÒ"
+ "¡ÃÔÇ"
+ "¡ÃÔè§"
+ "¡ÃÔèÁ"
+ "¡ÃÔéÇ"
+ "¡ÃÔê¡"
+ "¡ÃÔê§"
+ "¡ÃÕ"
+ "¡ÃÕ¡"
+ "¡ÃÕ±Ò"
+ "¡ÃÕ´"
+ "¡ÃÕ¸Ò"
+ "¡ÃÕê´"
+ "¡ÃØ"
+ "¡ÃØ¡"
+ "¡Ãا"
+ "¡Ãا෾"
+ "¡ÃسÒ"
+ "¡ÃسҸԤس"
+ "¡Ãع"
+ "¡Ãغ"
+ "¡ÃØÂ"
+ "¡ÃØè¹"
+ "¡ÃØèÁ"
+ "¡ÃØéÁ¡ÃÔèÁ"
+ "¡ÃØê»"
+ "¡ÃÙ"
+ "¡ÃÙ´"
+ "¡ÃçÍ¡¡ÃëÍÂ"
+ "¡Ãè͹"
+ "¡ÃèÍÂ"
+ "¡ÃèÒ§"
+ "¡ÃèÒÂ"
+ "¡ÃèÓ"
+ "¡ÃéÇÁ"
+ "¡ÃéÍ"
+ "¡ÃéÒ¹"
+ "¡ÃéÒÇ"
+ "¡ÄɮաÒ"
+ "¡ÄɳÒ"
+ "¡Å"
+ "¡Å´"
+ "¡Åº"
+ "¡ÅÁ"
+ "¡ÅÂØ·¸ì"
+ "¡Åǧ"
+ "¡ÅÍ¡"
+ "¡Åͧ"
+ "¡Å͹"
+ "¡ÅÍÂ"
+ "¡ÅÑ¡"
+ "¡ÅÑ´"
+ "¡ÅѺ"
+ "¡ÅÑÇ"
+ "¡ÅÑè¹"
+ "¡ÅÑé¹"
+ "¡ÅÑéÇ"
+ "¡ÅÒ¡"
+ "¡ÅÒ§"
+ "¡ÅÒ´"
+ "¡ÅÒÂ"
+ "¡ÅÒâËÁ"
+ "¡ÅÔè§"
+ "¡ÅÔè¹"
+ "¡ÅÔé§"
+ "¡ÅÔéÁ"
+ "¡ÅÕ"
+ "¡ÅÕº"
+ "¡ÅÕè"
+ "¡ÅÖ§"
+ "¡Å×¹"
+ "¡ÅØèÁ"
+ "¡ÅØéÁ"
+ "¡ÅÙâ¤Ê"
+ "¡ÅàÁç´"
+ "¡Åè¹"
+ "¡Åèͧ"
+ "¡Åè͹"
+ "¡ÅèÍÁ"
+ "¡ÅèÒÇ"
+ "¡ÅèÓ"
+ "¡ÅéÇÂ"
+ "¡ÅéÇÂäÁé"
+ "¡ÅéÍ"
+ "¡Åéͧ"
+ "¡Åé͹"
+ "¡ÅéÍÁá¡ÅéÁ"
+ "¡ÅéÒ"
+ "¡ÅéÒÁ"
+ "¡ÅéÓ"
+ "¡Ç´"
+ "¡Ç¹"
+ "¡ÇÁ"
+ "¡ÇÂ"
+ "¡Ç¨Ñêº"
+ "¡Ç¨Õê"
+ "¡ÇÑ¡"
+ "¡ÇÑ´"
+ "¡ÇÒ§"
+ "¡ÇÒ§µØé§"
+ "¡ÇÒ´"
+ "¡ÇÒÇà¤Ã×Í"
+ "¡ÇÕ"
+ "¡ÇèÒ"
+ "¡ÇéÒ§"
+ "¡ÇéÒ¹"
+ "¡ÇêÒ¹"
+ "¡ÉѵÃÔÂì"
+ "¡ÉÑÂ"
+ "¡ÉÒ»³ì"
+ "¡ÊÔ"
+ "¡ÊÔ¡Ã"
+ "¡ÊÔ¡ÃÃÁ"
+ "¡ÊÔ³"
+ "¡Í"
+ "¡Í¡"
+ "¡Í§"
+ "¡Í«"
+ "¡Í´"
+ "¡Íº"
+ "¡Í»Ã"
+ "¡ÍÂ"
+ "¡ÍÃÔÅÅÒ"
+ "¡ÍÅì¿"
+ "¡ÍàÍÕêÂÐ"
+ "¡Ð"
+ "¡ÐªÖ衡ЪÑè¡"
+ "¡Ð«Ç¡"
+ "¡Ð´Õè"
+ "¡ÐµéÓ"
+ "¡ÐµêÒ¡"
+ "¡Ð·¡Ã¡"
+ "¡Ð·Ñ´ÃÑ´"
+ "¡Ð·Ñ¹Ëѹ"
+ "¡Ð·Ô"
+ "¡Ð·×Í"
+ "¡ÐºÑ§ÅÁ"
+ "¡ÐºÔé§"
+ "¡Ð»ÃÔ´¡Ð»ÃÍÂ"
+ "¡Ð»Ç¡¡Ðà»Õ¡"
+ "¡Ð»Ð"
+ "¡Ð»Ô"
+ "¡Ð¾§"
+ "¡Ð¾ÃÔº"
+ "¡Ð¾Åèͧ¡Ðá¾Åè§"
+ "¡Ð¾éÍ"
+ "¡ÐÃѵ"
+ "¡ÐÃØ觡ÐÃÔè§"
+ "¡ÐÅÇÂ"
+ "¡ÐÅÍ"
+ "¡ÐÅлѧËÒ"
+ "¡ÐÅÐÁѧ"
+ "¡ÐÅÐáÁ"
+ "¡ÐÅÒ"
+ "¡ÐÅÒÊÕ"
+ "¡ÐÅÔéÁ¡ÐàËÅÕèÂ"
+ "¡ÐÅè͹"
+ "¡ÐÅèÍÁ¡ÐáÅèÁ"
+ "¡ÐÅèÍ¡ÐËÅÔº"
+ "¡ÐÊéÒËÍÂ"
+ "¡Ð˹ا¡Ð˹ԧ"
+ "¡Ð˹çͧ¡Ðá˹ç§"
+ "¡ÐËÃÍ´"
+ "¡ÐËÃÕè"
+ "¡ÐËÃçÍÁ¡ÐáËÃçÁ"
+ "¡ÐËÃèͧ"
+ "¡ÐËÅÕè"
+ "¡ÐËÅØ¡¡ÐËÅÔ¡"
+ "¡ÐËÅèÓ"
+ "¡Ðà´¡"
+ "¡Ð൧"
+ "¡Ðà·Â"
+ "¡Ðà·ÒÐ"
+ "¡Ðà»Ô꺡лêÒº"
+ "¡Ðà¼Å¡"
+ "¡ÐàÃÕè¡ÐÃÒ´"
+ "¡ÐàÅÔ´"
+ "¡ÐàÅèÍ¡ÐÅèÒ"
+ "¡ÐàËÃÕè§"
+ "¡ÐàËÅÒÐà»ÒÐ"
+ "¡Ðáªè"
+ "¡Ðⵧ¡Ð൧"
+ "¡Ðâµé§âËè§"
+ "¡Ðâµê¡"
+ "¡Ðâ»Ã§"
+ "¡Ðâ»âÅ"
+ "¡Ðâ¼Å¡¡Ðà¼Å¡"
+ "¡ÐâËÅ¡"
+ "¡Ñ¡"
+ "¡Ñ¡¢ÌÐ"
+ "¡Ñ§"
+ "¡Ñ§¡éÒ"
+ "¡Ñ§¢Ò"
+ "¡Ñ§©Ô¹"
+ "¡Ñ§¿Ù"
+ "¡Ñ§ÇÅ"
+ "¡Ñ§ÇÒ¹"
+ "¡Ñ§Ê´ÒÅ"
+ "¡Ñ§Ëѹ"
+ "¡Ñ§äÊ"
+ "¡Ñ­ªÒ"
+ "¡Ñ­­Ò"
+ "¡Ñ³±ì"
+ "¡Ñ´"
+ "¡Ñ¹"
+ "¡Ñ¹´ÒÃ"
+ "¡Ñ¹µì"
+ "¡Ñ¹ÂÒ¹"
+ "¡Ñ¹Âì"
+ "¡Ñº"
+ "¡Ñ»"
+ "¡Ñ»µÑ¹"
+ "¡ÑÁ»¹Ò·"
+ "¡ÑÁ»ÃÐâ´"
+ "¡ÑÁ¾ÙªÒ"
+ "¡ÑÁÁѹµÀÒ¾ÃѧÊÕ"
+ "¡ÑÁÁѹµÃѧÊÕ"
+ "¡Ñź¡"
+ "¡ÑÅ»¾Ä¡Éì"
+ "¡ÑŻѧËÒ"
+ "¡ÑÅ»ÒÇÊÒ¹"
+ "¡ÑÅ»ì"
+ "¡ÑÅÂÒ"
+ "¡ÑÅÂÒ³"
+ "¡ÑÅÂÒ³ÁÔµÃ"
+ "¡ÑÅÂÒ³Õ"
+ "¡ÑÅâª"
+ "¡Ñè¹"
+ "¡Ñé§"
+ "¡Ñé¹"
+ "¡Ñé¹ËÂÑè¹"
+ "¡Ñê¡"
+ "¡Ò"
+ "¡Ò¡"
+ "¡Ò¡Õ"
+ "¡Ò§"
+ "¡Ò§à¡§"
+ "¡Ò§à¢¹"
+ "¡Ò«ÐÅͧ"
+ "¡Ò­¨¹ºØÃÕ"
+ "¡Ò­¨¹Ò"
+ "¡Ò´"
+ "¡Ò¹"
+ "¡Ò¹´Ò"
+ "¡Ò¹¾ÅÙ"
+ "¡Òº"
+ "¡Ò½Ò¡"
+ "¡Ò¾Âì"
+ "¡ÒÁ"
+ "¡ÒÁÒÃÁ³ì"
+ "¡ÒÂ"
+ "¡Ò¡ÃÃÁ"
+ "¡ÒÂÀÒ¾"
+ "¡ÒÂÇÔÀÒ¤"
+ "¡ÒÂÊÔ·¸Ôì"
+ "¡ÒÂҾ¾"
+ "¡ÒÃ"
+ "¡Òóì"
+ "¡ÒúÙÃ"
+ "¡ÒÃÐà¡´"
+ "¡ÒÃѳÂì"
+ "¡ÒÃѹµì"
+ "¡ÒÃØ­"
+ "¡ÒÃسÂì"
+ "¡ÒÃàÇ¡"
+ "¡ÒÃì"
+ "¡ÒÃì´"
+ "¡ÒÃìµÙ¹"
+ "¡ÒÅ"
+ "¡ÒÅ¡Ô³Õ"
+ "¡ÒÅÕ"
+ "¡ÒÅà·ÈÐ"
+ "¡ÒÇ"
+ "¡ÒÈ"
+ "¡ÒÊ"
+ "¡ÒÊÃ"
+ "¡ÒÊÔâ¹"
+ "¡ÒËŧ"
+ "¡ÒÌ"
+ "¡ÒàËÇèÒ"
+ "¡Òá¿"
+ "¡ÒáÅç¡«Õ"
+ "¡Ó"
+ "¡Ó¡ÇÁ"
+ "¡Ó¡Ñ´"
+ "¡Ó¡Ñº"
+ "¡Ó¨Ã"
+ "¡Ó¨Ñ´"
+ "¡Ó¨ÒÂ"
+ "¡ÓªÑº"
+ "¡Ó«Òº"
+ "¡Ó´Ñ´"
+ "¡Ó¸Ã"
+ "¡Ó¹Ñ¹"
+ "¡Ó¹ÑÅ"
+ "¡ÓºÑ§"
+ "¡Ó»Ñè¹"
+ "¡Ó¾ÃéÒ"
+ "¡Ó¾×´"
+ "¡ÓÁжѹ"
+ "¡ÓÁÐÅÍ"
+ "¡ÓÁÐËÂÕè"
+ "¡ÓÂÒ¹"
+ "¡ÓÂÓ"
+ "¡ÓÃÒº"
+ "¡ÓÅѧ"
+ "¡ÓÊÃÇÅ"
+ "¡Ó˹´"
+ "¡Ó˹Ѵ"
+ "¡Óà´Ò"
+ "¡Óà¹Ô´"
+ "¡ÓàÃÔº"
+ "¡Óà˹ç¨"
+ "¡Óᾧ"
+ "¡Óá˧"
+ "¡ÓäÃ"
+ "¡ÓäÅ"
+ "¡Ô¡"
+ "¡Ô¡Ð"
+ "¡Ô¨"
+ "¡Ô¨¡ÃÃÁ"
+ "¡Ô¨¡ÒÃ"
+ "¡Ô¨¨ÐÅѡɳÐ"
+ "¡Ô¨¨Ò"
+ "¡ÔµµÔ"
+ "¡ÔµµÔ¤Ø³"
+ "¡ÔµµÔÁÈÑ¡´Ôì"
+ "¡ÔµµÔÈѾ·ì"
+ "¡Ô¹"
+ "¡Ô¹¹Ã"
+ "¡Ô¹ÃÕ"
+ "¡ÔÃÔ³Õ"
+ "¡ÔÃÔÂÒ"
+ "¡ÔàŹ"
+ "¡ÔàÅÊ"
+ "¡ÔâÁâ¹"
+ "¡Ôâµչ"
+ "¡ÔâÅ"
+ "¡ÔâÅ¡ÃÑÁ"
+ "¡ÔâÅÅÔµÃ"
+ "¡ÔâÅàÁµÃ"
+ "¡ÔâÅàÎÔõ«ì"
+ "¡Ôè§"
+ "¡ÔèÇ"
+ "¡Ô駡×Í"
+ "¡Ô駡èÒ"
+ "¡Ôê¡"
+ "¡Ôêº"
+ "¡ÔëÇ"
+ "¡Õ¯ÇÔ·ÂÒ"
+ "¡Õ´"
+ "¡ÕµÒÃì"
+ "¡Õº"
+ "¡ÕÌÒ"
+ "¡Õè"
+ "¡Õé"
+ "¡Õë"
+ "¡Ö¡"
+ "¡Ö¡¡éͧ"
+ "¡Öè§"
+ "¡Öë¹"
+ "¡Ø"
+ "¡Ø¡"
+ "¡Ø¡¡Ñ¡"
+ "¡Ø­ªÃ"
+ "¡Ø­á¨"
+ "¡Ø®ØÁ¾Õ"
+ "¡Ø¯°Ñ§"
+ "¡Ø¯Ô"
+ "¡Ø³±Å"
+ "¡Ø´"
+ "¡Ø´Ñ§"
+ "¡Ø´Ñè¹"
+ "¡Ø¹"
+ "¡Ø¹«×Í"
+ "¡Ø¹àªÕ§"
+ "¡Øº"
+ "¡ØÁ"
+ "¡ØÁÀÒ"
+ "¡ØÁÀì"
+ "¡ØÁÒÃ"
+ "¡ØÁÒÃÒ"
+ "¡ØÁÒÃÕ"
+ "¡ØÂ"
+ "¡ØªèÒÂ"
+ "¡ØÂàΧ"
+ "¡ØÅ"
+ "¡ØŸԴÒ"
+ "¡ØźصÃ"
+ "¡ØÅʵÃÕ"
+ "¡ØÅÒ"
+ "¡ØÅÕ"
+ "¡ØÅաبÍ"
+ "¡ØÈÅ"
+ "¡ØÈâźÒÂ"
+ "¡ØËÅÒº"
+ "¡ØèÁ"
+ "¡Øé§"
+ "¡Øê¡"
+ "¡Øê¹"
+ "¡ØêÂ"
+ "¡ØëÂ"
+ "¡Ù"
+ "¡Ù³±ì"
+ "¡Ù´"
+ "¡Ùº"
+ "¡Ùè"
+ "¡Ùé"
+ "¡àÌÇÃÒ¡"
+ "¡ç"
+ "¡è§"
+ "¡è¹"
+ "¡èÍ"
+ "¡èͧ"
+ "¡è͹"
+ "¡èÒÂ"
+ "¡èÓ"
+ "¡é§â¤é§"
+ "¡é¹"
+ "¡éÁ"
+ "¡éÍ"
+ "¡éͧ"
+ "¡é͹"
+ "¡éÍÁ"
+ "¡éÍÂ"
+ "¡éÍÃèÍ¡é͵ԡ"
+ "¡éÒ§"
+ "¡éÒ¹"
+ "¡éÒÁ"
+ "¡éÒÇ"
+ "¡éÓ"
+ "¡éÓ¡Öè§"
+ "¡éÓà¡Ô¹"
+ "¡ê¡"
+ "¡ê§"
+ "¡êÍ¡"
+ "¡êͺ»Õé"
+ "¡êÍ»»Õé"
+ "¡êÒ«"
+ "¡êÒ´"
+ "¡ë§"
+ "¡ëÇÂàµÕëÂÇ"
+ "¡ëÍÂ"
+ "¡ëÒ"
+ "¢§¨×êÍ"
+ "¢¨Ã"
+ "¢¨Ñ´"
+ "¢¨ÒÂ"
+ "¢¨Õ"
+ "¢¨ØÂ"
+ "¢³Ð"
+ "¢´"
+ "¢¹"
+ "¢¹§"
+ "¢¹´"
+ "¢¹¹"
+ "¢¹º"
+ "¢¹Á"
+ "¢¹Áͺ"
+ "¢¹Ñ´"
+ "¢¹Ñ¹"
+ "¢¹Ò¡"
+ "¢¹Ò§"
+ "¢¹Ò´"
+ "¢¹Ò¹"
+ "¢¹Òº"
+ "¢¹ÒÂ"
+ "¢¹ÔÉ°Ò"
+ "¢¹Ø¹"
+ "¢º"
+ "¢º¶"
+ "¢ºÇ¹"
+ "¢Á"
+ "¢ÁÇ´"
+ "¢Áͧ"
+ "¢ÁÍÂ"
+ "¢Áѧ"
+ "¢ÁѺ"
+ "¢ÁÒ"
+ "¢ÁÔº"
+ "¢ÁÔé¹"
+ "¢ÁÕ¢Áѹ"
+ "¢ÁÖ§"
+ "¢ÁØ¡¢ÁÍÁ"
+ "¢ÁØ¡¢ÁÑÇ"
+ "¢Áغ"
+ "¢Áغ¢ÁÔº"
+ "¢ÁèÍÁ"
+ "¢ÁéÓ"
+ "¢ÂÍ¡"
+ "¢Âͧ"
+ "¢ÂÐ"
+ "¢ÂÑ¡"
+ "¢Âѹ"
+ "¢ÂѺ"
+ "¢ÂÑé¹"
+ "¢ÂÒ´"
+ "¢ÂÒº"
+ "¢ÂÒÂ"
+ "¢ÂÓ"
+ "¢ÂÔ¡"
+ "¢ÂÔº"
+ "¢ÂÔèÁ"
+ "¢ÂÕé"
+ "¢ÂØ¡¢ÂÔ¡"
+ "¢ÂØ¡¢ÂØÂ"
+ "¢Âغ"
+ "¢Âغ¢ÂÔº"
+ "¢ÂØÁ"
+ "¢ÂØÂ"
+ "¢ÂØéÁ"
+ "¢ÂèÁ"
+ "¢Âè͹"
+ "¢Âé͹"
+ "¢ÂéÓ"
+ "¢ÃÁ"
+ "¢Ãäì"
+ "¢ÃÑÇ"
+ "¢ÃÔº"
+ "¢ÃÖÁ"
+ "¢ÃØ¢ÃÐ"
+ "¢Åѧ"
+ "¢ÅѺ"
+ "¢ÅÒ"
+ "¢ÅÒ´"
+ "¢ÅÔº"
+ "¢ÅØ¡"
+ "¢ÅØ¡¢ÅÑ¡"
+ "¢ÅØ¡¢ÅÔ¡"
+ "¢Åغ"
+ "¢ÅØÁ"
+ "¢ÅØèÂ"
+ "¢Ç§"
+ "¢Ç´"
+ "¢Ç¹¢ÇÒÂ"
+ "¢Çº"
+ "¢ÇÂ"
+ "¢ÇÑ¡ä¢Çè"
+ "¢ÇÑ­"
+ "¢ÇÑ´"
+ "¢ÇѺ"
+ "¢ÇѺà¢ÇÕÂÇ"
+ "¢ÇÑé¹"
+ "¢ÇÒ"
+ "¢ÇÒ¡"
+ "¢ÇÒ§"
+ "¢ÇÒ´"
+ "¢ÇÒ¹"
+ "¢ÇÒ¢ǹ"
+ "¢ÇÔ´"
+ "¢ÇéÒ§"
+ "¢Í"
+ "¢Í¡"
+ "¢Í§"
+ "¢Í´"
+ "¢Í¹"
+ "¢Íº"
+ "¢Íº¤Ø³"
+ "¢Íºã¨"
+ "¢ÍÁ"
+ "¢ÐÁÍÁ¢ÐáÁÁ"
+ "¢ÐÁÑ¡à¢Áé¹"
+ "¢ÐÁØ¡¢ÐÁÍÁ"
+ "¢ÐÂÔ¡"
+ "¢ÐÂØ¡"
+ "¢ÐàÂéÍá¢Âè§"
+ "¢ÐáÂÐ"
+ "¢Ñ§"
+ "¢Ñ³±Ê¡Ã"
+ "¢Ñ³±ÊÕÁÒ"
+ "¢Ñ´"
+ "¢ÑµµÔÂÁÒ¹Ð"
+ "¢Ñ¹"
+ "¢Ñ¹ªÐà¹ÒÐ"
+ "¢Ñ¹µÔ"
+ "¢Ñ¹·Õ"
+ "¢Ñ¹¸ì"
+ "¢Ñ¹ËÁÒ¡"
+ "¢Ñ¹âµ¡"
+ "¢Ñº"
+ "¢ÑÂ"
+ "¢Ñé¹"
+ "¢ÑéÇ"
+ "¢Ò"
+ "¢Ò¡"
+ "¢Ò¡êÇÂ"
+ "¢Ò§"
+ "¢Ò´"
+ "¢Ò¹"
+ "¢Òº"
+ "¢ÒÁ"
+ "¢ÒÂ"
+ "¢ÒÅ"
+ "¢ÒÇ"
+ "¢Ó"
+ "¢Ô¡"
+ "¢Ô§"
+ "¢ÔÁ"
+ "¢Ôè§"
+ "¢Õ´"
+ "¢Õ»¹ÒÇظ"
+ "¢Õè"
+ "¢Õé"
+ "¢ÕéàËÃè"
+ "¢Ö§"
+ "¢Öé§"
+ "¢Öé¹"
+ "¢Ö鹩èÒÂ"
+ "¢×¹"
+ "¢×è¹"
+ "¢×èÍ"
+ "¢Ø¡"
+ "¢Ø´"
+ "¢Ø¹"
+ "¢Ø¹·Í§"
+ "¢Ø¹á¼¹"
+ "¢ØÁ"
+ "¢ØÂ"
+ "¢Øè¹"
+ "¢Ù´"
+ "¢Ùè"
+ "¢âÁÂ"
+ "¢èÁ"
+ "¢èǹ"
+ "¢èÍ"
+ "¢è͹"
+ "¢èÍÂ"
+ "¢èÒ"
+ "¢èÒ§"
+ "¢èÒÂ"
+ "¢èÒÇ"
+ "¢èÒÇÊÒÃ"
+ "¢é¹"
+ "¢éÍ"
+ "¢éͧ"
+ "¢é͹"
+ "¢éÍÁÙÅ"
+ "¢éÍÂ"
+ "¢éÒ"
+ "¢éÒ§"
+ "¢éÒ¾à¨éÒ"
+ "¢éÒÁ"
+ "¢éÒÇ"
+ "¢éÒÇÊÒÃ"
+ "¢éÒÇàÁèÒ"
+ "¢éÒÇâ¾´"
+ "¢éÒÈÖ¡"
+ "¢éÒËÅǧ"
+ "¤¤¹ÑÁ¾Ã"
+ "¤¤¹Ò§¤ì"
+ "¤¤¹Ò¹µì"
+ "¤§"
+ "¤§¤Ò"
+ "¤ªÃÒª"
+ "¤ªÊÒÃ"
+ "¤ªÒªÒµÔ"
+ "¤ªÒªÕ¾"
+ "¤ªÒ¸ÒÃ"
+ "¤ªÒÀóì"
+ "¤³¹Ò"
+ "¤³º´Õ"
+ "¤³Ð"
+ "¤³Ò¨ÒÃÂì"
+ "¤³Ò¸Ô¡ÒÃ"
+ "¤³Ò¸Ô»äµÂ"
+ "¤³Ò¹Ñº"
+ "¤³Ô¡Ò"
+ "¤³Ôµ"
+ "¤³ÔµÈÒʵÃì"
+ "¤´"
+ "¤´Õ"
+ "¤µÔ"
+ "¤µÔ¸ÃÃÁ"
+ "¤µÔ¾¨¹ì"
+ "¤·Ò"
+ "¤¹"
+ "¤¹¸Ãþì"
+ "¤¹â·"
+ "¤º"
+ "¤Á"
+ "¤Á¹Ò¡ÒÃ"
+ "¤Á¹Ò¤Á"
+ "¤Ã¡"
+ "¤Ãº"
+ "¤ÃêԵ"
+ "¤ÃÃÀ"
+ "¤ÃÃÀì"
+ "¤ÃÃÅͧ"
+ "¤ÃÃâŧ"
+ "¤ÃÃäÅ"
+ "¤ÃÇ­"
+ "¤ÃÇÑ¡"
+ "¤ÃÇÕ"
+ "¤ÃËÒ"
+ "¤ÃÍ¡"
+ "¤Ãͧ"
+ "¤Ãͧá¤Ã§"
+ "¤Ãͺ"
+ "¤Ãͺ¤ÃÑÇ"
+ "¤ÃÐ"
+ "¤ÃÑ´à¤Ãè§"
+ "¤Ãѹ"
+ "¤ÃѺ"
+ "¤ÃÑÇ"
+ "¤ÃÑè§"
+ "¤ÃÑè¹"
+ "¤ÃÑé§"
+ "¤ÃÑé¹"
+ "¤ÃÒ"
+ "¤ÃÒ¡"
+ "¤ÃÒ§"
+ "¤ÃÒ­"
+ "¤ÃÒ´"
+ "¤ÃÒº"
+ "¤ÃÒÁ"
+ "¤ÃÒÇ"
+ "¤ÃÒÊ"
+ "¤ÃÓ"
+ "¤ÃÔʵ¡ÒÅ"
+ "¤ÃÔʵѧ"
+ "¤ÃÔʵì"
+ "¤ÃÔʵìÁÒÊ"
+ "¤ÃÔÊàµÕ¹"
+ "¤ÃÕº"
+ "¤ÃÕÁ"
+ "¤ÃÖ"
+ "¤ÃÖ¡¤Ã×é¹"
+ "¤ÃÖ¡â¤ÃÁ"
+ "¤ÃÖ¹"
+ "¤ÃÖÁ"
+ "¤ÃÖè§"
+ "¤ÃÖéÁ"
+ "¤Ã×´"
+ "¤Ã×¹"
+ "¤Ã×Í"
+ "¤Ã×é¹"
+ "¤Ã×鹤ÃÖ¡"
+ "¤ÃØ"
+ "¤Ãر"
+ "¤ÃØÁà¤Ã×Í"
+ "¤ÃØÂ"
+ "¤ÃØè¹"
+ "¤ÃÙ"
+ "¤ÃÙ´"
+ "¤ÃÙè"
+ "¤Ãè§"
+ "¤ÃèÍÁ"
+ "¤ÃèÒ"
+ "¤ÃèÒÇ"
+ "¤ÃèÓ"
+ "¤ÃéÒ¹"
+ "¤ÃéÒÁ"
+ "¤ÄË"
+ "¤ÄËÑʶì"
+ "¤ÄËÒʹì"
+ "¤ÅÍ"
+ "¤ÅÍ¡"
+ "¤Åͧ"
+ "¤ÅÍ´"
+ "¤Å͹"
+ "¤ÅÍÃÕ¹"
+ "¤ÅÍâÿÍÃìÁ"
+ "¤ÅÍâÿÕÅÅì"
+ "¤ÅÐ"
+ "¤ÅÑ¡"
+ "¤Åѧ"
+ "¤Åѵªì"
+ "¤ÅѺ"
+ "¤ÅÑè¡"
+ "¤ÅÑè§"
+ "¤ÅÒ"
+ "¤ÅÒ§á¤Å§"
+ "¤ÅÒ´"
+ "¤ÅÒ¹"
+ "¤ÅÒÂ"
+ "¤ÅÒÊ"
+ "¤ÅÒÊÊÔ¤"
+ "¤ÅÓ"
+ "¤ÅÔ¹Ô¡"
+ "¤ÅÔé¡"
+ "¤ÅÕ"
+ "¤ÅÕ¹Ô¤"
+ "¤ÅÕè"
+ "¤ÅÖ§"
+ "¤Å×è¹"
+ "¤Å×è¹àËÕ¹"
+ "¤Å×è¹äÊé"
+ "¤ÅØ¡"
+ "¤ÅØÁ"
+ "¤ÅØèÁ"
+ "¤ÅØé§"
+ "¤ÅØéÁ"
+ "¤Åèͧ"
+ "¤Åèͧá¤ÅèÇ"
+ "¤ÅèÓ"
+ "¤Åéͧ"
+ "¤ÅéÍÂ"
+ "¤ÅéÒÂ"
+ "¤ÅéÓ"
+ "¤Ç§"
+ "¤Çº"
+ "¤ÇÃ"
+ "¤ÇÑ¡"
+ "¤Çѹ"
+ "¤ÇÑè¹"
+ "¤ÇÒ¡"
+ "¤ÇÒ­"
+ "¤ÇÒ¹"
+ "¤ÇÒÁ"
+ "¤ÇÒÂ"
+ "¤ÇÔ¹Ô¹"
+ "¤ÇÕ¹"
+ "¤ÇèÓ"
+ "¤ÇéÒ"
+ "¤ÇéÒ§"
+ "¤ÇéÒ¹"
+ "¤Ë¡ÃÃÁ"
+ "¤Ë¡ÃÃÁÈÒʵÃì"
+ "¤Ëº´Õ"
+ "¤Ë»µÒ¹Õ"
+ "¤Í"
+ "¤Í¡"
+ "¤Í´"
+ "¤Í¹"
+ "¤Í¹¡ÃÕµ"
+ "¤Í¹¿Ô¡"
+ "¤Í¹à´¹à«ÍÃì"
+ "¤Í¹àÊÔÃìµ"
+ "¤Í¹àÊÔÃì·"
+ "¤Í¹áǹµì"
+ "¤ÍÁ"
+ "¤ÍÁ¾ÔÇàµÍÃì"
+ "¤ÍÁÁÒ¹â´"
+ "¤ÍÁÁÔǹÔʵì"
+ "¤ÍÁᾤ"
+ "¤ÍÁâ¾à¹¹·ì"
+ "¤ÍÂ"
+ "¤ÍÂÅì"
+ "¤ÍÃÑ»ªÑè¹"
+ "¤ÍÃì«Ô¡Ò"
+ "¤ÍÃì´"
+ "¤ÍÃì»ÍàêÑè¹"
+ "¤ÍÅÑÁ¹ì"
+ "¤ÍʵÒÃÔ¡Ò"
+ "¤ÍफÍ´ì"
+ "¤ÍàÅÊàµÍÃÍÅ"
+ "¤Ð"
+ "¤Ð¹Í§"
+ "¤Ð¹Ö§"
+ "¤Ð¹éÒ"
+ "¤ÐÁÓ"
+ "¤ÐÂÑ鹤ÐÂÍ"
+ "¤Ðà¹"
+ "¤ÐàÂÍ"
+ "¤Ðá¹¹"
+ "¤Ñ¡"
+ "¤Ñ¤¹ÑÁ¾Ã"
+ "¤Ñ¤¹Ò§¤ì"
+ "¤Ñ¤¹Ò¹µì"
+ "¤Ñ³±ÊÙµÃ"
+ "¤Ñ´"
+ "¤Ñ·ÅÕÂÒ"
+ "¤Ñ¹"
+ "¤Ñ¹©ÒÂ"
+ "¤Ñ¹·Ã§"
+ "¤Ñº"
+ "¤ÑÁÀÕÃÀÒ¾"
+ "¤ÑÁÀÕÃì"
+ "¤Ñè¡"
+ "¤Ñè§"
+ "¤Ñè¹"
+ "¤ÑèÇ"
+ "¤Ñé¹"
+ "¤Ò"
+ "¤Ò§"
+ "¤Ò§¤¡"
+ "¤Ò´"
+ "¤Ò¶Ò"
+ "¤Ò·ÍÅÔ¡"
+ "¤Ò¹"
+ "¤Òº"
+ "¤ÒÁ"
+ "¤ÒÁÇÒÊÕ"
+ "¤ÒÂ"
+ "¤ÒÃÁ"
+ "¤ÒÃÇÐ"
+ "¤ÒÃÒÇÒ¹"
+ "¤ÒÃÒàµé"
+ "¤ÒÃÒâÍà¡Ð"
+ "¤ÒÃì"
+ "¤ÒÃìºÍ¹"
+ "¤ÒÃìºÍ¹Á͹͡䫴ì"
+ "¤ÒÃìºÍ¹ä´ÍÍ¡ä«´ì"
+ "¤ÒÃìºÍÅÔ¡"
+ "¤ÒÃìºÍ๵"
+ "¤ÒÃìºÙàÃàµÍÃì"
+ "¤ÒÃìÅ"
+ "¤ÒÃìâºäÎà´Ãµ"
+ "¤ÒÇ"
+ "¤ÒÇÕ"
+ "¤Òà¸Âì"
+ "¤Òà¿è"
+ "¤Ó"
+ "¤Ó¹Ç³"
+ "¤Ó¹Ñº"
+ "¤Ó¹Ö§"
+ "¤Óù"
+ "¤Óú"
+ "¤ÓÃÒÁ"
+ "¤Óá˧"
+ "¤Óãµé"
+ "¤Ô¡"
+ "¤Ô§"
+ "¤Ô´"
+ "¤ÔÁËѹµì"
+ "¤ÔÇ"
+ "¤ÔéÇ"
+ "¤Õµ"
+ "¤Õ¹ÂÒ"
+ "¤Õº"
+ "¤ÕÁ"
+ "¤ÕÂì"
+ "¤ÕÂìºÍÃì´"
+ "¤ÕÃÕ"
+ "¤Õè"
+ "¤Ö¡"
+ "¤Ö¡¤Ñ¡"
+ "¤Öè¡"
+ "¤×¹"
+ "¤×º"
+ "¤×Í"
+ "¤Ø"
+ "¤Ø¡"
+ "¤Ø¡¡Õé"
+ "¤Ø³"
+ "¤Ø³¸ÃÃÁ"
+ "¤Ø³ÀÒ¾"
+ "¤Ø³ÇزÔ"
+ "¤Ø³ÈѾ·ì"
+ "¤Ø³ÊÁºÑµÔ"
+ "¤Ø³Ò¡Ã"
+ "¤Ø³Ù»¡ÒÃ"
+ "¤Ø´"
+ "¤Ø´·ÐÃÒ´"
+ "¤ØÁ"
+ "¤ØÂ"
+ "¤ØÃØ"
+ "¤Øâ³»¡ÒÃ"
+ "¤ØèÁ"
+ "¤Øé§"
+ "¤Øé¹"
+ "¤ØéÁ"
+ "¤ØéÂ"
+ "¤Ù"
+ "¤Ù³"
+ "¤Ù¹"
+ "¤Ù»Í§"
+ "¤ÙËÒ"
+ "¤Ùè"
+ "¤Ùé"
+ "¤à¹¨Ã"
+ "¤çÍ¡à·Å"
+ "¤è͹"
+ "¤èÍÁ"
+ "¤èÍÂ"
+ "¤èÐ"
+ "¤èÒ"
+ "¤èÒ§"
+ "¤èÒÂ"
+ "¤èÓ"
+ "¤é¹"
+ "¤é͹"
+ "¤éÍÁ"
+ "¤éÒ"
+ "¤éÒ§"
+ "¤éÒ§¤ÒÇ"
+ "¤éÒ§àµÔè§"
+ "¤éÒ¹"
+ "¤éÓ"
+ "¦ÃÒÇÒÊ"
+ "¦Òµ"
+ "¦Òµ¡Ã"
+ "¦Òµ¡ÃÃÁ"
+ "¦èÒ"
+ "¦éͧ"
+ "§¡"
+ "§§"
+ "§§§ÇÂ"
+ "§´"
+ "§º"
+ "§Á"
+ "§Ç§"
+ "§Ç´"
+ "§Ç§§"
+ "§Í"
+ "§Í¡"
+ "§Í¡á§¡"
+ "§Í´"
+ "§Í´á§´"
+ "§Í¹"
+ "§Í¹Ë§èÍ"
+ "§Íº"
+ "§ÍÁ"
+ "§ÍÂ"
+ "§Íá§"
+ "§Ð"
+ "§Ñ¡"
+ "§Ñ´"
+ "§Ñ¹"
+ "§Ñº"
+ "§ÑÇ"
+ "§ÑÇà§ÕÂ"
+ "§Ñè¡"
+ "§Ñè§"
+ "§ÑèÇ"
+ "§Ò"
+ "§Ò¹"
+ "§Òº"
+ "§ÒÁ"
+ "§ÒÂ"
+ "§Ó"
+ "§ÔéÇ"
+ "§Õº"
+ "§Ö¡"
+ "§ÖÁ"
+ "§ÖÁ§Ó"
+ "§Ø´"
+ "§Ø¹§§"
+ "§Øº"
+ "§Øº§Ôº"
+ "§ØÂ"
+ "§Ø蹧èÒ¹"
+ "§ØèÁ§èÒÁ"
+ "§ØéÁ"
+ "§Ù"
+ "§ÙÊÇÑ´"
+ "§èǧ"
+ "§èǹ"
+ "§èͧ"
+ "§è͹"
+ "§èÍÂ"
+ "§èÒ"
+ "§èÒ¹"
+ "§èÒÁ"
+ "§èÒÂ"
+ "§èÓ"
+ "§éǹ"
+ "§éÍ"
+ "§éÍÁ"
+ "§éÒ§"
+ "§éÒÇ"
+ "§éÓ"
+ "¨¡"
+ "¨§"
+ "¨§¡Å¹Õ"
+ "¨§ÍÒ§"
+ "¨´"
+ "¨µØ"
+ "¨µØç¤ì"
+ "¨µØþԸ"
+ "¨µØÊ´ÁÀì"
+ "¨¹"
+ "¨º"
+ "¨Á"
+ "¨ÁÙ¡"
+ "¨Ã"
+ "¨Ã¨Ñ´"
+ "¨Ã´"
+ "¨ÃÃÂÒ"
+ "¨ÃÃâŧ"
+ "¨ÃÅÕ"
+ "¨ÃÇ´"
+ "¨ÃÐà¢é"
+ "¨ÃÑÅ"
+ "¨ÃÑÊ"
+ "¨ÃÒ¨Ã"
+ "¨ÃÔ§"
+ "¨ÃÔµ"
+ "¨ÃÔ¸ÃÃÁ"
+ "¨ÃÔÂÈÒʵÃì"
+ "¨ÃÔÂÈÖ¡ÉÒ"
+ "¨ÃÔÂÒ"
+ "¨Ãا"
+ "¨ÃÙ­"
+ "¨Å"
+ "¨Å¹¾ÅÈÒʵÃì"
+ "¨Å¹ÈÒʵÃì"
+ "¨ÅÒ¨Å"
+ "¨Ç¡"
+ "¨Ç§"
+ "¨Ç¹"
+ "¨Çº"
+ "¨ÇÑ¡"
+ "¨Í"
+ "¨Í¡"
+ "¨Í§"
+ "¨Í§Ëͧ"
+ "¨Í´"
+ "¨Í¹"
+ "¨Íº"
+ "¨ÍÁ"
+ "¨ÍÃìá´¹"
+ "¨Íá¨"
+ "¨Ð"
+ "¨Ð¡ÅÐ"
+ "¨Ð¡ÅÒÁ"
+ "¨ÐÅÐËÇÑè¹"
+ "¨ÐÅÐàÁç´"
+ "¨Ðà¢é"
+ "¨Ñ¡"
+ "¨Ñ¡¢Ø"
+ "¨Ñ¡¨Ñè¹"
+ "¨Ñ¡Ã"
+ "¨Ñ¡Ã¾ÃôÔ"
+ "¨Ñ¡ÃÀ¾"
+ "¨Ñ¡ÃÂÒ¹"
+ "¨Ñ¡ÃÇÃôÔ"
+ "¨Ñ¡ÃÇÒÅ"
+ "¨Ñ¡ÃÕ"
+ "¨Ñ¡ÉØ"
+ "¨Ñ¡áËÅè¹"
+ "¨Ñ§"
+ "¨Ñ§¡Íº"
+ "¨Ñ§¡éÒ"
+ "¨Ñ§§Ñ§"
+ "¨Ñ§ËÇÐ"
+ "¨Ñ§ËÇÑ´"
+ "¨Ñ§Ëѹ"
+ "¨Ñ§äÃ"
+ "¨Ñ­äÃ"
+ "¨Ñ³±ÒÅ"
+ "¨Ñ³±ì"
+ "¨Ñ´"
+ "¨Ñ´¡ÒÃ"
+ "¨ÑµÇÒ"
+ "¨ÑµØÃÑÊ"
+ "¨Ñ¹"
+ "¨Ñ¹·¹ì"
+ "¨Ñ¹·ºØÃÕ"
+ "¨Ñ¹·Ã"
+ "¨Ñ¹·Ã¤µÔ"
+ "¨Ñ¹·Ã¤ÃÒÊ"
+ "¨Ñ¹·ÃØ»ÃÒ¤Ò"
+ "¨Ñ¹·Ãì"
+ "¨Ñº"
+ "¨Ñº¡Ñ§"
+ "¨Ñº©èÒÂ"
+ "¨Ñè¹"
+ "¨ÑèÇ"
+ "¨Ñé¡"
+ "¨ÑꡨÕé"
+ "¨Ñê¡à´ÕÂÁ"
+ "¨ÑêÇÐ"
+ "¨Ò¡"
+ "¨Ò§"
+ "¨Ò´"
+ "¨ÒµØç¤Êѹ¹ÔºÒµ"
+ "¨Ò¹"
+ "¨Òº"
+ "¨ÒºÑÅ"
+ "¨ÒºÑÅÂì"
+ "¨ÒÁ"
+ "¨ÒÁ¨ØÃÕ"
+ "¨ÒÁÃ"
+ "¨ÒÁÃÕ"
+ "¨ÒÃ"
+ "¨ÒÃкÕ"
+ "¨ÒÃÐä¹"
+ "¨ÒÃÔ¡"
+ "¨ÒÃÕ"
+ "¨ÒÃÕµ"
+ "¨ÒÃÖ¡"
+ "¨ÒÇ"
+ "¨ÒÇÒ"
+ "¨ÒàÁ¡Ò"
+ "¨Ó"
+ "¨Ó¡Ñ´"
+ "¨Ó¹§"
+ "¨Ó¹¹"
+ "¨Ó¹ÃèÒ"
+ "¨Ó¹Ãèì"
+ "¨Ó¹Ç¹"
+ "¨Ó¹Í§"
+ "¨Ó¹Ó"
+ "¨Ó»Ò"
+ "¨Ó»Õ"
+ "¨Ó¾Ç¡"
+ "¨ÓÃÑÊ"
+ "¨ÓÃÙ­"
+ "¨ÓÅͧ"
+ "¨Ó˹èÒÂ"
+ "¨ÓÍÇ´"
+ "¨Óà¾ÒÐ"
+ "¨ÓàÃÔ­"
+ "¨ÓàÃÕ§"
+ "¨ÓàÅÂ"
+ "¨Óṡ"
+ "¨Ô¡"
+ "¨Ô§â¨é"
+ "¨Ôµ"
+ "¨ÔµÃ"
+ "¨ÔµÃ¡Ã"
+ "¨ÔµÃ¡ÃÃÁ"
+ "¨ÔµÃÅ´Ò"
+ "¨ÔµÇÔ·ÂÒ"
+ "¨ÔµàǪ"
+ "¨Ôµá¾·Âì"
+ "¨Ô¹´Ò"
+ "¨Ô¹µ¡ÇÕ"
+ "¨Ô¹µ¹Ò"
+ "¨Ô¹µ¹Ò¡ÒÃ"
+ "¨Ô¹µÀÒ¾"
+ "¨Ôº"
+ "¨Ô»Ò¶Ð"
+ "¨ÔèÁ"
+ "¨Ô駨¡"
+ "¨Ô駨͡"
+ "¨Ôé§ËÃÕ´"
+ "¨Ôé§àËŹ"
+ "¨ÔéÁ"
+ "¨ÔëÇ"
+ "¨Õ¹"
+ "¨Õ¹áÊ"
+ "¨Õº"
+ "¨ÕÇÃ"
+ "¨Õè"
+ "¨Õé"
+ "¨Õê"
+ "¨Õê´"
+ "¨Õë"
+ "¨Ö§"
+ "¨Öè§"
+ "¨Öé§"
+ "¨×´"
+ "¨Ø"
+ "¨Ø¡"
+ "¨Ø´"
+ "¨ØµÔ"
+ "¨Ø¹"
+ "¨Øº"
+ "¨Øº¨Ôº"
+ "¨ØÁ¾¯"
+ "¨ØÁ¾Ôµ"
+ "¨ØŨÍÁ"
+ "¨ØŪվ"
+ "¨ØŪÕÇѹ"
+ "¨ØŪÕÇÔ¹"
+ "¨ØÅ·ÃÃȹì"
+ "¨ØÅÀÒ¤"
+ "¨ØÅÇÃä"
+ "¨ØÅÈÑ¡ÃÒª"
+ "¨ØÅÊÒÃ"
+ "¨ØÅÔ¹·ÃÕÂì"
+ "¨ØÌÒ"
+ "¨ØÌÒŧ¡Ã³ì"
+ "¨Øè§"
+ "¨Øè¹"
+ "¨ØèÁ"
+ "¨Øé¹"
+ "¨Ø鹨Ùê"
+ "¨ØéÁ"
+ "¨ØéÂ"
+ "¨Øê¡¡ÃÙê"
+ "¨Øêº"
+ "¨Øêºá¨§"
+ "¨Ø맨Ôë§"
+ "¨ØëÁ¨ÔëÁ"
+ "¨Ù"
+ "¨Ù§"
+ "¨Ùº"
+ "¨Ùè"
+ "¨Ùé"
+ "¨Ùê´"
+ "¨Ùë"
+ "¨àÃ"
+ "¨èÍ"
+ "¨èÍÁ"
+ "¨èÒ"
+ "¨èÒ§"
+ "¨èÒÂ"
+ "¨é¹"
+ "¨éǧ"
+ "¨éÍ"
+ "¨éÍ¡"
+ "¨éÍ¡á¨é¡"
+ "¨éͧ"
+ "¨é͹"
+ "¨éÍÂ"
+ "¨éÐ"
+ "¨éÒ"
+ "¨éÒ§"
+ "¨éÒ¹"
+ "¨éÒÅÐËÇÑè¹"
+ "¨éÒÇ"
+ "¨éÓ"
+ "¨éÓ¨Õé"
+ "¨éÓÁèÓ"
+ "¨êÍ¡"
+ "¨êÐ"
+ "¨ëÍ"
+ "¨ëͧ"
+ "¨ëÍÂ"
+ "¨ëÐ"
+ "¨ëÒ"
+ "©¡"
+ "©¡Ãèì"
+ "©¡ÉѵÃÔÂì"
+ "©¡Ò¨"
+ "©¡ÒÁÒ¾¨Ã"
+ "©§¹"
+ "©§ÒÂ"
+ "©¹Ç¹"
+ "©¹Ñ§"
+ "©¹Ò¡"
+ "©¹Ó"
+ "©ºÑ§"
+ "©ºÑº"
+ "©Á"
+ "©ÁÇ¡"
+ "©Áѧ"
+ "©ÁÒ"
+ "©ÁÓ"
+ "©Å"
+ "©ÅÇÂ"
+ "©Åͧ"
+ "©ÅÍÁ"
+ "©ÅÑ¡"
+ "©ÅÒ¡"
+ "©ÅÒ´"
+ "©ÅÒÁ"
+ "©ÅÒÂ"
+ "©ÅÔÇ"
+ "©ÅØ"
+ "©ÅØ¡©ÅÇÂ"
+ "©ÅÙ"
+ "©ÇÂ"
+ "©ÇÑ´à©ÇÕ¹"
+ "©ÇÒ§"
+ "©ÇÕ"
+ "©È¡"
+ "©Í¡"
+ "©Í´"
+ "©ÍàÅÒÐ"
+ "©Ð"
+ "©Ð©Ò¹"
+ "©Ð¹Ñé¹"
+ "©Ð¹Õé"
+ "©ÐÍé͹"
+ "©ÑµÃ"
+ "©Ñ¹"
+ "©Ñ¹·Åѡɳì"
+ "©Ñ¹·Ð"
+ "©Ñ¹·Ò"
+ "©Ñ¹·Ò¹ØÁѵÔ"
+ "©Ñ¹·ì"
+ "©Ñº"
+ "©Ò¡"
+ "©Ò§"
+ "©Ò´"
+ "©Ò¹"
+ "©Òº"
+ "©ÒÂ"
+ "©ÒÂÒ"
+ "©ÒÇ"
+ "©Ó©Ò"
+ "©Ô¹"
+ "©Ôº"
+ "©ÔÁ¾ÅÕ"
+ "©ÔÇ"
+ "©Ôè§"
+ "©Õ¡"
+ "©Õ´"
+ "©Õè"
+ "©Ø"
+ "©Ø¡"
+ "©Ø¡à©Ô¹"
+ "©Ø´"
+ "©Ø¹"
+ "©ØÂ"
+ "©Ù´"
+ "©Ùè"
+ "©èͧ"
+ "©èÍÂ"
+ "©èÒ"
+ "©èÒ§"
+ "©èÓ"
+ "©éÍ"
+ "ª¡"
+ "ª§"
+ "ª§â¤"
+ "ª®Ò"
+ "ª´"
+ "ª¹"
+ "ª¹¡"
+ "ª¹¹Õ"
+ "ª¹Á¾ÃÃÉÒ"
+ "ª¹Áì"
+ "ª¹Ç¹"
+ "ª¹Ð"
+ "ª¹Ñ¡"
+ "ª¹Ô´"
+ "ªºÒ"
+ "ªÁ"
+ "ªÁ´ªÁéÍÂ"
+ "ªÁ¾Ù"
+ "ªÁ¾Ù¹·"
+ "ªÁ¾Ù¹Ø·"
+ "ªÁ¾Ùè"
+ "ªÁÃÁ"
+ "ªÁÒ"
+ "ªÁéÍÂ"
+ "ªÁéÒÂ"
+ "ªÂ"
+ "ªÃ"
+ "ªÃÐ"
+ "ªÃÑÇ"
+ "ªÃÒ"
+ "ªÅ"
+ "ªÅ¸ÒÃ"
+ "ªÅ¸Õ"
+ "ªÅ¹Ò"
+ "ªÅ»Ãзҹ"
+ "ªÅÒÅÑÂ"
+ "ªÅÒÈÑÂ"
+ "ªÇ"
+ "ªÇ´"
+ "ªÇ¹"
+ "ªÇÃ"
+ "ªÇÅÔµ"
+ "ªÇÒ"
+ "ªÇÒÅ"
+ "ªÍ¡"
+ "ªÍ¡ªéÓ"
+ "ªÍ§"
+ "ªÍ¹"
+ "ªÍº"
+ "ªÍ»»Ôé§"
+ "ªÍÁ"
+ "ªÍÅì¡"
+ "ªÍ×éÍ"
+ "ªÍØèÁ"
+ "ªÍèÓ"
+ "ªÐ"
+ "ªÐ§Ñ¡"
+ "ªÐ§Ñ´"
+ "ªÐ§ØéÁ"
+ "ªÐ§è͹"
+ "ªÐ§éÓ"
+ "ªÐµÒ"
+ "ªÐ¹Õ"
+ "ªÐÁ´"
+ "ªÐÁÑ´"
+ "ªÐÃÍÂ"
+ "ªÐÅÍ"
+ "ªÐÅÍÁ"
+ "ªÐÅÙ´"
+ "ªÐÅèÒ"
+ "ªÐà§éÍ"
+ "ªÐà¹ÒÐ"
+ "ªÐá§é"
+ "ªÐáŧ"
+ "ªÐ⧡"
+ "ªÐâ´"
+ "ªÑ¡"
+ "ªÑ§"
+ "ªÑªÇÒÅ"
+ "ªÑ¯"
+ "ªÑ´"
+ "ªÑ¹"
+ "ªÑ¹¹ÐµØ"
+ "ªÑ¹ÉÒ"
+ "ªÑ¹ÊÙµÃ"
+ "ªÑÂ"
+ "ªÑ¾ġÉì"
+ "ªÑÂÀÙÁÔ"
+ "ªÑè§"
+ "ªÑèÇ"
+ "ªÑèÇâÁ§"
+ "ªÑé¹"
+ "ªÑéÇ"
+ "ªÒ"
+ "ªÒ­"
+ "ªÒ´"
+ "ªÒ´¡"
+ "ªÒµÃÕ"
+ "ªÒµÐ"
+ "ªÒµÔ"
+ "ªÒ¹"
+ "ªÒ¹Ø"
+ "ªÒÁ"
+ "ªÒÂ"
+ "ªÒÂÒ"
+ "ªÒÅÒ"
+ "ªÒÇ"
+ "ªÒÇàÅ"
+ "ªÓ"
+ "ªÓ¹Ñ­"
+ "ªÓ¹Ò­"
+ "ªÓ¹Ô"
+ "ªÓÃÐ"
+ "ªÓÃØ´"
+ "ªÓÃèÇÂ"
+ "ªÓà¹Õ¹"
+ "ªÓà¹ÕÂÃ"
+ "ªÓàÃÒ"
+ "ªÓàÅ×ͧ"
+ "ªÓáËÅÐ"
+ "ªÔ"
+ "ªÔ¤Òâ¡"
+ "ªÔ§"
+ "ªÔ§ªéÒ"
+ "ªÔ´"
+ "ªÔ¹"
+ "ªÔ»"
+ "ªÔ¾"
+ "ªÔÁ"
+ "ªÔÁỹ«Õ"
+ "ªÔÇËÒ"
+ "ªÔè§"
+ "ªÔé¹"
+ "ªÕ"
+ "ªÕ»Ð¢ÒÇ"
+ "ªÕ¾"
+ "ªÕ¾ÔµÑ¡ÉÑÂ"
+ "ªÕÇ»ÃÐÇѵÔ"
+ "ªÕÇÇÔ·ÂÒ"
+ "ªÕÇÒµÁì"
+ "ªÕÇÒÅÑÂ"
+ "ªÕÇÔµ"
+ "ªÕÇԵѡÉÑÂ"
+ "ªÕÇÔ¹"
+ "ªÕÇÕ"
+ "ªÕÇà¤ÁÕ"
+ "ªÕé"
+ "ª×´"
+ "ª×è¹"
+ "ª×è¹Á×è¹"
+ "ª×èÍ"
+ "ª×é¹"
+ "ª×éÍ"
+ "ªØ¡"
+ "ªØ´"
+ "ªØ¹"
+ "ªØº"
+ "ªØÁ"
+ "ªØÁ¹ØÁ"
+ "ªØÁ¾Ã"
+ "ªØÅÁع"
+ "ªØÅÕ"
+ "ªØèÁ"
+ "ªØèÂ"
+ "ªØé§"
+ "ªÙ"
+ "ªÙé"
+ "ªâÂ"
+ "ªâÅ·Ã"
+ "ªâÅÁ"
+ "ªäÁ"
+ "ªçÍ¡â¡àŵ"
+ "ªçÍ¡â¡áŵ"
+ "ªèǧ"
+ "ªèÇÂ"
+ "ªèÍ"
+ "ªèͧ"
+ "ªè͹"
+ "ªèÒ§"
+ "ªèÓ"
+ "ªèӪͧ"
+ "ªéͧ"
+ "ªé͹"
+ "ªéÍÂ"
+ "ªéÒ"
+ "ªéÒ§"
+ "ªéÓ"
+ "«¡"
+ "«´"
+ "«¹"
+ "Ǽ"
+ "«Á"
+ "«Ç´à«"
+ "«Ç¹"
+ "«ÇÂ"
+ "«Í"
+ "«Í¡"
+ "«Í§"
+ "«Í¹"
+ "«Í¿µìáÇÃì"
+ "«Í¿·ì"
+ "«Í¿·ìáÇÃì"
+ "«ÍÁ«èÍ"
+ "«ÍÂ"
+ "«ÍÊ"
+ "«Ñ¡"
+ "«Ñ§"
+ "«Ñ´"
+ "«Ñ¹"
+ "«Ñ¹µÒ¤ÅÍÊ"
+ "«Ñº"
+ "«Ñ¾¾ÍÃìµ"
+ "«ÑÅ¿Ò"
+ "«Ò"
+ "«Ò¡"
+ "«Ò¡ØÃÐ"
+ "«Ò§"
+ "«Ò¹"
+ "«Òº«Öé§"
+ "«Òº«èÒ¹"
+ "«ÒÁÙäÃ"
+ "«ÒÅÒà»Ò"
+ "«ÒÇ"
+ "«ÒÇ´ì"
+ "«Ô"
+ "«Ô¡"
+ "«Ô¡ÒÃì"
+ "«Ô¡á«ç¡"
+ "«Ô¹áÊ"
+ "«Ôº"
+ "«Ô»"
+ "«Ô¿ÔÅÔÊ"
+ "«ÔÅԤ͹"
+ "«ÔÇ"
+ "«Ôè¹"
+ "«Õ"
+ "«Õ¡"
+ "«Õ´"
+ "«Õ´Õ"
+ "«Õ¹Í¹"
+ "«ÕÃÍ¡«ì"
+ "«Õà¡ÁÊì"
+ "«ÕàÁ¹µì"
+ "«ÕàÃÕÂ"
+ "«Õè"
+ "«Õé"
+ "«Ö§"
+ "«ÖÁ"
+ "«Öè§"
+ "«Öé§"
+ "«×èÍ"
+ "«×éÍ"
+ "«Ø¡"
+ "«Ø§"
+ "«Ø¹"
+ "«Øº"
+ "«Ø»"
+ "«ØÂ"
+ "«ØèÁ"
+ "«ØèÁ«èÒÁ"
+ "«ØéÁ"
+ "«ÙªÔ"
+ "«Ù´«Ò´"
+ "«Ù´Ò¹"
+ "«Ùº"
+ "«Ùà»ÍÃìÁÒà¡çµ"
+ "«Ùâ¤ÃÊ"
+ "«Ùè"
+ "«è¡"
+ "«èͧ"
+ "«è͹"
+ "«èÍÁ"
+ "«èÒ"
+ "«èÒ¹"
+ "«èÒËÃÔèÁ"
+ "«é¹"
+ "«éͧ"
+ "«é͹"
+ "«éÍÁ"
+ "«éÒÂ"
+ "«éÓ"
+ "¬Ò¹"
+ "¬Ò»¹¡Ô¨"
+ "¬Ò»¹Ê¶Ò¹"
+ "­Ç¹"
+ "­ÑµµÔ"
+ "­Ò³"
+ "­ÒµÔ"
+ "­Õè»Øè¹"
+ "°Ò¹"
+ "°Ò¹Ð"
+ "°Ò¹Ñ¹´Ã"
+ "°Ò»¹Ò"
+ "´¡"
+ "´§"
+ "´¹µÃÕ"
+ "´¹â´è"
+ "´Á"
+ "´Ãê¹Õ"
+ "´ÃÒ¿µì"
+ "´Ãس"
+ "´ÃسÕ"
+ "´Å"
+ "´Ç§"
+ "´Ç´"
+ "´ÇÅ"
+ "´Í¡"
+ "´Í¡àºÕéÂ"
+ "´Í¡äÁé"
+ "´Í§"
+ "´Í´"
+ "´Í¹"
+ "´ÍÁ"
+ "´ÍÂ"
+ "´ÍÅÅÒÃì"
+ "´ÍÊ"
+ "´Ð"
+ "´Ñ¡"
+ "´Ñ¡´Ò¹"
+ "´Ñ¡á´é"
+ "´Ñ§"
+ "´Ñª¹Õ"
+ "´Ñ´"
+ "´Ñµ«ì"
+ "´Ñ¹"
+ "´Ñº"
+ "´ÑºàºÔéÅ"
+ "´ÑÁ¾ì"
+ "´ÑÊ¡Ã"
+ "´Ñè§"
+ "´Ñé§"
+ "´Ñé¹"
+ "´Ò"
+ "´Ò¡"
+ "´Ò´"
+ "´ÒµéÒ"
+ "´Ò¹"
+ "´Òº"
+ "´ÒºÊ"
+ "´ÒÁ"
+ "´ÒÁ¾ì"
+ "´ÒÂ"
+ "´ÒóÕ"
+ "´ÒôÒÉ"
+ "´ÒÃÒ"
+ "´ÒÃì"
+ "´ÒÅ"
+ "´ÒÅÑ´"
+ "´ÒÇ"
+ "´ÒÇ´Ö§Êì"
+ "´ÒǹìâËÅ´"
+ "´ÒÇ⨹Êì"
+ "´ÒÉ"
+ "´ÒÉ´Ò"
+ "´Ó"
+ "´Óç"
+ "´ÓÃÑÊ"
+ "´ÓÃÔ"
+ "´ÓÄɳÒ"
+ "´Óà¡Ô§"
+ "´Óà¹Ô¹"
+ "´Óᤧ"
+ "´Ô"
+ "´Ô¡"
+ "´Ô¨ÔµÍÅ"
+ "´Ô©Ñ¹"
+ "´Ô¶Õ"
+ "´Ô¹"
+ "´Ôº"
+ "´ÔÃѨ©Ò¹"
+ "´ÔÅ¡"
+ "´ÔÇÔªÑè¹"
+ "´ÔʹÕÂì"
+ "´ÔÊࡵ"
+ "´Ôè§"
+ "´ÔèÇ"
+ "´Ôé¹"
+ "´ÔéÇ"
+ "´Õ"
+ "´Õ¡ÃÕ"
+ "´Õ´"
+ "´Õ´Õ·Õ"
+ "´ÕºØ¡"
+ "´ÕÇÕ´Õ"
+ "´Õà«Å"
+ "´Õà»ÃʪÑè¹"
+ "´Õ䫹ì"
+ "´Õä«à¹ÍÃì"
+ "´Ö¡"
+ "´Ö¡´ÓºÃþì"
+ "´Ö§"
+ "´Ö§ÊÐ"
+ "´Öè§"
+ "´ÖèÁ"
+ "´×Í"
+ "´×è¹"
+ "´×èÁ"
+ "´×éÍ"
+ "´Ø"
+ "´Ø¡"
+ "´Ø¨"
+ "´Ø´"
+ "´Ø¹"
+ "´Øº"
+ "´ØÁ"
+ "´Øç¤ì"
+ "´ØÃÔÂÒ§¤ÈÒʵÃì"
+ "´ØÃÔÂÒ§¤ÈÔÅ»ì"
+ "´ØÃÔÂÒ§¤ì"
+ "´ØÅ"
+ "´ØžԹԨ"
+ "´ØÅÀÒ¤"
+ "´ØžԹԨ"
+ "´ØÅÂÀÒ¾"
+ "´ØÉ®Õ"
+ "´ØɳÕ"
+ "´ØÉÔµ"
+ "´ØÊÔµ"
+ "´ØàËÇèÒ"
+ "´ØèÁ"
+ "´ØèÂ"
+ "´Øé§"
+ "´Ø駴Ôé§"
+ "´Øé¹"
+ "´Ù"
+ "´Ù¡Ã"
+ "´Ù´"
+ "´ÙÃÒ"
+ "´èǹ"
+ "´è͹"
+ "´èÍÁ"
+ "´èÒ"
+ "´èÒ§"
+ "´èÒ¹"
+ "´èÒÇ"
+ "´èÓ"
+ "´é§"
+ "´é¹"
+ "´éǧ"
+ "´éǹ"
+ "´éÇÂ"
+ "´éÍÁ"
+ "´éÍÂ"
+ "´éÒ¹"
+ "´éÒÁ"
+ "´éÒÂ"
+ "´éÒÇ"
+ "´éÓ"
+ "µ¡"
+ "µ¡Å§"
+ "µ§"
+ "µ§©Ô¹"
+ "µ§Ô´"
+ "µ´"
+ "µ¶Ò¤µ"
+ "µ¹"
+ "µº"
+ "µºÐ"
+ "µÁ"
+ "µÃ§"
+ "µÃÁ"
+ "µÃÁµÃÍÁ"
+ "µÃáÇÔ·ÂÒ"
+ "µÃáÈÒʵÃì"
+ "µÃáÐ"
+ "µÃǨ"
+ "µÃǹ"
+ "µÃÍ¡"
+ "µÃͧ"
+ "µÃÍÁµÃÁ"
+ "µÃÍÁã¨"
+ "µÃÐ"
+ "µÃСÙÅ"
+ "µÃÐ˧èÒ¹"
+ "µÃÐ˹¡"
+ "µÃÐ˹ѡ"
+ "µÃÐ˹Õè"
+ "µÃÐàǹ"
+ "µÃѧ"
+ "µÃѺ"
+ "µÃÑÂ"
+ "µÃÑÊ"
+ "µÃÒ"
+ "µÃÒ¡µÃÓ"
+ "µÃÒº"
+ "µÃÒÊѧ"
+ "µÃÓ"
+ "µÃÔ"
+ "µÃÕ"
+ "µÃÕÂÑÁ»ÇÒÂ"
+ "µÃÕ⡳"
+ "µÃÖ¡"
+ "µÃÖ§"
+ "µÃØ"
+ "µÃØÉ"
+ "µÃÙ"
+ "µÃÙè"
+ "µÄ³"
+ "揭"
+ "揧"
+ "µÅÍ´"
+ "µÅѺ"
+ "µÅÒ´"
+ "µÅÔè§"
+ "µÇ§"
+ "µÇÑ´"
+ "µÇÒ´"
+ "µÍ"
+ "µÍ¡"
+ "µÍ§"
+ "µÍ´"
+ "µÍ¹"
+ "µÍº"
+ "µÍÁ"
+ "µÍÃì"
+ "µÍÃì»Ôâ´"
+ "µÍáÂ"
+ "µÍáËÅ"
+ "µÐ"
+ "µÐ¡Ãѹ"
+ "µÐ¡ÃØ´"
+ "µÐ¡ÃØÁ"
+ "µÐ¡ÃéÍ"
+ "µÐ¡ÃéÒ"
+ "µÐ¡ÅÐ"
+ "µÐ¡ÅÒÁ"
+ "µÐ¡Í¹"
+ "µÐ¡Ñ§"
+ "µÐ¡ÑèÇ"
+ "µÐ¡Ø¡µÐ¡Ñ¡"
+ "µÐ¢Í"
+ "µÐ¢Òº"
+ "µÐ¢Ô´µÐ¢Ç§"
+ "µÐ¤ÃÔÇ"
+ "µÐ¤Ãغ"
+ "µÐ¤Í¡"
+ "µÐ¹ÍÂ"
+ "µÐºÍ§"
+ "µÐºÍÂ"
+ "µÐºÑ¹"
+ "µÐ»ØèÁµÐ»èÓ"
+ "µÐ¾Òº"
+ "µÐ¾Ö´"
+ "µÐ¾Ö´µÐ¾×Í"
+ "µÐ¾Øè¹"
+ "µÐÅÕµÐÅÒ¹"
+ "µÐÅÖ§"
+ "µÐÅا"
+ "µÐÅØÁºÍ¹"
+ "µÐÅØÁ¾Ø¡"
+ "µÐÅèÍÁ"
+ "µÐÇѹ"
+ "µÐËÅÔÇ"
+ "µÐà¡Õ¡µÐ¡ÒÂ"
+ "µÐà¡Õ§"
+ "µÐà¡Õº"
+ "µÐà¢çº"
+ "µÐà¤Õ¹"
+ "µÐà¦è"
+ "µÐàºç§"
+ "µÐà¾Ô´"
+ "µÐà¾Ôè¹"
+ "µÐà¾Õ¹"
+ "µÐàÀÒ"
+ "µÐàŧ"
+ "µÐá¡Ã§"
+ "µÐᤧ"
+ "µÐầ"
+ "µÐâ¡"
+ "µÐâ¡¡"
+ "µÐ⡹"
+ "µÐâ¡é"
+ "µÐ⢧"
+ "µÐâºÁ"
+ "µÐ⾡"
+ "µÐâ˧¡"
+ "µÐä¡Ã"
+ "µÐä¤Ãè"
+ "µÐä¤Ãé"
+ "µÐäº"
+ "µÐäÅ"
+ "業"
+ "µÑ¡ÉÑÂ"
+ "µÑ§"
+ "µÑ§©èÒÂ"
+ "µÑ§à¡"
+ "µÑ§àÁ"
+ "µÑ§âÍë"
+ "µÑ³ËÒ"
+ "µÑ´"
+ "µÑ´ÊÔ¹"
+ "µÑ¹"
+ "µÑ¹Ë§"
+ "楧"
+ "楀"
+ "µÑè§"
+ "µÑé§"
+ "µÑé§áµè"
+ "µÑéÇâ¼"
+ "µÑê¡áµ¹"
+ "µÑëÇ"
+ "µÒ"
+ "µÒ¡"
+ "µÒ´"
+ "µÒ¹"
+ "µÒ¹Õ"
+ "µÒº"
+ "µÒÁ"
+ "µÒÂ"
+ "µÒÅ"
+ "µÒŻѵÃ"
+ "µÓ"
+ "µÓ¹Ò¹"
+ "µÓºÅ"
+ "µÓÃǨ"
+ "µÓÃѺ"
+ "µÓÃÒ"
+ "µÓÅÖ§"
+ "µÓ˹ѡ"
+ "µÓ˹Ô"
+ "µÓáÂ"
+ "µÓá˹è§"
+ "µÔ"
+ "µÔ¡ÒËÃѧ"
+ "µÔ§"
+ "µÔ³"
+ "µÔ´"
+ "µÔÃѨ©Ò¹"
+ "µÔÅ¡"
+ "µÔè§"
+ "µÔéÇ"
+ "µÔê¡"
+ "µÔë§"
+ "µÕ"
+ "µÕ¹"
+ "µÕº"
+ "µÕè"
+ "µÕë"
+ "µÖ"
+ "µÖ¡"
+ "µÖ§"
+ "µÖ´µ×ëÍ"
+ "µÖé¡"
+ "µÖ页Ñé¡"
+ "µÖê´µ×ëÍ"
+ "µ×´"
+ "µ×ÍÎǹ"
+ "µ×è¹"
+ "µ×é¹"
+ "µ×éÍ"
+ "µ×êÍ"
+ "µ×ëÍ"
+ "µØ"
+ "µØ¡µÔ¡"
+ "µØ§"
+ "µØ¹"
+ "µØ¹Ò˧ѹ"
+ "µØº"
+ "µØáÕ"
+ "µØÅÒ"
+ "µØÅÒ¡ÒÃ"
+ "µØÅÒ¤Á"
+ "µØËÃÑ´µØàËÃè"
+ "µØè¹"
+ "µØèÁ"
+ "µØèÂ"
+ "µØ駡èÒ"
+ "µØ駵Ôé§"
+ "µØéº"
+ "µØéÁ"
+ "µØéÂ"
+ "µØê"
+ "µØê¡"
+ "µØ꡵Ò"
+ "µØê¡á¡"
+ "µØê´"
+ "µØêµêÐ"
+ "µØ꺻èͧ"
+ "µØêÂ"
+ "µØë¹"
+ "µØëÁ"
+ "µØëµØèÂ"
+ "µÙ"
+ "µÙ¡"
+ "µÙ´"
+ "µÙº"
+ "µÙÁ"
+ "µÙè"
+ "µÙé"
+ "µèǹ"
+ "µèÍ"
+ "µèͧáµè§"
+ "µèÍÁ"
+ "µèÍÂ"
+ "µèÒ§"
+ "µèÓ"
+ "µé¹"
+ "µéÁ"
+ "µéÇÁàµÕéÂÁ"
+ "µéÍ"
+ "µéͧ"
+ "µéͧàµ"
+ "µé͹"
+ "µéÍÂ"
+ "µé͵Ôè§"
+ "µé͵ÕÇÔ´"
+ "µéÒ¹"
+ "µêÍ¡"
+ "µêÍ¡µëÍÂ"
+ "µë§"
+ "µëÍÁ"
+ "¶¡"
+ "¶´"
+ "¶¹¹"
+ "¶¹ÍÁ"
+ "¶¹Ñ´"
+ "¶¹Ñ´¶¹Õè"
+ "¶¹ÔÁ"
+ "¶Á"
+ "¶ÁÖ§·Ö§"
+ "¶Å¡"
+ "¶Å¹"
+ "¶ÅÍ¡"
+ "¶Åѹ"
+ "¶ÅÒ"
+ "¶ÅÒ¡"
+ "¶ÅÓ"
+ "¶ÅÕ¶ÅÓ"
+ "¶ÅÖ§µÒ"
+ "¶Åا"
+ "¶Åع"
+ "¶ÅèÁ"
+ "¶ÇÑÅÂì"
+ "¶ÇÒÂ"
+ "¶ÇÔÅ"
+ "¶Í¡"
+ "¶Í§"
+ "¶Í´"
+ "¶Í¹"
+ "¶ÍÂ"
+ "¶Ð"
+ "¶Ñ¡"
+ "¶Ñ§"
+ "¶Ñ´"
+ "¶Ñ¹"
+ "¶ÑÇ"
+ "¶ÑèÇ"
+ "¶Ò"
+ "¶Ò¡"
+ "¶Ò§"
+ "¶Ò´"
+ "¶Ò¹"
+ "¶ÒÁ"
+ "¶ÒÇÃ"
+ "¶Ôè¹"
+ "¶Õº"
+ "¶Õè"
+ "¶Ö¡"
+ "¶Ö§"
+ "¶×Í"
+ "¶Ø§"
+ "¶Ø¹"
+ "¶ØÂ"
+ "¶Ù"
+ "¶Ù¡"
+ "¶èÁ"
+ "¶èǧ"
+ "¶èÍ"
+ "¶èͧ"
+ "¶èÍÁ"
+ "¶èÍÂ"
+ "¶èÒ§"
+ "¶èÒ¹"
+ "¶èÒÂ"
+ "¶éǹ"
+ "¶éÇÂ"
+ "¶éÍÂ"
+ "¶éÒ"
+ "¶éÓ"
+ "·¡"
+ "·¡ÅéÒ"
+ "·´"
+ "·¹"
+ "·¹µì"
+ "·¹ÒÂ"
+ "·¹â·è"
+ "·º"
+ "·º·Ç¹"
+ "·ºÇ§"
+ "·ÁÔÌ"
+ "·ÂÍÂ"
+ "·Ã¡ÃÃÁ"
+ "·Ã§"
+ "·Ãª¹"
+ "·ÃªÒµÔ"
+ "·Ã¾ÔÉ"
+ "·Ã¾Õ"
+ "·ÃÁÒ¹"
+ "·ÃÂÈ"
+ "·ÃÂؤ"
+ "·Ãû"
+ "·ÃÃȹÐ"
+ "·ÃÃÒª"
+ "·ÃÅѡɳì"
+ "·Ãǧ"
+ "·ÃÇ´·Ã§"
+ "·ÃË´"
+ "·ÃѾÂÒ¡Ã"
+ "·ÃѾÂì"
+ "·ÃѾÂìÊÔ¹"
+ "·ÃÑÁà»çµ"
+ "·ÃÒ¹«ÔÊàµÍÃì"
+ "·ÃÒº"
+ "·ÃÒÁ"
+ "·ÃÒÂ"
+ "·ÃØ´"
+ "·ÄÉ®Õ"
+ "·ÅÒÂ"
+ "Ⴄ"
+ "·Ç´"
+ "·Ç¹"
+ "·ÇÂ"
+ "·ÇÒ·È"
+ "·ÇÒÂ"
+ "·ÇÒÃ"
+ "·ÇÔ"
+ "·ÇÕ"
+ "·ÇÕ¸ÒÀÔàÉ¡"
+ "·ÇÕ»"
+ "·ÇèÒ"
+ "·È"
+ "·È¹ÔÂÁ"
+ "·ËÒÃ"
+ "·Í"
+ "·Í¡"
+ "·Í§"
+ "·Í§¡ÇÒÇ"
+ "·Í§ËÅÒ§"
+ "·Í´"
+ "·Í¹"
+ "·Í¹«ÔÅ"
+ "·Í¿¿Õè"
+ "·ÍÂ"
+ "·ÍÅì¤"
+ "·Ð¹§"
+ "·Ð¹Ò¹"
+ "·Ð¹Ø"
+ "·ÐÁÑ´·ÐáÁ§"
+ "·ÐÁÖ¹"
+ "·ÐÁ×è¹"
+ "·ÐÂÒ¹"
+ "·ÐÅǧ"
+ "·ÐÅÑ¡"
+ "·ÐÅÒÂ"
+ "·ÐÅÖè§"
+ "·ÐÅØ"
+ "·ÐÇÒÂ"
+ "·ÐàºÕ¹"
+ "·ÐàÂÍ·ÐÂÒ¹"
+ "·ÐàÅ"
+ "·ÐàÅÒÐ"
+ "·ÐàÅèÍ·ÐÅèÒ"
+ "·ÐàÅé¹"
+ "·ÐáÁè§"
+ "·Ñ¡"
+ "·Ñ¡¢Ô­"
+ "·Ñ¡¢Ô³Ò"
+ "·Ñ¡¢Ô³ÒÇѯ"
+ "·Ñ¡¢ì"
+ "·Ñ¡ÉÐ"
+ "·Ñ¡ÉÔ³"
+ "·Ñ¡ÉÔ³Ò"
+ "·Ñ¡ÉÔ³ÒÇÃõ"
+ "·Ñ¡ÉÔâ³·¡"
+ "·Ñ§Ê൹"
+ "·Ñ³±¡ÃÃÁ"
+ "·Ñ³±¦Òµ"
+ "·Ñ³±Ê¶Ò¹"
+ "·Ñ³±ì"
+ "·Ñ´"
+ "·Ñ¹"
+ "·Ñ¹µá¾·Âì"
+ "·Ñ¹µì"
+ "·Ñ¹·Õ"
+ "ᄼ"
+ "·ÑºÊÁÔ§¤ÅÒ"
+ "·Ñ¾"
+ "·Ñ¾¾Õ"
+ "·Ñȹ¤µÔ"
+ "·ÑȹÇÔÊÑÂ"
+ "·ÑȹÈÖ¡ÉÒ"
+ "·ÑȹÐ"
+ "·ÑȹÒ"
+ "·ÑȹҨÃ"
+ "·ÑȹÕÂÀÒ¾"
+ "·ÑȹÕÂì"
+ "·Ñȹٻ¡Ã³ì"
+ "·Ñȹì"
+ "·ÑÈä¹Â"
+ "·Ñè§"
+ "·ÑèÇ"
+ "·Ñé§"
+ "·Ò"
+ "·Ò¡"
+ "·Ò§"
+ "·Ò¹"
+ "·Òº"
+ "·ÒÁ"
+ "·ÒÂ"
+ "·ÒÂÒ´"
+ "·ÒÂÒ·"
+ "·Òá"
+ "·ÒÃÔ¡Ò"
+ "·ÒÃس"
+ "·ÒÃì«Ò¹"
+ "·ÒÊ"
+ "·Ó"
+ "·Ó¹º"
+ "·Ó¹Í§"
+ "·Ó¹ÒÂ"
+ "·Ó¹Ø"
+ "·ÓÅÒÂ"
+ "·Óà¹Ò"
+ "·Óà¹Õº"
+ "·ÓàÅ"
+ "·ÓäÁ"
+ "·Ô¤ÑÁ¾Ã"
+ "·Ô¦ÑÁ¾Ã"
+ "·Ô§à¨ÍÃì"
+ "·Ô°Ô"
+ "·Ô´"
+ "·Ô¾Â¨Ñ¡ÉØ"
+ "·Ô¾Â­Ò³"
+ "·Ô¾ÂÃÊ"
+ "·Ô¾Â๵Ã"
+ "·Ô¾Âì"
+ "·Ô¾Ò¡Ã"
+ "·ÔÁ"
+ "·ÔÇ"
+ "·Ôǧ¤µ"
+ "·ÔÇ·Ñȹì"
+ "·ÔÇÒ"
+ "·ÔÈ"
+ "·ÔÈÒ"
+ "·ÔÈҹطÔÈ"
+ "·Ôີ"
+ "·ÔèÁ"
+ "·Ôé§"
+ "·Õ"
+ "·Õ¦ªÒµÔ"
+ "·ÕÁ"
+ "·Õà͹·Õ"
+ "·Õè"
+ "·Õè´Ô¹"
+ "·Ö¡"
+ "·Ö¹·Ö¡"
+ "·Öº"
+ "·ÖÁ"
+ "·Öè§"
+ "·ÖèÁ"
+ "·Öé§"
+ "·×èÍ"
+ "·Ø"
+ "·Ø¡"
+ "·Ø¡¢ÅÒÀ"
+ "·Ø¡¢ÒÃÁ³ì"
+ "·Ø¡¢àÇ·¹Ò"
+ "·Ø¡¢ì"
+ "·Ø¡Ã¡ÔÃÔÂÒ"
+ "·Ø¤µÔ"
+ "·Ø¨ÃÔµ"
+ "·Ø´"
+ "·Ø¹"
+ "᯼"
+ "·Ø¾¾Å"
+ "·Ø¾ÀÔ¡¢ÀÑÂ"
+ "·ØÂ"
+ "·Øáѹ´ÒÃ"
+ "·Øê¹"
+ "·ØêҵÔ"
+ "·Øù·ØÃÒÂ"
+ "·ØþÅ"
+ "·ØÅÑ¡·ØàÅ"
+ "·ØÈÕÅ"
+ "·ØàÃÈ"
+ "·ØàÃÕ¹"
+ "·ØàÅÒ"
+ "·Øè§"
+ "·Øè¹"
+ "·ØèÁ"
+ "·Øé§"
+ "·ØéÁ"
+ "·ØéÂ"
+ "·Ù"
+ "·Ùµ"
+ "·ÙµÒ¹Ø·Ùµ"
+ "·Ù¹"
+ "·Ùº"
+ "·ÙÁ"
+ "·ÙÅ"
+ "·Ùè"
+ "·Ùé"
+ "·á¡ÅéÇ"
+ "ᇤ"
+ "·âÁ¹"
+ "·èǧ·Ó¹Í§"
+ "·èǧ·Õ"
+ "·èǧ·èÒ"
+ "·èÇÁ"
+ "·èÍ"
+ "·èͧ"
+ "·è͹"
+ "·èÍÁ"
+ "·èÒ"
+ "·èÒ¹"
+ "·èÒÁ¡ÅÒ§"
+ "·é¹"
+ "·éǧ"
+ "·éǹ"
+ "·éÇÁ"
+ "·éÍ"
+ "·éͧ"
+ "·éÒ"
+ "·éÒÂ"
+ "·éÒÇ"
+ "¸§"
+ "¸¹"
+ "¸¹ºÑµÃ"
+ "¸¹ºØÃÕ"
+ "¸¹ÊÁºÑµÔ"
+ "¸¹ÊÒÃ"
+ "¸¹Ò¤ÒÃ"
+ "¸¹Ò³ÑµÔ"
+ "¸¹ÒÃÑ¡Éì"
+ "¸¹Ù"
+ "¸Á"
+ "¸Ã"
+ "¸Ã³Õ"
+ "¸ÃÃÁ"
+ "¸ÃÃÁ¡ÒÂ"
+ "¸ÃÃÁªÒµÔ"
+ "¸ÃÃÁ´Ò"
+ "¸ÃÃÁÈÒʵÃì"
+ "¸ÃÃÁÐ"
+ "¸ÃÃÁиÑÁâÁ"
+ "¸ÃÃÁÒ·ÔµÂì"
+ "¸ÃÃÁÒ¸ÃÃÁ"
+ "¸ÃÃÁÒ¸Ô»äµÂ"
+ "¸ÃÃÁÒ¸ÔÉ°Ò¹"
+ "¸ÃÃÁÒ¹ØÊÒ¹"
+ "¸ÃÃÁÒÀÔÁØ¢"
+ "¸ÃÃÁÒÀÔÊÁÑÂ"
+ "¸ÃÃÁÒµ¹Ð"
+ "¸ÃÃÁÒÃÁ³ì"
+ "¸ÃÃÁÒʹì"
+ "¸ÃÃÁÔ¡"
+ "¸ÃÒ¸Ã"
+ "¸ÃÒ¸ÒÃ"
+ "¸ÃÒ¸Ôº´Õ"
+ "¸ÃÒ¸Ô»"
+ "¸Ñ­"
+ "¸Ñ­­ÒËÒÃ"
+ "¸Ñ­¾×ª"
+ "¸Ñ¹ÇÒ¤Á"
+ "¸ÑÁÁÐ"
+ "¸ÒµØ"
+ "¸Ò¹Õ"
+ "¸ÒÃ"
+ "¸ÒÃÒ"
+ "¸ÓÁç¤ì"
+ "¸Óç"
+ "¸Ô´Ò"
+ "¸Ôີ"
+ "¸Ø´§¤ì"
+ "¸ØáÃÃÁ"
+ "¸ØáÒÃ"
+ "¸ØáԨ"
+ "¸ØÃÐ"
+ "¸ØÅÕ"
+ "¸ØÇ´ÒÃÒ"
+ "¸ØÇÀÒ¤"
+ "¸ØÇÁ³±Å"
+ "¸Ù»"
+ "¹¡"
+ "¹¤Ã"
+ "¹¤ÃÃÒªÊÕÁÒ"
+ "¹¤ÃÔ¹·Ãì"
+ "¹¤àÃÈ"
+ "¹§¤ÃÒ­"
+ "¹§¹Øª"
+ "¹§¾Ð§Ò"
+ "¹§¾ÒÅ"
+ "¹§ÃÒÁ"
+ "¹§Åѡɳì"
+ "¹§àÂÒÇì"
+ "¹·Õ"
+ "¹¹·ºØÃÕ"
+ "¹¹·ÃÕ"
+ "¹¹·ÅÕ"
+ "¹º"
+ "¹¾"
+ "¹¾»®Å"
+ "¹¾È¡"
+ "¹¾ÈÙÅ"
+ "¹ÀÒ"
+ "¹ÀÒÅÑÂ"
+ "¹Á"
+ "¹ÁÑÊ¡ÒÃ"
+ "¹Ã¡"
+ "¹ÃÊÔ§Ëì"
+ "¹ÃÕàǪ"
+ "¹ÃÕá¾·Âì"
+ "¹Ä¤ËÔµ"
+ "¹Ä¹Ò·"
+ "¹ÄÁÅ"
+ "¹ÄÁÔµ"
+ "¹ÅÒ¯"
+ "¹ÅÔ¹Õ"
+ "¹Ç´"
+ "¹Ç¹ÔÂÒÂ"
+ "¹ÇÁ"
+ "¹ÇÂ"
+ "¹ÇÅ"
+ "¹ÇÅÅÍÍ"
+ "¹ÇÅÅÐÍͧ"
+ "¹Í"
+ "¹Í¡"
+ "¹Í§"
+ "¹Íµ"
+ "¹Í¹"
+ "¹Íº"
+ "¹ÍÂ"
+ "¹ÍÃìàÇÂì"
+ "¹Ð"
+ "¹Ñ¡"
+ "¹Ñ¡¢Ñµ"
+ "¹Ñ¡ÈÖ¡ÉÒ"
+ "¹Ñ¡ÉѵÃ"
+ "¹Ñ¡àÃÕ¹"
+ "¹Ñ§¤ÑÅ"
+ "¹Ñ´"
+ "¹Ñ´´Ò"
+ "¹Ñµ¶Øì"
+ "¹Ñ¹·¹Ò¡ÒÃ"
+ "¹Ñº"
+ "¹ÑÂ"
+ "¹Ñ¹ì"
+ "¹ÑÇ"
+ "¹Ñè§"
+ "¹Ñè¹"
+ "¹Ñé¹"
+ "¹Ò"
+ "¹Ò¡"
+ "¹Ò¤"
+ "¹Ò¤Ã"
+ "¹Ò¤ÃÒª"
+ "¹Ò¤Õ"
+ "¹Ò§"
+ "¹Ò§ÊÒÇ"
+ "¹Ò§áÍè¹"
+ "¹Ò«Ò"
+ "¹Ò¯"
+ "¹Ò´"
+ "¹Ò¶"
+ "¹Ò·"
+ "¹Ò·Õ"
+ "¹Ò¹"
+ "¹Ò¹Ñ»¡ÒÃ"
+ "¹Ò¹Ò"
+ "¹Òº"
+ "¹ÒÀÕ"
+ "¹ÒÁ"
+ "¹ÒÁ¡Ã"
+ "¹ÒÁÊ¡ØÅ"
+ "¹ÒÁҹءÃÁ"
+ "¹ÒÁÒÀÔä¸Â"
+ "¹ÒÂ"
+ "¹Ò¡"
+ "¹ÒÃÒ³ì"
+ "¹ÒÃÕ"
+ "¹ÒÇÒ"
+ "¹ÒÇÔ¡"
+ "¹ÒÇÔ¹"
+ "¹ÒÇÕ"
+ "¹ÒÊÔ¡"
+ "¹ÒÌÔ¡Ò"
+ "¹ÒÌÔà¡"
+ "¹Òâ¹"
+ "¹Ó"
+ "¹Ô"
+ "¹Ô¡Ã"
+ "¹Ô¡ÃÍ´ì"
+ "¹Ô¡ÒÂ"
+ "¹Ô¡à¡ÔÅ"
+ "¹Ô¤Á"
+ "¹Ô¤Ã¹¶ì"
+ "¹Ô¤ËÔµ"
+ "¹Ô¨"
+ "¹Ô´"
+ "¹ÔµÂÊÒÃ"
+ "¹ÔµÂì"
+ "¹ÔµÔ"
+ "¹Ô·ÃÃÈ"
+ "¹Ô·ÃÒ"
+ "¹Ô·Ñȹì"
+ "¹Ô·Ò¹"
+ "¹Ô¹·Ò"
+ "¹ÔºÒµ"
+ "¹Ô¾¹¸ì"
+ "¹Ô¾¾Ò¹"
+ "¹ÔÁ¹µì"
+ "¹ÔÁÁÒ¹"
+ "¹ÔÁÁҹôÕ"
+ "¹ÔÁÔµ"
+ "¹ÔÂÁ"
+ "¹ÔÂÒÁ"
+ "¹ÔÂÒÂ"
+ "¹Ô÷ء¢ì"
+ "¹ÔùÒÁ"
+ "¹ÔÃÀÑÂ"
+ "¹ÔÃÁÅ"
+ "¹ÔÃÁÔµ"
+ "¹ÔÃѹ´Ã"
+ "¹ÔÃÒÈ"
+ "¹ÔÃâ·É"
+ "¹ÔÅ"
+ "¹ÔÅغÅ"
+ "¹ÔÇ¡Ô¹Õ"
+ "¹ÔǤÅÔÍÔ¡"
+ "¹ÔÇ«ÕᏴì"
+ "¹ÔǵÃ͹"
+ "¹ÔÇÂÍÃì¤"
+ "¹ÔÇóì"
+ "¹ÔÇѵ"
+ "¹ÔÇѵ¹ì"
+ "¹ÔÇÒµ"
+ "¹ÔÇÒÊ"
+ "¹ÔÇà¤ÅÕÂÃì"
+ "¹ÔÇà¤ÅÕÂÊ"
+ "¹ÔÊÑÂ"
+ "¹ÔÊÔµ"
+ "¹Ôà·È"
+ "¹ÔàÇÈ"
+ "¹ÔàÇȹì"
+ "¹Ô⤵Թ"
+ "¹Ôâø"
+ "¹ÔâźÅ"
+ "¹Ôè§"
+ "¹ÔèÁ"
+ "¹ÔèÇ"
+ "¹ÔéÇ"
+ "¹Õ"
+ "¹ÕÍ͹"
+ "¹ÕâÍ´ÔàÁÕÂÁ"
+ "¹Õè"
+ "¹Õé"
+ "¹Ö¡"
+ "¹Öè§"
+ "¹Ø§"
+ "¹Øª"
+ "¹Øè§"
+ "¹Øè¹"
+ "¹ØèÁ"
+ "¹ØéÂ"
+ "¹Ù¹"
+ "¹Ùè¹"
+ "¹Ùé¹"
+ "¹àÃÈÇÃ"
+ "¹âºÒÂ"
+ "¹âôÁ"
+ "¹èÇÁ"
+ "¹èͧ"
+ "¹èÒ"
+ "¹èÒ¹"
+ "¹éͧ"
+ "¹éÍÁ"
+ "¹éÍÂ"
+ "¹éÍÂ˹èÒ"
+ "¹éÍÂâ˹è§"
+ "¹éÒ"
+ "¹éÒÇ"
+ "¹éÓ"
+ "¹éÓÁѹ"
+ "¹éÓà§Ô¹"
+ "º¡"
+ "º¡¾Ãèͧ"
+ "º§"
+ "º§¡ª"
+ "º´"
+ "º´Ô¹·Ãà´ªÒ"
+ "º´Ô¹·Ãì"
+ "º´Õ"
+ "º·"
+ "º¹"
+ "º¾ÔµÃ"
+ "º¾Ô¸"
+ "ºÃÁ"
+ "ºÃÁѵ¶ì"
+ "ºÃÃ"
+ "ºÃè§"
+ "ºÃè¶Ã³ì"
+ "ºÃèº"
+ "ºÃèǺ"
+ "ºÃèØ"
+ "ºÃó"
+ "ºÃóҡÒÃ"
+ "ºÃóҤÁ"
+ "ºÃóҸԡÒÃ"
+ "ºÃóҹءÃÁ"
+ "ºÃóÒÃÑ¡ÉÈÒʵÃì"
+ "ºÃóÒÃÑ¡Éì"
+ "ºÃôÒ"
+ "ºÃ÷Á"
+ "ºÃ÷Ѵ"
+ "ºÃ÷ء"
+ "ºÃþ"
+ "ºÃþªÒ"
+ "ºÃþªÔµ"
+ "ºÃþµ"
+ "ºÃþºØÃØÉ"
+ "ºÃç"
+ "ºÃç¡ì"
+ "ºÃÃÂÒ¡ÒÈ"
+ "ºÃÃÂÒÂ"
+ "ºÃÃÅÑÂ"
+ "ºÃÃÅØ"
+ "ºÃÃÉÑ·"
+ "ºÃÃËÒÃ"
+ "ºÃÃà¨Ô´"
+ "ºÃÃà·Ò"
+ "ºÃÃàŧ"
+ "ºÃÃâÅÁ"
+ "ºÃÑè¹´Õ"
+ "ºÃÒÇà«ÍÃì"
+ "ºÃÔ"
+ "ºÃÔ¡ÃÃÁ"
+ "ºÃÔ¡ÒÃ"
+ "ºÃÔ¢ÒÃ"
+ "ºÃÔ¤³Ëì"
+ "ºÃÔ¨Ò¤"
+ "ºÃÔ¨Òá"
+ "ºÃÔ¨ÒÃÔ¡Ò"
+ "ºÃÔºÒÅ"
+ "ºÃÔºÙóì"
+ "ºÃԾѵÃ"
+ "ºÃÔ¾ÒÃ"
+ "ºÃÔÀѳ±ì"
+ "ºÃÔÀÒÉ"
+ "ºÃÔÃÑ¡Éì"
+ "ºÃÔÃÒª"
+ "ºÃÔÇÒÃ"
+ "ºÃÔÉÑ·"
+ "ºÃÔÊØ·¸Ôì"
+ "ºÃÔËÒÃ"
+ "ºÃÔà©·"
+ "ºÃÔ൹"
+ "ºÃÔàdz"
+ "ºÃÔâÀ¤"
+ "ºÅçÍ¡"
+ "ºÇ¡"
+ "ºÇ§"
+ "ºÇª"
+ "ºÇ¹"
+ "ºÇº"
+ "ºÇÁ"
+ "ºÇÃ"
+ "ºÍ"
+ "ºÍ¡"
+ "ºÍ´"
+ "ºÍ´Õé"
+ "ºÍ¹"
+ "ºÍº"
+ "ºÍÃì¡"
+ "ºÍÃì´"
+ "ºÍÃìà¹ÕÂÇ"
+ "ºÍÅ"
+ "ºÍÅÅÙ¹"
+ "ºÐËÁÕè"
+ "ºÑ¡"
+ "ºÑ¤àµÃÕ"
+ "ºÑ§"
+ "ºÑ§¡ÐâÅ"
+ "ºÑ§¤Á"
+ "ºÑ§¤Å"
+ "ºÑ§¤Ñº"
+ "ºÑ§ÊØ¡ØÅ"
+ "ºÑ§ÍÃ"
+ "ºÑ§ÍÒ¨"
+ "ºÑ§à¡Ô´"
+ "ºÑ§àËÕ¹"
+ "ºÑ§àÍÔ­"
+ "ºÑ­ªÃ"
+ "ºÑ­ªÒ"
+ "ºÑ­ªÕ"
+ "ºÑ­­ÑµÔ"
+ "ºÑ³±Ôµ"
+ "ºÑ³±ÔµÂì"
+ "ºÑ³±Ø"
+ "ºÑ³±ÙÃ"
+ "ºÑ³³ÒÊ"
+ "ºÑ³ÃÊ"
+ "ºÑ³ÃÊÕ"
+ "ºÑ³à±ÒСì"
+ "ºÑ³à±ÒÐÇì"
+ "ºÑ´"
+ "ºÑ´¡ÃÕ"
+ "ºÑ´«º"
+ "ºÑ´ÊÕ"
+ "ºÑµÃ"
+ "ºÑ¹"
+ "ºÑ¹´ÒÅ"
+ "ºÑ¹·Ö¡"
+ "ºÑ¹ÂкѹÂѧ"
+ "ºÑ¹Å×Í"
+ "ºÑ¹à·Ô§"
+ "ºÑ¹ä´"
+ "ºÑ»¼ÒÊÐ"
+ "ºÑ¾"
+ "ºÑÅ¡ÒàÃÕÂ"
+ "ºÑÅÅѧ¡ì"
+ "ºÑÅÅÙ¹"
+ "ºÑÇ"
+ "ºÑÊ"
+ "ºÑè¹"
+ "ºÑé§"
+ "ºÑé¹"
+ "ºÑê¡"
+ "ºÒ"
+ "ºÒ¡"
+ "ºÒ§"
+ "ºÒ´"
+ "ºÒ´·ÐÂÑ¡"
+ "ºÒ´ÒÅ"
+ "ºÒµ"
+ "ºÒµÃ"
+ "ºÒ·"
+ "ºÒ·º§ÊØì"
+ "ºÒ·ËÅǧ"
+ "ºÒ·Ò¸Ö¡"
+ "ºÒ·Ø¡Ò"
+ "ºÒ¹"
+ "ºÒ¹ª×è¹"
+ "ºÒ¹ºØÃÕ"
+ "ºÒ¹ÕÂÐ"
+ "ºÒ¹àªéÒ"
+ "ºÒ¹àÂç¹"
+ "ºÒ»"
+ "ºÒÂ"
+ "ºÒÃÁÕ"
+ "ºÒÃÍÁÔàµÍÃì"
+ "ºÒÃì"
+ "ºÒÃìàÃÅ"
+ "ºÒÅ"
+ "ºÒÅÕ"
+ "ºÒÈ"
+ "ºÒÈ¡ì"
+ "ºÒÊࡵºÍÅ"
+ "ºÒËÅÕ"
+ "ºÓ¹Ò­"
+ "ºÓºÑ´"
+ "ºÓÃÒº"
+ "ºÓÃÒÈ"
+ "ºÓÃا"
+ "ºÓÃÙ"
+ "ºÓà¾ç­"
+ "ºÓàÃÍ"
+ "ºÓà˹ç¨"
+ "ºÔ"
+ "ºÔ°"
+ "ºÔ³±ºÒµ"
+ "ºÔ´"
+ "ºÔ´¾ÅÔéÇ"
+ "ºÔ´Ã"
+ "ºÔ´Ò"
+ "ºÔµ"
+ "ºÔ¹"
+ "ºÔÅ"
+ "ºÔÅàÅÕ´"
+ "ºÔè¹"
+ "ºÕ±Ò"
+ "ºÕ¹"
+ "ºÕº"
+ "ºÕé"
+ "ºÖ¡"
+ "ºÖ¡ºÖ¹"
+ "ºÖ§"
+ "ºÖè§"
+ "ºÖé§"
+ "ºØ"
+ "ºØ¡"
+ "ºØ¡ÃØ¡"
+ "ºØ¡É¡"
+ "ºØ¤¤Å"
+ "ºØ¤ÅÒ¡Ã"
+ "ºØ¤ÅÒ¸ÔÉ°Ò¹"
+ "ºØ¤ÅÔ¡"
+ "ºØ¤ÅÔ¡ÀÒ¾"
+ "ºØ­"
+ "ºØ­­Ò¹ØÀÒ¾"
+ "ºØ­­ÒÀÔ¹ÔËÒÃ"
+ "ºØ³±ÃÔ¡"
+ "ºØ³Âì"
+ "ºØµÃ"
+ "ºØµÃÒ"
+ "ºØµÃÕ"
+ "ºØº"
+ "ºØ»¼ªÒµÔ"
+ "ºØ¾¡ÃÃÁ"
+ "ºØ¾¡ÒÃÕ"
+ "ºØ¾¡Ô¨"
+ "ºØ¾ªÒµÔ"
+ "ºØ¾·Ñ¡ÉÔ³"
+ "ºØ¾¹ÔÁÔµ"
+ "ºØ¾º·"
+ "ºØ¾¾Ò¨ÒÃÂì"
+ "ºØ¾à¾Êѹ¹ÔÇÒÊ"
+ "ºØ¿à¿èµì"
+ "ºØþ·ÔÈ"
+ "ºØþº·"
+ "ºØþҨÒÃÂì"
+ "ºØÃÒ³"
+ "ºØÃÔÁ·ÔÈ"
+ "ºØÃÔÁ¾ÃÃÉÒ"
+ "ºØÃÔÁÊÔ·¸Ô"
+ "ºØÃÕ"
+ "ºØÃØÉ"
+ "ºØÉ¡Ã"
+ "ºØɺ§"
+ "ºØɺÒ"
+ "ºØÉÂÁÒÊ"
+ "ºØÉÃÒ¤ÑÁ"
+ "ºØ˧ѹ"
+ "ºØ˧Ò"
+ "ºØËç"
+ "ºØËÃÕè"
+ "ºØËÅѹ"
+ "ºØâ÷Ñè§"
+ "ºØèÁºèÒÁ"
+ "ºØé§"
+ "ºØéÂ"
+ "ºØëÁ"
+ "ºÙªÒ"
+ "ºÙªÒÂÑ­"
+ "ºÙ´"
+ "ºÙµ"
+ "ºÙóÀÒ¾"
+ "ºÙóÐ"
+ "ºÙþÒ"
+ "ºÙþҨÒÃÂì"
+ "ºÙé"
+ "ºÙê"
+ "ºè"
+ "ºè§"
+ "ºè¹"
+ "ºèÁ"
+ "ºèǧ"
+ "ºèÍ"
+ "ºèͧ"
+ "ºè͹"
+ "ºèÍÂ"
+ "ºèÒ"
+ "ºèÒ§"
+ "ºèÒÂ"
+ "ºèÒÇ"
+ "ºéǹ"
+ "ºéͧ"
+ "ºéͧáºêÇ"
+ "ºéÍÁ"
+ "ºéÒ"
+ "ºéÒ§"
+ "ºéÒ¹"
+ "ºéÒÃÐËèÓ"
+ "ºê§àºê§"
+ "ºêÇÂ"
+ "ºêͧ"
+ "ºêÐ"
+ "ºëÍÁ"
+ "ºëÍÂ"
+ "ºëÓ"
+ "»¡"
+ "»¡¤Ãͧ"
+ "»¡µÔ"
+ "»¡Ã³ì"
+ "»¡ÒÃ"
+ "»¡Ô³¡Ð"
+ "»¯Ñ¡"
+ "»¯Ô¡Ã³ì"
+ "»¯Ô¡ÃÃÁ"
+ "»¯Ô¡ÔÃÔÂÒ"
+ "»¯Ô¡ÙÅ"
+ "»¯Ô¤Á"
+ "»¯ÔªÕǹÐ"
+ "»¯Ô­­Ò"
+ "»¯Ô­Ò³"
+ "»¯Ô·Ô¹"
+ "»¯Ôº¶"
+ "»¯ÔºÑµÔ"
+ "»¯Ô»·Ò"
+ "»¯Ô»Ñ¡Éì"
+ "»¯Ô¾Ñ·¸ì"
+ "»¯Ô¾Ò¡Âì"
+ "»¯ÔÀÒ¤"
+ "»¯ÔÀÒ³"
+ "»¯ÔÁÒ"
+ "»¯ÔÁÒ¡Ã"
+ "»¯ÔÂØ·¸ì"
+ "»¯ÔÃÙ»"
+ "»¯ÔÇѵÔ"
+ "»¯ÔÇÒµ"
+ "»¯ÔÇÒ·"
+ "»¯Ôʹ¸Ô"
+ "»¯ÔÊѧ¢Ã³ì"
+ "»¯ÔÊѹ¶ÒÃ"
+ "»¯ÔÊÑÁ¾Ñ¹¸ì"
+ "»¯ÔàǸ"
+ "»¯Ôàʸ"
+ "»¯ÔâÅÁ"
+ "»°¾Õ"
+ "»°Á"
+ "»°Á·Ñȹì"
+ "»°Á¹Ôà·È"
+ "»°Á¾ÂÒºÒÅ"
+ "»°ÁÄ¡Éì"
+ "»°ÁÇÑÂ"
+ "»°Áà·È¹Ò"
+ "»³µ"
+ "»³Ô¸Ò¹"
+ "»´"
+ "»¶¾Õ"
+ "»·Ò¹Ø¡ÃÁ"
+ "»·ØÁ"
+ "»·ØÁ¸Ò¹Õ"
+ "»¹"
+ "»¹Ñ´´Ò"
+ "»¹à»"
+ "ȼ"
+ "»Á"
+ "»Ã¡"
+ "»Ã¡µÔ"
+ "»Ã§"
+ "»Ã¹"
+ "»Ã¹¹ÔºÑµÔ"
+ "»Ã¹ÑÂ"
+ "»Ãº"
+ "»Ã»Ñ¡Éì"
+ "»ÃÁѵ¶ì"
+ "»ÃÁÒ¨ÒÃÂì"
+ "»ÃÁÒ³Ù"
+ "»ÃÁÒÀÔàÉ¡"
+ "»ÃÁÒÀÔä¸Â"
+ "»ÃÇ´"
+ "»Ãǹá»Ã"
+ "»ÃÇÒ·Õ"
+ "»ÃÊÔµ"
+ "»Ãͧ´Í§"
+ "»ÃÍ´"
+ "»ÃÍ·"
+ "»ÃÍÂ"
+ "»ÃÐ"
+ "»ÃСº"
+ "»ÃСǴ"
+ "»ÃСͺ"
+ "»ÃСѹ"
+ "»ÃСѺ"
+ "»ÃСÒÂ"
+ "»ÃСÒÃ"
+ "»ÃСÒÈ"
+ "»ÃСÒȹÕºѵÃ"
+ "»ÃСÒÈÔµ"
+ "»ÃСԴ"
+ "»ÃФº"
+ "»ÃФº»ÃÐ˧Á"
+ "»ÃФͧ"
+ "»ÃФÓ"
+ "»ÃШº"
+ "»ÃШǺ"
+ "»ÃШѡÉì"
+ "»ÃШѭ"
+ "»ÃШѹ"
+ "»ÃШҤ"
+ "»ÃШҹ"
+ "»ÃШÓ"
+ "»ÃШÔÁ"
+ "»ÃШØ"
+ "»ÃШëÍ»ÃÐá¨ë"
+ "»ÃЪ´"
+ "»ÃЪÇÃ"
+ "»ÃЪѹ"
+ "»ÃЪÒ"
+ "»ÃЪҪ¹"
+ "»ÃЪҸԻѵÂì"
+ "»ÃЪҸԻäµÂ"
+ "»ÃЪÒÀÔºÒÅ"
+ "»ÃЪԴ"
+ "»ÃЪØÁ"
+ "»Ãгµ"
+ "»ÃгÁ"
+ "»ÃгÒÁ"
+ "»ÃгԸҹ"
+ "»ÃгԸÔ"
+ "»Ãгյ"
+ "»Ãд¹"
+ "»Ãдǹ"
+ "»Ãд͹"
+ "»Ãдѡ»ÃÐà´Ô´"
+ "»Ãдѧ"
+ "»ÃдѺ"
+ "»ÃдÒ"
+ "»Ãдһ"
+ "»ÃдÒÉ"
+ "»ÃдԴ»ÃдÍÂ"
+ "»ÃдԷԹ"
+ "»ÃдÔÉ°Ò¹"
+ "»ÃдÔÉ°ì"
+ "»Ãдا"
+ "»Ãдب"
+ "»ÃдÙè"
+ "»ÃеÙ"
+ "»ÃжÁ"
+ "»Ãзǹ"
+ "»ÃзѡÉì"
+ "»Ãзѧ"
+ "»ÃзѴ"
+ "»ÃзѺ"
+ "»Ãзҹ"
+ "»ÃзԹ"
+ "»ÃзÔè¹"
+ "»Ãзջ"
+ "»Ãзع"
+ "»ÃзØÉ"
+ "»ÃзØÉÃéÒÂ"
+ "»Ãзéǧ"
+ "»Ãиҹ"
+ "»ÃиҹҸԺ´Õ"
+ "»ÃйÁ"
+ "»ÃйÍÁ"
+ "»ÃйջÃйÍÁ"
+ "»ÃлÃÒÂ"
+ "»ÃлÒ"
+ "»ÃоĵÔ"
+ "»ÃоĸÔì"
+ "»Ãоѷ¸ì"
+ "»Ãоѹ¸ì"
+ "»Ãоҵ"
+ "»ÃоÒÊ"
+ "»ÃоÒÌ"
+ "»ÃоԳ"
+ "»Ãоط¸ì"
+ "»ÃÐÀÑÊÊÃ"
+ "»ÃÐÀÒ"
+ "»ÃÐÀÒ¤ÒÃ"
+ "»ÃÐÀÒ¾"
+ "»ÃÐÀÒÊ"
+ "»ÃÐÁ§"
+ "»ÃÐÁÇ­"
+ "»ÃÐÁÇÅ"
+ "»ÃÐÁÒ³"
+ "»ÃÐÁÒ·"
+ "»ÃÐÁØ¢"
+ "»ÃÐÁØ·"
+ "»ÃÐÁÙÅ"
+ "»ÃÐÂØ¡µì"
+ "»ÃÐÂØ·¸ì"
+ "»ÃÐÂÙÃ"
+ "»ÃÐÅÁ¾ì"
+ "»ÃÐÅͧ"
+ "»ÃÐÅÑÂ"
+ "»ÃÐÅÒµ"
+ "»ÃÐÇÃõ"
+ "»ÃÐÇÃõ¹ì"
+ "»ÃÐÇѵÔ"
+ "»ÃÐÇѵԡÒóì"
+ "»ÃÐÇѵÔÈÒʵÃì"
+ "»ÃÐÇÒµ"
+ "»ÃÐÇÒÅ"
+ "»ÃÐÇÒÊ"
+ "»ÃÐÇÔ§"
+ "»ÃÐÇÔª"
+ "»ÃÐÇÔµÃ"
+ "»ÃÐÇÕ³"
+ "»ÃÐÈÁ"
+ "»ÃÐÈÒʹì"
+ "»ÃÐÊ¡"
+ "»ÃÐʧ¤ì"
+ "»ÃÐʺ"
+ "»ÃÐʺ¡Òóì"
+ "»ÃÐʾ"
+ "»ÃÐÊÒ"
+ "»ÃÐÊÒ·"
+ "»ÃÐÊÒ¹"
+ "»ÃÐÊÔ·¸Ô¼Å"
+ "»ÃÐÊÔ·¸ÔÀÒ¾"
+ "»ÃÐÊÔ·¸Ôì"
+ "»ÃÐÊÙµÔ"
+ "»ÃÐËÁèÒ"
+ "»ÃÐËÂÑ´"
+ "»ÃÐËÅÒ´"
+ "»ÃÐËÅèÓ"
+ "»ÃÐËÒÃ"
+ "»ÃÐÎÒÁ"
+ "»ÃÐह"
+ "»ÃÐਡ"
+ "»ÃÐà¨Ô´»ÃÐà¨éÍ"
+ "»ÃÐà¨Õ´"
+ "»ÃÐà´"
+ "»ÃÐà´ÔÁ"
+ "»ÃÐà´Õ§"
+ "»ÃÐà´ÕëÂÇ"
+ "»ÃÐà´ÕëÂÇ»ÃдëÒÇ"
+ "»ÃÐà´ç¹"
+ "»ÃÐà·È"
+ "»ÃÐà·ÈÃÒª"
+ "»ÃÐà·Èä·Â"
+ "»ÃÐà·×ͧ"
+ "»ÃÐླÕ"
+ "»ÃÐàÀ·"
+ "»ÃÐàÁÔ¹"
+ "»ÃÐàdzÕ"
+ "»ÃÐàÇÈ"
+ "»ÃÐàÇȹì"
+ "»ÃÐàÊÃÔ°"
+ "»ÃÐá¡¡"
+ "»ÃÐá¨"
+ "»ÃÐâ¤Á"
+ "»ÃÐâ¤"
+ "»ÃÐ⪹ì"
+ "»ÃÐâÅÁ"
+ "»ÃÑ¡"
+ "»Ãѧ"
+ "»ÃѪ­Ò"
+ "»ÃѵÂصºÑ¹"
+ "»ÃѵÂغѹ"
+ "»Ãѹ"
+ "»ÃѺ"
+ "»ÃÑÁ»ÃÒ"
+ "»ÃÑȹÕ"
+ "»ÃÑÈÇì"
+ "»ÃÒ¡¯"
+ "»ÃÒ¡ÃÁ"
+ "»ÃÒ¡ÒÃ"
+ "»ÃÒ¤ÀÒÃ"
+ "»ÃÒ§"
+ "»ÃÒ§¤ì"
+ "»ÃÒ¨Õ¹"
+ "»ÃÒª­Ò"
+ "»ÃÒª­ì"
+ "»ÃÒªÑÂ"
+ "»ÃÒªÔµ"
+ "»ÃÒ³"
+ "»ÃÒ³Õ"
+ "»ÃÒ´"
+ "»ÃÒ¹Õ"
+ "»ÃÒº"
+ "»ÃÒº´ÒÀÔàÉ¡"
+ "»ÃÒ»µì"
+ "»ÃÒÀ¾"
+ "»ÃÒÁ"
+ "»ÃÒÁÒÊ"
+ "»ÃÒÂ"
+ "»ÃÒö¹Ò"
+ "»ÃÒÃÀ"
+ "»ÃÒÃÁÀì"
+ "»ÃÒÈ"
+ "»ÃÒÈÃÑÂ"
+ "»ÃÒÈÒÃ"
+ "»ÃÒɳÕ"
+ "»ÃÒÉÒ³"
+ "»ÃÒÊÒ·"
+ "»ÃÒâÁª"
+ "»ÃÒâÁ·Âì"
+ "»ÃÓ"
+ "»ÃÔ"
+ "»ÃÔ¡"
+ "»ÃÔ¤³Ëì"
+ "»ÃÔ¨Ò¤"
+ "»ÃÔ¨ÒÃÔ¡Ò"
+ "»ÃÔ«ÖÁ"
+ "»ÃÔ­­Ò"
+ "»ÃÔ³ÒÁ"
+ "»ÃÔ³Ò¡"
+ "»ÃÔµ"
+ "»ÃÔµµÐ"
+ "»ÃÔµÃ"
+ "»ÃÔ·ÃÃȹì"
+ "»ÃÔ·Ñȹì"
+ "»ÃÔ¹"
+ "»ÃÔ¹Êì"
+ "»ÃÔ¹Ô¾¾Ò¹"
+ "»ÃÔº"
+ "»ÃÔÁ³±Å"
+ "»ÃÔÁÑ·"
+ "»ÃÔÁÒ³"
+ "»ÃÔÁÒµÃ"
+ "»ÃÔÂѵÔ"
+ "»ÃÔÂÒÂ"
+ "»ÃÔÇÃõ"
+ "»ÃÔÇÒÊ"
+ "»ÃÔȹÒ"
+ "»ÃÔà©·"
+ "»ÃÔèÁ"
+ "»ÃÕªÒ"
+ "»ÃÕ´Ò"
+ "»ÃÕ´Ôì"
+ "»ÃÕÂÒ"
+ "»ÃÕè"
+ "»ÃÕê´"
+ "»ÃÖ¡ÉÒ"
+ "»Ã×Í"
+ "»Ã×ëÍ"
+ "»ÃØ"
+ "»Ãا"
+ "»ÃÙ´"
+ "»ÃÙê´»ÃêÒ´"
+ "»ÃÙê¿"
+ "»ÃàÁ¹·Ãì"
+ "»ÃâÅ¡"
+ "»ÃèÒ"
+ "»ÃëÍ"
+ "»Ä¨©Ò"
+ "»Äɮҧ¤ì"
+ "»Å¡"
+ "»Å§"
+ "»Å´"
+ "»ÅÇ¡"
+ "»ÅÍ¡"
+ "»ÅÍ´"
+ "»ÅÍ´ÀÑÂ"
+ "»Åͺ"
+ "»ÅÍÁ"
+ "»ÅÐ"
+ "»ÅÑ¡"
+ "»ÅÑ´"
+ "»ÅÑè§"
+ "»ÅÑê¡"
+ "»ÅÑê¡ÍÔ¹"
+ "»ÅÒ"
+ "»ÅÒµ"
+ "»ÅÒº"
+ "»ÅÒÂ"
+ "»ÅÒÇÒÌ"
+ "»ÅÒʹҡÒÃ"
+ "»ÅÒÊàµÍÃì"
+ "»ÅÔ§"
+ "»ÅÔ´"
+ "»ÅÔÇ"
+ "»ÅÔ⾸"
+ "»ÅÔèÁ"
+ "»ÅÔé¹"
+ "»ÅÕ"
+ "»ÅÕ¡"
+ "»Å×éÁ"
+ "»ÅØ¡"
+ "»ÅÙ¡"
+ "»Åè§"
+ "»Åèͧ"
+ "»ÅèÍÂ"
+ "»Åé¹"
+ "»Åéͧ"
+ "»Åé͹"
+ "»ÅéÓ"
+ "»Ç¡à»Õ¡"
+ "»Ç§"
+ "»Ç´"
+ "»ÇÒóÒ"
+ "»ÈØ"
+ "»Í"
+ "»Í¡"
+ "»Í§"
+ "»Í´"
+ "»Í¹"
+ "»Í¹´ì"
+ "»Íº"
+ "»ÍÂ"
+ "»ÍÃì"
+ "»ÍÃìµØà¡Ê"
+ "»Ð"
+ "»Ð¡¹"
+ "»Ð¡ÒÃѧ"
+ "»Ð¢ÒÇ"
+ "»Ð·Ð"
+ "»Ð·Ø"
+ "»Ð˧Ѻ"
+ "»ÐàËÅÒÐ"
+ "»ÐáÅèÁ"
+ "»Ðâŧ"
+ "»Ñ¡"
+ "»Ñ¡¡Ôè§"
+ "»Ñ¡ÉÒ"
+ "»Ñ¡ÉÒÇÊÒ¹"
+ "»Ñ¡ÉÔ³"
+ "»Ñ¡ÉÔ¹"
+ "»Ñ¡ÉÕ"
+ "»Ñ¡Éì"
+ "»Ñ¡à»éÒ"
+ "»Ñ§"
+ "»Ñ§ÊØ¡ØÅ"
+ "»Ñ¨¨Ñ¹µ¤ÒÁ"
+ "»Ñ¨¨Ñ¹µª¹º·"
+ "»Ñ¨¨Ñ¹µ»ÃÐà·È"
+ "»Ñ¨¨Ñ¹µì"
+ "»Ñ¨¨ÑÂ"
+ "»Ñ¨¨ÒÁÔµÃ"
+ "»Ñ¨¨ØºÑ¹"
+ "»Ñ¨¨ØÊÁÑÂ"
+ "»Ñ¨©Ò"
+ "»Ñ¨©ÔÁ"
+ "»Ñ¨à¨¡"
+ "»Ñ­¨ÇѤ¤ÕÂì"
+ "»Ñ­­Ò"
+ "»Ñ­ËÒ"
+ "»Ñ´"
+ "»ÑµµÒ¹Õ"
+ "»ÑµµÒàÇÕÂ"
+ "»Ñ·Áì"
+ "»Ñ¹"
+ "»Ñº"
+ "»Ñ»¼ÒÊÐ"
+ "»ÑÊÊÒÇÐ"
+ "»ÑÊÊÒÊÐ"
+ "»Ñè¹"
+ "»Ñé¹"
+ "»Ñêº"
+ "»ÑêÁ"
+ "»Ñë§"
+ "»Ò"
+ "»Ò¡"
+ "»Ò¡¡Ò"
+ "»Ò¡Õʶҹ"
+ "»Ò§"
+ "»Ò¯ÔËÒÃÔÂì"
+ "»Ò°¡"
+ "»Ò°¡¶Ò"
+ "»Ò³ÒµÔºÒµ"
+ "»Ò´"
+ "»ÒµÔâÁ¡¢ì"
+ "»Ò·Ñ§¡Ò"
+ "»Ò·èͧâ¡ë"
+ "»Ò¹"
+ "»Ò»ÑÇ"
+ "»ÒÁ"
+ "»ÒÂÒÊ"
+ "»ÒÃÒªÔ¡"
+ "»ÒÃԩѵÃ"
+ "»ÒÃÔªÒµ"
+ "»ÒÃÕÊ"
+ "»ÒÃìࡵì"
+ "»ÒÅÕ"
+ "»ÒÅìÁ"
+ "»ÒÇ"
+ "»Ò˹ѹ"
+ "»ÒËÕè"
+ "»ÒâÁ¡¢ì"
+ "»Ó"
+ "»Ô¡¹Ô¡"
+ "»Ô§»Í§"
+ "»Ô®¡"
+ "»Ô´"
+ "»ÔµÒ"
+ "»ÔµÔ"
+ "»ÔµØ"
+ "»ÔµØ¦Òµ"
+ "»ÔµØÀÙÁÔ"
+ "»ÔµØÅÒ"
+ "»ÔÂÁÔµÃ"
+ "»ÔÂÐ"
+ "»ÔÈÒ¨"
+ "»ÔâµÃàÅÕÂÁ"
+ "»ÔâÂÃÊ"
+ "»Ôè¹"
+ "»Ôè¹âµ"
+ "»ÔèÁ"
+ "»Ôé§"
+ "»ÔéÁ"
+ "»ÔëÇ"
+ "»Õ"
+ "»Õ¡"
+ "»Õ¹"
+ "»Õº"
+ "»ÕÁÐâÇé"
+ "»ÕÈÒ¨"
+ "»Õè"
+ "»Õé"
+ "»Õê´"
+ "»Õêº"
+ "»Õë"
+ "»Ö¡"
+ "»Ö§"
+ "»Öè§"
+ "»Öé´"
+ "»Öë§"
+ "»×¹"
+ "»×é¹"
+ "»×ëÍ"
+ "ȯ"
+ "»Ø¡"
+ "»Ø¨©Ò"
+ "»Ø´"
+ "»Ø¶Øª¹"
+ "»Øº"
+ "»ØÂ"
+ "»ØâÃËÔµ"
+ "»ØèÁ"
+ "»Ø駡Õë"
+ "»ØéÁ"
+ "»Øê"
+ "»Øêº"
+ "»ØëÁ"
+ "»ØëÂ"
+ "»Ù"
+ "»Ùª¹Õºؤ¤Å"
+ "»Ùª¹ÕÂÇѵ¶Ø"
+ "»Ù´"
+ "»Ù¹"
+ "»ÙÁ"
+ "»Ùè"
+ "»ÙéÂÕé»ÙéÂÓ"
+ "»àdzÕ"
+ "»è¹"
+ "»èǧ"
+ "»èǹ"
+ "»èÇÂ"
+ "»èͧ"
+ "»èÒ"
+ "»èÒ¹"
+ "»èÒÂ"
+ "»èÒÇ"
+ "»éǹ"
+ "»éǹà»Õé¹"
+ "»éÍ"
+ "»éͧ"
+ "»éͧ¡Ñ¹"
+ "»é͹"
+ "»éÍÁ"
+ "»éÍÂ"
+ "»éÍá»é"
+ "»éÒ"
+ "»éÒ§"
+ "»éÒ¹"
+ "»éÒº"
+ "»éÒÂ"
+ "»éÓ"
+ "»êÍ¡¡Õé"
+ "»êÒº"
+ "»ëÍ"
+ "»ëÍÁ"
+ "»ëÒ"
+ "¼¡"
+ "¼¡Ò"
+ "¼¡ÒÂ"
+ "¼§"
+ "¼§¡"
+ "¼§Ð"
+ "¼§Ò´"
+ "¼¨§"
+ "¼¨­"
+ "¼´"
+ "¼´Ø§"
+ "¼¹Ç¡"
+ "¼¹Çª"
+ "¼¹Ñ§"
+ "¼¹Ö¡"
+ "¼Á"
+ "¼Áºêͺ"
+ "¼Âͧ"
+ "¼ÃØÊÇÒ·"
+ "¼Å"
+ "¼ÅÐ"
+ "¼ÅÑ¡"
+ "¼ÅÑ´"
+ "¼ÅÑÇÐ"
+ "¼ÅÒ­"
+ "¼ÅÒ¹ÔʧÊì"
+ "¼ÅÒ¼Å"
+ "¼ÅÒËÒÃ"
+ "¼ÅÔ"
+ "¼ÅÔµ"
+ "¼ÅÔµÀѳ±ì"
+ "¼ÅÕ¼ÅÒÁ"
+ "¼ÅÖ¡"
+ "¼ÅÖè§"
+ "¼ÅØ"
+ "¼Åا"
+ "¼ÅØ´"
+ "¼Åع"
+ "¼Åغ"
+ "¼ÅØÂ"
+ "¼ÅÙ"
+ "¼ÅçÍÂ"
+ "¼Ç¹"
+ "¼ÇÂ"
+ "¼ÇÒ"
+ "¼ÊÁ"
+ "¼ÊÒ¹"
+ "¼ÊÒÂ"
+ "¼Í¡"
+ "¼Í§"
+ "¼Í´"
+ "¼Íº"
+ "¼ÍÁ"
+ "¼ÍÇ´"
+ "¼ÍÙ¹"
+ "¼Ð"
+ "¼Ñ¡"
+ "¼Ñ§"
+ "¼Ñ´"
+ "¼Ñ¹"
+ "¼Ñ¹¼Ç¹"
+ "¼Ñº"
+ "¼ÑÇ"
+ "¼ÑÇÐ"
+ "¼Ò"
+ "¼Ò¡"
+ "¼Ò§"
+ "¼Ò³Ôµ"
+ "¼Ò´"
+ "¼ÒÂ"
+ "¼Ô"
+ "¼Ô§"
+ "¼Ô´"
+ "¼Ô¹"
+ "¼ÔÇ"
+ "¼Õ"
+ "¼Ö§"
+ "¼Öè§"
+ "¼Öé§"
+ "¼×¹"
+ "¼×è¹"
+ "¼Ø"
+ "¼Ø´"
+ "¼Ø¼§"
+ "¼Ù¡"
+ "¼Ùé"
+ "¼çÍÂ"
+ "¼èͧ"
+ "¼è͹"
+ "¼èÍÂ"
+ "¼èÒ"
+ "¼èÒ¹"
+ "¼èÒ¼ÍÁ"
+ "¼èÒÇ"
+ "¼éÒ"
+ "½¹"
+ "½ÃÑè§"
+ "½ÃÑè§àÈÊ"
+ "½ÍÂ"
+ "½Ñ¡"
+ "½Ñ§"
+ "½Ñ´"
+ "½Ñ¹"
+ "½Ñè§"
+ "½Ò"
+ "½Ò¡"
+ "½Ò§"
+ "½Ò´"
+ "½Ò¹"
+ "½ÒÂ"
+ "½Ôè¹"
+ "½Õ"
+ "½Ö¡"
+ "½×´"
+ "½×¹"
+ "½Øè¹"
+ "½Ù§"
+ "½èÍ"
+ "½èÒ"
+ "½èÒÂ"
+ "½éÒ"
+ "½éÒÂ"
+ "¾¡"
+ "¾§"
+ "¾§ÈÒÇ´ÒÃ"
+ "¾§Èì"
+ "¾¨¹Ò"
+ "¾¨¹Ò¹Ø¡ÃÁ"
+ "¾¨¹Òö"
+ "¾¨¹ÕÂì"
+ "¾¨¹ì"
+ "¾¨ÁÒ¹"
+ "¾¨Õ"
+ "¾­Ò"
+ "¾­ÒÅÍ"
+ "¾³Ôª"
+ "¾³ÔªÂì"
+ "¾´"
+ "¾¸Ù"
+ "¾¹Á"
+ "¾¹Ñ¡"
+ "¾¹Ñ¡§Ò¹"
+ "¾¹Ñ§"
+ "¾¹Ñ¹"
+ "¾¹ÑÊ"
+ "¾¹Ò"
+ "¾¹Ò´Ã"
+ "¾¹ÒÃÒÁ"
+ "¾¹ÒÅÑÂ"
+ "¾¹Ô´Ò"
+ "¾º"
+ "¾ÁèÒ"
+ "¾Â¹µì"
+ "¾ÂÈ"
+ "¾ÂÑ¡"
+ "¾ÂÑ¡¾àÂÔ´"
+ "¾ÂѤ¦Ò"
+ "¾ÂѤ¦Ô¹"
+ "¾ÂѤ¦Õ"
+ "¾ÂѤ¦ì"
+ "¾ÂÑ­ª¹Ð"
+ "¾Âѵ"
+ "¾ÂѺ"
+ "¾Âҡóì"
+ "¾ÂÒ§¤ì"
+ "¾ÂÒ¸Ô"
+ "¾ÂÒ¹"
+ "¾ÂÒºÒ·"
+ "¾ÂÒºÒÅ"
+ "¾ÂÒÂÒÁ"
+ "¾ÂØ"
+ "¾Âا"
+ "¾ÂØËÂÒµÃÒ"
+ "¾ÂØËÐ"
+ "¾ÂØËàʹÒ"
+ "¾Ã"
+ "¾Ãµ"
+ "¾ÃÁ"
+ "¾ÃÃ"
+ "¾Ãä"
+ "¾Ãäì"
+ "¾Ãó"
+ "¾Ãó¹Ò"
+ "¾ÃÃÉ"
+ "¾ÃÃÉÒ"
+ "¾ÃÇ´"
+ "¾Ãǹ"
+ "¾ÃËÁ"
+ "¾ÃËÁ¨ÃÃÂì"
+ "¾ÃËÁ¨ÒÃÔ³Õ"
+ "¾ÃËÁ¨ÒÃÕ"
+ "¾ÃÍ´"
+ "¾ÃÐ"
+ "¾ÃÐÃÒªÇѧ"
+ "¾ÃÐͧ¤ì"
+ "¾ÃÐà¨éÒÍÂÙèËÑÇ"
+ "¾ÃÑ¡¾ÃéÍÁ"
+ "¾ÃÑ´"
+ "¾ÃÑè§"
+ "¾ÃÑè¹"
+ "¾ÃÒ¡"
+ "¾ÃÒ§"
+ "¾ÃÒ´"
+ "¾ÃÒ¹"
+ "¾ÃÒÂ"
+ "¾ÃÒÇ"
+ "¾ÃÒËÁ³ì"
+ "¾ÃÓ"
+ "¾ÃÔ¡"
+ "¾ÃÔ¹àµÍÃì"
+ "¾ÃÔº"
+ "¾ÃÔé§"
+ "¾ÃÔéÁ"
+ "¾ÃÕàÁÕÂÁ"
+ "¾ÃÕàÁÕÂÃì"
+ "¾ÃÖ§"
+ "¾ÃÖ¹"
+ "¾ÃÖº"
+ "¾Ã×´"
+ "¾ÃØ"
+ "¾ÃØ¡"
+ "¾Ãع"
+ "¾ÃØè§"
+ "¾ÃÙ"
+ "¾ÃÙ´"
+ "¾Ãèͧ"
+ "¾ÃèÍÁ¾ÃéÍ"
+ "¾ÃèÍÂ"
+ "¾ÃèÒ"
+ "¾ÃèÒ§"
+ "¾ÃèÓ"
+ "¾Ãéͧ"
+ "¾ÃéÍÁ"
+ "¾ÃéÍÁ¾ÃÑ¡"
+ "¾ÃéÍÂ"
+ "¾ÃéÒ"
+ "¾ÃéÓ"
+ "¾Ä¡ÉªÒµÔ"
+ "¾Ä¡É·Å"
+ "¾Ä¡ÉÃÒª"
+ "¾Ä¡ÉÈÒʵÃì"
+ "¾Ä¡ÉÒ"
+ "¾Ä¡Éà·Ç´Ò"
+ "¾Ä¡Éì"
+ "¾Ä²"
+ "¾Ä²Ò"
+ "¾Ä²Ò¨ÒÃÂì"
+ "¾Ä²Ô"
+ "¾Äµ"
+ "¾ÄµÔ"
+ "¾ÄµÔ¡ÃÃÁ"
+ "¾ÄµÔ¡Òóì"
+ "¾ÄµÔ¹ÑÂ"
+ "¾Ä·¸Ôì"
+ "¾Ä·¸ì"
+ "¾Ä¹µì"
+ "¾Ä¹·ì"
+ "¾ÄȨÔ"
+ "¾ÄȨԡÒ¹"
+ "¾ÄÉÀ"
+ "¾ÄÉÀÒ¤Á"
+ "¾ÄËÑÊ"
+ "¾ÄËÑʺ´Õ"
+ "¾Å"
+ "¾Å¡ÒÃ"
+ "¾Å¤ÇÒÁ"
+ "¾Åº"
+ "¾Åǧ"
+ "¾ÅÇѵ"
+ "¾ÅÈÖ¡ÉÒ"
+ "¾Åͧ"
+ "¾ÅÍ´"
+ "¾ÅÍÁá¾ÅÁ"
+ "¾ÅÍÂ"
+ "¾ÅÐ"
+ "¾Åѧ"
+ "¾Åѧ§Ò¹"
+ "¾ÅÑ´"
+ "¾Åѹ"
+ "¾ÅѺ"
+ "¾ÅѺ¾ÅÒ"
+ "¾ÅѺ¾ÅÖ§"
+ "¾ÅÑè¡"
+ "¾ÅÑè§"
+ "¾ÅÑèÇ"
+ "¾ÅÑé§"
+ "¾ÅÒ¡Ã"
+ "¾ÅÒ§"
+ "¾ÅÒ´"
+ "¾ÅÒ¸Ô¡ÒÃ"
+ "¾ÅÒ¹ÒÁÑÂ"
+ "¾ÅÒÁ"
+ "¾ÅÒÂ"
+ "¾ÅÒʵԡ"
+ "¾ÅÒÊÁÒ"
+ "¾ÅÒË¡"
+ "¾ÅÔ¡"
+ "¾ÅÔéÇ"
+ "¾ÅÕ"
+ "¾ÅØ"
+ "¾ÅØ¡"
+ "¾ÅØè¡"
+ "¾ÅØè§"
+ "¾ÅØéÂ"
+ "¾ÅÙ"
+ "¾ÅàÁ×ͧ"
+ "¾ÅàÃ×͹"
+ "¾ÅâÅ¡"
+ "¾ÅèÍÂ"
+ "¾ÅèÒ"
+ "¾ÅèÒ¹"
+ "¾ÅèÒÁ"
+ "¾ÅéÓ"
+ "¾Ç¡"
+ "¾Ç§"
+ "¾Ç¹"
+ "¾ÇÂ"
+ "¾Ê¡"
+ "¾ÊظÒ"
+ "¾ËÅ"
+ "¾ËÅâ¸Թ"
+ "¾ËØ"
+ "¾ËÙ"
+ "¾ËÙ¾¨¹ì"
+ "¾ËÙÊÙµ"
+ "¾Í"
+ "¾Í¡"
+ "¾Í§"
+ "¾Í·ÑÅ"
+ "¾ÍÃìµ"
+ "¾Ð"
+ "¾Ð¾Ô§"
+ "¾ÐÂÙ¹"
+ "¾ÐÃا¾ÐÃѧ"
+ "¾Ðǧ"
+ "¾ÐÇÑ¡¾Ðǹ"
+ "¾ÐÇéÒ¾ÐÇѧ"
+ "¾Ðͧ"
+ "¾ÐÍ×´¾ÐÍÁ"
+ "¾Ðà¹Õ§"
+ "¾Ðà¹éҾйÍ"
+ "¾ÐàÂÔº"
+ "¾ÐàÂÔº¾ÐÂÒº"
+ "¾Ðṧ"
+ "¾ÐâÅé"
+ "¾Ñ¡"
+ "¾Ñ¡µÃì"
+ "¾Ñ§"
+ "¾Ñ§§Ò"
+ "¾Ñ§¼×´"
+ "¾Ñ§¾ÇÂ"
+ "¾Ñ§¾Í¹"
+ "¾Ñ§¾Òº"
+ "¾Ñ§à¾Â"
+ "¾ÑªÃ"
+ "¾Ñ²¹Ð"
+ "¾Ñ²¹Ò"
+ "¾Ñ´"
+ "¾ÑµÃ"
+ "¾Ñ·¸ÊÕÁÒ"
+ "¾Ñ·ÂÒ"
+ "¾Ñ·Åا"
+ "¾Ñ¹"
+ "¾Ñ¹·Ò§"
+ "¾Ñ¹¸¡Ã³Õ"
+ "¾Ñ¹¸·Ô¾Âì"
+ "¾Ñ¹¸¹Ò¡ÒÃ"
+ "¾Ñ¹¸ºÑµÃ"
+ "¾Ñ¹¸ÁÔµÃ"
+ "¾Ñ¹¸Ð"
+ "¾Ñ¹¸Ø"
+ "¾Ñ¹¸Øì"
+ "¾Ñ¹¸ì"
+ "¾Ñº"
+ "¾ÑÅÅÀ"
+ "¾ÑÅÇѹ"
+ "¾ÑÇ"
+ "¾ÑÇÐ"
+ "¾ÑÈ´Õ"
+ "¾ÑÊ´Ø"
+ "¾ÑʵÃì"
+ "¾Ñʶҹ"
+ "¾Ò"
+ "¾Ò¡"
+ "¾Ò¡Âì"
+ "¾Ò§"
+ "¾Ò³"
+ "¾Ò³Ôª"
+ "¾Ò³ÔªÂì"
+ "¾Ò³Õ"
+ "¾Ò³Õ¹Õ"
+ "¾Ò´"
+ "¾Òµ"
+ "¾Ò·"
+ "¾Ò·Âì"
+ "¾Ò¸"
+ "¾Ò¸Ò"
+ "¾Ò¹"
+ "¾Ò¹Ã"
+ "¾ÒÁ"
+ "¾ÒÂ"
+ "¾ÒÂѾ"
+ "¾ÒÂØ"
+ "¾Òó"
+ "¾ÒÃÒ"
+ "¾ÒÃÒ¿Ô¹"
+ "¾ÒÃì"
+ "¾ÒÅ"
+ "¾ÒÅÕ"
+ "¾ÒÊ"
+ "¾ÒʹÒ"
+ "¾Òʹì"
+ "¾ÒÊØ¡ÃÕ"
+ "¾ÒÊàÇÔÃì´"
+ "¾Ò˹Ð"
+ "¾ÒËÐ"
+ "¾ÒËÒ"
+ "¾ÒËØ"
+ "¾ÒËØÃÑ´"
+ "¾ÒÌËÐ"
+ "¾Òà¹Å"
+ "¾ÒàËô"
+ "¾ÒàËÕÂÃ"
+ "¾ÒâÅ"
+ "¾Ó"
+ "¾Ó¹Ñ¡"
+ "¾Ô¡Å"
+ "¾Ô¡Ñ´"
+ "¾Ô¡ÑµÔ"
+ "¾Ô¡ÒÃ"
+ "¾Ô¡ØÅ"
+ "¾Ô¦Òµ"
+ "¾Ô¦à¹È"
+ "¾Ô§"
+ "¾Ô¨ÒóÒ"
+ "¾Ô¨Òóì"
+ "¾Ô¨ÔµÃ"
+ "¾ÔªÑÂ"
+ "¾ÔªÒ¹"
+ "¾ÔªÔµ"
+ "¾Ô««èÒ"
+ "¾Ô³"
+ "¾Ô¶Õ¾Ô¶Ñ¹"
+ "¾Ô·ÂÒ"
+ "¾Ô·Ñ¡Éì"
+ "¾Ô¸Ò¹"
+ "¾Ô¸Õ"
+ "¾Ô¹·Ø"
+ "¾Ô¹Íº¾Ôà·Ò"
+ "¾Ô¹ÑÂ"
+ "¾Ô¹ÒÈ"
+ "¾Ô¹Ô¨"
+ "¾Ô¹Ôµ"
+ "¾Ô¹ÔÈ"
+ "¾ÔºÑµÔ"
+ "¾ÔºÙÅ"
+ "¾Ô¾Áì"
+ "¾Ô¾Ñ¡¾Ô¾èǹ"
+ "¾Ô¾Ñ²¹ì"
+ "¾Ô¾Ò¡ÉÒ"
+ "¾Ô¾Ò¡Éì"
+ "¾Ô¾Ò·"
+ "¾Ô¾Ô¸"
+ "¾Ô¾Ô¸Àѳ±Ê¶Ò¹"
+ "¾Ô¾Ô¸Àѳ±ì"
+ "¾ÔÀ¾"
+ "¾ÔÁ¾ì"
+ "¾ÔÁÅ"
+ "¾ÔÁÒ¹"
+ "¾ÔÁØ¢"
+ "¾ÔÁàʹ"
+ "¾ÔÃÍ´"
+ "¾ÔÃÒº"
+ "¾ÔÃÒÅÑÂ"
+ "¾ÔÃÕé¾ÔäÃ"
+ "¾ÔÃس"
+ "¾ÔÃظ"
+ "¾ÔÅÒ»"
+ "¾ÔÅÒÊ"
+ "¾ÔÅÖ¡"
+ "¾ÔÅÖ¡¡Ö¡¡×Í"
+ "¾ÔÅÖ¡¾ÔÅÑè¹"
+ "¾ÔÈ"
+ "¾ÔÈǧ"
+ "¾ÔÈÇÒÊ"
+ "¾ÔÈÒÅ"
+ "¾ÔÈØ·¸Ôì"
+ "¾ÔÈØ·¸ì"
+ "¾ÔÉ"
+ "¾ÔɳØâÅ¡"
+ "¾ÔÉʧ"
+ "¾ÔÊ´ÒÃ"
+ "¾ÔÊÁÑÂ"
+ "¾ÔÊÑÂ"
+ "¾ÔÊÔ°"
+ "¾ÔÊØ·¸Ôì"
+ "¾ÔÊÙ¨¹ì"
+ "¾ÔËÒÃ"
+ "¾ÔÌÒÃ"
+ "¾Ôà¤ÃÒÐËì"
+ "¾ÔàÈÉ"
+ "¾Ô⡾Ôࡹ"
+ "¾Ôâ¤"
+ "¾Ôâø"
+ "¾ÔäÃ"
+ "¾ÔäÅ"
+ "¾Õ"
+ "¾Õª¤³Ôµ"
+ "¾Õ«Õ"
+ "¾ÕÃÐÁÔ´"
+ "¾Õè"
+ "¾Õé"
+ "¾Ö§"
+ "¾ÖÁ"
+ "¾ÖÁ¾Ó"
+ "¾Öè§"
+ "¾Öèº"
+ "¾×ª"
+ "¾×´"
+ "¾×é¹"
+ "¾×é¹·Õè"
+ "¾Ø"
+ "¾Ø¡"
+ "¾Ø§"
+ "¾Ø²"
+ "¾Ø²Ô"
+ "¾Ø´"
+ "¾Ø·¸"
+ "¾Ø·¸Ð"
+ "¾Ø·¸ÒÇÒÊ"
+ "¾Ø·¸Ô"
+ "¾Ø·ÃÒ"
+ "¾Ø·â¸è"
+ "¾Ø¸"
+ "¾Øè§"
+ "¾ØèÁ"
+ "¾ØéÂ"
+ "¾Ù"
+ "¾Ù´"
+ "¾Ù¹"
+ "¾Ùè"
+ "¾Ùé¹"
+ "¾à¹¨Ã"
+ "¾è¹"
+ "¾èǧ"
+ "¾èÍ"
+ "¾èÒ§"
+ "¾èÒ¹"
+ "¾èÒÂ"
+ "¾èÒËì"
+ "¾é¹"
+ "¾éÍ"
+ "¾éͧ"
+ "¾éÍÁ"
+ "¿¡"
+ "¿ÃÍ´ì"
+ "¿ÃÕ"
+ "¿ÅÍàù«ì"
+ "¿ÅÙÍÍÃÕ¹"
+ "¿Í¡"
+ "¿Í§"
+ "¿Í´"
+ "¿Í¹"
+ "¿Í¹µì"
+ "¿ÍÃìÁ"
+ "¿ÍÃìÁÒÅ´Õäδì"
+ "¿ÍÃìÁÒÅÔ¹"
+ "¿ÍÃìáÁµ"
+ "¿ÍÊ«ÔÅ"
+ "¿ÍÊ¿ÍÃÑÊ"
+ "¿ÍÊ࿵"
+ "¿Ñ¡"
+ "¿Ñ§"
+ "¿Ñ§¡ìªÑ¹"
+ "¿Ñ§¡ìªÑè¹"
+ "¿Ñ´"
+ "¿Ñ¹"
+ "¿Ñè¹"
+ "¿Ñé¹"
+ "¿Ò¡"
+ "¿Ò§"
+ "¿Ò´"
+ "¿Ò·ÍÁ"
+ "¿Ò¹"
+ "¿ÒÂ"
+ "¿ÒÃìÁ"
+ "¿ÒÊ«Ôʵì"
+ "¿Ô¡"
+ "¿Ô´"
+ "¿Ô¹áŹ´ì"
+ "¿Ôº"
+ "¿ÔÅ´ì"
+ "¿ÔÅÔ»»Ô¹Êì"
+ "¿ÔÅìÁ"
+ "¿ÔÇÊì"
+ "¿ÔÊÔ¡Êì"
+ "¿Õ¿èÒ"
+ "¿Õè"
+ "¿Õé"
+ "¿×¹"
+ "¿×Á"
+ "¿×é¹"
+ "¿Ø"
+ "¿Øµ"
+ "¿ØµºÍÅ"
+ "¿Ø¹"
+ "¿Øº"
+ "¿Ø¿Ð"
+ "¿ØÅÊá¡ê»"
+ "¿Øèº"
+ "¿ØèÁà¿×ÍÂ"
+ "¿Øé§"
+ "¿Ù"
+ "¿Ù¡"
+ "¿Ù¨Ô"
+ "¿Ù´"
+ "¿ÙÁ"
+ "¿ÙÁ¿ÒÂ"
+ "¿Ùè"
+ "¿èÍ"
+ "¿èͧ"
+ "¿è͹"
+ "¿èÒ§"
+ "¿èÒÁ"
+ "¿éÍ"
+ "¿éͧ"
+ "¿é͹"
+ "¿éÒ"
+ "À¤¹Õ"
+ "À¾"
+ "ÀÁÃ"
+ "ÀÂѹµÃÒÂ"
+ "Àõ"
+ "ÀÃÃ"
+ "ÀÃÃÂÒ"
+ "ÀÃÒ´Ã"
+ "ÀÃÔÂÒ"
+ "ÀǵѳËÒ"
+ "ÀÇѧ¤ì"
+ "ÀÑ¡´Õ"
+ "ÀÑ¡ÉÒ"
+ "ÀÑ¡ÉÒËÒÃ"
+ "Àѳ±ì"
+ "ÀѵµÒ¤ÒÃ"
+ "ÀѵµÒËÒÃ"
+ "ÀÑ·Ã"
+ "ÀѾ"
+ "ÀÑÂ"
+ "ÀÑÊ´Ò"
+ "ÀÑʵÃÒ"
+ "ÀÒ¤"
+ "ÀÒ¤Õ"
+ "ÀÒª¹Ð"
+ "ÀÒ³Ø"
+ "ÀÒ¾"
+ "ÀҾ¹µÃì"
+ "ÀÒÂ"
+ "ÀÒÃ"
+ "ÀÒáԨ"
+ "ÀÒôÕ"
+ "ÀÒõ"
+ "ÀÒÃÐ"
+ "ÀÒÃÒ"
+ "ÀÒÃâç"
+ "ÀÒǹÒ"
+ "ÀÒÇÐ"
+ "ÀÒÉ"
+ "ÀÒÉ¡"
+ "ÀÒɳì"
+ "ÀÒÉÒ"
+ "ÀÒÉÔµ"
+ "ÀÒÉÕ"
+ "ÀÒÊ¡Ã"
+ "ÀÒʹì"
+ "ÀÒÊÇÃ"
+ "ÀÔ¡¢Ò"
+ "ÀÔ¡¢Ò¨ÒÃ"
+ "ÀÔ¡¢Ø"
+ "ÀÔ¡¢Ø¹Õ"
+ "ÀÔ¡ÉÒ"
+ "ÀÔ¡ÉØ"
+ "ÀÔ¡ÉسÕ"
+ "ÀÔ§¤ÒÃ"
+ "ÀÔ­â­"
+ "ÀÔ¹·¹Ò¡ÒÃ"
+ "ÀÔ¹·ì"
+ "ÀÔÃÁÂì"
+ "Àت"
+ "Àت§¤ì"
+ "ÀØÁÃÒ"
+ "ÀØÁÃÔ¹"
+ "ÀØÁÃÕ"
+ "ÀÙ"
+ "ÀÙµ"
+ "ÀÙµÔ"
+ "ÀÙÁÔ"
+ "ÀÙÁÔ»ÃÐà·È"
+ "ÀÙÁÔÀÒ¤"
+ "ÀÙÁÔÅÓà¹Ò"
+ "ÀÙÁÔÈÒʵÃì"
+ "ÀÙÁÕ"
+ "ÀÙÃÔ"
+ "ÀÙÃÕ"
+ "ÀÙÇ´Å"
+ "ÀÙǹҶ"
+ "ÀÙÇ๵Ã"
+ "ÀÙÇä¹Â"
+ "ÀÙÉÒ"
+ "ÀÙÉÔµ"
+ "ÀÙà¡çµ"
+ "ÀÙè"
+ "Á¡"
+ "Á¡Ã"
+ "Á¡ÃÒ¤Á"
+ "Á¡Ø®"
+ "Á¡ØÅ"
+ "Á§¡Ø®"
+ "Á§¤Å"
+ "Á³±¡"
+ "Á³±»"
+ "Á³±Å"
+ "Á³Õ"
+ "Á³à±ÕÂÃ"
+ "Á´"
+ "ÁµÔ"
+ "Á¸Ø"
+ "Á¹"
+ "Á¹µÃÕ"
+ "Á¹µÃì"
+ "Á¹µì"
+ "Á¹ÊÔ¡ÒÃ"
+ "Á¹ÑÊ"
+ "Á¹ÑÊÇÕ"
+ "Á¹ÔÅÒ"
+ "Á¹ØɪҵÔ"
+ "Á¹ØɸÃÃÁ"
+ "Á¹ØÉÂÈÒʵÃì"
+ "Á¹ØÉÂÊÑÁ¾Ñ¹¸ì"
+ "Á¹ØÉÂà·¾"
+ "Á¹ØÉÂâÅ¡"
+ "Á¹ØÉÂì"
+ "Á¹à·ÕÂÃ"
+ "ÁÂØÃÒ"
+ "ÁÂØÃÕ"
+ "ÁÂØàÃÈ"
+ "ÁÂÙÃ"
+ "ÁÃ"
+ "Ááµ"
+ "ÁóÐ"
+ "Áóì"
+ "Áô¡"
+ "ÁÃä"
+ "ÁÃä¹Ò¡"
+ "ÁÃäÒ"
+ "ÁÃÃÂÒ"
+ "ÁÃÃÂÒ·"
+ "ÁÃÊØÁ"
+ "ÁĤ"
+ "ÁĵÂÙ"
+ "ÁÅ"
+ "ÁÅ·Ô¹"
+ "ÁÅÒÂ"
+ "ÁÅÒÂÙ"
+ "ÁÅéÒ§"
+ "Áǹ"
+ "ÁÇÂ"
+ "ÁÇÅ"
+ "ÁË¡ÃÃÁ"
+ "ÁËó¾"
+ "ÁËÃó¾"
+ "ÁËÃʾ"
+ "ÁËѹµâ·É"
+ "ÁËѹµì"
+ "ÁËÑȨÃÃÂì"
+ "ÁËÒ"
+ "ÁËÒª¹"
+ "ÁËÒ´àÅç¡"
+ "ÁËÒ´ä·Â"
+ "ÁËÒµÁÐ"
+ "ÁËÒÂÒ¹"
+ "ÁËÒÃÒª"
+ "ÁËÒÇÔ·ÂÒÅÑÂ"
+ "ÁËÒÈÒÅ"
+ "ÁËÒÊÁØ·Ã"
+ "ÁËÒËÔ§¤Øì"
+ "ÁËÔ§Êì"
+ "ÁËÔ´Å"
+ "ÁËÔÁÒ"
+ "ÁËÖÁÒ"
+ "ÁÍ"
+ "Áͧ"
+ "Áͧâ¡ÅÍ´ì"
+ "ÁÍ­"
+ "ÁÍ´"
+ "Á͹ÔàµÍÃì"
+ "Áͺ"
+ "ÁÍÁ"
+ "ÁÍÁáÁÁ"
+ "ÁÍÃͤâ¤"
+ "ÁÍÃì¿Õ¹"
+ "ÁÍÅâ·Ê"
+ "ÁÍÊâ¤Çì"
+ "ÁÍàµÍÃì"
+ "ÁÐ"
+ "ÁСÃÙ´"
+ "ÁС͡"
+ "ÁСÐâùÕ"
+ "ÁТÇÔ´"
+ "ÁТÒÁ"
+ "ÁТèǧ"
+ "ÁФèÒ"
+ "ÁЧÑèÇ"
+ "ÁЧØÁÁЧÒËÃÒ"
+ "ÁЫҧ"
+ "Áдѹ"
+ "ÁекÐ"
+ "ÁеÖè§"
+ "ÁеÙÁ"
+ "Áеéͧ"
+ "ÁйÒÇ"
+ "ÁлÃÒ§"
+ "ÁоÃéÒÇ"
+ "ÁоÅѺ"
+ "Áоٴ"
+ "ÁÐÁèǧ"
+ "ÁÐÂÁ"
+ "ÁÐÃÐ"
+ "ÁÐÃ×¹"
+ "ÁÐÅСÍ"
+ "ÁÐÅÔ"
+ "ÁÐËÐËÁÑ´"
+ "ÁÐÎÍ¡¡Ò¹Õ"
+ "ÁÐà¡Å×Í"
+ "ÁÐà¢×Í"
+ "ÁÐà´×èÍ"
+ "ÁÐà¿×ͧ"
+ "ÁÐàÃç§"
+ "ÁÐàÊç§"
+ "ÁÐáÁ"
+ "ÁÐâç"
+ "ÁÐä¿"
+ "ÁÑ¡"
+ "ÁÑ¡¡ÐÊѹ"
+ "ÁѤ¤Øà·È¡ì"
+ "ÁѤ¹Ò¡"
+ "ÁѦÇÒ¹"
+ "Áѧ¡Ã"
+ "Áѧ¤Ø´"
+ "Áѧ¤èÒ"
+ "ÁѨ¨Ø"
+ "ÁѨ©Ò"
+ "ÁѪ¬ÔÁÂÒÁ"
+ "ÁѪ¬ÔÁÇÑÂ"
+ "ÁѪ¬ÔÁÒ"
+ "Áѳ±¹ÈÔÅ»ì"
+ "Áѳ±¹Ò"
+ "ÁÑ´"
+ "ÁѵÊÂÒ"
+ "ÁÑ·¹Ð"
+ "ÁÑ·¹ÕÂÐ"
+ "ÁÑ·ÂÐ"
+ "ÁѸ°ҹ"
+ "ÁѸÂÁ"
+ "ÁѸÂÑʶì"
+ "Áѹ"
+ "焼"
+ "ÁÑÁÁÕè"
+ "ÁÑÂ"
+ "ÁÑŵÔ"
+ "ÁÑÅÅÔ¡Ò"
+ "ÁÑÇ"
+ "ÁÑÈÂÒ"
+ "ÁÑʵÒÃì´"
+ "ÁÑÊÁÑè¹"
+ "ÁÑÊÂÔ´"
+ "ÁÑÊÅÔ¹"
+ "ÁÑè§"
+ "ÁÑè¹"
+ "ÁÑèÇ"
+ "ÁÒ"
+ "ÁÒ¡"
+ "ÁÒ¡¡ÇèÒ"
+ "ÁÒ¦ºÙªÒ"
+ "ÁÒ¦Ð"
+ "ÁÒ³¾"
+ "ÁÒ³ÇÔ¡Ò"
+ "ÁÒ´"
+ "ÁÒµÃ"
+ "ÁҵáÒÃ"
+ "Áҵðҹ"
+ "ÁÒµÃÒ"
+ "ÁÒµØ"
+ "ÁÒµØÅÒ"
+ "ÁÒ¹"
+ "ÁÒ¹¾"
+ "ÁÒ¹Ð"
+ "ÁÒ¹Ôµ"
+ "ÁÒ¹Õ"
+ "ÁÒ¹ØÉ"
+ "ÁÒ¹ØÉÂÇÔ·ÂÒ"
+ "ÁÒºµÒ¾Ø´"
+ "ÁÒÂ"
+ "ÁÒÂÒ"
+ "ÁÒÂÒÇÕ"
+ "ÁÒÃ"
+ "ÁÒä"
+ "ÁÒôÃ"
+ "ÁÒôÒ"
+ "ÁÒÃÂÒ"
+ "ÁÒÃÂÒ·"
+ "ÁÒÃÈÃÕ"
+ "ÁÒÃص"
+ "ÁÒÅÑÂ"
+ "ÁÒÅÒàÃÕÂ"
+ "ÁÒÅÕ"
+ "ÁÒÈ"
+ "ÁÒÊ"
+ "ÁÒÊàµÍÃì"
+ "ÁÒàÅà«ÕÂ"
+ "ÁÒâ¤Ã"
+ "ÁÒ⹪­ì"
+ "ÁÓàÅ×ͧ"
+ "ÁÔ"
+ "ÁÔ¤ÊÑ­­Õ"
+ "ÁÔ¨©Ò"
+ "ÁÔ´"
+ "ÁÔµÃ"
+ "ÁÔµÔ"
+ "ÁԶعÒ¹"
+ "ÁÔÂѹÁèÒ"
+ "ÁÔÅÅÔ¡ÃÑÁ"
+ "ÁÔÅÅÔºÒÃì"
+ "ÁÔÅÅÔÅÔµÃ"
+ "ÁÔÅÅÔàÁµÃ"
+ "ÁÔÅÒµ"
+ "ÁÔÇÊÔ¤"
+ "ÁÔÊ"
+ "ÁÔÊ«Ò"
+ "ÁÔÊàµÍÃì"
+ "ÁÔàµÍÃì"
+ "ÁÔè§"
+ "ÁÔéÁ"
+ "ÁÕ"
+ "ÁÕ´"
+ "ÁÕ¹"
+ "ÁÕ¹Ò¤Á"
+ "ÁÕà·¹"
+ "ÁÕè"
+ "ÁÕèÊÑéÇ"
+ "ÁÖ§"
+ "ÁÖ¹"
+ "Á×´"
+ "Á×¹"
+ "Á×Í"
+ "Á×è¹"
+ "Á×éÍ"
+ "ÁØ"
+ "ÁØ¡"
+ "ÁØ¡´Ò"
+ "ÁØ¡´ÒËÒÃ"
+ "ÁØ¢"
+ "篤"
+ "ÁبÅÔ¹·ì"
+ "ÁØ´"
+ "Áص¡Ô´"
+ "ÁØ·ÔµÒ"
+ "ÁØ·Ø"
+ "ÁعԹ·Ãì"
+ "ÁعÕ"
+ "篼"
+ "ÁغÁÔº"
+ "ÁØÁ"
+ "ÁØÊÅÔÁ"
+ "ÁØÊÒ"
+ "ÁØè§"
+ "ÁØè¹"
+ "ÁØèÂ"
+ "ÁØé§"
+ "ÁÙ¡"
+ "ÁÙµÃ"
+ "ÁÙ¹"
+ "ÁÙÁÁÒÁ"
+ "ÁÙÅ"
+ "ÁÙŤèÒ"
+ "ÁÙÅ°Ò¹"
+ "ÁÙŹԸÔ"
+ "ÁÙà«Í"
+ "ÁÙè·Ùè"
+ "ÁÙèÅÕè"
+ "ÁàËÈÇÃ"
+ "ÁàËÊÕ"
+ "ÁàËÒÌÒÃ"
+ "Áâ¹"
+ "Áâ¹ÃÒËì"
+ "Áâ¹ÊÒàÃè"
+ "ÁâËÃʾ"
+ "ÁâËÃз֡"
+ "ÁâËÃÕ"
+ "ÁâËÌÒÃ"
+ "Áèǧ"
+ "Áèǹ"
+ "Áè͵éÍ"
+ "ÁèÍÂ"
+ "ÁèÍÎèÍÁ"
+ "ÁèÒ¹"
+ "ÁèÒÂ"
+ "Áéǹ"
+ "ÁéÇÂ"
+ "ÁéÒ"
+ "ÁéÒ¹"
+ "ÁéÒÁ"
+ "¡"
+ "¡Âèͧ"
+ "§"
+ "§âÂè"
+ "µÔ"
+ "¶ҡÃÃÁ"
+ "¹µÃì"
+ "¹µì"
+ "ÂÁ"
+ "ÂÁ¡"
+ "ÂÃç"
+ "ÂÅ"
+ "傤"
+ "ÂÇ´"
+ "Âǹ"
+ "傼"
+ "ÂÈ"
+ "ÂÍ"
+ "ÂÍ¡"
+ "Âͧ"
+ "ÂÍ´"
+ "Â͹"
+ "Âͺ"
+ "ÂÍÁ"
+ "ÂÐ"
+ "ÂÑ¡"
+ "ÂÑ¡¢Ô¹Õ"
+ "ÂÑ¡¢ì"
+ "ÂÑ¡ÂÍ¡"
+ "ÂÑ¡ÉÔ³Õ"
+ "ÂÑ¡ÉÕ"
+ "ÂÑ¡Éì"
+ "儤"
+ "ÂÑ´"
+ "ÂÑ´àÂÕ´"
+ "Âѹ"
+ "ÂѹµÃ¡ÃÃÁ"
+ "ÂѹµÃì"
+ "Âѹµì"
+ "儼"
+ "ÂÑè§Â×¹"
+ "ÂÑè¹"
+ "ÂÑèÇ"
+ "ÂÑé§"
+ "ÂÑéÇ"
+ "ÂÑéÇàÂÕéÂ"
+ "ÂÒ"
+ "ÂÒ¡"
+ "ÂÒ§"
+ "ÂÒ¨¡"
+ "ÂÒ´"
+ "ÂÒ´Ò"
+ "ÂÒµÃ"
+ "ÂÒµÃÒ"
+ "ÂÒ¹"
+ "ÂÒ¹Õ"
+ "ÂÒº"
+ "ÂÒºéÒ"
+ "ÂÒÁ"
+ "ÂÒÂ"
+ "ÂÒÇ"
+ "ÂÓ"
+ "ÂÔ¡"
+ "ÂÔ§"
+ "ÂÔ¹"
+ "ÂÔº"
+ "ÂÔ»«ÑÁ"
+ "ÂÔ»«Õ"
+ "ÂÔÁ¹Òʵԡ"
+ "ÂÔÇ"
+ "ÂÔËÇÒ"
+ "ÂÔè§"
+ "ÂÔéÁ"
+ "ÂÕ"
+ "ÂÕ¹"
+ "ÂÕÃÒ¿"
+ "ÂÕè"
+ "ÂÕèÊ¡"
+ "ÂÕèʧ"
+ "ÂÕèÊØè¹"
+ "ÂÕèÊèÒ¹"
+ "ÂÕèËÃÐ"
+ "ÂÕèËÃèÒ"
+ "ÂÕèËéÍ"
+ "ÂÖ¡Â×Í"
+ "ÂÖ´"
+ "Â×´"
+ "Â×¹"
+ "Â×Á"
+ "Â×è¹"
+ "Â×éÍ"
+ "ÂØ"
+ "ÂØ¡µì"
+ "Âؤ"
+ "ÂؤÅ"
+ "寤"
+ "ÂØ´"
+ "ÂصÔ"
+ "ÂصԸÃÃÁ"
+ "ÂØ·¸"
+ "ÂØ·¸¡ÒÃ"
+ "ÂØ·¸¹Ò"
+ "ÂØ·¸ì"
+ "Âط⸻¡Ã³ì"
+ "导"
+ "Âؾ´Õ"
+ "Âؾ§"
+ "ÂؾÃÒª"
+ "ÂؾàÂÒÇì"
+ "ÂؾàÃÈ"
+ "ÂØÃÂÒµÃ"
+ "ÂØǪ¹"
+ "ÂØâû"
+ "ÂØè§"
+ "ÂØèÁÂèÒÁ"
+ "ÂØèÂ"
+ "ÂØé§"
+ "ÂØéÂ"
+ "ÂÙ§"
+ "ÂÙ¹Ô¡«ì"
+ "ÂÙÃÂÒµÃ"
+ "ÂÙÃÔ¡"
+ "ÂÙÊà«ÍÃì"
+ "ÂÙàùÑÊ"
+ "ÂÙàÃà¹ÕÂÁ"
+ "ÂÙâ¡ÊÅÒàÇÕÂ"
+ "ÂÙâ´"
+ "ÂÙâÃ"
+ "ÂÙè"
+ "ÂâÊ"
+ "Âè¹"
+ "ÂèÍ"
+ "Âèͧ"
+ "ÂèÍÁ"
+ "ÂèÍÂ"
+ "ÂèÐ"
+ "ÂèÒ"
+ "ÂèÒ§"
+ "ÂèÒ¹"
+ "ÂèÒÁ"
+ "ÂèÓ"
+ "ÂéÇÂ"
+ "Âé͹"
+ "ÂéÍÁ"
+ "ÂéÍÂ"
+ "ÂéÒÂ"
+ "ÂéÓ"
+ "á"
+ "ç"
+ "ç¤Çѵ¶Ø"
+ "ç¤ì"
+ "è¹Ò"
+ "èԵ"
+ "èàè"
+ "èàÅ¢"
+ "ó"
+ "óѰ"
+ "ô"
+ "ôÕ"
+ "õÐ"
+ "õÔ"
+ "ö"
+ "öàÁÅì"
+ "ù"
+ "ú"
+ "þ"
+ "þÕ"
+ "ÃÁ"
+ "ÃÁ³Õ"
+ "ÃÁ³ÕÂì"
+ "ÃÁÂì"
+ "ÃÂÒ§¤ì"
+ "ÃÇ¡"
+ "Ãǧ"
+ "ÃÇ´"
+ "Ãǹ"
+ "ÃǹàÃ"
+ "ÃǺ"
+ "ÃÇÁ"
+ "ÃÇÂ"
+ "ÃÇÔ"
+ "ÃÇÕ"
+ "ÃȹÒ"
+ "ÃÊ"
+ "ÃʹÒ"
+ "ÃÊÒ¹àÇ·"
+ "ÃÊÔ¡"
+ "ÃËÑÊ"
+ "ÃËÔµ"
+ "ÃÍ"
+ "ÃÍ¡"
+ "Ãͧ"
+ "Ãͧà§ç§"
+ "ÃÍ´"
+ "Ã͹"
+ "Ãͺ"
+ "Ãͺ¤Íº"
+ "ÃÍÁ"
+ "ÃÍÂ"
+ "ÃÐ"
+ "ÃСÓ"
+ "ÃФ¹"
+ "ÃФÒÂ"
+ "ÃЦѧ"
+ "ÃЧÁ"
+ "ÃЧѺ"
+ "ÃдÁ"
+ "ÃдѺ"
+ "ÃдÙ"
+ "Ãз´"
+ "ÃзÁ"
+ "ÃзÇÂ"
+ "Ãз֡"
+ "ÃйҴ"
+ "ÃйҺ"
+ "ÃйÒÇ"
+ "Ãкº"
+ "ÃкÁ"
+ "Ãкͺ"
+ "ÃкѺ"
+ "Ãкҭ"
+ "ÃкҴ"
+ "ÃкÒÂ"
+ "ÃкÓ"
+ "ÃкÔÅ"
+ "Ãк×Í"
+ "ÃкØ"
+ "ÃÐÂÐ"
+ "ÃÐÂѺ"
+ "ÃÐÂÓ"
+ "ÃÐÂÔº"
+ "ÃÐÂéÒ"
+ "ÃÐÃÔ¡"
+ "ÃÐÅÍ¡"
+ "ÃÐÅÖ¡"
+ "ÃÐÇѧ"
+ "ÃÐÇÒ§"
+ "ÃÐËÇèÒ§"
+ "ÃÐËØÂ"
+ "ÃÐÍÒ"
+ "ÃÐÍØ"
+ "ÃÐ๹"
+ "ÃÐà¹ÃйҴ"
+ "ÃÐà¹Õ´"
+ "ÃÐàºÔ´"
+ "ÃÐàºÕ§"
+ "ÃÐàºÕ¹"
+ "ÃÐàºÕº"
+ "ÃÐàºç§"
+ "ÃÐàÁÕÂÃ"
+ "ÃÐàËÂ"
+ "ÃÐàËÔ´"
+ "ÃÐàËç¨"
+ "ÃÐá¤Ð"
+ "ÃÐá§é"
+ "ÃÐṧ"
+ "ÃÐáǧ"
+ "ÃÑ¡"
+ "ÃÑ¡¢ì"
+ "ÃÑ¡ºÕé"
+ "ÃÑ¡ÉÒ"
+ "ÃÑ¡Éì"
+ "ÃÑ¡áÃé"
+ "Ãѧ"
+ "ÃѧÊÔµ"
+ "ÃѧÊÕ"
+ "Ãѧá¡"
+ "Ãѧá¤"
+ "ÃѨ©Ò"
+ "ÃѪ"
+ "ÃѪ®ÒÀÔàÉ¡"
+ "ÃѪ´ÒÀÔàÉ¡"
+ "ÃѪ¹Õ"
+ "ÃÑ­¨Ç¹"
+ "ÃÑ°"
+ "ÃÑ°ºÒÅ"
+ "ÃÑ°ºØÃØÉ"
+ "ÃÑ°»ÃÐÈÒʹÈÒʵÃì"
+ "ÃÑ°»ÃÐËÒÃ"
+ "ÃÑ°Á¹µÃÕ"
+ "ÃÑ°ÇÔÊÒË¡Ô¨"
+ "ÃÑ°ÈÒʵÃì"
+ "ÃÑ°ÊÀÒ"
+ "ÃÑ´"
+ "Ãѵ"
+ "ÃѵµÔ"
+ "Ãѵ¹"
+ "Ãѵ¹µÃÑÂ"
+ "Ãѵ¹ºÑÅÅѧ¡ì"
+ "Ãѵ¹Ð"
+ "Ãѵ¹Ò"
+ "Ãѵ¹â¡ÊÔ¹·Ãì"
+ "Ãѵ¹ì"
+ "ÃѶÂÒ"
+ "Ãѹ"
+ "Ãѹ·´"
+ "ÃѺ"
+ "ÃѺÃͧ"
+ "ÃÑÁÀÒ"
+ "ÃÑÁÁÕè"
+ "ÃÑÇ"
+ "ÃÑÈÁÔÁѵ"
+ "ÃÑÈÁÔÁÒ¹"
+ "ÃÑÈÁÕ"
+ "ÃÑɮҡÃ"
+ "ÃÑÊà«ÕÂ"
+ "ÃÑèÇ"
+ "ÃÑé§"
+ "ÃÑé¹"
+ "ÃÑéÇ"
+ "ÃÒ"
+ "ÃÒ¡"
+ "ÃÒ¡ÉÊ"
+ "ÃÒ¤Ð"
+ "ÃÒ¤Ò"
+ "ÃÒ¤Ô¹"
+ "ÃÒ¤Õ"
+ "ÃÒ§"
+ "ÃÒ§ªÒ§"
+ "ÃÒ§ÇÑÅ"
+ "ÃÒª"
+ "ÃÒª¡ÒÃ"
+ "ÃÒª¹Ô¡ØÅ"
+ "ÃÒªºÑ³±ÔµÂʶҹ"
+ "ÃÒªÂì"
+ "ÃҪǧÈì"
+ "ÃÒªÇâç¡ÒÃ"
+ "ÃÒªÊÕÁÒ"
+ "ÃÒªÊÕËì"
+ "ÃҪѹÂì"
+ "ÃÒªÒ"
+ "ÃÒªÒ¸ÔÃÒª"
+ "ÃÒªÒÀÔàÉ¡"
+ "ÃÒªÒÇ´Õ"
+ "ÃÒªÔ¹Ô¡ØÅ"
+ "ÃÒªÔ¹Õ"
+ "ÃÒªÔ¹Ù»¶ÑÁÀì"
+ "ÃÒªÙ»¶ÑÁÀì"
+ "ÃÒªÙ»âÀ¤"
+ "ÃÒ­"
+ "ÃÒ´"
+ "ÃÒµ"
+ "ÃÒµÃ"
+ "ÃÒµÃÕ"
+ "ÃÒ¹"
+ "ÃÒº"
+ "ÃÒ¾³ÒÊÙÃ"
+ "ÃÒÁ"
+ "ÃÒÁ¤Óá˧"
+ "ÃÒÁÊÙÃ"
+ "ÃÒÁÑ­"
+ "ÃÒÁÒ"
+ "ÃÒÁÒ¸Ôº´Õ"
+ "ÃÒÁà¡ÕÂõÔì"
+ "ÃÒÂ"
+ "ÃÒ¡ÒÃ"
+ "ÃÒ§ҹ"
+ "ÃÒÇ"
+ "ÃÒÇÕ"
+ "ÃÒÈÕ"
+ "ÃÒÉ®Ã"
+ "ÃÒÉ®Ãì"
+ "ÃÒËÙ"
+ "ÃÒહ·Ãì"
+ "ÃÒ⪺ÒÂ"
+ "ÃÒâªÇÒ·"
+ "ÃÓ"
+ "ÃÓ¤Ò­"
+ "ÃӨǹ"
+ "ÃӾѹ"
+ "ÃÓ¾Ö§"
+ "ÃÓÁйÒ"
+ "ÃÓÅÖ¡"
+ "ÃÓà¾Â"
+ "ÃÔ"
+ "ÃÔ¡"
+ "ÃÔ´Êմǧ"
+ "ÃÔ¹"
+ "ÃÔº"
+ "ÃÔººÔé¹"
+ "ÃÔÁ"
+ "ÃÔÉÂÒ"
+ "ÃÔé¹"
+ "ÃÔéÇ"
+ "ÃÕ"
+ "ÃÕ¨ÔÊ·ÃÕ"
+ "ÃÕ´"
+ "ÃÕµ"
+ "ÃÕº"
+ "ÃÕÁ"
+ "ÃÕÇÔÇ"
+ "ÃÕàÊÔÃìª"
+ "ÃÕàÊÔÃì«"
+ "ÃÕâÁµ"
+ "ÃÕè"
+ "ÃÕé"
+ "ÃÖ§"
+ "ÃÖé§"
+ "Ã×è¹"
+ "Ã×éÍ"
+ "ÃØ"
+ "ÃØ¡"
+ "ÃØ¡¢¡Ð"
+ "ÃØ¡¢ªÒµÔ"
+ "ÃØ¡¢ÁÙÅ"
+ "ÃØ¡¢à·Ç´Ò"
+ "ÃØ¡¢ì"
+ "ÃاÃѧ"
+ "ÃبÔ"
+ "ÃبÕ"
+ "ÃØ´"
+ "Ãص"
+ "ÃØ·¸ì"
+ "ÃØ·Ã"
+ "Ãع"
+ "Ãعáç"
+ "ÃغÃÙè"
+ "ÃØÁ"
+ "ÃØɯì"
+ "ÃØÊâ«"
+ "ÃØè§"
+ "ÃØè¹"
+ "ÃØèÁ"
+ "ÃØèÁÃèÒÁ"
+ "ÃØèÂ"
+ "ÃØé§"
+ "ÃÙ"
+ "ÃÙ´"
+ "ÃÙ»"
+ "ÃÙÁÒà¹ÕÂ"
+ "ÃÙÊà«ÕÂ"
+ "ÃÙàÁà¹ÕÂ"
+ "ÃÙàÅçµµì"
+ "ÃÙè"
+ "ÃÙé"
+ "ÃÙé¨Ñ¡"
+ "ÃâË"
+ "Ãè¹"
+ "ÃèÁ"
+ "Ãèǧ"
+ "Ãèǹ"
+ "ÃèÇÁ"
+ "ÃèÍ"
+ "Ãèͧ"
+ "Ãè͹"
+ "ÃèÍÂ"
+ "ÃèÒ"
+ "ÃèÒ§"
+ "ÃèÒ¹"
+ "ÃèÒÂ"
+ "ÃèÓ"
+ "ÃèÓÃÇÂ"
+ "Ãé¹"
+ "Ãéͧ"
+ "Ãé͹"
+ "ÃéÍÂ"
+ "ÃéÒ"
+ "ÃéÒ§"
+ "ÃéÒ¹"
+ "ÃéÒÂ"
+ "ÃéÒÇ"
+ "Ä¡Éì"
+ "ĪÒ"
+ "ĪØ"
+ "ij"
+ "Ä´Õ"
+ "Ä´Ù"
+ "ĵ"
+ "Ä·¸Ò"
+ "Ä·¸Ôì"
+ "Ä·ÑÂ"
+ "ÄÉÀ"
+ "ÄÉÕ"
+ "Äå"
+ "ŧ"
+ "Å´"
+ "Å´Ò"
+ "Å´ÒÇÑÅÂì"
+ "Ź"
+ "ź"
+ "žºØÃÕ"
+ "ÅÁ"
+ "ÅŹÒ"
+ "ÅÅÒ¯"
+ "ÅÅÔµ"
+ "ÅÇ¡"
+ "Åǧ"
+ "ÅÇ´"
+ "ÅǹÅÒÁ"
+ "ÅǹÐ"
+ "ÅÇÐ"
+ "ÅËØ"
+ "ÅÍ¡"
+ "ÅÍ¡ÒÃÔ·ÖÁ"
+ "Åͧ"
+ "Åͧ¡Í§"
+ "Åͧ¨Ô¨Ù´"
+ "ÅÍ´"
+ "Å͵àµÍÃÕè"
+ "Å͹"
+ "Å͹´Í¹"
+ "Åͺ"
+ "ÅÍÁ"
+ "ÅÍÂ"
+ "ÅÍÍ"
+ "ÅÐ"
+ "ÅФÃ"
+ "ÅеԨٴ"
+ "ÅеԹ"
+ "ÅкѴ"
+ "ÅÐÁÑè§"
+ "ÅÐÁع"
+ "ÅÐÁèÍÁ"
+ "ÅÐÁéÒÂ"
+ "ÅÐÅÇÂ"
+ "ÅÐËÁÒ´"
+ "ÅÐËÒ¹"
+ "ÅÐËØè§"
+ "ÅÐÍͧ"
+ "ÅÐÍÒÂ"
+ "ÅÐàÁÍ"
+ "ÅÐàÁÒÐ"
+ "ÅÐàÁÔ´"
+ "ÅÐàÁÕ´"
+ "ÅÐàŧ"
+ "ÅÐàÅÔ§"
+ "ÅÐàÅÕ´"
+ "ÅÐàǧ"
+ "ÅÐàËÕèÂ"
+ "ÅÐàÍÕ´"
+ "ÅÐáÇ¡"
+ "ÅÐâÁº"
+ "ÅÐâÇé"
+ "ÅÐäÁ"
+ "ÅÑ¡"
+ "ÅÑ¡¢³Ð"
+ "ÅѡɳÐ"
+ "ÅÑ¡ÉÁÕ"
+ "ÅѤ¤Ð"
+ "ÅѤ¹Ò"
+ "ÅѤ¹ì"
+ "Åѧ"
+ "ÅѧàÅ"
+ "ÅѪªÒ"
+ "ÅѪªÕ"
+ "ÅÑ­¨¡Ã"
+ "ÅÑ­¨¹ì"
+ "ÅÑ­©"
+ "ÅÑ­©¡Ã"
+ "ÅÑ­©¹ì"
+ "ÅÑ´"
+ "ÅÑ´Ò"
+ "ÅÑ·¸Ô"
+ "ÅÑ·¸ì"
+ "Åѹ"
+ "ÅѺ"
+ "ÅѾ¸ì"
+ "ÅÑÂ"
+ "ÅÑè¹"
+ "ÅÑè¹·Á"
+ "ÅÒ"
+ "ÅÒ¡"
+ "ÅÒ§"
+ "ÅÒ­"
+ "ÅÒ´"
+ "ÅÒ¹"
+ "ÅÒº"
+ "ÅÒ»"
+ "ÅÒÀ"
+ "ÅÒÁ"
+ "ÅÒÁ¡"
+ "ÅÒÂ"
+ "ÅÒÂÊ×Í"
+ "ÅÒŹÐ"
+ "ÅÒÅÊ"
+ "ÅÒÇ"
+ "ÅÒÇ¡"
+ "ÅÒÇѳÂì"
+ "ÅÒÇÒ"
+ "ÅÒʹÐ"
+ "ÅÓ"
+ "ÅӴǹ"
+ "ÅӴѺ"
+ "ÅÓºÒ¡"
+ "ÅӾǹ"
+ "ÅӾͧ"
+ "ÅӾѧ"
+ "ÅÓÀآѹ"
+ "ÅÓÂͧ"
+ "ÅÓà¤ç­"
+ "ÅÓà¨Õ¡"
+ "ÅÓà¹Ò"
+ "ÅÓà¾Ò"
+ "ÅÓàÅÔ¡"
+ "ÅÓàÅÕ§"
+ "ÅÓ⾧"
+ "ÅÓäÂ"
+ "ÅÔ"
+ "ÅÔ¡ä¹µì"
+ "ÅÔ¢ÊÔ·¸Ôì"
+ "ÅÔ¢Ôµ"
+ "ÅÔ§"
+ "ÅÔ§¡ì"
+ "ÅÔ§¤ì"
+ "ÅÔ´"
+ "ÅÔµ"
+ "ÅÔµÁÑÊ"
+ "ÅÔµÃ"
+ "ÅÔ¹Ô¹"
+ "ÅÔº"
+ "ÅÔ»´Ò"
+ "ÅÔ»µì"
+ "ÅԻʵԡ"
+ "ÅÔ»Ô"
+ "ÅÔ¿µì"
+ "ÅÔÅÔµ"
+ "ÅÔÇ"
+ "ÅÔʧ"
+ "ÅÔà¡"
+ "ÅÔàºÕÂ"
+ "ÅÔàÇÍÃì¾ÙÅ"
+ "ÅÔèÁ"
+ "ÅÔèÇ"
+ "ÅÔé¹"
+ "ÅÔ鹨Õè"
+ "ÅÔéÁ"
+ "ÅÕ"
+ "ÅÕ¡"
+ "Åչء«ì"
+ "ÅÕº"
+ "ÅÕÅÒ"
+ "ÅÕÅÒÈ"
+ "ÅÕè"
+ "ÅÕé"
+ "ÅÖ¡"
+ "ÅÖ§¤ì"
+ "Å×´"
+ "Å׺"
+ "Å×Á"
+ "Å×Í"
+ "Å×è¹"
+ "Å×èÍ"
+ "Å×é¹"
+ "Å×éÍ"
+ "ÅØ"
+ "ÅØ¡"
+ "Åا"
+ "ÅØÂ"
+ "ÅØè¹"
+ "ÅØèÁ"
+ "ÅØèÂ"
+ "ÅØé§"
+ "ÅØéÂ"
+ "ÅÙ¡"
+ "ÅÙ¡¤éÒ"
+ "ÅÙ¡ºÒÈ¡ì"
+ "ÅÙº"
+ "ÅÙè"
+ "Åç͡ࡵ"
+ "Åè¹"
+ "ÅèÁ"
+ "Åèǧ"
+ "ÅèÇÁ"
+ "ÅèÍ"
+ "Åèͧ"
+ "Åè͹"
+ "ÅèÍÂ"
+ "ÅèÍáÅè"
+ "ÅèÐ"
+ "ÅèÒ"
+ "ÅèÒ§"
+ "ÅèÒ¹"
+ "ÅèÒÁ"
+ "ÅèÓ"
+ "Åé§àÅé§"
+ "Åé¹"
+ "ÅéÁ"
+ "Åéǧ"
+ "Åéǹ"
+ "ÅéÍ"
+ "ÅéÍÁ"
+ "ÅéÒ"
+ "ÅéÒ§"
+ "ÅéÒµéÒ"
+ "ÅéÒ¹"
+ "ÅéÓ"
+ "Ç¡"
+ "Ç¡Ð"
+ "ǧ"
+ "ǧ¡µ"
+ "ǧ¡ì"
+ "ǧ¨Ã"
+ "ǧȡÃ"
+ "ǧÈÒ"
+ "ǧÈì"
+ "Ǩ¹Ð"
+ "ǨÐ"
+ "ǨÕ"
+ "ǪÐ"
+ "ǪÔÃÐ"
+ "ǪÔÃÒÇظ"
+ "dzºÑµÃ"
+ "dz¾Ñ¹¸¹ì"
+ "dzÐ"
+ "dzԪ"
+ "dzԪªÒ"
+ "dzԪÂÒ"
+ "dzԪÂì"
+ "dzԾ¡"
+ "Ç´Õ"
+ "ǵÐ"
+ "Ç·Ð"
+ "Ç·Ñ­­ØµÒ"
+ "ǸءÒ"
+ "ǸÙ"
+ "ǹ"
+ "ǹÑÊ"
+ "ǹÒ"
+ "ǹҹµì"
+ "ǹԴÒ"
+ "ǹԾ¡"
+ "ÇÂÑÊÂì"
+ "Çç¤ì"
+ "ÇóÐ"
+ "ÇÃÁËÒÇÔËÒÃ"
+ "ÇÃä"
+ "ÇÃäÂì"
+ "ÇÃê"
+ "ÇÃêÂì"
+ "ÇÃó¡ÃÃÁ"
+ "ÇÃó¤´Õ"
+ "ÇÃó¹Ò"
+ "ÇÃó¾ÄµÔ"
+ "ÇÃóÂØ¡µì"
+ "ÇÃóÂص"
+ "ÇÃóÈÔÅ»ì"
+ "ÇÃóÐ"
+ "ÇÃó֡"
+ "ÇÃø¡"
+ "ÇÃø¹Ð"
+ "ÇÃÃÉ"
+ "ÇÃÃÉÒ"
+ "ÇÃÇÔËÒÃ"
+ "ÇÃÑ­­Ù"
+ "ÇÃÒ§¤¹Ò"
+ "ÇÃÒËÐ"
+ "ÇÃÒËì"
+ "ÇÃس"
+ "ÇÅÑ­ª¹ì"
+ "ÇÅÑÂ"
+ "ÇÅÒË¡"
+ "ÇÅÕ"
+ "ÇÈÐ"
+ "ÇÊÊÐ"
+ "ÇÊÊÕ"
+ "ÇÊÐ"
+ "ÇÊѹµ´ÔÅ¡"
+ "ÇÊѹµì"
+ "ÇÊÒ"
+ "ÇÊÕ"
+ "ÇÊØ"
+ "ÇÊظÒ"
+ "ÇÊع¸ÃÒ"
+ "ÇÊØÁ´Õ"
+ "ÇËÐ"
+ "ÇËÒ"
+ "ÇÍ"
+ "ÇÍ¡"
+ "ÇÍ¡áÇ¡"
+ "ÇÍ´"
+ "Ç͹"
+ "ÇÍÃìáù·ì"
+ "ÇÍÅÅìʵÃÕ·"
+ "ÇÍÅàÅÂì"
+ "ÇÍÅàÅÂìºÍÅ"
+ "ÇÍáÇ"
+ "ÇÐ"
+ "ÇÑ¡"
+ "ÇÑ¡¡Ð"
+ "ÇѤ"
+ "ÇѤ¤ÕÂì"
+ "ÇѤ¤Ø"
+ "ÇѤ«Õ¹"
+ "Çѧ"
+ "Çѧ¡ì"
+ "Çѧàǧ"
+ "ÇѨ¹Ð"
+ "ÇѪ"
+ "ÇѪ¬ì"
+ "ÇѪÃÐ"
+ "ÇѪÃÔ¹·Ãì"
+ "ÇѪÃÕ"
+ "Çѯ¨Ñ¡Ã"
+ "Çѯ¯Ô"
+ "ÇѯʧÊÒÃ"
+ "ÇѲ¡Ð"
+ "ÇѲ¡Õ"
+ "ÇѲ¹¸ÃÃÁ"
+ "ÇѲ¹Ð"
+ "ÇѲ¹Ò"
+ "Çѳ"
+ "Çѳ¯ì"
+ "Çѳ¹Ò"
+ "ÇÑ´"
+ "Çѵ"
+ "ÇѵµÒ"
+ "Çѵµì"
+ "Çѵ¶Ø"
+ "Çѵ¶ì"
+ "Çѵ¹Ð"
+ "ÇѵÃ"
+ "ÇѵÔ"
+ "Çѹ"
+ "Çѹ·¹Ò"
+ "Çѹ·¹ÕÂì"
+ "Çѹ·ÂËѵ¶ì"
+ "Çѹ·ÂÒÇظ"
+ "Çѹ·Ò"
+ "ÇѺ"
+ "ÇÑ»»Ð"
+ "ÇÑÁÁÔ¡"
+ "ÇÑÂ"
+ "ÇÑÅÂì"
+ "ÇÑÅÅÀ"
+ "ÇÑÅÅÕ"
+ "ÇÑÇ"
+ "ÇÑÊ´Ø"
+ "ÇÑÊÊÐ"
+ "ÇÑÊÊÒ¹Ð"
+ "ÇÑÊâÊ·¡"
+ "ÇÒ"
+ "ÇÒ¡"
+ "ÇÒ¡ÂÊÑÁ¾Ñ¹¸ì"
+ "ÇÒ¡ÂÐ"
+ "ÇÒ§"
+ "ÇÒ¨¡"
+ "ÇÒ¨Ò"
+ "ÇÒ³Ôª"
+ "ÇÒ³ÔªÂì"
+ "ÇÒ³Õ"
+ "ÇÒ´"
+ "ÇÒµÀÑÂ"
+ "ÇÒµÐ"
+ "ÇÒ·"
+ "ÇÒ·¡"
+ "Çҷ¡Ã"
+ "ÇÒ·Âì"
+ "ÇÒ·Ôµ"
+ "ÇÒ·Ô¹"
+ "ÇÒ·Õ"
+ "ÇÒ¹"
+ "ÇÒ¹Ã"
+ "ÇÒ¹ÃÔ¹·Ãì"
+ "ÇÒº"
+ "ÇÒ»Ð"
+ "ÇÒ»ÔµÐ"
+ "ÇÒ»Õ"
+ "ÇÒÁ"
+ "ÇÒÁÐ"
+ "ÇÒÂ"
+ "ÇÒ·Ùà¤"
+ "ÇÒÂÊÐ"
+ "ÇÒÃ"
+ "ÇÒÃÊÒÃ"
+ "ÇÒÃÔ"
+ "ÇÒÃÕ"
+ "ÇÒÃس"
+ "ÇÒÃسÕ"
+ "ÇÒÅ"
+ "ÇÒÅìÇ"
+ "ÇÒÇ"
+ "ÇÒʹÐ"
+ "ÇÒʹÒ"
+ "ÇÒʾ"
+ "ÇÒËÐ"
+ "ÇÒËÔ¹Õ"
+ "ÇÒÌ"
+ "ÇÔ¡ÃÁ"
+ "Çԡĵ"
+ "Çԡĵ¡Òóì"
+ "ÇԡĵÔ"
+ "ÇÔ¡Å"
+ "ÇÔ¡ÊÔµ"
+ "ÇÔ¡Ñ»"
+ "ÇÔ¡ÒÅ"
+ "ÇÔ¤ËÐ"
+ "ÇÔ§"
+ "ÇÔ§Ç͹"
+ "ÇÔ¨Âص"
+ "ÇԨóÐ"
+ "ÇÔ¨Å"
+ "ÇԨѡ¢³ì"
+ "ÇԨѡɳì"
+ "ÇÔ¨ÑÂ"
+ "ÇÔ¨ÒÃ"
+ "ÇÔ¨Òó­Ò³"
+ "ÇÔ¨Òóì"
+ "ÇÔ¨Ô"
+ "ÇÔ¨Ô¡Ô¨©Ò"
+ "ÇÔ¨Ôµ"
+ "ÇÔ¨ÔµÃ"
+ "ÇÔ¨Ô¹"
+ "ÇԨس"
+ "ÇÔ¨Øó"
+ "ÇÔªªÒ"
+ "ÇÔªªØ"
+ "ÇÔªªØÅ´Ò"
+ "ÇÔª­Ð"
+ "ÇÔª¹Õ"
+ "ÇÔªÒ"
+ "ÇÔªÒ¹¹Ð"
+ "ÇÔªÔµ"
+ "ÇÔ­­ÑµÔ"
+ "ÇÔ­­Ò³"
+ "ÇÔ­­Ù"
+ "ÇÔ±ÙÃÂì"
+ "ÇÔ´"
+ "ÇÔ´ÕâÍ"
+ "ÇÔµ¡"
+ "ÇÔµ¶ÒÃ"
+ "ÇÔµÒÁÔ¹"
+ "ÇÔ¶Õ"
+ "ÇԷ°ҹÐ"
+ "ÇÔ·ÂÒ"
+ "ÇÔ·ÂÒÅÑÂ"
+ "ÇÔ·ÂØ"
+ "ÇÔ·Âص"
+ "ÇÔ·ÇÑÊ"
+ "ÇÔ·Òóì"
+ "ÇÔ·ÒŹì"
+ "ÇÔ·Ôµ"
+ "ÇÔ·Ù"
+ "ÇÔ·ÙÃ"
+ "ÇÔ¸"
+ "ÇÔ¸ÇÒ"
+ "ÇÔ¸Ò"
+ "ÇÔ¸Ò¹"
+ "ÇÔ¸Õ"
+ "ÇÔ¸Ù»¹Ð"
+ "ÇԹѹµÙ"
+ "ÇÔ¹ÑÂ"
+ "ÇÔ¹Ò·Õ"
+ "ÇÔ¹ÒÈ"
+ "ÇÔ¹Ô¨"
+ "ÇÔ¹Ô¨©ÑÂ"
+ "ÇÔ¹Ôµ"
+ "ÇÔ¹ÔºÒµ"
+ "ÇÔ¹Ô»ÒµÔ¡"
+ "ÇÔ¹â´ÇÊì"
+ "ÇÔ¹â´Çì"
+ "ÇԺѵÔ"
+ "ÇÔºÒ¡"
+ "ÇÔºØÅ"
+ "ÇÔºØÅÂì"
+ "ÇÔºÙÅ"
+ "ÇÔºÙÅÂì"
+ "ÇÔ»¡ÒÃ"
+ "ÇÔ»¯ÔÊÒÃ"
+ "ÇÔ»ÃСÒÃ"
+ "ÇÔ»ÃеÔÊÒÃ"
+ "ÇÔ»ÃÐÅÒ»"
+ "ÇÔ»ÃÐÇÒÊ"
+ "ÇÔ»ÃÔµ"
+ "ÇÔ»ÅÒ»"
+ "ÇÔ»ÅÒÊ"
+ "ÇÔ»ÇÒÊ"
+ "ÇԻѡÉì"
+ "ÇÔ»ÑÊÊ¡"
+ "ÇÔ»ÑÊʹÒ"
+ "ÇÔ»â¤"
+ "ÇÔ¾Ò¡Éì"
+ "ÇÔ¾Ô¸·ÑȹÒ"
+ "ÇÔÀǵѳËÒ"
+ "ÇÔÀѧ¤ì"
+ "ÇÔÀѪ"
+ "ÇÔÀѵµÔ"
+ "ÇÔÀÒ"
+ "ÇÔÀÒÇ´Õ"
+ "ÇÔÁѵÔ"
+ "ÇÔÁص"
+ "ÇÔÁصµÔ"
+ "ÇÔõÐ"
+ "ÇÔÃÁ³Ð"
+ "ÇÔÃÃø¹ì"
+ "ÇÔÃÇÐ"
+ "ÇÔÃѪ"
+ "ÇÔÃѵ"
+ "ÇÔÃѵÔ"
+ "ÇÔÃÔÂÀÒ¾"
+ "ÇÔÃÔÂÐ"
+ "ÇÔÃظ"
+ "ÇÔÃØÌË¡"
+ "ÇÔÃØÌËì"
+ "ÇÔÅѹ´Ò"
+ "ÇÔÅÒ´"
+ "ÇÔÅÒ»"
+ "ÇÔÅÒÇѳÂì"
+ "ÇÔÅÒÈ"
+ "ÇÔÅÒÊ"
+ "ÇÔÅÒÊÔ¹Õ"
+ "ÇÔÇ"
+ "ÇÔÇóì"
+ "ÇÔÇÃÐ"
+ "ÇÔÇѯ"
+ "ÇÔÇѲ¹Ò¡ÒÃ"
+ "ÇÔÇѲ¹ì"
+ "ÇÔÇÒ·"
+ "ÇÔÇÒËÁ§¤Å"
+ "ÇÔÇÒËÐ"
+ "ÇÔÇÒËì"
+ "ÇÔÇÔ¨"
+ "ÇÔÇÔµ"
+ "ÇÔÇÔ¸"
+ "ÇÔÈÃص"
+ "ÇÔÈÇ¡Ã"
+ "ÇÔÈÇ¡ÃÃÁ"
+ "ÇÔÈÑÅÂì"
+ "ÇÔÈÒ¢Ð"
+ "ÇÔÈÒ¢Ò"
+ "ÇÔÈÒ§¤ì"
+ "ÇÔÈÒÅ"
+ "ÇÔÈÔÉ°ì"
+ "ÇÔÈØ·¸Ôì"
+ "ÇÔÈØ·¸ì"
+ "ÇÔɳØ"
+ "ÇÔɸÃ"
+ "ÇÔÉÑ¡µì"
+ "ÇÔÉÑÂ"
+ "ÇÔÉÒ³"
+ "ÇÔÉØÇѵ"
+ "ÇÔÊ¡Õé"
+ "ÇÔÊÃê¹ÕÂì"
+ "ÇÔÊĵ"
+ "ÇÔÊÊØ¡ÃÃÁ"
+ "ÇÔÊѪ¹Ò"
+ "ÇÔÊÑ­­Õ"
+ "ÇÔÊÑÂ"
+ "ÇÔÊÒ¢ºÙªÒ"
+ "ÇÔÊÒ¢Ð"
+ "ÇÔÊÒÁÑ­"
+ "ÇÔÊÒÊÐ"
+ "ÇÔÊÒË¡Ô¨"
+ "ÇÔÊÔ°"
+ "ÇÔÊا¤ÒÁÊÕÁÒ"
+ "ÇÔÊØ·¸Ôì"
+ "ÇÔÊØ·¸ì"
+ "ÇÔÊÙµÃ"
+ "ÇÔˤ"
+ "ÇÔ˧¤ì"
+ "ÇÔËÅÑè¹"
+ "ÇÔËÒÂÊÐ"
+ "ÇÔËÒÃ"
+ "ÇÔËÔ§ÊÐ"
+ "ÇÔËÔ§ÊÒ"
+ "ÇÔÌѧ¤ì"
+ "ÇÔÌÒÃ"
+ "ÇÔÌÒÃì"
+ "ÇÔà¤ÃÒÐËì"
+ "ÇÔàªÕÂÃ"
+ "ÇÔà·ÇÉ"
+ "ÇÔà·È"
+ "ÇÔà·âȺÒÂ"
+ "ÇÔ๵"
+ "ÇÔà¹"
+ "ÇÔàù·Ãì"
+ "ÇÔàÅ»"
+ "ÇÔàÇ¡"
+ "ÇÔàÈÉ"
+ "ÇÔàÈɳì"
+ "ÇÔàÊ·"
+ "ÇÔàËÊÒ"
+ "ÇÔâ¹·¡"
+ "ÇÔâÁ¡¢ì"
+ "ÇÔâ¤"
+ "ÇÔâè"
+ "ÇÔâè¹ì"
+ "ÇÔâò"
+ "ÇÔâø"
+ "ÇÔâø¹ì"
+ "ÇÔâŨ¹Ð"
+ "ÇÔäÅ"
+ "ÇÔè§"
+ "ÇÔè§à»ÕéÂÇ"
+ "ÇÔè¹"
+ "ÇÕ"
+ "ÇÕ¨Ô"
+ "ÇÕª¹Õ"
+ "ÇÕ«èÒ"
+ "ÇÕ³Ò"
+ "ÇÕáÃÃÁ"
+ "ÇÕê¹"
+ "ÇÕúØÃØÉ"
+ "ÇÕÃʵÃÕ"
+ "ÇÕèÇѹ"
+ "ÇÕèáÇÇ"
+ "ÇÕé´"
+ "ÇØ°Ô"
+ "Çز"
+ "ÇزÔ"
+ "ÇØ´"
+ "Çغ"
+ "ÇØè¹"
+ "ÇØé§"
+ "ÇØé¹"
+ "ÇØéÂ"
+ "ÇÙ´ÇÒ´"
+ "ÇÙ¸Ù"
+ "ÇÙº"
+ "ÇÙèÇÒÁ"
+ "ÇÙé"
+ "Ç๨Ã"
+ "Çâ¹·ÂÒ¹"
+ "ÇâÃ"
+ "ÇâáÒÊ"
+ "ÇâôÁ"
+ "Çèͧ"
+ "Çè͹"
+ "ÇèÒ"
+ "ÇèÒ§"
+ "ÇèÒ¹"
+ "ÇèÒÂ"
+ "ÇèÒÇ"
+ "ÇéÒ"
+ "ÇéÒ§"
+ "ÇéÒÂ"
+ "È¡"
+ "ȵ"
+ "ȵÇÃÃÉ"
+ "Ⱦ"
+ "ÈÃ"
+ "ÈÃÑ·¸Ò"
+ "ÈÃÑÂ"
+ "ÈÃÕ"
+ "ÈÃÕÇÔäÅÄ·¸Ôì"
+ "ÈÃÕÉÐà¡É"
+ "Èħ¤ÒÃ"
+ "ÈÈÔ"
+ "ÈÍ"
+ "ÈÍ¡"
+ "ÈÑ¡´Ò"
+ "ÈÑ¡´Ô¹Ò"
+ "ÈÑ¡´Ôì"
+ "ÈÑ¡ÂÀÒ¾"
+ "ÈÑ¡ÂÐ"
+ "ÈÑ¡Âì"
+ "ÈÑ¡ÃÒª"
+ "ÈѵÃÙ"
+ "ÈѾ·ì"
+ "ÈÑÅ¡ÃÃÁ"
+ "ÈÑÅÂÈÒʵÃì"
+ "ÈÑÅÂá¾·Âì"
+ "ÈÑÅÂì"
+ "Èҡ¾ط¸"
+ "ÈÒ¡ÂÁعÕ"
+ "ÈÒ¡ÂÐ"
+ "ÈÒµÃÒ¨ÒÃÂì"
+ "ÈÒ¹µÔ"
+ "ÈÒ¹µì"
+ "ÈÒ÷"
+ "ÈÒ÷ÙÅ"
+ "ÈÒÅ"
+ "ÈÒÅÒ"
+ "ÈÒÊ¡"
+ "ÈÒÊ´Ò"
+ "ÈÒʵÃÒ"
+ "ÈÒʵÃÒ¨ÒÃÂì"
+ "ÈÒʵÃì"
+ "ÈÒʹ¨Ñ¡Ã"
+ "ÈÒʹÒ"
+ "ÈÒʹٻ¶ÑÁÀ¡"
+ "ÈÒʹì"
+ "ÈÔ¢ÃÔ¹"
+ "ÈÔÃÔÃÒª"
+ "ÈÔÅ»¡Ã"
+ "ÈÔÅ»¡ÃÃÁ"
+ "ÈÔÅ»¡ÒÃ"
+ "ÈÔÅ»¡Ô¨"
+ "ÈÔÅ»ÇÔ·ÂÒ"
+ "ÈÔÅ»ÈÒʵÃì"
+ "ÈÔÅ»Ð"
+ "ÈÔŻҡÃ"
+ "ÈÔŻԹ"
+ "ÈÔÅ»Õ"
+ "ÈÔÅ»ì"
+ "ÈÔÅÒ"
+ "ÈÔÇÅÖ§¤ì"
+ "ÈÔÇÐ"
+ "ÈÔÇàÇ·"
+ "ÈÔÇâÁ¡¢ì"
+ "ÈÔÉÂì"
+ "ÈÔâÃÃÒº"
+ "ÈÕÃÉÐ"
+ "ÈÕÅ"
+ "ÈÖ¡"
+ "ÈÖ¡ÉÒ"
+ "ÈÖ¡ÉÒ¸Ô¡ÒÃ"
+ "ÈÖ¡ÉÒ¹Ôà·È¡ì"
+ "ÈØ¡Ãì"
+ "ÈØÀ¡Ã"
+ "ÈØÀ¹ÔÁÔµ"
+ "ÈØÀÁÑÊ´Ø"
+ "ÈØÀÁÒµÃÒ"
+ "ÈØÀÁÒÊ"
+ "ÈØÀÍÑ¡ÉÃ"
+ "ÈØÀÒ§¤ì"
+ "ÈØÀà¤ÃÒÐËì"
+ "ÈØÅ¡Ò¡Ã"
+ "ÈØÅ¡ÒÃÑ¡Éì"
+ "ÈØÅÕ"
+ "ÈÙ·Ã"
+ "ÈÙ¹Âì"
+ "Ê¡"
+ "Ê¡¹¸ì"
+ "Ê¡»Ã¡"
+ "Ê¡Å"
+ "Ê¡ÇÒ·Õ"
+ "ʡ͵Ᏼì"
+ "Ê¡Ñ´"
+ "Ê¡Ò"
+ "Ê¡ÒÇ"
+ "Ê¡Õ"
+ "ʡس"
+ "ʡسÒ"
+ "ʡسÕ"
+ "ʡعµì"
+ "Ê¡ØÅ"
+ "Ê¡ç͵Ᏼì"
+ "ʧ"
+ "ʧ¡ÃÒ¹µì"
+ "ʧ¡Ò"
+ "ʧ¢ÅÒ"
+ "ʧ¤ÃÒÁ"
+ "ʧ¦ì"
+ "椼"
+ "ʧǹ"
+ "ʧÊÑÂ"
+ "ʧÊÒÃ"
+ "ʧÊÒÃÇѯ"
+ "ʧѴ"
+ "ʧà¤ÃÒÐËì"
+ "ʧèÒ"
+ "ʳ±ì"
+ "Ê´"
+ "Ê´ÁÀì"
+ "ʴѺ"
+ "Ê´Ø´Õ"
+ "ʵÃÕ"
+ "ʵ͡"
+ "ʵѿ¿ì"
+ "ʵҧ¤ì"
+ "ʵÒÃì·"
+ "ʵÔ"
+ "ʵÔê¡à¡ÍÃì"
+ "ʵÙ"
+ "ʵêÍ¡"
+ "榁"
+ "ʶҹ"
+ "ʶҹ¡Òóì"
+ "ʶҹÐ"
+ "ʶҹÕ"
+ "ʶҺѹ"
+ "ʶһ¹Ò"
+ "ʶһ¹Ô¡"
+ "ʶһѵ¡ÃÃÁ"
+ "ʶҾÃ"
+ "ʶÒÇÃ"
+ "ʶԵ"
+ "ʶԵÂ"
+ "ʶԵÂÈÒʵÃì"
+ "ʶԵÂì"
+ "ʶԵÔ"
+ "ʶØÅ"
+ "ʶٻ"
+ "ʷ;"
+ "ʹ"
+ "ʹ·¹Ò"
+ "ʹ¸ÂÒ"
+ "ʹ¸Ô"
+ "ʹ¹ÃÒ¤Ò"
+ "ʹÁ"
+ "ʹͧ"
+ "ʹѺ"
+ "ʹѺʹع"
+ "ʹÑè¹"
+ "ʹҹ"
+ "ʹÒÁ"
+ "ʹԷ"
+ "ʹÔÁ"
+ "ʹء"
+ "ʹØè¹"
+ "ʹà·È"
+ "ʹà·èËì"
+ "ʹã¨"
+ "ʺ"
+ "漤"
+ "漦"
+ "ʺÒÂ"
+ "ʺÙè"
+ "Ê»ÃÔ§"
+ "Ê»ÒÂ"
+ "Ê»ÒࡵµÕ"
+ "Ê»ÔÃÔµ"
+ "ÊÀÒ"
+ "ÊÀÒ¾"
+ "ÊÀҾѲ¹ì"
+ "ÊÀÒÇÐ"
+ "ÊÁ"
+ "ÊÁ¡ÒÃ"
+ "ÊÁ¤ÇÃ"
+ "ÊÁ­Ò"
+ "ÊÁ³ÈÑ¡´Ôì"
+ "ÊÁ³Ð"
+ "ÊÁ´ØÅ"
+ "ÊÁ¶Ð"
+ "ÊÁ¹Ò¤Ø³"
+ "ÊÁºÑµÔ"
+ "ÊÁºÙóҭÒÊÔ·¸ÔÃÒªÂì"
+ "ÊÁºÙóì"
+ "ÊÁ»ÃдÕ"
+ "ÊÁ»Ä´Õ"
+ "ÊÁÀ¾"
+ "ÊÁÀÒÃ"
+ "ÊÁÁµ"
+ "ÊÁÁµÔ"
+ "ÊÁÁÒµÃ"
+ "ÊÁÁصÔ"
+ "ÊÁÃ"
+ "ÊÁÃö"
+ "ÊÁÃö¹Ð"
+ "ÊÁÃÊ"
+ "ÊÁÍ"
+ "ÊÁͧ"
+ "ÊÁѤÃ"
+ "ÊÁѪªÒ"
+ "ÊÁѹ"
+ "ÊÁÑÂ"
+ "ÊÁÒ"
+ "ÊÁÒ¤Á"
+ "ÊÁÒ¨ÒÃ"
+ "ÊÁÒªÔ¡"
+ "ÊÁÒ¸Ô"
+ "ÊÁÒ¹"
+ "ÊÁҺѵÔ"
+ "ÊÁÒÊ"
+ "ÊÁÔ§"
+ "ÊÁÔµ"
+ "ÊÁÕ"
+ "ÊÁد°Ò¹"
+ "ÊÁØ´"
+ "ÊÁØ·Ã"
+ "ÊÁØ·ÑÂ"
+ "ÊÁع"
+ "ÊÁعä¾Ã"
+ "ÊÁØËì"
+ "ÊÁà´ç¨"
+ "ÊÁྪ"
+ "ÊÁàÊÃç¨"
+ "ÊÁ⾸Ô"
+ "ÊÁâÀ¤"
+ "ÊÁâÀª"
+ "ÊÁèÓàÊÁÍ"
+ "Ê´"
+ "ʺ"
+ "ÊÂÁÀÙ"
+ "ÊÂͧ"
+ "ÊÂÒÁ"
+ "ÊÂÒÂ"
+ "ÊÂÔÇ"
+ "ÊÂØÁ¾Ã"
+ "ÊÂØÁÀÙ"
+ "Êç"
+ "ÊóÐ"
+ "ÊóҤÁ¹ì"
+ "ÊõÐ"
+ "ÊÃÃ"
+ "ÊÃäì"
+ "ÊÃþ"
+ "ÊÃþҡÃ"
+ "ÊÃþҧ¤ì"
+ "ÊÃÃྪ­"
+ "ÊÃÃàÊÃÔ­"
+ "ÊÃǧ"
+ "ÊÃÇÁ"
+ "ÊÃÇÅ"
+ "ÊÃÐ"
+ "ÊÃÒ­"
+ "ÊÃÕáԨ"
+ "ÊÃÕøҵØ"
+ "ÊÃÕÃÇÔ·ÂÒ"
+ "ÊÃÕÃÈÒʵÃì"
+ "ÊÃÕÃÐ"
+ "ÊÃØ»"
+ "ÊÃè§"
+ "ÊÃèÒ§"
+ "ÊÃéÍÂ"
+ "ÊÃéÒ§"
+ "ÊÃéÒÇàÊÕÂÇ"
+ "怵"
+ "ÊÄɯì"
+ "ÊÅ"
+ "ÊÅ´"
+ "恼"
+ "ÊÅǹ"
+ "ÊÅÇÂ"
+ "ÊÅÍ´"
+ "ÊÅ͹"
+ "ÊÅÍÂ"
+ "ÊÅÐ"
+ "ÊÅÑ¡"
+ "ÊÅÑ¡àµé"
+ "ÊÅÑ´"
+ "ÊÅÑ´ä´"
+ "ÊÅѺ"
+ "ÊÅÑÁ"
+ "ÊÅÑÇ"
+ "ÊÅÒ"
+ "ÊÅÒ¡"
+ "ÊÅÒ´"
+ "ÊÅҵѹ"
+ "ÊÅÒº"
+ "ÊÅÒÂ"
+ "ÊÅÔ´"
+ "ÊÅÔÅ"
+ "ÊÅÖ¡"
+ "ÊÅÖ§"
+ "ÊÅص"
+ "ÊÅغ"
+ "ÊÅØÁ¾Ã"
+ "ÊÅç͵"
+ "ÊÅéÒ§"
+ "ÊÇ¡"
+ "ÊÇ´"
+ "Êǹ"
+ "ÊǹÐ"
+ "ÊǹҡÒÃ"
+ "悼"
+ "ÊÇÁ"
+ "ÊÇÂ"
+ "ÊÇÃ"
+ "ÊÇÃäµ"
+ "ÊÇÃäÒÅÑÂ"
+ "ÊÇÃäì"
+ "ÊÇÃÃÂÒ"
+ "ÊÇÍ»"
+ "ÊÇÐ"
+ "ÊÇÑÊ´Ô¡ÒÃ"
+ "ÊÇÑÊ´ÔÀÒ¾"
+ "ÊÇÑÊ´Ôì"
+ "ÊÇÑÊ´Õ"
+ "ÊÇÑʵԡÐ"
+ "ÊÇÒ"
+ "ÊÇÒ§"
+ "ÊÇÒ´"
+ "ÊÇÒ·"
+ "ÊÇÒÁÔ"
+ "ÊÇÒÁÕ"
+ "ÊÇÒÂ"
+ "ÊÇÒÊ´Ôì"
+ "ÊÇÒËÐ"
+ "ÊÇÔ§"
+ "ÊÇÔµªì"
+ "ÊÇÔµ«ì"
+ "ÊÇÔÊà«ÍÃìᏴì"
+ "ÊÇÕà´¹"
+ "ÊÇèÒ§"
+ "ÊÇèÒ¹"
+ "ÊÇéÒ¹"
+ "ÊÊÒÃ"
+ "Êˡóì"
+ "ÊË¡ÒÃ"
+ "Ê˨Ã"
+ "Ê˪ҵÔ"
+ "ÊË»ÃЪҪҵÔ"
+ "Ê˾ѹ¸ÃÑ°"
+ "Ê˾ѹ¸ì"
+ "ÊËÀÒ¾"
+ "ÊËÃÑ°"
+ "ÊËÇÔÃÔÂÒ"
+ "ÊËÈÖ¡ÉÒ"
+ "ÊËѪ"
+ "ÊËÑÁº´Õ"
+ "ÊËÑʹѹì"
+ "ÊËÑÊÇÃÃÉ"
+ "ÊËÑÊÊÐ"
+ "ÊËÑÊÊÒ"
+ "ÊËÒÂ"
+ "ÊÍ"
+ "Êͧ"
+ "ÊÍ´"
+ "Ê͹"
+ "Êͺ"
+ "Ê;ÅÍ"
+ "ÊÍÂ"
+ "ÊÐ"
+ "ÊС´"
+ "ÊСԴ"
+ "ÊФÃÒ­"
+ "ÊдÁ"
+ "Êдǡ"
+ "ÊдÔé§"
+ "Êд֧"
+ "Êд×Í"
+ "Êдش"
+ "ÊдØé§"
+ "ÊеÍ"
+ "ÊеÖ"
+ "Êе×Í"
+ "Êзé͹"
+ "ÊзéÒ¹"
+ "Êкѡ"
+ "ÊкѴ"
+ "ÊкѴÊкÔé§"
+ "ÊкÑé¹"
+ "ÊкéÒ"
+ "ÊоÃÑ¡"
+ "ÊоÃÑè§"
+ "ÊоѴ"
+ "ÊоÑé¹"
+ "Êоҹ"
+ "ÊоÒÂ"
+ "ÊÐÃеÐ"
+ "ÊÐÃÐá˹è"
+ "ÊÐÅÖÁÊÐÅ×Í"
+ "ÊÐÇÕé´ÊÐÇéÒ´"
+ "ÊÐÊÁ"
+ "ÊÐÊÒ§"
+ "ÊÐÍÒ§"
+ "ÊÐÍÒ´"
+ "ÊÐÍÔ´ÊÐàÍÕ¹"
+ "ÊÐÍÔé§"
+ "ÊÐÍÖ¡"
+ "ÊÐÍ×é¹"
+ "ÊÐÍéÒ¹"
+ "ÊÐà¡ç´"
+ "ÊÐà´ç´"
+ "ÊÐà·Ôé¹"
+ "ÊÐà·×͹"
+ "ÊÐà·×é͹"
+ "ÊÐà¾ÃèÒ"
+ "ÊÐàÍÍÐ"
+ "ÊÐ⾡"
+ "ÊÐâÍ´ÊÐͧ"
+ "ÊÐãÀé"
+ "ÊÑ¡"
+ "ÊÑ¡¢Õ"
+ "ÊÑ¡ÇÒ"
+ "ÊÑ¡ËÅÒ´"
+ "ÊÑ¢ÂÐ"
+ "Êѧ¡Á·ÃѾÂì"
+ "Êѧ¡Ã"
+ "Êѧ¡Ã³Õ"
+ "Êѧ¡ÐµÑ§"
+ "Êѧ¡ÐÊÕ"
+ "Êѧ¡Ñ´"
+ "Êѧ¡Ñ»»Ð"
+ "Êѧ¡Ò"
+ "Êѧ¡ÒÈ"
+ "Êѧ¢ÂÒ"
+ "Êѧ¢ÒÃ"
+ "Êѧ¢ì"
+ "Êѧ¤­ÒµÔ"
+ "Êѧ¤Á"
+ "Êѧ¤Ñ§"
+ "Êѧ¤Ò¹Ò"
+ "Êѧ¤Ò¹ÒÂ"
+ "Êѧ¤Õµ"
+ "Êѧ¤ì"
+ "Êѧ¦¡ÃÃÁ"
+ "Êѧ¦¹Ò¡"
+ "Êѧ¦Á³±Å"
+ "Êѧ¦Á¹µÃÕ"
+ "Êѧ¦ÃÒª"
+ "Êѧ¦ÊÀÒ"
+ "Êѧ¦Ò¯Ô"
+ "Êѧ¦ÒÇÒÊ"
+ "ÊѧÇÃ"
+ "ÊѧÇѸÂÒÂ"
+ "ÊѧÇÒÅ"
+ "ÊѧÇÒÊ"
+ "ÊѧʴÁÀì"
+ "ÊѧÊÃäì"
+ "ÊѧÊÒÃÇѯ"
+ "ÊѧËÃ"
+ "ÊѧËóì"
+ "ÊѧËÒÃ"
+ "ÊѧËÒÃÔÁ·ÃѾÂì"
+ "ÊѧËÔµ"
+ "Êѧࡵ"
+ "Êѧࢻ"
+ "Êѧà¤ÃÒÐËì"
+ "ÊѧàǤÐ"
+ "ÊѧàǪ"
+ "ÊѧàÇÂ"
+ "ÊѧàÇÕ¹"
+ "Êѧâ¤"
+ "Êѧ⪹ì"
+ "愬"
+ "ÊѨ¡ÔÃÔÂÒ"
+ "ÊѨ¨Ð"
+ "ÊѨ­Ò³"
+ "ÊѨ¹ÔÂÁ"
+ "ÊѨ¾¨¹ì"
+ "愻¯"
+ "ÊÑ­¨Ã"
+ "ÊÑ­¨ÒÃ"
+ "ÊÑ­ªÒµ­Ò³"
+ "ÊÑ­ªÒµÔ"
+ "ÊÑ­¬Ò"
+ "ÊÑ­­Ò"
+ "ÊÑ­­Ò³"
+ "ÊÑ­­Õ"
+ "ÊÑ­»ÃСÒÈ"
+ "ÊÑ­Åѡɳì"
+ "Êѭਵ¹Ò"
+ "Êѳ°Ò¹"
+ "Êѳ±ì"
+ "ÊѳËì"
+ "ÊÑ´"
+ "愵"
+ "ÊѵµÐ"
+ "ÊѵºÃó"
+ "ÊѵÂҺѹ"
+ "ÊѵÂì"
+ "ÊѵǺÒÅ"
+ "ÊѵÇÇÔ·ÂÒ"
+ "ÊѵÇÒ"
+ "ÊѵÇÒÃ"
+ "ÊѵÇá¾·Âì"
+ "ÊѵÇâÅ¡"
+ "ÊѵÇì"
+ "ÊÑ·¸ÃÃÁ"
+ "ÊÑ·¸Ò"
+ "ÊÑ·ÈÒʵÃì"
+ "Êѹ"
+ "Êѹ´Ò¹"
+ "Êѹ´Ò»"
+ "ÊѹµÐ»Ò»Ò"
+ "ÊѹµÔ"
+ "Êѹµì"
+ "Êѹ¶ÇäÁµÃÕ"
+ "Êѹ¶Ñµ"
+ "Êѹ¶ÒÃ"
+ "Êѹ·¹Ð"
+ "Êѹ·¹Ò¡ÒÃ"
+ "Êѹ·Ð"
+ "Êѹ·Ñ´"
+ "Êѹ¸Ò¹"
+ "Êѹ¹ÔºÒµ"
+ "Êѹ¹ÔÇÒÊ"
+ "Êѹ¹ÔÉ°Ò¹"
+ "Êѹ¹ÔàÇÊ"
+ "Êѹʡĵ"
+ "Êѹâ´É"
+ "愼"
+ "ÊѺ»ÅѺ"
+ "ÊѺ»Ðô"
+ "ÊÑ»¤Ñº"
+ "ÊÑ»´¹"
+ "ÊÑ»´ÒËì"
+ "ÊÑ»·¹"
+ "ÊÑ»ÃÐÂØ·¸ì"
+ "Êѻ˧¡"
+ "ÊÑ»àËÃèÍ"
+ "ÊѾ"
+ "ÊѾ¾Ð"
+ "ÊѾ¾Ñ­­Ù"
+ "ÊѾÂÍ¡"
+ "ÊѾà¾àËÃÐ"
+ "ÊÑÁºÙóì"
+ "ÊÑÁ»ªÑ­­Ð"
+ "ÊÑÁ»·Ò"
+ "ÊÑÁ»·Ò¹"
+ "ÊÑÁ»Âص"
+ "ÊÑÁ»ÃÐÊÔ·¸Ôì"
+ "ÊÑÁ»ÃÐËÒÃ"
+ "ÊÑÁ»ÃÒÂÀ¾"
+ "ÊÑÁ»ÃÒÂÔ¡À¾"
+ "ÊÑÁ»â¤"
+ "ÊÑÁ¼ÑÊ"
+ "ÊÑÁ¾Ñ·¸ì"
+ "ÊÑÁ¾Ñ¹¸¹ì"
+ "ÊÑÁ¾Ñ¹¸ÀÒ¾"
+ "ÊÑÁ¾Ñ¹¸ÁÔµÃ"
+ "ÊÑÁ¾Ñ¹¸äÁµÃÕ"
+ "ÊÑÁ¾Ñ¹¸ì"
+ "ÊÑÁ¾Ò¸Ð"
+ "ÊÑÁ¾Ø·¸Ð"
+ "ÊÑÁÀÒÃÐ"
+ "ÊÑÁÀÒɳì"
+ "ÊÑÁÁ¹Ò"
+ "ÊÑÁÁÒ"
+ "ÊÑÁÁÒªÕ¾"
+ "ÊÑÁÄ·¸Ôì"
+ "ÊÑÁ⾸Ô"
+ "ÊÑÁâÁ·¹Õ¡¶Ò"
+ "ÊÑÊ´Õ"
+ "ÊÑÊÊÐ"
+ "ÊÑè§"
+ "ÊÑè¹"
+ "ÊÑé¹"
+ "ÊÒ"
+ "ÊÒ¡"
+ "ÊÒ¡Ãèì"
+ "ÊÒ¡Å"
+ "ÊÒ¢Ò"
+ "ÊÒ¤Ã"
+ "ÊÒ¤Ù"
+ "ÊÒ¤àÃÊ"
+ "ÊÒ§"
+ "ÊÒ´"
+ "ÊÒ·Ã"
+ "ÊÒ·ÔÊ"
+ "ÊÒ¸¡"
+ "ÊÒ¸ÂÒÂ"
+ "ÊÒ¸ÒóÀÑÂ"
+ "ÊÒ¸ÒóÃÑ°"
+ "ÊÒ¸ÒóÊØ¢"
+ "ÊÒ¸ÒóÐ"
+ "ÊÒ¸Òóٻ¡ÒÃ"
+ "ÊÒ¸ÒóٻâÀ¤"
+ "ÊÒ¸Ôµ"
+ "ÊÒ¸Ø"
+ "ÊÒ¹"
+ "ÊÒ¹ØÈÔÉÂì"
+ "ÊÒº"
+ "ÊÒºÊÙ­"
+ "ÊÒºÒ¹"
+ "ÊÒ»"
+ "ÊÒÁ"
+ "ÊÒÁѤ¤Õ"
+ "ÊÒÁÑ­"
+ "ÊÒÁÒ¹Âì"
+ "ÊÒÁÒö"
+ "ÊÒÁÔµ"
+ "ÊÒÁÔÀÑ¡´Ôì"
+ "ÊÒÁÕ"
+ "ÊÒÁà³Ã"
+ "ÊÒÂ"
+ "ÊÒªÙ"
+ "ÊÒÂÂÙ"
+ "ÊÒÂѳËì"
+ "ÊÒÃ"
+ "ÊÒä´Õ"
+ "ÊÒöÕ"
+ "ÊÒ÷"
+ "ÊÒùÔà·È"
+ "ÊÒúº"
+ "ÊÒúÃó"
+ "ÊÒúѭ"
+ "ÊÒúѺ"
+ "ÊÒúҭ"
+ "ÊÒþѴ"
+ "ÊÒþѹ"
+ "ÊÒþҧ¤ì"
+ "ÊÒÃÀÒ¾"
+ "ÊÒÃÀÕ"
+ "ÊÒÃÇѵÃ"
+ "ÊÒÃÐ"
+ "ÊÒÃÐá¹"
+ "ÊÒÃÑ·¸ì"
+ "ÊÒÃÑÁÀì"
+ "ÊÒÃÒ³Õ¡Ã"
+ "ÊÒÃҹءÃÁ"
+ "ÊÒÃÕÃÔ¡¸ÒµØ"
+ "ÊÒÅÐǹ"
+ "ÊÒÅÔ¡Ò"
+ "ÊÒÅÔ¹Õ"
+ "ÊÒÅÕ"
+ "ÊÒÅÕè"
+ "ÊÒÇ"
+ "ÊÒÇ¡"
+ "ÊÒÇÔ¡Ò"
+ "ÊÒÇÔµÃ"
+ "ÊÒÇÔµÃÕ"
+ "ÊÒʹì"
+ "ÊÒÊì¹"
+ "ÊÒËÃèÒÂ"
+ "ÊÒËÑÊ"
+ "ÊÒà¡"
+ "ÊÒà˵Ø"
+ "ÊÒáËá"
+ "ÊÒâ·"
+ "ÊÒâê"
+ "ÊÒä¶Â"
+ "ÊÓ"
+ "ÊӤѭ"
+ "ÊӷѺ"
+ "Êӹǹ"
+ "Êӹѡ"
+ "ÊÓ¹Ö¡"
+ "ÊӺѴÊӹǹ"
+ "ÊÓ»ÐËÅѧ"
+ "ÊÓ»Ñé¹"
+ "ÊÓÁÐËÒ"
+ "ÊÓÁÐàÅà·àÁÒ"
+ "ÊÓÁÐ⹤ÃÑÇ"
+ "ÊÓÃǨ"
+ "ÊÓÃÇÁ"
+ "ÊÓÃÇÂ"
+ "ÊÓÃÇÅ"
+ "ÊÓÃÍ¡"
+ "ÊÓÃͧ"
+ "ÊÓÃѺ"
+ "ÊÓÃÒ¡"
+ "ÊÓÃÒ­"
+ "ÊÓÃÔ´"
+ "ÊÓÅÑ¡"
+ "ÊÓÅÒ¹"
+ "ÊÓÅÕ"
+ "ÊÓÊè͹"
+ "ÊÓËÃѺ"
+ "ÊÓËÒ"
+ "ÊÓÍÍÂ"
+ "ÊÓÍÒ§"
+ "ÊÓà¹Ò"
+ "ÊÓà¹Õ§"
+ "ÊÓàÀÒ"
+ "ÊÓàÃÔ§"
+ "ÊÓàÃç¨"
+ "ÊÓà˹Õ¡"
+ "ÊÓàËÃè"
+ "ÊÓá´§"
+ "ÊÓáŧ"
+ "ÊÓâç"
+ "ÊÔ"
+ "ÊÔ¡¢Ò"
+ "ÊÔ¢Ã"
+ "ÊÔ¤ÒÅ"
+ "ÊÔ§"
+ "ÊÔ§¢Ã"
+ "ÊÔ§¤ÒÃ"
+ "ÊÔ§¤ÒÅ"
+ "ÊÔ§¤â»Ãì"
+ "ÊÔ§¤ì"
+ "ÊÔ§ÊÒÃÒÊѵÇì"
+ "Êԧ˹ҷ"
+ "Êԧ˺ѭªÃ"
+ "ÊÔ§ËÃÒª"
+ "ÊÔ§ËÅ"
+ "ÊÔ§ËÒ¤Á"
+ "ÊÔ§ËÒʹì"
+ "ÊÔ§Ëì"
+ "ÊÔ§âµ"
+ "ÊÔ­¨¹ì"
+ "ÊÔµ"
+ "ÊÔ¶ÔÅ"
+ "ÊÔ·¸"
+ "ÊÔ·¸Ò"
+ "ÊÔ·¸Òö"
+ "ÊÔ·¸Ô"
+ "ÊÔ·¸Ôì"
+ "ÊÔ¹"
+ "ÊÔ¹¤éÒ"
+ "ÊÔ¹¸Ø"
+ "ÊÔ¹Õ"
+ "ÊÔ¹à¸ÒÇì"
+ "ÊÔº"
+ "ÊÔÁ¾ÅÕ"
+ "ÊÔÃÔ"
+ "ÊÔÃÔ¡ÔµÔì"
+ "ÊÔÅÒ"
+ "ÊÔÇ"
+ "ÊÔà¹Ë¡"
+ "ÊÔà¹ËÒ"
+ "ÊÔà¹èËÒ"
+ "ÊÔè§"
+ "ÊÔèÇ"
+ "ÊÔé¹"
+ "ÊÕ"
+ "ÊÕ¡Ò"
+ "ÊÕ´Í"
+ "ÊÕè"
+ "ÊÖ¡"
+ "Ê׺"
+ "Ê×èÍ"
+ "ÊØ"
+ "ÊØ¡"
+ "ÊØ¡¢ì"
+ "ÊØ¡Ã"
+ "ÊØ¡ÕéÂÒ¡Õé"
+ "ÊØ¢"
+ "ÊØ¢Ð"
+ "ÊØ¢Ò"
+ "ÊØ¢ÒÀÔºÒÅ"
+ "ÊØ¢ÒÃÁ³ì"
+ "ÊØ¢ÒÇ´Õ"
+ "ÊØ¢Õ"
+ "ÊØ¢ØÁ"
+ "ÊØ¢ØÁÒÅ"
+ "Êؤµ"
+ "ÊؤµÔ"
+ "Êؤ¹¸ÃÊ"
+ "Êؤ¹¸ì"
+ "Êؤѹ¸ì"
+ "Êا¡Ò¡Ã"
+ "ÊاÊÔ§"
+ "ÊبÃÔµ"
+ "Êب˹Õè"
+ "ÊبÔ"
+ "Êت¹"
+ "ÊتҴÒ"
+ "ÊØ­"
+ "ÊØ­­Ò¡ÒÈ"
+ "Êس"
+ "ÊسÔÊÒ"
+ "ÊØ´"
+ "ÊØ´Ò"
+ "毵"
+ "ÊصµÐ"
+ "ÊصÔ"
+ "ÊØ·¸ÒÇÒÊ"
+ "ÊØ·¸Ô"
+ "ÊØ·¸ì"
+ "ÊØ·Ñȹì"
+ "ÊظÒ"
+ "ÊظÕ"
+ "Êع·Ã"
+ "Êع·ÃÕ"
+ "Êع·ÃÕÂÀÒ¾"
+ "Êع·ÃÕÂÈÒʵÃì"
+ "ÊعѢ"
+ "Êعѹ·ì"
+ "ÊغÃó"
+ "ÊغԹ"
+ "ÊؾÃó"
+ "ÊØÀѤ"
+ "ÊØÀÒ¾"
+ "ÊØÀÒÉÔµ"
+ "ÊØÁ"
+ "ÊØÁ·ØÁ"
+ "ÊØÁ¹"
+ "ÊØÁ¹Ò"
+ "ÊØÁÒÅÕ"
+ "ÊØÃÊÕ˹ҷ"
+ "ÊØÃѵÔ"
+ "ÊØÃÑÊÇ´Õ"
+ "ÊØÃÒ"
+ "ÊØÃÒ§¤¹Ò"
+ "ÊØÃÒ§¤¹Ò§¤ì"
+ "ÊØÃÒÃÑ¡Éì"
+ "ÊØÃÒÅÑÂ"
+ "ÊØÃÒÉ®Ãì"
+ "ÊØÃÔ¹·Ãì"
+ "ÊØÃÔ¡ÒÃ"
+ "ÊØÃÔ¡ÒÅ"
+ "ÊØÃÔ¤µÔ"
+ "ÊØÃÔ¤ÃÒÊ"
+ "ÊØÃÔ§"
+ "ÊØÃÔ¹"
+ "ÊØÃÔÂÁ³±Å"
+ "ÊØÃÔÂÐ"
+ "ÊØÃÔÂѹ"
+ "ÊØÃÔÂÒ"
+ "ÊØÃÔÂØ»ÃÒ¤Ò"
+ "ÊØÃÔÂà¤ÃÒÐËì"
+ "ÊØÃÔ๷Ãì"
+ "ÊØÃÔàÂÈ"
+ "ÊØÃÔâÂ"
+ "ÊØÃÕÂì"
+ "ÊØÃØèÂÊØÃèÒÂ"
+ "ÊØÃàÊÕ§"
+ "ÊØŵèÒ¹"
+ "ÊØÇÀÒ¾"
+ "ÊØÇÃó"
+ "ÊØÇÒ¹"
+ "ÊØÇÔ·Âì"
+ "ÊØÇÔ¹ÑÂ"
+ "ÊØÇÔÁÅ"
+ "ÊØÊÒ¹"
+ "ÊØ˹ѵ"
+ "ÊØËÃèÒÂ"
+ "ÊØàÁ¸"
+ "ÊØàÁÃØ"
+ "ÊØàËÃèÒ"
+ "ÊØàÍ«"
+ "ÊØèÁ"
+ "ÊØéÁ"
+ "ÊÙ"
+ "ÊÙ§"
+ "ÊÙ¨Ô"
+ "ÊÙ­"
+ "ÊÙ´"
+ "ÊÙµ"
+ "ÊÙµÃ"
+ "ÊÙµÔ"
+ "ÊÙµÔ¡ÃÃÁ"
+ "ÊٵԺѵÃ"
+ "ÊÙµÔÈÒʵÃì"
+ "ÊÙµÔá¾·Âì"
+ "ÊÙ·"
+ "ÊÙº"
+ "ÊÙÊÕ"
+ "ÊÙè"
+ "ÊÙé"
+ "Êࡵ"
+ "ÊàµÍÃÔâÍ"
+ "Êàµç¡"
+ "Êà¹èËì"
+ "Ê໡"
+ "Ê໡µÃÑÁ"
+ "Ê໹"
+ "Êà»Ã´ªÕµ"
+ "Ê᡹"
+ "Êáŧ"
+ "ÊâÁÊÃ"
+ "Êâê"
+ "ÊäµÅì"
+ "押"
+ "ÊäÅ´ì"
+ "揤"
+ "Êèǹ"
+ "ÊèÇÂ"
+ "ÊèÍ"
+ "Êèͧ"
+ "Êè͹"
+ "ÊèÒ"
+ "ÊèÒ¹"
+ "ÊèÒÂ"
+ "ÊèÒËÃÕè"
+ "ÊèÒàËÅéÒ"
+ "ÊèÓ"
+ "Êé¹"
+ "ÊéÁ"
+ "ÊéÁ»èÍÂ"
+ "Êéǧ"
+ "ÊéÇÁ"
+ "ÊéÇÂ"
+ "Êéͧ"
+ "ÊéÍÁ"
+ "Ë¡"
+ "˧"
+ "˧Êì"
+ "˧Í"
+ "˧͡"
+ "˧ʹ"
+ "˧͹"
+ "˧ÍÂ"
+ "˧ѡ"
+ "˧Ѻ"
+ "˧ÒÂ"
+ "˧Ó"
+ "˧ԡ"
+ "˧ԧ"
+ "˧ÔÁ"
+ "˧֡"
+ "˧ا˧ԧ"
+ "˧ش˧Դ"
+ "˧غ"
+ "˧ØèÂ"
+ "˧èÍÁ"
+ "˧èÒ§"
+ "˧èÒÇ"
+ "Ë­Ô§"
+ "Ë­Ôº"
+ "Ë­éÒ"
+ "Ë´"
+ "Ë·ÑÂ"
+ "˹"
+ "˹ǡ"
+ "˹Ǵ"
+ "˹Í"
+ "˹͡"
+ "˹ͧ"
+ "˹͹"
+ "˹ѡ"
+ "˹ѧ"
+ "˹ѧÊ×Í"
+ "˹Ѻ"
+ "˹Ñè¹"
+ "˹Ò"
+ "˹Ҵ"
+ "˹ҹ"
+ "˹ÒÁ"
+ "˹ÒÇ"
+ "˹Ó"
+ "˹ÓàÅÕéº"
+ "˹Õ"
+ "˹պ"
+ "˹Õé"
+ "˹ֺ"
+ "˹Öè§"
+ "˹״"
+ "˹Ø"
+ "˹ع"
+ "˹غ"
+ "˹ØèÁ"
+ "˹ØèÂ"
+ "˹Ù"
+ "˹çÍÂá¹è"
+ "˹èǧ"
+ "˹èÇÂ"
+ "˹èÇ¡Ե"
+ "˹èÍ"
+ "˹èÍÂ"
+ "˹èÒ"
+ "˹èÒ§"
+ "˹èÒÂ"
+ "˹éÒ"
+ "˹éÒ·Õè"
+ "ËÁ¡"
+ "ËÁ´"
+ "ËÁÇ¡"
+ "ËÁÇ´"
+ "ËÁÍ"
+ "ËÁÍ¡"
+ "ËÁͧ"
+ "ËÁ͹"
+ "ËÁͺ"
+ "ËÁÍÂ"
+ "ËÁÑ¡"
+ "ËÁÑ´"
+ "ËÁѹ"
+ "ËÁѺ"
+ "ËÁÑè¹"
+ "ËÁÑé¹"
+ "ËÁÒ"
+ "ËÁÒ¡"
+ "ËÁÒ¡ÎÍÊ"
+ "ËÁÒ§"
+ "ËÁÒ´"
+ "ËÁÒÂ"
+ "ËÁÔè¹"
+ "ËÁÕ"
+ "ËÁÕè"
+ "ËÁÖ¡"
+ "ËÁ×è¹"
+ "ËÁØ´"
+ "ËÁع"
+ "ËÁغ"
+ "ËÁغËÁÔº"
+ "ËÁØèÂ"
+ "ËÁÙ"
+ "ËÁÙè"
+ "ËÁè¹"
+ "ËÁèͧ"
+ "ËÁè͹"
+ "ËÁèÍÁ"
+ "ËÁèÒ"
+ "ËÁèÓ"
+ "ËÁéÍ"
+ "ËÁéÒÂ"
+ "Ë¡"
+ "Ë´"
+ "ËÂÇ¡"
+ "ËÂǺ"
+ "ËÂÍ¡"
+ "ËÂÍ¡àÍÔ¹"
+ "ËÂͧ"
+ "ËÂÍ´"
+ "ËÂÍÁáËÂÁ"
+ "ËÂÍÂ"
+ "ËÂÑ¡"
+ "ËÂѧ"
+ "ËÂÑ´"
+ "ËÂѹ"
+ "ËÂѺ"
+ "ËÂÑè§"
+ "ËÂÒ¡äÂè"
+ "ËÂÒ´"
+ "ËÂÒº"
+ "ËÂÒÁ"
+ "ËÂÒÇ"
+ "ËÂÓà»"
+ "ËÂÔ¡"
+ "ËÂÔº"
+ "ËÂÔÁ"
+ "ËÂÔè§"
+ "ËÂÕ"
+ "ËÂØ¡ËÂÔ¡"
+ "ËÂØ´"
+ "ËÂغ"
+ "ËÂØÁËÂÔÁ"
+ "ËÂØè¹"
+ "ËÂÙ¡ÂÒ"
+ "ËÂçͧáËÂç§"
+ "ËÂè§"
+ "ËÂèͧ"
+ "ËÂè͹"
+ "ËÂèÍÁ"
+ "ËÂèÍÂ"
+ "ËÂèÒ"
+ "ËôÕ"
+ "ËÃÃÉÒ"
+ "ËÃÍ"
+ "ËÃÍ¡"
+ "ËÃÍÂ"
+ "ËÃÒ"
+ "ËÃÔ"
+ "ËÃÔè§"
+ "ËÃÕ´"
+ "ËÃÕè"
+ "ËÃ×Í"
+ "ËÃغ"
+ "ËÃغÃÙè"
+ "ËÃغËÃÙè"
+ "ËÃØèÁ"
+ "ËÃÙ"
+ "ËÃçÍÁáËÃçÁ"
+ "ËÄ·ÑÂ"
+ "ËÄËÃÃÉì"
+ "ËÄâË´"
+ "ËÅ"
+ "聤"
+ "ËÅ´"
+ "ËŹ"
+ "聼"
+ "ËÅǧ"
+ "ËÅÇÁ"
+ "ËÅÍ"
+ "ËÅÍ¡"
+ "ËÅÍ´"
+ "ËÅ͹"
+ "ËÅÍÁ"
+ "ËÅÐ"
+ "ËÅÑ¡"
+ "ËÅѧ"
+ "ËÅÑ´"
+ "ËÅѺ"
+ "ËÅÑÇ"
+ "ËÅÑè§"
+ "ËÅÑè¹"
+ "ËÅÒ"
+ "ËÅÒ¡"
+ "ËÅÒ¹"
+ "ËÅÒº"
+ "ËÅÒÁ"
+ "ËÅÒÂ"
+ "ËÅÒÇ"
+ "ËÅÔ¡"
+ "ËÅÔÁ"
+ "ËÅÔÇ"
+ "ËÅÔèÇ"
+ "ËÅÕ"
+ "ËÅÕ¡"
+ "ËÅÕÎ×éÍ"
+ "ËÅ׺"
+ "ËÅØ¡ËÅÔ¡"
+ "ËÅØ´"
+ "ËÅع"
+ "ËÅغ"
+ "ËÅØÁ"
+ "ËÅÙè"
+ "ËÅè¹"
+ "ËÅèÁ"
+ "ËÅèÍ"
+ "ËÅè͹"
+ "ËÅèÐ"
+ "ËÅéÒ"
+ "肤"
+ "ËÇ´"
+ "Ëǹ"
+ "ËÇÂ"
+ "ËÇÍ"
+ "ËÇÍ´"
+ "ËÇÐ"
+ "ËÇѧ"
+ "ËÇÑ´"
+ "ËÇÑÇ"
+ "ËÇÑÇÃèÍ"
+ "ËÇÑè¹"
+ "ËÇÒ"
+ "ËÇÒ´"
+ "ËÇÒ¹"
+ "ËÇÒÁ"
+ "ËÇÒÂ"
+ "ËÇÓ"
+ "ËÇÔ´"
+ "ËÇÔÇ"
+ "ËÇÕ"
+ "ËÇÕ´"
+ "ËÇÕè"
+ "ËÇ×Í"
+ "ËÇØ´ËÇÔ´"
+ "ËÇØÁ"
+ "ËÇÙ´"
+ "ËÇçÍÂ"
+ "ËÇèÒ"
+ "ËÇèÒ§"
+ "ËÇèÒ¹"
+ "ËÇéÒ"
+ "ËÍ"
+ "ËÍ¡"
+ "Ëͧ"
+ "Ë͹"
+ "Ëͺ"
+ "ËÍÁ"
+ "ËÍÂ"
+ "ËÐáá"
+ "ËÑ¡"
+ "ËÑ´"
+ "Ëѵ¶¡ÃÃÁ"
+ "Ëѵ¶¡ÒÃ"
+ "Ëѵ¶¡Ô¨"
+ "Ëѵ¶ºÒÊ"
+ "Ëѵ¶ÈÔÅ»ì"
+ "Ëѵ¶ÈÖ¡ÉÒ"
+ "Ëѵ¶Õ"
+ "Ëѵ¶ì"
+ "Ëѹ"
+ "脼"
+ "ËÑÇ"
+ "ËÑǺء"
+ "ËÑÇ˹éÒ"
+ "ËÑÇàÃÒÐ"
+ "ËÑÊ"
+ "ËÑè¹"
+ "ËÑé¹"
+ "ËÒ"
+ "ËÒ¡"
+ "ËÒ§"
+ "ËÒ­"
+ "ËÒ´"
+ "ËÒ¹"
+ "ËÒº"
+ "ËÒÁ"
+ "ËÒÂ"
+ "ËÒ¹Ð"
+ "ËÒÃ"
+ "ËÒÃ×Í"
+ "ËÒÇ"
+ "ËÓ"
+ "ËÔ§ÊÒ"
+ "ËÔ§ËéÍÂ"
+ "ËÔ´"
+ "ËÔ¹"
+ "ËÔÁÐ"
+ "ËÔÁÒÅÑÂ"
+ "ËÔÃÑ­"
+ "ËÔÃÔ"
+ "ËÔÇ"
+ "ËÔè§ËéÍÂ"
+ "ËÔé§"
+ "ËÔéÇ"
+ "ËÕ¹ÂÒ¹"
+ "ËÕº"
+ "ËÖ"
+ "ËÖ§"
+ "ËÖè§"
+ "Ë×´"
+ "Ë×¹"
+ "Ë×Í"
+ "Ë×è¹"
+ "Ë×éÍ"
+ "诤"
+ "Ëع"
+ "诼"
+ "ËØÂÎÒ"
+ "ËØè¹"
+ "ËØé¹"
+ "ËØéÁ"
+ "ËÙ"
+ "ËÙ¡"
+ "ËÙ´"
+ "ËÙè"
+ "Ëâ´Á"
+ "ËèÁ"
+ "Ëèǧ"
+ "ËèÇÂ"
+ "ËèÍ"
+ "Ëè͹"
+ "ËèÒ"
+ "ËèÒ§"
+ "ËèÒ¹"
+ "ËèÒÁ"
+ "Ëéǧ"
+ "Ëéǹ"
+ "ËéÇÂ"
+ "ËéÍ"
+ "Ëéͧ"
+ "ËéÍÁ"
+ "ËéÍÂ"
+ "ËéÒ"
+ "ËéÒ§"
+ "ËéÒÁ"
+ "ËéÒÇ"
+ "ËéÓ"
+ "Í¡"
+ "Í¡µÑ­­ØµÒ"
+ "Í¡µÑ­­Ù"
+ "Í¡¹ÔÉ°ì"
+ "͡óÕÂì"
+ "Í¡ÃÃÁ¡ÃÔÂÒ"
+ "Í¡ØÈÅ"
+ "ͤµÔ"
+ "ͤҸ"
+ "ͧ¡ì"
+ "ͧ¤ªÒµÔ"
+ "ͧ¤Á¹µÃÕ"
+ "ͧ¤ÁÃÃÉ"
+ "ͧ¤ÃÑ¡Éì"
+ "ͧ¤ÇÔ·ÂÒ"
+ "ͧ¤Ò¾Â¾"
+ "ͧ¤ØÅ"
+ "ͧ¤ØÅÕ"
+ "ͧ¤ì"
+ "ͧ¤ì¡Ã"
+ "ͧ¤ì¡ÒÃ"
+ "ͧÈÒ"
+ "ͧÍÒ¨"
+ "ͧØè¹"
+ "ͨÅÒ"
+ "ͨԵµÔ"
+ "ͨԹµÒ"
+ "ͨԹäµÂ"
+ "ͨÔÃÐ"
+ "ͪ"
+ "ͪÒ"
+ "ͪԹ"
+ "ͪԹÕ"
+ "ͪÔÃ"
+ "ͯÇÕ"
+ "ͳÔ"
+ "ͳØ"
+ "ͳÙ"
+ "Í´"
+ "Í´Ô¶Õ"
+ "Í´ÔÈÃ"
+ "Í´ÔÈÇÃ"
+ "Í´ÔÈÑÂ"
+ "Í´Ôà·¾"
+ "Í´Ôàá"
+ "Í´Õµ"
+ "Í´ØÅ"
+ "Í´ØÅÂ"
+ "Í´ØÅÂì"
+ "͵Ԫҵ"
+ "͵ÔÁÒ¹Ð"
+ "͵ÔÃÒª"
+ "͵ÔÊÒÃ"
+ "͵Ôàá"
+ "Í·Ô¹¹Ò·Ò¹"
+ "͸ÃÃÁ"
+ "͸ԡÁÒÊ"
+ "͸ԡóì"
+ "͸ԡÇÒÃ"
+ "͸ԡÊØ÷Թ"
+ "͸ԡÒÃ"
+ "͸ԤÁ"
+ "͸ԯ°Ò¹"
+ "͸Ժ´Õ"
+ "͸ԺÒÂ"
+ "͸Ի"
+ "͸ԻäµÂ"
+ "͸ÔÃÒª"
+ "͸ÔÉ°Ò¹"
+ "͸֡"
+ "͹§¤³Ð"
+ "͹§¤àÅ¢Ò"
+ "͹§¤ì"
+ "͹§àÅ¢"
+ "͹¸¡ÒÃ"
+ "͹ѵµÒ"
+ "͹ѹµì"
+ "͹Ҥµ"
+ "͹ҤÒÁÕ"
+ "͹ҨÒÃ"
+ "͹Ҷ"
+ "͹ҶÒ"
+ "͹ҷÃ"
+ "͹ҸԻäµÂ"
+ "͹ÒÁÑÂ"
+ "͹Òê¹"
+ "͹ÒøÃÃÁ"
+ "͹ÒÃÂÐ"
+ "͹ÒÅÑÂ"
+ "͹Ԩ"
+ "͹Ԩ¨Ñ§"
+ "͹Ԩ¨Ò"
+ "͹ԯ°ÒÃÁÂì"
+ "͹ÔÂÁ"
+ "͹Öè§"
+ "͹Ø"
+ "͹ءÃ"
+ "͹ءÃÁ"
+ "͹ءÃÃÁ¡ÒÃ"
+ "͹ءҪҴ"
+ "͹ءÒÃ"
+ "͹ءÙÅ"
+ "͹بÃ"
+ "͹ت¹"
+ "͹تÒ"
+ "͹تҵ"
+ "͹تԵ"
+ "͹حҵ"
+ "͹حÒâµµØÅÒ¡ÒÃ"
+ "͹طԹ"
+ "͹غ·"
+ "͹غÒÅ"
+ "͹ػÃÔ­­Ò"
+ "͹ؾ§Èì"
+ "͹ؾѹ¸ì"
+ "͹ØÀÃÃÂÒ"
+ "͹ØÀÃÔÂÒ"
+ "͹ØÀÒ¤"
+ "͹ØÁѵÔ"
+ "͹ØÁÒµÃÒ"
+ "͹ØÁÒ¹"
+ "͹ØÁÙÅ"
+ "͹ØÃѡɹÔÂÁ"
+ "͹ØÃÑ¡Éì"
+ "͹ØÃÒª"
+ "͹ØÃÙ»"
+ "͹ØǧÈì"
+ "͹ØÇѵ"
+ "͹ØÈÒÊ¡"
+ "͹ØÈÒʵÃÒ¨ÒÃÂì"
+ "͹ØÈÒʹì"
+ "͹ØÈÔɯì"
+ "͹ØʵÔ"
+ "͹Øʹ¸Ô"
+ "͹ØÊÃ"
+ "͹ØÊóì"
+ "͹ØÊÑ­­Ò"
+ "͹ØÊÑÂ"
+ "͹ØÊÒÇÃÕÂì"
+ "͹ØÊÒʹÕ"
+ "͹Øà¤ÃÒÐËì"
+ "͹Øà¶ÃÐ"
+ "͹ØâÁ·¹Ò"
+ "͹Øâ¤"
+ "͹ØâÅÁ"
+ "ͺ"
+ "ͺÒÂ"
+ "ͺÒÂÀÙÁÔ"
+ "ͺÒÂÁØ¢"
+ "Í»Á§¤Å"
+ ";¾"
+ ";ÒÃìµàÁ¹µì"
+ "ÍÀÑÂ"
+ "ÍÀÔª¹"
+ "ÍÀÔªÒµ"
+ "ÍÀÔ­­Ò"
+ "ÍÀÔ¸ÃÃÁ"
+ "ÍÀÔ¸Ò¹"
+ "ÍÀԹѹ·ì"
+ "ÍÀÔ¹ÑÂ"
+ "ÍÀÔ¹ÔËÒÃ"
+ "ÍÀÔºÒÅ"
+ "ÍÀÔ»ÃѪ­Ò"
+ "ÍÀÔ»ÃÒÂ"
+ "ÍÀÔÁËÒÍÓ¹Ò¨"
+ "ÍÀÔÁÒ¹Ð"
+ "ÍÀÔÁØ¢"
+ "ÍÀÔôÕ"
+ "ÍÀÔÃÁÂì"
+ "ÍÀÔÃÑ¡Éì"
+ "ÍÀÔÅÑ¡¢ÔµÊÁÑÂ"
+ "ÍÀÔÇѹ·ì"
+ "ÍÀÔÇÒ·¹ì"
+ "ÍÀÔÊÁÑÂ"
+ "ÍÀÔÊÁÒ¨ÒÃ"
+ "ÍÀÔÊÁ⾸Ô"
+ "ÍÀÔÊÑÁ⾸Ô"
+ "ÍÀÔÊÔ·¸Ôì"
+ "ÍÀÔàÅ»¹ì"
+ "ÍÀÔàÉ¡"
+ "ÍÀÔä¸Â"
+ "ÍÁ"
+ "ÍÁµÐ"
+ "ÍÁ¹ØÉÂì"
+ "ÍÁÃ"
+ "ÍÁÃÒ"
+ "ÍÁÃÒÇ´Õ"
+ "ÍÁÃÔ¹·Ãì"
+ "ÍÁĵ"
+ "ÍÁĵÂÙ"
+ "ÍÁÔµÃ"
+ "ÍÁàÃÈ"
+ "ÍÂÒ¡"
+ "ÍÂظÂÒ"
+ "ÍÂÙè"
+ "ÍÂèÒ"
+ "ÍÂèÒ§"
+ "ÍÃ"
+ "ÍêÃ"
+ "ÍÃó¾"
+ "ÍÃö"
+ "ÍÃöҸԺÒÂ"
+ "ÍÃËÐ"
+ "ÍÃËѧ"
+ "ÍÃËѹµì"
+ "ÍÃÑ­"
+ "ÍÃÔ"
+ "ÍÃÔºؤ¤Å"
+ "ÍÃÔÂÐ"
+ "ÍÃÔÊâµàµÔÅ"
+ "ÍÃس"
+ "ÍÃØâ³·ÑÂ"
+ "ÍÃä·"
+ "ÍÃèÍÂ"
+ "ÍÃèÒÁ"
+ "Íŧ¡µ"
+ "Íŧ¡Ã³ì"
+ "Íŧ¡ÒÃ"
+ "ÍÅǹ"
+ "ÍÅËÁèÒ¹"
+ "ÍÅѧ¡ÒÃ"
+ "ÍÅѪªÕ"
+ "ÍÅÖ觩Öè§"
+ "ÍÅàǧ"
+ "ÍÅèͧ©èͧ"
+ "ÍÅèÒ§©èÒ§"
+ "ÍÇ¡ÒÈ"
+ "ÍÇ´"
+ "ÍǵÒÃ"
+ "Íǹ"
+ "ꂼ"
+ "ÍÇÁ§¤Å"
+ "ÍÇÂ"
+ "ÍÇÅ"
+ "ÍÇÊÒ¹"
+ "ÍÇËÒÃ"
+ "ÍÇÑÂÇÐ"
+ "ÍÇÔªªÒ"
+ "Íʧä¢Â"
+ "Íʹպҵ"
+ "ÍÊÁ¡ÒÃ"
+ "ÍÊÁÁÒµÃ"
+ "ÍÊþÔÉ"
+ "ÍÊѧËÒÃÔÁ·ÃѾÂì"
+ "ÍÊÑ­­Õ"
+ "ÍÊÑ­á´ËÇÒ"
+ "ÍÊѵÂì"
+ "ÍÊÕµÔ"
+ "ÍÊبÔ"
+ "ÍÊعպҵ"
+ "ÍÊØáÒÂ"
+ "ÍÊØÃÕ"
+ "ÍÊÙÃ"
+ "ÍËѧ¡ÒÃ"
+ "ÍËÔ§ÊÒ"
+ "ÍËÔÇÒµ¡âä"
+ "ÍÍ"
+ "ÍÍ¡"
+ "ÍÍ¡«Ôਹ"
+ "ÍÍ¡«Ôപѹ"
+ "ÍÍ¡­Ò"
+ "ÍÍ¡ä«´ì"
+ "ÍÍ´"
+ "ÍÍ´ÔâÍ"
+ "Í͹ªÍÃì"
+ "Í͹«Í¹"
+ "Í͹«ì"
+ "Í͹äŹì"
+ "ÍÍ»ªÑ¹"
+ "ÍÍ»à¨ç¡µì"
+ "ÍÍ¿"
+ "ÍÍ¿ªÍÃì"
+ "ÍÍ¿¿ÔÈ"
+ "ÍÍÁ"
+ "ÍÍÃÒà¤ÔÅ"
+ "ÍÍÃì᡹"
+ "ÍÍÊ"
+ "ÍÍÊàµÃàÅÕÂ"
+ "ÍФÃéÒÇ"
+ "ÍдÃÕ¹ÒÅÔ¹"
+ "ÍеÍÁ"
+ "ÍÐÃéÒÍÃèÒÁ"
+ "ÍÐÅØèÁÍÅèÇÂ"
+ "ÍÐÅØéÁÍÅèÇÂ"
+ "ÍÐÅÙÁÔà¹ÕÂÁ"
+ "ÍÐà¤×éÍ"
+ "ÍÐà«·ÔÅÕ¹"
+ "ÍÐäÃ"
+ "ÍÐäËÅè"
+ "ÍÑ¡"
+ "ÍÑ¡¢"
+ "ÍÑ¡¢ÃÇÔ¸Õ"
+ "ÍÑ¡¢ÃÇԺѵÔ"
+ "ÍÑ¡¢ÃÊÁÑÂ"
+ "ÍÑ¡¢ÃÐ"
+ "ÍÑ¡ÉÃ"
+ "ÍÑ¡ÉÐ"
+ "ÍÑ¡àʺ"
+ "ÍÑ¡â¢"
+ "ÍѤ¤Ð"
+ "ÍѤ¤Õ"
+ "ÍѤ¹Õ"
+ "ÍѤêÒÂÒ"
+ "ÍѤÃÁàËÊÕ"
+ "ÍѤÃÃÒª·Ùµ"
+ "ꄤ"
+ "Íѧ¡ÄÉ"
+ "Íѧ¡ÐÅا"
+ "Íѧ¤³Ò"
+ "Íѧ¤ÒÃ"
+ "Íѧ¤ÒÊ"
+ "ÍѧʵÃÍÁ"
+ "ÍѧʹÒ"
+ "ÍѨ¡ÅѺ"
+ "ÍѨ¨Ñ¹µì"
+ "ÍѨ¨ÑÂ"
+ "ÍѨ¨Ô"
+ "ÍѨ©ÃÒ"
+ "ÍѨ©ÃÔºؤ¤Å"
+ "ÍѨ©ÃÔÂÐ"
+ "ÍѨ¹Ò"
+ "ÍѪ¬Ò"
+ "ÍѪ¬ÒÊÑÂ"
+ "ÍÑ­ª¹Ð"
+ "ÍÑ­ªÅÕ"
+ "ÍÑ­ªÑ¹"
+ "ÍÑ­»ÃСÒÈ"
+ "ÍÑ­Á³Õ"
+ "ÍÑ­ÁÑ­­Ð"
+ "ÍÑ­ÃÙ»"
+ "ÍÑ­àªÔ­"
+ "Íѯ"
+ "Íѯ°Ð"
+ "ÍÑ°"
+ "ÍÑ°ÌÊ"
+ "ÍÑ°Ô"
+ "ÍѲ¨Ñ¹·Ãì"
+ "ÍѲÀÒ¤"
+ "ÍѲÁ³±Å"
+ "ÍѲÁÒÊ"
+ "ÍѲÃѵµÔ"
+ "Íѳ±ªÐ"
+ "Íѳ±Ð"
+ "Íѳ±Ò¡ÒÃ"
+ "ÍÑ´"
+ "Íѵ¤Ñ´"
+ "ÍѵªÕÇ»ÃÐÇѵÔ"
+ "ÍѵµÐ"
+ "ÍѵµÒ"
+ "ÍѵµÒ¸Ô»äµÂ"
+ "Íѵ¹ÑÂ"
+ "ÍѵÀÒ¾"
+ "ÍѵÃÒ"
+ "ÍѵÇÔ¹ÔºÒµ¡ÃÃÁ"
+ "Íѵâ¹ÁѵÔ"
+ "ÍѸÂÒÈÑÂ"
+ "Íѹ"
+ "Íѹ´Ñº"
+ "ÍѹµÃ¸Ò¹"
+ "ÍѹµÃÒÂ"
+ "Íѹ¸¡ÒÃ"
+ "Íѹ¸¾ÒÅ"
+ "Íѹà´ÍÃì"
+ "ꄼ"
+ "ÍÑ»ÀÒ¤Âì"
+ "ÍÑ»Á§¤Å"
+ "ÍÑ»ÂÈ"
+ "ÍÑ»ÃÐÁÒ³"
+ "ÍÑ»ÃÒªÑÂ"
+ "ÍÑ»ÃÕÂì"
+ "ÍÑ»Åѡɳì"
+ "ÍÑ»ÊÃ"
+ "ÍÑ»à»ËÔ"
+ "ÍѾà¡Ã´"
+ "ÍѾവ"
+ "ÍѾഷ"
+ "ÍÑ¿"
+ "ÍÑÁ¾Ã"
+ "ÍÑÁ¾Ä¡Éì"
+ "ÍÑÁ¾Ò"
+ "ÍÑÁ¾Òµ"
+ "ÍÑÁ¾Øª"
+ "ÍÑÁÊàµÍÃì´ÑÁ"
+ "ÍÑ¡Ò"
+ "ÍÑ¡ÒÃ"
+ "ÍÑÂÂÔ¡Ò"
+ "ÍÑŨÕàÃÕÂ"
+ "ÍÑźÑéÁ"
+ "ÍÑźÒà¹ÕÂ"
+ "ÍÑÅàºà¹ÕÂ"
+ "ÍÑȨÃÃÂì"
+ "ÍÑÈÇÔ¹"
+ "ÍÑÈÇÔ¹Õ"
+ "ÍÑÈà¨ÃÕÂì"
+ "ÍÑÉ®ÒÂØ·"
+ "ÍÑÉ®ÒÇظ"
+ "ÍÑÊ´§"
+ "ÍÑÊ´§¤µ"
+ "ÍÑÊ´Ã"
+ "ÍÑʹÕ"
+ "ÍÑÊÊÐ"
+ "ÍÑÊÊÒÊÐ"
+ "ÍÑÊÊØ"
+ "ÍÑé¡"
+ "ÍÑé§ÂÕè"
+ "ÍÑé§âÅè"
+ "ÍÑé¹"
+ "ÍÑê¡"
+ "ÍÑë¹"
+ "ÍÒ"
+ "ÍÒ¡Ã"
+ "ÍÒ¡Ñ»¡ÔÃÔÂÒ"
+ "ÍÒ¡ÒÃ"
+ "ÍÒ¡ÒÈ"
+ "ÍÒ¡ÙÅ"
+ "ÍÒ¡éÒ"
+ "ÍÒ¢ÂÒ¹"
+ "ÍÒ¤Á"
+ "ÍҤѹµØ¡Ð"
+ "ÍÒ¤ÒÃ"
+ "ÍÒ¤à¹Âì"
+ "ÍÒ¦Òµ"
+ "ÍÒ§¢¹Ò§"
+ "ÍÒ¨"
+ "ÍÒ¨Á"
+ "ÍÒ¨ÃÔÂÇѵÃ"
+ "ÍÒ¨Ò´"
+ "ÍÒ¨ÒÃÂì"
+ "ÍÒ¨Ô³"
+ "ÍÒª­Ò"
+ "ÍÒªÒ"
+ "ÍÒªÒä¹Â"
+ "ÍÒªÕ¾"
+ "ÍÒªÕÇÈÖ¡ÉÒ"
+ "ÍÒªÕÇÐ"
+ "ÍÒ­Ò"
+ "ÍҳѵÔ"
+ "ÍÒ³Ò"
+ "ÍÒ´"
+ "ÍÒ´ÙÃ"
+ "ÍÒµÁÀÒ¾"
+ "ÍÒµÁÒ"
+ "ÍÒ¶Ãþ³ì"
+ "ÍÒ¶Ãþì"
+ "ÍÒ·Ã"
+ "ÍÒ·Ô"
+ "ÍÒ·ÔµÂì"
+ "ÍÒ¹"
+ "ÍÒ¹ÔʧÊì"
+ "ÍÒ¹ØÀÒ¾"
+ "ÍÒº"
+ "ÍҺѵÔ"
+ "ÍÒ¾Ò¸"
+ "ÍÒ¿¡Ò¹Ôʶҹ"
+ "ÍÒ¿ÃÔ¡Ò"
+ "ÍÒÀóì"
+ "ÍÒÀѾ"
+ "ÍÒÀÒ"
+ "ÍÒÁÔÊ"
+ "ÍÒÂ"
+ "ÍÒµ¹Ð"
+ "ÍÒÂÑ´"
+ "ÍÒÂØ"
+ "ÍÒÂØÃÈÒʵÃì"
+ "ÍÒÂØÃàǪ"
+ "ÍÒÂØÃá¾·Âì"
+ "ÍÒúԤ"
+ "ÍÒÃÁ³ì"
+ "ÍÒê¹"
+ "ÍÒêҵÔ"
+ "ÍÒøÃÃÁ"
+ "ÍÒûÃÐà·È"
+ "ÍÒÃÂÐ"
+ "ÍÒÃÂѹ"
+ "ÍÒÃÑ¡¢Ò"
+ "ÍÒÃÑ¡Éì"
+ "ÍÒÃÑÁÀ¡¶Ò"
+ "ÍÒÃÑÁÀº·"
+ "ÍÒÃÒ¸¹Ò"
+ "ÍÒÃÒÁ"
+ "ÍÒÃÒÁÔ¡"
+ "ÍÒÃÒàºÕÂ"
+ "ÍÒÃÕ"
+ "ÍÒÃ줵ԡ"
+ "ÍÒÃìૹÍÅ"
+ "ÍÒÅ»¹Ð"
+ "ÍÒÅÐÇÒ´"
+ "ÍÒÅѡɳì"
+ "ÍÒÅÑÂ"
+ "ÍÒÅÑÇ"
+ "ÍÒÇ"
+ "ÍÒÇóì"
+ "ÍÒÇÒÊ"
+ "ÍÒÇÒËÐ"
+ "ÍÒÇظ"
+ "ÍÒÇØâÊ"
+ "ÍÒÇì"
+ "ÍÒÈÃÁ"
+ "ÍÒÈÑÂ"
+ "ÍÒÈÔÃÇÒ·"
+ "ÍÒʹÐ"
+ "ÍÒʹì"
+ "ÍÒÊÑ­"
+ "ÍÒÊÒ"
+ "ÍÒÊÒÌ˺٪Ò"
+ "ÍÒÊÙÃ"
+ "ÍÒËÃѺ"
+ "ÍÒËÒÃ"
+ "ÍÒà¨Õ¹"
+ "ÍÒà«ÕÂ"
+ "ÍÒàÃàºÕÂ"
+ "ÍÒàǤ"
+ "ÍÒàÇÈ"
+ "ÍÒàÈÕÂÃÇÒ·"
+ "ÍÓ"
+ "ÍÓ¹ÇÂ"
+ "ÍÓ¹Ò¨"
+ "ÍӾйÓ"
+ "ÍӾѹ"
+ "ÍÓÁĵ"
+ "ÍÓÁËÔµ"
+ "ÍÓÁÒµÂì"
+ "ÍÓÅÒ"
+ "ÍÓàÀÍ"
+ "ÍÓä¾"
+ "ÍÔ§"
+ "ÍÔ§¤ì"
+ "ÍÔ§¤ìà¨çµ"
+ "ÍÔ¨©Ò"
+ "Íԩѹ"
+ "ÍÔ¯°ÒÃÁ³ì"
+ "ÍÔ°"
+ "ÍÔ´"
+ "ÍÔµ¶Õ"
+ "ÍÔµÒÅÕ"
+ "ÍÔµÒàÅÕ¹"
+ "ÍÔ·¸Ô"
+ "ÍÔ¹"
+ "ÍÔ¹«ÙÅÔ¹"
+ "ÍÔ¹·¹ÔÅ"
+ "ÍÔ¹·¼ÅÑÁ"
+ "ÍÔ¹·Ã¸¹Ù"
+ "ÍÔ¹·ÃǧÈì"
+ "ÍÔ¹·ÃÇÔàªÕÂÃ"
+ "ÍÔ¹·ÃÒ"
+ "ÍÔ¹·ÃÒà¹çµ"
+ "ÍÔ¹·ÃÕ"
+ "ÍÔ¹·ÃÕÂÊѧÇÃ"
+ "ÍÔ¹·ÃÕÂì"
+ "ÍÔ¹·Ãì"
+ "ÍÔ¹¾Øµ"
+ "ÍÔ¹¿ÃÒàô"
+ "ÍÔ¹¿ÍÃìÁÔ¡"
+ "ÍԹѧ"
+ "ÍÔ¹à´ÕÂ"
+ "ÍÔ¹à´Õ¹ᴧ"
+ "ÍÔ¹àµÍÃì"
+ "ÍÔ¹àµÍÃìà¹çµ"
+ "ÍÔ¹àµÍÃìà¿«"
+ "ÍÔ¹à·Å"
+ "ÍÔ¹à·ÍÃì๵"
+ "ÍÔ¹à·ÍÃìà¹çµ"
+ "ÍÔ¹à·ÍÃìà¿«"
+ "ÍԹⴹÔà«ÕÂ"
+ "ÍԹⴹÕà«ÕÂ"
+ "ÍÔ¹â´à«ÕÂ"
+ "ÍÔÁ¾ÍÃìµ"
+ "ÍÔÁàÁ¨"
+ "ÍÔÂÔ»µì"
+ "ÍÔÃÔÂÒº¶"
+ "ÍÔÈÇÃ"
+ "ÍÔɯÕ"
+ "ÍÔɯì"
+ "ÍÔÊ"
+ "ÍÔʵÃÕ"
+ "ÍÔÊÃÀÒ¾"
+ "ÍÔÊÃÐ"
+ "ÍÔÊÃÒàÍÅ"
+ "ÍÔÊÃÔÂÂÈ"
+ "ÍÔÊÃÔÂÐ"
+ "ÍÔÊÃÔÂÒÀóì"
+ "ÍÔÊÊÒ"
+ "ÍÔÊÔ"
+ "ÍÔÊÕ"
+ "ÍÔËÁèÒÁ"
+ "ÍÔËÃèÒ¹"
+ "ÍÔËÅÑ¡ÍÔàËÅ×èÍ"
+ "ÍÔàÅ硵Ã͹"
+ "ÍÔàÅç¡·Ã͹ԡÊì"
+ "ÍÔàÅç¡â·¹"
+ "ÍÔèÁ"
+ "ÍÕ"
+ "ÍÕ¡"
+ "ÍÕ¡Ò"
+ "ÍÕ¡éÍ"
+ "ÍÕ¤ÍÁàÁÔÃì«"
+ "ÍչاµØ§¹Ñ§"
+ "ÍÕÁÙ"
+ "ÍÕÂÔ»µì"
+ "ÍÕÅØè©ØÂá©¡"
+ "ÍÕÅØéÁ"
+ "ÍÕÊÒ¹"
+ "ÍÕÊØ¡ÍÕãÊ"
+ "ÍÕËÃͺ"
+ "ÍÕËÅÑ¡ÍÔàËÅ×èÍ"
+ "ÍÕËÅÕ"
+ "ÍÕàµéÍ"
+ "ÍÕà·ÍÃì"
+ "ÍÕàÁÅì"
+ "ÍÕàËÅÐà¢Ð¢Ð"
+ "ÍÕâËÅ¡â¢Å¡à¢Å¡"
+ "ÍÕê´"
+ "ÍÕë"
+ "ÍÖ"
+ "ÍÖ¡"
+ "ÍÖ¡·Ö¡"
+ "ÍÖ¡ÍÑ¡"
+ "ÍÖ§"
+ "ÍÖ§ÁÕè"
+ "ÍÖ§ÍÅ"
+ "ÍÖ´"
+ "ÍÖè§"
+ "ÍÖé§"
+ "ÍÖé´·Öè´"
+ "ÍÖê¡"
+ "Í×´"
+ "Í×Í"
+ "Í×è¹"
+ "Í×é¹"
+ "Í×éÍ"
+ "ÍØ"
+ "ÍØ¡"
+ "ÍØ¡¡ÒºÒµ"
+ "ÍØ¡Äɯì"
+ "Íب¨ÒÃÐ"
+ "ÍبҴ"
+ "ÍبÒÃÁÃä"
+ "Íب੷"
+ "ÍتØ"
+ "Íد°Ò¡ÒÃ"
+ "ÍسËÀÙÁÔ"
+ "ÍسËÐ"
+ "ÍسËÒ¡ÒÃ"
+ "ÍسËÔÊ"
+ "ÍسÒ"
+ "ÍØ´"
+ "ÍØ´Á"
+ "ÍØ´Ã"
+ "Íش˹ع"
+ "Íص¾Ô´"
+ "ÍصôԵ¶ì"
+ "ÍصÃÔ"
+ "ÍصÅØ´"
+ "ÍصÊÒË¡ÃÃÁ"
+ "ÍصÊÒËÐ"
+ "ÍصÊèÒËì"
+ "ÍصØ"
+ "ÍØ·¡"
+ "ÍØ·¸Ã³ì"
+ "ÍØ·¸Ñ¨"
+ "ÍØ·ÂÒ¹"
+ "ÍØ·Ã"
+ "ÍØ·ÅØÁ"
+ "ÍطѪ"
+ "ÍØ·ÑÂ"
+ "ÍØ·Ò¹"
+ "ÍØ·ÒÃ"
+ "ÍØ·ÒËóì"
+ "ÍØ·ÔÈ"
+ "ÍØ·ØÁ¾Ã"
+ "ÍظѨ"
+ "꯼"
+ "ÍغÅ"
+ "ÍغÍÔº"
+ "ÍغÐ"
+ "ÍغѵÔ"
+ "Íغҷ"
+ "ÍغҷÇì"
+ "ÍغÒÂ"
+ "ÍغÒÊ¡"
+ "ÍغÒÊÔ¡Ò"
+ "ÍغêÐ"
+ "ÍØ»"
+ "ÍØ»¡Ã³ì"
+ "ÍØ»¡ÃÁ"
+ "ÍØ»¡ÒÃÐ"
+ "ÍØ»¡ÒÃÕ"
+ "ÍØ»¶ÑÁÀ¡"
+ "ÍØ»¶ÑÁÀì"
+ "ÍØ»·Ò¹"
+ "ÍØ»·Ùµ"
+ "ÍØ»¹ÑÂ"
+ "ÍØ»¹Ò¡"
+ "ÍØ»¹ÔÊÑÂ"
+ "ÍØ»ÁÒ"
+ "ÍØ»ÁÒ¹"
+ "ÍØ»ÃÒª"
+ "Íػʧ¤ì"
+ "ÍØ»ÊÁº·"
+ "ÍØ»ÊÃä"
+ "ÍØ»ÊÑÁ»·Ò"
+ "ÍػѪ¬ÒÂÐ"
+ "ÍػѪ¬ÒÂì"
+ "Íػѯ°Ò¡"
+ "Íػѯ°Ò¹Ð"
+ "ÍػѷÇѹµÃÒÂ"
+ "ÍػѷÇà˵Ø"
+ "Íػҷҹ"
+ "ÍØ»âÀ¤"
+ "ÍØ»â¤"
+ "ÍØ»âÅ¡¹ì"
+ "ÍØ»äÁÂ"
+ "ÍØÂ"
+ "ÍØÃÐ"
+ "ÍØÃѧÍصѧ"
+ "ÍØÃÒ"
+ "ÍØÃØ"
+ "ÍØÃاÍصѧ"
+ "ÍØɳÕÂì"
+ "ÍØÉÒ"
+ "ÍØÊÒ"
+ "ÍØÊØ"
+ "ÍØມ¢Ò"
+ "ÍØàËÁè"
+ "ÍØáÇé"
+ "ÍØâ¦É"
+ "ÍØâºÊ¶"
+ "ÍØâÁ§¤ì"
+ "ÍØäÃ"
+ "ÍØè¹"
+ "ÍØèÂ"
+ "ÍØé§"
+ "ÍØéÁ"
+ "ÍØéÂ"
+ "ÍØêÂ"
+ "ÍÙ"
+ "ÍÙ°"
+ "ÍÙ´"
+ "ÍÙÁ"
+ "ÍÙÃØ"
+ "ÍÙè"
+ "ÍÙé"
+ "ÍÙéÍÕé"
+ "ÍÙëÍÕë"
+ "Íà¨Å¡"
+ "Íà¨ÅÐ"
+ "Í๡"
+ "Í๡¤Ø³"
+ "Í๨͹Ҷ"
+ "Íà»ËÔ"
+ "ÍàÁ"
+ "ÍàÁÃԡѹ"
+ "ÍàÁÃÔ¡Ò"
+ "ÍàǨÕ"
+ "Íá´»àµÍÃì"
+ "Íâ¦ÉÐ"
+ "Íâ³·ÑÂ"
+ "Í⹪Ò"
+ "Íâ¹´Òµ"
+ "ÍâÅËÐ"
+ "ÍâÈ¡"
+ "ÍâËÊÔ"
+ "Íèͧ"
+ "Íè͹"
+ "ÍèÍÂ"
+ "ÍèÒ"
+ "ÍèÒ§"
+ "ÍèÒ¹"
+ "ÍèÒÇ"
+ "ÍèÓ"
+ "Íé¹"
+ "ÍéÇ¡"
+ "Íéǹ"
+ "ÍéÍ"
+ "Íé͹"
+ "Íé͹áÍé¹"
+ "ÍéÍÁ"
+ "ÍéÍÂ"
+ "ÍéÍÂÊéÍÂ"
+ "ÍéÍÂÍÔè§"
+ "ÍéÒ"
+ "ÍéÒ§"
+ "ÍéÒÂ"
+ "ÍéÒÇ"
+ "ÍéÓÍÖé§"
+ "ÍêÍ´"
+ "ÍêÐ"
+ "ÍëÍ"
+ "Íëͧ"
+ "ÍëÍÂ"
+ "Ρà¡Õé¹"
+ "Îǧ«ØéÂ"
+ "Îǹ"
+ "낼"
+ "ÎÍ¡¡Õé"
+ "ÎÍ´"
+ "Î͹â¹ÅÙÅÙ"
+ "ÎÍÃìâÁ¹"
+ "ÎÍÅѹ´Ò"
+ "ÎÍÅᏴì"
+ "ÎÐ"
+ "ÎÑ¡"
+ "Îѧ¡ÒÃÕ"
+ "ÎÑè¹"
+ "ÎÑéÇ"
+ "ÎÒ"
+ "ÎÒÁ"
+ "ÎÒÃì´´Ôʤì"
+ "ÎÒÃì´áÇÃì"
+ "ÎÒàÃçÁ"
+ "ÎÒâÅÇÕ¹"
+ "ÎÔµ"
+ "ÎÔ¹´Ù"
+ "ÎÔ»â»â»àµÁÑÊ"
+ "ÎÔÊ·ÕàÃÕÂ"
+ "ÎÕàÅÕÂÁ"
+ "ÎÕâÃè"
+ "ÎÖ"
+ "ÎÖ¡"
+ "ÎÖ´"
+ "ÎÖ´ÎÑ´"
+ "ÎÖÁ"
+ "ÎÖÂ"
+ "ÎÖèÁ"
+ "Î×´ÎÒ´"
+ "Î×Í"
+ "Î×èÍ"
+ "Î×éÍ"
+ "민"
+ "ÎØÂàÅÎØÂ"
+ "ÎÙ¡"
+ "ÎÙÁ"
+ "ÎÙé"
+ "ÎèÍ"
+ "Îèͧ¡§"
+ "Îèͧàµé"
+ "ÎéÍ"
+ "ÎéÒ"
+ "à¡"
+ "à¡¡ÁÐàËá"
+ "ࡨÔÍÒ¨ÒÃÂì"
+ "ࡳ±ì"
+ "à¡´"
+ "ࡵØ"
+ "ࡹ"
+ "à¡Á"
+ "à¡ÁÊì"
+ "à¡Â"
+ "à¡Ã§"
+ "à¡Ã´"
+ "à¡ÃÍÐ"
+ "à¡ÃÒÐ"
+ "à¡ÃÔ¡"
+ "à¡ÃÔè¹"
+ "à¡ÃÕ¡"
+ "à¡ÃÕ§"
+ "à¡ÃÕ¹"
+ "à¡ÃÕº"
+ "à¡ÃÕÂÁ"
+ "à¡ÃÕÂÇ"
+ "à¡ÃÕéÂÇ"
+ "à¡Ãç§"
+ "à¡Ãç´"
+ "à¡ÃèÍ"
+ "à¡Å"
+ "à¡ÅÍ"
+ "à¡ÅÒ"
+ "à¡ÅÕ§"
+ "à¡ÅÕ´"
+ "à¡ÅÕÂÇ"
+ "à¡ÅÕèÂ"
+ "à¡ÅÕéÂ"
+ "à¡ÅÕé§"
+ "à¡Å×Í"
+ "à¡Å×Í¡"
+ "à¡Å×è͹"
+ "à¡Å×éÍ"
+ "à¡Å×é͹"
+ "à¡Åç´"
+ "à¡ÅéÒ"
+ "à¡ÇÕ¹"
+ "à¡È"
+ "à¡ÈÒ"
+ "à¡ÈÔ¹Õ"
+ "à¡ÉµÃ"
+ "à¡ÉµÃ¡Ã"
+ "à¡ÉµÃ¡ÃÃÁ"
+ "à¡ÉÁ"
+ "à¡ÉÕ³"
+ "à¡ÉÕ¹"
+ "à¡ÊÃ"
+ "à¡Í"
+ "à¡ÍÃì"
+ "à¡ÍÔªÒ"
+ "à¡Ð"
+ "à¡Ð¡Ð"
+ "à¡Ò"
+ "à¡Òµì"
+ "à¡Ò·Ñ³±ì"
+ "à¡ÒÅÑ´"
+ "à¡ÒËÅÕ"
+ "à¡ÒÐ"
+ "à¡ÒàËÅÒ"
+ "à¡Ô§"
+ "à¡Ô´"
+ "à¡Ô¹"
+ "à¡ÕÂ"
+ "à¡Õ§"
+ "à¡Õ¨"
+ "à¡Õ´"
+ "à¡Õ¹"
+ "à¡ÕÂõÔ"
+ "à¡ÕÂõԤس"
+ "à¡ÕÂõԹÔÂÁ"
+ "à¡ÕÂõԻÃÐÇѵÔ"
+ "à¡ÕÂõÔÀÙÁÔ"
+ "à¡ÕÂõÔÂÈ"
+ "à¡ÕÂõÔÈÑ¡´Ôì"
+ "à¡ÕÂõÔì"
+ "à¡ÕÂÃì"
+ "à¡ÕèÂ"
+ "à¡Õè§"
+ "à¡ÕèÂÇ"
+ "à¡ÕéÂÁÍÕë"
+ "à¡ÕéÂÁä©è"
+ "à¡ÕéÂÇ"
+ "à¡ÕêÂÇ"
+ "à¡ÕêÂÐ"
+ "à¡×Í¡"
+ "à¡×ͺ"
+ "à¡×éÍ"
+ "à¡àÃ"
+ "à¡ç§"
+ "à¡ç¨"
+ "à¡çº"
+ "à¡è§"
+ "à¡è§¡Ò¨"
+ "à¡è¹"
+ "à¡èÒ"
+ "à¡é"
+ "à¡é§"
+ "à¡é§¡éÒ§"
+ "à¡éÍ"
+ "à¡éÒ"
+ "à¡éÒÍÕé"
+ "à¡ê"
+ "à¡ê¡"
+ "à¡ê¡ÎÇÂ"
+ "à¡ë"
+ "à¡ë§"
+ "à¡ëÒ"
+ "à¢"
+ "ࢡ"
+ "ࢵ"
+ "ࢹ"
+ "ࢹ§"
+ "ࢹÂ"
+ "ࢹç´"
+ "ࢺ稢ºÇ¹"
+ "ࢺçµ"
+ "à¢ÁÃ"
+ "à¢ÁÒ"
+ "à¢Á×ͺ"
+ "à¢Áç§"
+ "à¢Áç´á¢Áè"
+ "à¢Áè¹"
+ "à¢ÁèÒ"
+ "à¢Áé¹"
+ "à¢Â"
+ "à¢Â¡"
+ "à¢ÂÔº"
+ "à¢Â×é͹"
+ "à¢Âè§"
+ "à¢ÂèÒ"
+ "à¢ÂéÍá¢Âè§"
+ "à¢ÃÍÐ"
+ "à¢Å§"
+ "à¢ÅÍÐ"
+ "à¢ÅÐ"
+ "à¢ÅÒ"
+ "à¢ÅÒÐ"
+ "à¢Ç"
+ "à¢ÉÁ"
+ "à¢ÌÐ"
+ "à¢Ð¢Ð"
+ "à¢Ò"
+ "à¢Ô¹"
+ "à¢Õ§"
+ "à¢Õ´"
+ "à¢Õ¹"
+ "à¢ÕÂÁ"
+ "à¢ÕÂÇ"
+ "à¢ÕèÂ"
+ "à¢ÕéÂÇ"
+ "à¢×Í"
+ "à¢×èͧ"
+ "à¢×è͹"
+ "à¢ç­"
+ "à¢ç´"
+ "à¢ç¹"
+ "à¢çÁ"
+ "à¢è§"
+ "à¢è¹"
+ "à¢èÒ"
+ "à¢éÁ"
+ "à¢éÒ"
+ "हÂÒ"
+ "à¤ÁÕ"
+ "à¤Â"
+ "à¤Ã§"
+ "à¤Ã´Ôµ"
+ "à¤ÃÒ"
+ "à¤ÃÒÐËì"
+ "à¤ÃÕ´"
+ "à¤Ã×Í"
+ "à¤Ã×èͧ"
+ "à¤Ã×èͧ¾ÔÁ¾ì"
+ "à¤Ãè§"
+ "à¤Ã觤ÃÑ´"
+ "à¤ÅÔºà¤ÅÔéÁ"
+ "à¤ÅÔéÁ"
+ "à¤ÅÕÂ"
+ "à¤Å×ͺ"
+ "à¤Å×è͹"
+ "à¤Åç´"
+ "à¤Åé¹"
+ "à¤ÅéÒ"
+ "à¤Çé§"
+ "à¤Ë"
+ "à¤ËÐ"
+ "à¤ËÒ"
+ "à¤ÍÃìà¹Å"
+ "à¤ÍÐ"
+ "à¤Ò¹ìàµÍÃì"
+ "à¤Òþ"
+ "à¤ÒÐ"
+ "à¤Õ§"
+ "à¤Õ´"
+ "à¤Õ¹"
+ "à¤ÕÂÇ"
+ "à¤ÕèÂÁ"
+ "à¤ÕèÂÇ"
+ "à¤ÕéÂÇ"
+ "à¤×ͧ"
+ "à¤àºÔÅ"
+ "à¤çÁ"
+ "à¤é¡"
+ "à¤é¹"
+ "à¤éÒ"
+ "à¤éà¡é"
+ "à¦Õè¹"
+ "ৡ"
+ "à§Â"
+ "à§ÍÐ"
+ "à§ÍЧÐ"
+ "à§Ò"
+ "à§ÒÐ"
+ "à§Ô¹"
+ "à§Õº"
+ "à§Õè§"
+ "à§Õè¹"
+ "à§ÕèÂËÙ"
+ "à§ÕéÂÇ"
+ "à§×Í¡"
+ "à§×Í´"
+ "à§×ͺ"
+ "à§×èͧ"
+ "à§×è͹"
+ "à§×è͹ä¢"
+ "à§×éÍ"
+ "à§×éÍÁ"
+ "à§èÒ"
+ "à§éÒ"
+ "à¨"
+ "਴ÕÂʶҹ"
+ "਴ÕÂì"
+ "ਵ"
+ "ਵ¤µÔ"
+ "ਵ¨Ó¹§"
+ "ਵ¹Ò"
+ "ਵ¹ÒÃÁ³ì"
+ "ਵÀÙµ"
+ "ਵÊÔ¡"
+ "ਹ"
+ "à¨ÁÊì"
+ "à¨Ã¨Ò"
+ "à¨ÃÔ­"
+ "à¨ÃÔ´"
+ "à¨Çç´"
+ "à¨É®Ò"
+ "à¨Í"
+ "à¨ÍÃì"
+ "à¨ÍÐ"
+ "à¨ÒÐ"
+ "à¨Ô´"
+ "à¨ÔÁ"
+ "à¨Ôè§"
+ "à¨Ôè¹"
+ "à¨Õ´"
+ "à¨Õ¹"
+ "à¨ÕÂÁ"
+ "à¨ÕÂÃÐä¹"
+ "à¨ÕÂÇ"
+ "à¨Õêº"
+ "à¨ÕêÂÇ"
+ "à¨ÕêÂǨêÒÇ"
+ "à¨Õë¹"
+ "à¨ÕëÂÁà¨ÕéÂÁ"
+ "à¨×Í"
+ "à¨×è͹"
+ "à¨×éÍÂ"
+ "à¨ç´"
+ "à¨çº"
+ "à¨èÍ"
+ "à¨èÒ"
+ "à¨éÒ"
+ "à¨éÒªÙé"
+ "à¨ê"
+ "à¨ê¡"
+ "à¨ê§"
+ "à¨êµ"
+ "à¨êÒ"
+ "à¨ëÍ"
+ "à©"
+ "à©¡"
+ "à©´"
+ "੾ÒÐ"
+ "à©Â"
+ "à©ÂàÁÂ"
+ "à©ÅÂ"
+ "à©ÅÒ"
+ "à©ÅÔÁ"
+ "à©ÅÕ§"
+ "à©ÅÕÂÇ"
+ "à©ÅÕèÂ"
+ "à©ÇÕ§"
+ "à©ÇÕ¹"
+ "à©ÍÐá©Ð"
+ "à©Ò"
+ "à©Ò¡êÇÂ"
+ "à©ÒÐ"
+ "à©Ô´"
+ "à©Ôº"
+ "à©Õ§"
+ "à©Õ´"
+ "à©Õº"
+ "à©ÕÂÇ"
+ "à©ÕèÂÇ"
+ "à©×͹"
+ "à©×èÍÂ"
+ "à©â¡"
+ "à©è§"
+ "હ"
+ "àªÂ"
+ "àªÅ"
+ "àªÅÂ"
+ "àªÉ°Ò"
+ "àªÍ"
+ "àªÍÃì"
+ "àªÒǹì"
+ "àªÒÇì"
+ "àªÔ§"
+ "àªÔ­"
+ "àªÔ´"
+ "àªÔéµ"
+ "àªÕ§"
+ "àªÕ§ãËÁè"
+ "àªÕº"
+ "àªÕÂÃì"
+ "àªÕÂÇ"
+ "àªÕè¹"
+ "àªÕèÂÇ"
+ "àª×Í¡"
+ "àª×Í´"
+ "àª×͹"
+ "àª×èÍ"
+ "àª×èͧ"
+ "àª×èÍÁ"
+ "àª×éÍ"
+ "àªç¤"
+ "àªç´"
+ "àªè¹"
+ "àªèÒ"
+ "àªé§"
+ "àªéÒ"
+ "à«"
+ "૵"
+ "ૹ"
+ "ૹµÔ¡ÃÑÁ"
+ "ૹµÔÅÔµÃ"
+ "ૹµÔà¡Ã´"
+ "ૹµÔàÁµÃ"
+ "ૹµì"
+ "ૻѡµÃСÃéÍ"
+ "à«¿"
+ "à«ÃØèÁ"
+ "à«ÅÅÙÅÍ´ì"
+ "à«ÅÅÙâÅÊ"
+ "à«ÅÅì"
+ "à«ÅÊì"
+ "à«Åà«ÕÂÊ"
+ "à«Í"
+ "à«ÍÃì"
+ "à«ÍÃìÇÔÊ"
+ "à«ÍÐ"
+ "à«Ò"
+ "à«ÒÐ"
+ "à«Ô§"
+ "à«ÔÃì¿àÇÍÃì"
+ "à«Ôé§"
+ "à«Õ¹"
+ "à«ÕÂÁ«Õ"
+ "à«ÕÂÇ"
+ "à«Õè§äÎé"
+ "à«×èͧ"
+ "à«ç¡àÁ¹µì"
+ "à«ç§"
+ "à«ç¹"
+ "à«ç¹àµÍÃì"
+ "à«è§"
+ "à«è¹"
+ "à«èÍ"
+ "à«é§"
+ "à«éÒ«Õé"
+ "à¬Í"
+ "à¬ÍàÍÁ"
+ "à²èÒ"
+ "à³Ã"
+ "à´¡«ìâ·ÃÊ"
+ "à´¤Ò¡ÃÑÁ"
+ "à´¤ÒÅÔµÃ"
+ "à´¤ÒàÁµÃ"
+ "à´ª"
+ "à´ªÐ"
+ "à´«Ô¡ÃÑÁ"
+ "à´«ÔÅÔµÃ"
+ "à´«ÔàÁµÃ"
+ "à´¹"
+ "à´¹ÁÒÃì¡"
+ "à´¹ÁÒÃì¤"
+ "à´ºÔµ"
+ "à´ÃѨ©Ò¹"
+ "à´ÅÅì"
+ "à´ÇÔ´"
+ "à´Ê¡ì·Í»"
+ "à´ÍÐ"
+ "à´Ò"
+ "à´ÒÐ"
+ "à´Ô¹"
+ "à´ÔÁ"
+ "à´ÕÂ"
+ "à´Õ§"
+ "à´Õ´"
+ "à´ÕÂÃ"
+ "à´ÕÂôÒÉ"
+ "à´ÕÂöÕÂì"
+ "à´ÕÂÃѨ©Ò¹"
+ "à´ÕÂÇ"
+ "à´ÕÂÐ"
+ "à´ÕèÂÇ"
+ "à´ÕéÂ"
+ "à´ÕëÂÇ"
+ "à´×Í´"
+ "à´×͹"
+ "à´×ÍÂ"
+ "à´âª"
+ "à´ç¡"
+ "à´ç¨"
+ "à´ç´"
+ "à´è"
+ "à´è¹"
+ "à´èÒ"
+ "à´é§"
+ "à´éÒ"
+ "à´ëÍ"
+ "à´ëÍ´ëÒ"
+ "àµÂ"
+ "àµÃÕÂ"
+ "àµÃÕ´"
+ "àµÃÕÂÁ"
+ "àµÃç´"
+ "àµÃè"
+ "àµÅÔ´"
+ "àµÇç´"
+ "àµÍÃì"
+ "àµÍÃì¡Õ"
+ "àµÍÐ"
+ "àµÐ"
+ "àµÒ"
+ "àµÒÐáµÐ"
+ "àµÔº"
+ "àµÔÁ"
+ "àµÔè§"
+ "àµÕ§"
+ "àµÕ¹"
+ "àµÕº"
+ "àµÕèÂ"
+ "àµÕèÂÇ"
+ "àµÕéÂ"
+ "àµÕëÂÁ"
+ "àµ×͹"
+ "àµ×éÍ"
+ "àµç§"
+ "àµç¹·ì"
+ "àµçÁ"
+ "àµè§"
+ "àµèÍ"
+ "àµèÒ"
+ "àµé¹"
+ "àµéÒ"
+ "àµéÒ·Ö§"
+ "àµéÒÊèǹ"
+ "àµéÒËÙé"
+ "àµéÒÎÇÂ"
+ "àµéÒà¨ÕéÂÇ"
+ "àµéÒàÊÕº"
+ "àµê¡"
+ "àµêÐ"
+ "àµëÒ"
+ "ඡԧ"
+ "ඹ"
+ "à¶Ã"
+ "à¶ÃÐ"
+ "à¶ÃÒ¹Øà¶ÃÐ"
+ "à¶ÅÔ§"
+ "à¶Å×Í¡¶Å¹"
+ "à¶Åä¶Å"
+ "à¶ÍÐ"
+ "à¶Ò"
+ "à¶ÒÇÑÅÂì"
+ "à¶ÒÐ"
+ "à¶Ô¡"
+ "à¶Ô´"
+ "à¶Ô´à·Ô§"
+ "à¶Ô¹"
+ "à¶Õ§"
+ "à¶×Í"
+ "à¶×Í¡"
+ "à¶×è͹"
+ "à¶èÍ"
+ "à¶éÒ"
+ "à·"
+ "à·¤¹Ô¤"
+ "à·¤â¹âÅÂÕ"
+ "à·¹¹ÔÊ"
+ "à·»"
+ "à·¾"
+ "à·¾´Ò"
+ "à·¾¸Ô´Ò"
+ "à·¾¹Á"
+ "෾´Ò"
+ "à·¾Âà¨éÒ"
+ "à·¾ÒÃÑ¡Éì"
+ "à·¾Õ"
+ "à·¾à¨éÒ"
+ "à·Á»ØÃÐ"
+ "à·Ã´à´ÍÃì"
+ "à·Ã¹à¹ÍÃì"
+ "à·Ç´Ò"
+ "à·Ç·Ñ³±ì"
+ "à·Ç·Ùµ"
+ "à·Ç¸ÃÃÁ"
+ "à·Ç¸Ô´Ò"
+ "à·Ç¹ÔÂÁ"
+ "à·ÇÃÙ»"
+ "à·ÇÉ"
+ "à·Çʶҹ"
+ "à·ÇÑ­"
+ "à·Çѹ"
+ "à·ÇÒÅÑÂ"
+ "à·ÇÕ"
+ "à·ÇâÅ¡"
+ "à·È"
+ "à·È¡ÒÅ"
+ "à·È¹Ò"
+ "à·È¹ì"
+ "à·ÈºÒÅ"
+ "à·ÈÁ¹µÃÕ"
+ "à·ÈÒÀÔºÒÅ"
+ "à·Êµì"
+ "à·ËÇѵ¶Ø"
+ "à·Ëì"
+ "à·Í­"
+ "à·ÍÁ"
+ "à·ÍÃìâÁÁÔàµÍÃì"
+ "à·ÍзÐ"
+ "à·Ò"
+ "à·Ô´"
+ "à·Ô¹"
+ "à·Ôº"
+ "à·Ôè§"
+ "à·ÔéÁ"
+ "à·Õ¹"
+ "à·Õº"
+ "à·ÕÂÁ"
+ "à·ÕÂÇ"
+ "à·Õè§"
+ "à·ÕèÂÇ"
+ "à·×Í¡"
+ "à·àºÔÅ"
+ "à·àŤÍÁ"
+ "à·àÇÈÃì"
+ "à·àÇÈÇÃì"
+ "à·â¾"
+ "à·ç¨"
+ "à·è"
+ "à·èÍ"
+ "à·èÒ"
+ "à·é§àµé§"
+ "à·éÍ"
+ "à·éÒ"
+ "ู"
+ "ูÊì"
+ "à¸Í"
+ "๤ä·"
+ "๵"
+ "๵Ã"
+ "๵Êऻ"
+ "๵Ô"
+ "๺ÔÇÅÒ"
+ "๻¨Ù¹"
+ "๻ÒÅ"
+ "à¹Â"
+ "à¹Ã¤Ø³"
+ "à¹ÃÁÔµ"
+ "à¹Ãà·È"
+ "à¹Ò"
+ "à¹Ô¹"
+ "à¹Ôº"
+ "à¹Ôè¹"
+ "à¹ÕÂ"
+ "à¹Õ¹"
+ "à¹ÕÂÁ"
+ "à¹×ͧ"
+ "à¹×ÍÂ"
+ "à¹×èͧ"
+ "à¹×éÍ"
+ "à¹çµ"
+ "à¹çµàÇÔÃì¡"
+ "à¹çµàÇÔÃì¤"
+ "à¹èÒ"
+ "à¹é¹"
+ "à¹éÍ"
+ "àº"
+ "຤͹"
+ "ວ¡ÍÅ"
+ "ອ¨"
+ "ອ¨¡"
+ "ອ¨¡ÑÅÂÒ³Õ"
+ "ອ¨¡ÒÁ¤Ø³"
+ "ອ¨¸ÃÃÁ"
+ "ອ¨ºÃþµ"
+ "ອ¨ÁÒÈ"
+ "ອ¨Ã§¤ì"
+ "ອ¨Ò"
+ "ອ¨Ò§¤»ÃдÔÉ°ì"
+ "ອ¨Ò§¤ì"
+ "ອ¨à¾Ê"
+ "ີéÒ"
+ "ູ"
+ "ູ«Ô¹"
+ "ູ«ì"
+ "àºÃ¡"
+ "àºÃì¡"
+ "àºÅàÂÕèÂÁ"
+ "àºÈ"
+ "àºÊ"
+ "àºÊºÍÅ"
+ "àºÍÃì"
+ "àºÍÃìÅÔ¹"
+ "àºÍÐ"
+ "àºÍкÐ"
+ "àºÐ"
+ "àºÒ"
+ "àºÒÐ"
+ "àºÒÐáÊ"
+ "àºÔ¡"
+ "àºÔÃì¡"
+ "àºÔè§"
+ "àºÕ´"
+ "àºÕ¹"
+ "àºÕÂÃì"
+ "àºÕè§"
+ "àºÕéÂ"
+ "àºÕéÂÇ"
+ "àº×Í"
+ "àº×͹"
+ "àº×èÍ"
+ "àº×éÍ"
+ "àº×éͧ"
+ "àºç´"
+ "àºç´àµÅç´"
+ "àºç´àÊÃç¨"
+ "àºè§"
+ "àºé"
+ "àºéÍ"
+ "àºéÍàÃÔèÁ"
+ "àºéÍàÃèÍ"
+ "àºéÒ"
+ "໡"
+ "à»Ãµ"
+ "à»ÃÁ"
+ "à»ÃÂ"
+ "à»ÃÍ"
+ "à»ÃÍÐ"
+ "à»ÃÒÐ"
+ "à»ÃÕ§"
+ "à»ÃÕ­"
+ "à»ÃÕº"
+ "à»ÃÕÂÇ"
+ "à»ÃÕÂÐ"
+ "à»ÃÕé§"
+ "à»ÃÕéÂÇ"
+ "à»ÃÕêÂÐ"
+ "à»Ã×èͧ"
+ "à»Ã×éÍÂ"
+ "à»Å"
+ "à»ÅÇ"
+ "à»ÅÒÐ"
+ "à»ÅÕè¹"
+ "à»ÅÕèÂÇ"
+ "à»ÅÕéÂ"
+ "à»Å×Í¡"
+ "à»Å×ͧ"
+ "à»Å×ÍÂ"
+ "à»Å×éͧ"
+ "à»Åè§"
+ "à»ÅèÒ"
+ "à»Í"
+ "à»ÍÃì"
+ "à»ÍÃìà«ç¹µì"
+ "à»Ð"
+ "à»Ò"
+ "à»ÒÐ"
+ "à»Òà»Ò"
+ "à»Ô¡"
+ "à»Ô§"
+ "à»Ô´"
+ "à»Ôº"
+ "à»Ôè¹"
+ "à»Ôêº"
+ "à»ÕÂ"
+ "à»Õ¡"
+ "à»ÕèÂÁ"
+ "à»ÕéÂÇ"
+ "à»Õê¡"
+ "à»ÕêÂÐ"
+ "à»×Í¡"
+ "à»×èÍÂ"
+ "à»×é͹"
+ "à»ç´"
+ "à»ç¹"
+ "à»ç¹µé¹"
+ "à»è§"
+ "à»èÒ"
+ "à»é"
+ "à»é§"
+ "à»éÒ"
+ "à»ê¡"
+ "à»ë"
+ "à»ë§"
+ "à»ëÍ"
+ "à»ëÍàËÅÍ"
+ "à»ëÒ"
+ "à»ëÒÎ×éÍ"
+ "à¼"
+ "༧"
+ "༪ԭ"
+ "༴ÔÁ"
+ "༴Õ§"
+ "༴ç¨"
+ "à¼Â"
+ "à¼ÂÍ"
+ "à¼ÅÍ"
+ "à¼ÅÍä¼Å"
+ "à¼ÅÐ"
+ "à¼ÅÒÐ"
+ "à¼Åè"
+ "à¼ÍÔ­"
+ "à¼ÍàÃÍ"
+ "à¼Ð"
+ "à¼Ò"
+ "à¼ÒÐ"
+ "à¼Ô¹"
+ "à¼×Í¡"
+ "à¼×Í´"
+ "à¼×èÍ"
+ "à¼ç´"
+ "à¼è¹"
+ "à¼èÒ"
+ "à¼éÒ"
+ "à½×Í"
+ "à½×Í¡"
+ "à½×è͹"
+ "à½éÒ"
+ "à¾"
+ "ྨ"
+ "ྪ¬¦Òµ"
+ "ྪÃ"
+ "ྪÃÒÂظ"
+ "ྴҹ"
+ "ྷ¹Ò"
+ "ྷÒÂ"
+ "ྷغÒÂ"
+ "ྐྵ¡ÇÔ¹"
+ "ྐྵÕ´"
+ "ྐྵà·ÕÂÁ"
+ "à¾Ã§"
+ "à¾ÃÒ"
+ "à¾ÃÒÐ"
+ "à¾ÃÔ´"
+ "à¾ÃÔÈ"
+ "à¾ÃÕ¡"
+ "à¾ÃÕ§"
+ "à¾ÃÕº"
+ "à¾ÃÕÂÇ"
+ "à¾Ã×èÍ"
+ "à¾Å"
+ "à¾Å§"
+ "à¾ÅÒ"
+ "à¾ÅÒÐ"
+ "à¾ÅÔ§"
+ "à¾ÅÔ´à¾ÅÔ¹"
+ "à¾ÅÔ¹"
+ "à¾ÅÕÂ"
+ "à¾ÅÕè§"
+ "à¾ÅÕéÂ"
+ "à¾È"
+ "à¾ÒÐ"
+ "à¾Ô¡"
+ "à¾Ô§"
+ "à¾Ôè§"
+ "à¾ÔèÁ"
+ "à¾Õ§"
+ "à¾Õº"
+ "à¾ÕÂÃ"
+ "à¾ÕéÂ"
+ "à¾Õé§"
+ "à¾Õé¹"
+ "à¾×èÍ"
+ "à¾×è͹"
+ "à¾ç§"
+ "à¾ç¨"
+ "à¾ç­"
+ "à¾ç´·ÙÅ"
+ "à¾è§"
+ "à¾è¹¾èÒ¹"
+ "à¾èÍ"
+ "à¾éÍ"
+ "à¿´"
+ "à¿Í"
+ "à¿ÍÃì"
+ "à¿ÍÃì¹Ôà¨ÍÃì"
+ "à¿ÍÃìàÁÕÂÁ"
+ "à¿ÍÐ"
+ "à¿Ð"
+ "à¿Ô¹"
+ "à¿ÕéÂÁ"
+ "à¿ÕéÂÇ"
+ "à¿×Í"
+ "à¿×ͧ"
+ "à¿×͹"
+ "à¿×ÍÂ"
+ "à¿×èͧ"
+ "à¿×éÍ"
+ "à¿×éͧ"
+ "à¿×éÍÂ"
+ "à¿ç´"
+ "à¿é¹"
+ "à¿éÍ"
+ "àÀµÃÒ"
+ "àÀ·"
+ "àÀ·ØºÒÂ"
+ "àÀÃÕ"
+ "àÀÊѪ"
+ "àÁ"
+ "àÁ¡Ð"
+ "àÁ¡ÐàÎÔõ«ì"
+ "àÁ¢ÅÒ"
+ "àÁ¦"
+ "àÁ¦Ò"
+ "àÁ¦Ô¹·Ãì"
+ "àÁ¦Õ"
+ "àÁµµÒ"
+ "àÁµÃ"
+ "àÁµÃÔ¡"
+ "àÁ¶Ø¹"
+ "àÁ·¹Õ"
+ "àÁ·Ô¹Õ"
+ "àÁ¸Ò"
+ "àÁ¸Õ"
+ "àÁ¹·ÍÅ"
+ "àÁ¹ºÍÃì´"
+ "àÁ¹Ù"
+ "àÁÁâÁÃÕ"
+ "àÁÃÑÂ"
+ "àÁÃØ"
+ "àÁÅ×ͧ"
+ "àÁÅ×èÍÂ"
+ "àÁÅ×éÍÂ"
+ "àÁÅç´"
+ "àÁÅì"
+ "àÁÉ"
+ "àÁÉÒ¹"
+ "àÁÐ"
+ "àÁÒ"
+ "àÁÒÅÕ"
+ "àÁÒÊì"
+ "àÁÒÌÕ"
+ "àÁÒÐ"
+ "àÁÔ¹"
+ "àÁÕÂ"
+ "àÁÕ§"
+ "àÁÕè§"
+ "àÁÕé¹"
+ "àÁ×Í¡"
+ "àÁ×ͧ"
+ "àÁ×èÍ"
+ "àÁ×èÍÂ"
+ "àÁâÁÃÕ"
+ "àÁç¡«Ôâ¡"
+ "àÁç´"
+ "àÁè¹"
+ "àÁèÒ"
+ "àÁéÁ"
+ "àÁéÒÊì"
+ "àÂ"
+ "à§"
+ "à«Ù"
+ "à¹"
+ "àÂÍ"
+ "àÂÍÃÁѹ"
+ "àÂÍÃÁѹ¹Õ"
+ "àÂÍÃÁѹÕ"
+ "àÂÍÐ"
+ "àÂÒ"
+ "àÂÒǪ¹"
+ "àÂÒǾÒ"
+ "àÂÒǾҹ"
+ "àÂÒÇÁÒÅÂì"
+ "àÂÒÇÂÍ´"
+ "àÂÒÇÃÒª"
+ "àÂÒÇÅѡɳì"
+ "àÂÒÇàÃÈ"
+ "àÂÒÇì"
+ "àÂÒÐ"
+ "àÂÔ¹"
+ "àÂÔº"
+ "àÂÔè¹"
+ "àÂÔè¹àÂéÍ"
+ "àÂÔéÁ"
+ "àÂÕÂ"
+ "àÂÕ¹"
+ "àÂÕº"
+ "àÂÕÂÇ"
+ "àÂÕè§"
+ "àÂÕèÂÁ"
+ "àÂÕèÂÇ"
+ "àÂ×Í¡"
+ "àÂ×͹"
+ "àÂ×èÍ"
+ "àÂ×éÍ"
+ "àÂ×éͧ"
+ "àÂ×é͹"
+ "àÂç¹"
+ "àÂçº"
+ "àÂè¹"
+ "àÂèÍ"
+ "àÂé"
+ "àÂéÂ"
+ "àÂéÒ"
+ "àâ"
+ "àâÒ"
+ "àâҤ³Ôµ"
+ "àóÙ"
+ "àô͹"
+ "àôÒÃì"
+ "àÃÃǹ"
+ "àÃÇ´Õ"
+ "àÃÍ"
+ "àÃÒ"
+ "àÃÒÐ"
+ "àÃÔ§"
+ "àÃÔ´"
+ "àÃÔÁ"
+ "àÃÔèÁ"
+ "àÃÔéÁ"
+ "àÃÕ¡"
+ "àÃÕ§"
+ "àÃÕ´"
+ "àÃÕ¹"
+ "àÃÕº"
+ "àÃÕÂÁ"
+ "àÃÕÂÇ"
+ "àÃÕèÂ"
+ "àÃÕèÂÁ"
+ "àÃÕèÂÇ"
+ "àÃÕéÂÇá"
+ "àÃ×Í"
+ "àÃ×Í¡"
+ "àÃ×ͧ"
+ "àÃ×Í´"
+ "àÃ×͹"
+ "àÃ×èÍ"
+ "àÃ×èͧ"
+ "àÃ×èÍÂ"
+ "àÃ×éÍ"
+ "àÃ×é͹"
+ "àÃäÃ"
+ "àÃçÇ"
+ "àÃè"
+ "àÃè§"
+ "àÃèÍ"
+ "àÃèÒ"
+ "àÃé¹"
+ "àÃéÒ"
+ "àÅ¢"
+ "àÅ¢Ò"
+ "àÅ¢Ò¸Ô¡ÒÃ"
+ "àŢҹءÒÃ"
+ "àÅ´Õé"
+ "àŵ"
+ "àŹ"
+ "àŹÊì"
+ "àźҹ͹"
+ "àÅÂ"
+ "àÅÇ"
+ "àÅÈ"
+ "àÅËÅѧ"
+ "àÅÍ"
+ "àÅÍÐ"
+ "àÅÍÐà·ÍÐ"
+ "àÅÐ"
+ "àÅÐà·Ð"
+ "àÅÒ"
+ "àÅÒÐ"
+ "àÅÔ¡"
+ "àÅÔ¡ÅÑè¡"
+ "àÅÔ¹àÅèÍ"
+ "àÅÔÈ"
+ "àÅÔé§"
+ "àÅÕÂ"
+ "àÅÕ§"
+ "àÅÕ¹"
+ "àÅÕº"
+ "àÅÕÂÁ"
+ "àÅÕÂÇ"
+ "àÅÕè§"
+ "àÅÕè¹"
+ "àÅÕèÂÁ"
+ "àÅÕé§"
+ "àÅÕéÂÇ"
+ "àÅ×Í¡"
+ "àÅ×Í´"
+ "àÅ×͹"
+ "àÅ×èͧ"
+ "àÅ×è͹"
+ "àÅ×èÍÁ"
+ "àÅ×èÍÁãÊ"
+ "àÅ×èÍÂ"
+ "àÅ×éÍÂ"
+ "àÅà«ÍÃì"
+ "àÅà¾"
+ "àÅç¡"
+ "àÅç§"
+ "àÅç´"
+ "àÅç¹"
+ "àÅçº"
+ "àÅçÁ"
+ "àÅè¹"
+ "àÅèÁ"
+ "àÅèËì"
+ "àÅèÍ"
+ "àÅèÒ"
+ "àÅé§"
+ "àÅéÒ"
+ "àǤ"
+ "àǤԹ"
+ "àǤÕ"
+ "àǨ"
+ "àǪ"
+ "àǪ¡ÃÃÁ"
+ "àÇ°¹ì"
+ "àdzÐ"
+ "àdzÔ"
+ "àdzԡ"
+ "àdzØ"
+ "àǵ¹ì"
+ "àǵÃ"
+ "àǵÒÅ"
+ "àÇ·"
+ "àÇ·¹Ò"
+ "àÇ·Âì"
+ "àÇ·Ò§¤ÈÒʵÃì"
+ "àÇ·Ò§¤ì"
+ "àÇ·Ò¹µÐ"
+ "àÇ·Ò¹µì"
+ "àÇ·Ô"
+ "àÇ·Õ"
+ "àǸÐ"
+ "àǹ"
+ "àǹÔÊ"
+ "àǹäµÂ"
+ "àǺ䫵ì"
+ "àÇÁºÅÕÂì"
+ "àÇÁÐ"
+ "àÇÁѵ"
+ "àÇÁÒµÔ¡"
+ "àÇÃ"
+ "àÇÃÁ³Õ"
+ "àÇÃѳ"
+ "àÇÃѳ³ÔÂÐ"
+ "àÇÃÕ"
+ "àÇÅÊì"
+ "àÇÅÒ"
+ "àÇÈÁì"
+ "àÇÈÂÒ"
+ "àÇÈÂì"
+ "àÇʵì"
+ "àÇʹì"
+ "àÇÊÀÙ"
+ "àÇÊÁÐ"
+ "àÇÊÁì"
+ "àÇÊÇѳ"
+ "àÇÊÊÐ"
+ "àÇÊÊѹ´Ã"
+ "àÇÊÊØ¡ÃÃÁ"
+ "àÇÊÊØÇѳ"
+ "àÇÊÒÃѪ"
+ "àÇÊÔ"
+ "àÇÊÔÂÒ"
+ "àÇ˹"
+ "àÇËÐ"
+ "àÇËѧ¤ì"
+ "àÇËÑ»µÔ"
+ "àÇËÒ"
+ "àÇËÒÂÊ"
+ "àÇËÒÊ"
+ "àÇÌØ"
+ "àÇÍ"
+ "àÇÍÃì"
+ "àÇÍÃìªÑ¹"
+ "àÇÔ¡"
+ "àÇÔÃì¡Ê൪ѹ"
+ "àÇÔÃì´"
+ "àÇÔé§"
+ "àÇÕ§"
+ "àÇÕ´¹ÒÁ"
+ "àÇÕ¹"
+ "àÇâè¹ì"
+ "àÇä¹Â"
+ "àÇçº"
+ "àÇç»"
+ "àÇèÍ"
+ "àÇé"
+ "àÇé¹"
+ "àÇéÂ"
+ "àÇéÒ"
+ "àÈÃÉ°¡Ô¨"
+ "àÈÃÉ°ÈÒʵÃì"
+ "àÈÃÉ°Ò¹Ð"
+ "àÈÃÉ°Õ"
+ "àÈÃÉ°ì"
+ "àÈÃéÒ"
+ "àÈǵ"
+ "àÈÉ"
+ "àÈÕÂÃ"
+ "àÊ"
+ "àÊ¡"
+ "àʧÕèÂÁ"
+ "àʩǹ"
+ "àÊ´"
+ "àÊ´ç¨"
+ "àʶÕÂÃ"
+ "àʶÕÂÃÀÒ¾"
+ "àʹ"
+ "àʹ§"
+ "àʹËÒ"
+ "àʹÍ"
+ "àʹÐ"
+ "àʹÒ"
+ "àʹҸԡÒÃ"
+ "àʹҺ´Õ"
+ "àʹÒʹÐ"
+ "àʹÒÐ"
+ "àʹÕ´"
+ "àʹÕÂì"
+ "àʹè§"
+ "àʹèËÒ"
+ "àʹèËì"
+ "àʹèÒ"
+ "àʺÂ"
+ "àʺÕ§"
+ "àʾ"
+ "àʾÂì"
+ "àÊÀÒ"
+ "àÊÁËÐ"
+ "àÊÁÍ"
+ "àÊÁÒ"
+ "àÊÁÕ¹"
+ "àÊÁ×͹"
+ "àÊÁç´"
+ "àÊÂ"
+ "àÊÃÔ´"
+ "àÊÃÔ¿"
+ "àÊÃÔÁ"
+ "àÊÃÕ"
+ "àÊÃç¨"
+ "àÊÅ´"
+ "àÊÅÒ"
+ "àÊÅÕè§"
+ "àÊÅ×Í¡ÊŹ"
+ "àÊÇ¡"
+ "àÊÇ¡ÒÁÒµÂì"
+ "àÊǹÐ"
+ "àÊǹÒ"
+ "àÊÇÂ"
+ "àÊÇÕ¹"
+ "àÊÒ"
+ "àÊÒÃÀÂì"
+ "àÊÒÃì"
+ "àÊÒǤ¹¸ì"
+ "àÊÒdzԵ"
+ "àÊÒǹÒ"
+ "àÊÒǹÕÂì"
+ "àÊÒÇÀÒ"
+ "àÊÒÇÀÒ¤Âì"
+ "àÊÒÇÀÒ¾"
+ "àÊÒÇÃÊ"
+ "àÊÒÇÅѡɳì"
+ "àÊÒÐ"
+ "àÊÔÃì¿"
+ "àÊÕÂ"
+ "àÊÕ§"
+ "àÊÕ´"
+ "àÊÕº"
+ "àÊÕÂÁ"
+ "àÊÕÂÇ"
+ "àÊÕèÂ"
+ "àÊÕè§"
+ "àÊÕèÂÇ"
+ "àÊÕé¹"
+ "àÊÕéÂÁ"
+ "àÊÕéÂÇ"
+ "àÊ×Í"
+ "àÊ×Í¡"
+ "àÊ×èÍ"
+ "àÊ×èÍÁ"
+ "àÊ×éÍ"
+ "àÊà¾Å"
+ "àÊâ·"
+ "àÊâÅ"
+ "àÊç§à¤Ãç§"
+ "àÊé§"
+ "àÊé¹"
+ "àÊéÒ"
+ "àË"
+ "à˧"
+ "à˧Ò"
+ "à˧×Í¡"
+ "à˧×èÍ"
+ "à˧è§"
+ "à˵Ø"
+ "à˵ءÒóì"
+ "à˹ÍÐ"
+ "à˹ÍÐ˹Ð"
+ "à˹ÒÐ"
+ "à˹Õ§"
+ "à˹ÕÂÁ"
+ "à˹ÕÂÇ"
+ "à˹ÕèÂÇ"
+ "à˹×Í"
+ "à˹×èÍÂ"
+ "à˹ç´"
+ "à˹çº"
+ "à˹è§"
+ "à˹èÍ"
+ "à˹éÒ"
+ "àËÁ"
+ "àËÁÇ´Õ"
+ "àËÁѹµì"
+ "àËÁÒ"
+ "àËÁÒÐ"
+ "àËÁÕÂÇ"
+ "àËÁÕèÂÇ"
+ "àËÁ×ͧ"
+ "àËÁ×Í´"
+ "àËÁ×͹"
+ "àËÁç¹"
+ "àËÁè"
+ "àËÁè§"
+ "àËÁèÍ"
+ "àËÂ"
+ "à˧"
+ "àËÂÒÐ"
+ "àËÂÔ§"
+ "àËÂÕ´"
+ "àËÂÕº"
+ "àËÂÕèÂÇ"
+ "àËÂ×Í¡"
+ "àËÂ×èÍ"
+ "àËÂéÒ"
+ "àËÃÑ­­Ô¡"
+ "àËÃÒ"
+ "àËÃÕ­"
+ "àËŹ"
+ "àËÅÇ"
+ "àËÅÍ"
+ "àËÅÒ"
+ "àËÅÒÐáËÅÐ"
+ "àËÅÔ§"
+ "àËÅÕ¹"
+ "àËÅÕÂÇ"
+ "àËÅÕèÂÁ"
+ "àËÅ×Í"
+ "àËÅ×Í¡"
+ "àËÅ×ͧ"
+ "àËÅ×ͺ"
+ "àËÅ×èÍÁ"
+ "àËÅç¡"
+ "àËÅè"
+ "àËÅèÒ"
+ "àËÅéÒ"
+ "àËÇ"
+ "àËǧ"
+ "àËÇÂ"
+ "àËÇÍÐ"
+ "àËÇÍÐËÇÐ"
+ "àËÇÕè§"
+ "àËÇè"
+ "àËÍÐ"
+ "àËÒ"
+ "àËÒÐ"
+ "àËÔ¹"
+ "àËÔÁ"
+ "àËÕ¹"
+ "àËÕèÂÇ"
+ "àËÕéÂ"
+ "àËÕé¹"
+ "àËÕéÂÁ"
+ "àË×Í´"
+ "àË×èÍ"
+ "àËç¨"
+ "àËç´"
+ "àËç¹"
+ "àËçº"
+ "àËè"
+ "àËèÍ"
+ "àËèÒ"
+ "àÍ"
+ "àÍ¡"
+ "àÍ¡©Ñ¹·ì"
+ "àÍ¡ª¹"
+ "àÍ¡«àÃÂì"
+ "àÍ¡«â»"
+ "àÍ¡À¾"
+ "àÍ¡ÀÒ¾"
+ "àÍ¡ÁÑÂ"
+ "àÍ¡Ãö»ÃÐâ¤"
+ "àÍ¡ÃÒª"
+ "àÍ¡Åѡɳì"
+ "àÍ¡ÊÒÃ"
+ "à͡ѤµÒ"
+ "àÍ¡Ò¸Ô»äµÂ"
+ "à͡ࢹ¡"
+ "àÍ¡à·È"
+ "àͧ"
+ "àͪ¾Õ"
+ "àÍ´Êì"
+ "àÍ´ÔàµÍÃì"
+ "à͵·Ñ¤¤Ð"
+ "àÍ·ÕàÍçÁ"
+ "à͹"
+ "à͹·ÃÒ¹«ì"
+ "à͹ä«Áì"
+ "àÍ»Êѹ"
+ "àÍÁ"
+ "àÍÂ"
+ "àÍÃÒÇѳ"
+ "àÍÃç´ÍÃèÍÂ"
+ "àÍÇ"
+ "àÍÇѧ"
+ "àÍÊ"
+ "àÍÌ¡"
+ "àÍÌÒ"
+ "àÍÍ"
+ "àÍÐÍÐ"
+ "àÍÐã¨"
+ "àÍÒ"
+ "àÍÒ·ì¾Øµ"
+ "àÍÒÌÒÃ"
+ "àÍÔ¡"
+ "àÍÔº"
+ "àÍÔé¹"
+ "àÍÕ§"
+ "àÍÕ´"
+ "àÍÕ¹"
+ "àÍÕè¹"
+ "àÍÕèÂÁ"
+ "àÍÕèÂÇ"
+ "àÍÕé§"
+ "àÍÕéÂÁà¿ÕéÂÁ"
+ "àÍÕéÂÇ"
+ "àÍÕê´"
+ "àÍÕêÂÁ"
+ "àÍÕêÂÁ¨Øê¹"
+ "àÍ×͹"
+ "àÍ×ÍÁ"
+ "àÍ×èÍÂ"
+ "àÍ×éÍ"
+ "àÍ×éͧ"
+ "àÍ×é͹"
+ "àÍ×éÍÁ"
+ "àÍ×éÍÂ"
+ "àÍà¤ÍÃì"
+ "àÍàªÕÂ"
+ "àÍàªÕè¹à¡ÁÊì"
+ "àÍà«ÕÂ"
+ "àÍàÂè¹µì"
+ "àÍẤ"
+ "àÍç¡«ì"
+ "àÍç¡«ì¾ÅÍàÃÍÃì"
+ "àÍç¡«ìà¾ÃÊ"
+ "àÍç§"
+ "àÍç´"
+ "àÍç´µÐâÃ"
+ "àÍç´ÍÖ§"
+ "àÍç¹"
+ "àÍç¹´Ù"
+ "àÍç¹àµÍÃìà·¹"
+ "àÍèÂ"
+ "àÍèÍ"
+ "àÍé"
+ "àÍé¡Ò"
+ "àÍéÍÃÐàËÂ"
+ "àÍéÍàÎÍ"
+ "àÍê¡"
+ "àÍêÂ"
+ "àÍêÐ"
+ "àÍë"
+ "àÍë§"
+ "àÍëÂ"
+ "àÎ"
+ "àΧ"
+ "àÎÂ"
+ "àÎÅԤͻàµÍÃì"
+ "àÎÔõ«ì"
+ "àÎÕÂ"
+ "àÎÕé¹"
+ "àÎÕéº"
+ "àÎÕéÂÇ"
+ "àÎ×Í¡"
+ "àÎ×͹"
+ "àÎâÃÍÕ¹"
+ "àÎâÅ"
+ "àÎéÂ"
+ "àÎéÇ"
+ "àÎéÍ"
+ "á¡"
+ "ᡧ"
+ "᡹"
+ "á¡Á"
+ "á¡ÁÁÒ"
+ "á¡Ã¡"
+ "á¡Ã¹Ôµ"
+ "á¡ÃÐ"
+ "á¡Ã俵ì"
+ "á¡Ãç¹"
+ "á¡Ãè§"
+ "á¡ÃèÇ"
+ "á¡Å"
+ "á¡Åº"
+ "á¡ÅÅ͹"
+ "á¡ÅÐ"
+ "á¡ÅàÅÕÂÁ"
+ "á¡Åé§"
+ "á¡ÅéÁ"
+ "á¡ÅéÇ"
+ "á¡Ç"
+ "á¡Çè§"
+ "á¡Çè¹"
+ "á¡Ð"
+ "á¡â´ÅÔà¹ÕÂÁ"
+ "á¡è"
+ "á¡è§"
+ "á¡è§áÂè§"
+ "á¡è¹"
+ "á¡é"
+ "á¡é§"
+ "á¡éÁ"
+ "á¡éÇ"
+ "á¡ê§"
+ "á¡ê»"
+ "á¡êÊ"
+ "á¢"
+ "ᢡ"
+ "ᢹ"
+ "ᢹ§"
+ "á¢Á"
+ "á¢Áçº"
+ "á¢ÁèÇ"
+ "á¢Â§"
+ "á¢Âç¡"
+ "á¢Âè§"
+ "á¢Ç¡"
+ "á¢Ç§"
+ "á¢Ç¹"
+ "á¢ÇÐ"
+ "á¢ç§"
+ "á¢è§"
+ "á¢è§¢Ñ¹"
+ "á¢é§"
+ "á¢é¹"
+ "á¤"
+ "ᤪàªÕÂÃì"
+ "ᤪàÁÕÂÃì"
+ "ᤵµÒÅͤ"
+ "᤹"
+ "᤺"
+ "᤻«ÙÅ"
+ "á¤Á"
+ "á¤Ã§"
+ "á¤ÃÐ"
+ "á¤Ãè"
+ "á¤Ãì"
+ "á¤Å¤ÙÅÑÊ"
+ "á¤Å§"
+ "á¤Å¹"
+ "á¤ÅÍÃÕ"
+ "á¤ÅÔ¿ÍÃìà¹ÕÂ"
+ "á¤Åà«ÕÂÁ"
+ "á¤ÅèǤÅèͧ"
+ "á¤ÅéÇ"
+ "á¤Ç"
+ "á¤Ç¡"
+ "á¤Çé¹"
+ "á¤Ð"
+ "á¤è"
+ "á¤è¹"
+ "á¤é¹"
+ "á§"
+ "á§Ð"
+ "á§è"
+ "á§è§"
+ "á§è¹"
+ "á§éÁ"
+ "á¨"
+ "ᨡ"
+ "ᨧ"
+ "á¨Ç"
+ "á¨Ð"
+ "á¨èÁ"
+ "á¨èÇ"
+ "á¨é"
+ "á¨é§"
+ "á¨é¹"
+ "á¨éÇ"
+ "á¨ê´"
+ "á¨ë"
+ "á¨ëÇ"
+ "á¨ëÇáËÇÇ"
+ "á©"
+ "á©¡"
+ "ᩧ"
+ "á©Åº"
+ "á©ÅÐ"
+ "á©ÅéÁ"
+ "á©Ð"
+ "á©è"
+ "á©è§"
+ "áª"
+ "áªÁ»ì"
+ "áªÁà»­"
+ "áªÃì"
+ "áªÅèÁ"
+ "áªè"
+ "áªè§"
+ "áªèÁ"
+ "᫧"
+ "á«´"
+ "᫹´ìÇÔª"
+ "᫺"
+ "á«Á"
+ "á«ÂÔ´"
+ "á«Ç"
+ "á«Ð"
+ "á«è"
+ "á«èÇ"
+ "á´"
+ "á´¡"
+ "á´§"
+ "á´´"
+ "á´¹"
+ "á´Ð"
+ "á´ç¡"
+ "á´è"
+ "á´è¹"
+ "á´èÇ"
+ "ᵡ"
+ "ᵧ"
+ "ᵧ¡ÇÒ"
+ "ᵧàÁ"
+ "ᵧâÁ"
+ "áµ´"
+ "áµ¹"
+ "áµÃ"
+ "áµÐ"
+ "áµè"
+ "áµè§"
+ "áµé"
+ "áµé¨ÔëÇ"
+ "áµéÁ"
+ "áµê´áµë"
+ "á¶"
+ "ᶡ"
+ "ᶺ"
+ "á¶Á"
+ "á¶Å§"
+ "á¶Ç"
+ "á·§"
+ "á·¹"
+ "á·¹·ÒÅÑÁ"
+ "á·º"
+ "á·Ã¡"
+ "á·Ã¡àµÍÃì"
+ "á·Ð"
+ "á·ç¡«Õè"
+ "á·ç§¡ì¹éÓ"
+ "á·è§"
+ "á·è¹"
+ "á·é"
+ "á·é§"
+ "Ṻ"
+ "á¹Á"
+ "á¹Ç"
+ "á¹Ð"
+ "á¹è"
+ "á¹è§"
+ "á¹è¹"
+ "á¹èÇ"
+ "á¹èÐ"
+ "áº"
+ "ạ"
+ "Ấ·ÕàÃÕÂ"
+ "ầ¡ì"
+ "ầ¤ì"
+ "ẴÁÔ¹µÑ¹"
+ "ẵàµÍÃÕè"
+ "ẹ"
+ "ẹâ¨"
+ "Ẻ"
+ "áºÐ"
+ "áºàÃÕÂÁ"
+ "áºçº"
+ "áºè§"
+ "á»"
+ "ừԿԤ"
+ "á»´"
+ "Ỻ"
+ "á»Ã"
+ "á»Ã¡"
+ "á»Ã§"
+ "á»Ã»Ãǹ"
+ "á»ÃÐ"
+ "á»Ãè§"
+ "á»Ãé¹"
+ "á»Ãê´"
+ "á»Ãë"
+ "á»Å"
+ "á»Å¡"
+ "á»Å§"
+ "á»Å¹"
+ "á»Åº"
+ "á»Åé"
+ "á»Ð"
+ "á»é§"
+ "á»é¹"
+ "á»éÇ"
+ "á»ê´"
+ "á»êº"
+ "á»êÐ"
+ "á»êЫÐ"
+ "á»ë§"
+ "á»ëÇ"
+ "ἡ"
+ "ἧ"
+ "á¼´"
+ "á¼¹"
+ "á¼¹¡"
+ "á¼Å"
+ "á¼Å§"
+ "á¼ÅÐ"
+ "á¼Åçº"
+ "á¼ÅçÇ"
+ "á¼è"
+ "á¼è¹"
+ "á¼èÇ"
+ "á¼éÇ"
+ "ὡ"
+ "ὧ"
+ "á½´"
+ "á¾"
+ "ᾧ"
+ "ᾧ¾ÇÂ"
+ "á¾·ÂÈÒʵÃì"
+ "á¾·ÂÊÀÒ"
+ "á¾·ÂÒ"
+ "á¾·Âì"
+ "á¾¹"
+ "á¾¹¡"
+ "á¾¹§àªÔ­"
+ "á¾Ã"
+ "á¾Ã¡"
+ "á¾ÃÇ"
+ "á¾Ãè"
+ "á¾Ãè§"
+ "á¾ÃéÇ"
+ "á¾Å§"
+ "á¾Åµ¿ÍÃìÁ"
+ "á¾Å·Ô¹ÑÁ"
+ "á¾ÅÁ"
+ "á¾ÈÂÒ"
+ "á¾ÈÂì"
+ "á¾Ð"
+ "á¾ç¡"
+ "á¾ç¤à¡¨"
+ "á¾è§"
+ "á¾è¹"
+ "á¾é"
+ "á¾éÇ"
+ "á¿¡«ì"
+ "ῧ"
+ "ῪÑè¹"
+ "Ό"
+ "Ό«Õ"
+ "Ὼ"
+ "á¿Ãì"
+ "á¿Å¡«ì"
+ "á¿Åµ"
+ "á¿Ð"
+ "á¿éÁ"
+ "áÁ¡"
+ "áÁ¡¹Õà«ÕÂÁ"
+ "áÁ¤â¤Ã"
+ "áÁ§"
+ "áÁ§¡Ò¹ÕÊ"
+ "áÁ¹"
+ "áÁ¹¨ÙàÃÕÂ"
+ "áÁŧ"
+ "áÁÇ"
+ "áÁÐ"
+ "áÁè"
+ "áÁè¹"
+ "áÁèÎèͧÊ͹"
+ "áÁé"
+ "áÁé¹"
+ "áÁéÇ"
+ "á¡"
+ "á§"
+ "áº"
+ "áÂÁ"
+ "áÂÐ"
+ "áÂáÊ"
+ "áÂçº"
+ "áÂè"
+ "áÂè§"
+ "áÂé"
+ "áÂé§"
+ "áÂéÁ"
+ "áÃ"
+ "áá"
+ "áç"
+ "áô"
+ "áÃÁ"
+ "áÃÐ"
+ "áÃç¡à¡µ"
+ "áÃè"
+ "áÃè§"
+ "áÃé§"
+ "áÃé¹á¤é¹"
+ "áÃéÇ"
+ "áÅ"
+ "áÅ¡"
+ "áŧ"
+ "áŹ"
+ "Ᏼ"
+ "Ᏼì"
+ "áź"
+ "áÅÐ"
+ "áÅç¡â·Ê"
+ "áÅè"
+ "áÅè§"
+ "áÅè¹"
+ "áÅé"
+ "áÅé§"
+ "áÅéÇ"
+ "áǧ"
+ "áÇ´"
+ "áǺ"
+ "áÇÁ"
+ "áÇÇ"
+ "áÇÐ"
+ "áÇè¹"
+ "áÇèÇ"
+ "áÇé"
+ "áÇé§"
+ "áÊ"
+ "áÊ¡"
+ "áʧ"
+ "áÊ´"
+ "áÊ´§"
+ "áʵÁ»ì"
+ "áʹ"
+ "áʹÂÒ¡Ã"
+ "áʹÂÒ¹ØÀÒ¾"
+ "áʺ"
+ "áÊÁ"
+ "áÊ¡"
+ "áʧ"
+ "áÊÂÐ"
+ "áÊÃé§"
+ "áÊŧ"
+ "áÊǧ"
+ "áÊÐ"
+ "áÊè"
+ "áÊé"
+ "áÊéÁéÒ"
+ "áË"
+ "áË¡"
+ "á˧"
+ "á˧¹"
+ "á˧á¡ë"
+ "á˧è"
+ "á˧è§"
+ "á˹"
+ "á˹§"
+ "á˹º"
+ "á˹Á"
+ "á˺"
+ "áËÁ"
+ "áËÁÐ"
+ "áËÁè"
+ "áËÁèÁ"
+ "áËÂ"
+ "á˧"
+ "áËÂÁ"
+ "áËÂÐ"
+ "áËÂè"
+ "áËÂè§"
+ "áËÅ"
+ "áËÅ¡"
+ "áËŹ"
+ "áËÅÁ"
+ "áËÅÐ"
+ "áËÅè"
+ "áËÅè§"
+ "áËÇ"
+ "áËÇ¡"
+ "áËǹ"
+ "áËÇÐ"
+ "áËÇè§"
+ "áËÐ"
+ "áËè"
+ "áËè§"
+ "áËé"
+ "áËé§"
+ "áËéÇ"
+ "áÍ"
+ "áÍ¡"
+ "áÍ´"
+ "áÍ´ÇÒ¹«ì"
+ "áÍ´à´ÃÊ"
+ "á͹"
+ "á͹´ì"
+ "á͹µÒÃ졵ԡ"
+ "á͹µÔºÍ´Õ"
+ "á͹µÔਹ"
+ "á͹µÕé"
+ "áͺ"
+ "á;¾ÅÔपѹ"
+ "á;à¾Åçµ"
+ "áÍ¿ÃÔ¡Ò"
+ "áÍÁÁÔàµÍÃì"
+ "áÍÁá»Ãì"
+ "áÍÁâÁà¹ÕÂ"
+ "áÍÃèÁ"
+ "áÍÃì"
+ "áÍÅ"
+ "áÍÅ¡ÍÎÍÅì"
+ "áÍÅ¿Ò"
+ "áÍÊ¿Ñŵì"
+ "áÍÊä¾ÃÔ¹"
+ "áÍÍÑ´"
+ "áÍâ¹´"
+ "áÍè§"
+ "áÍè¹"
+ "áÍèÇ"
+ "áÍé"
+ "áÍé§áÁé§"
+ "áÍé´"
+ "áÍéÁ"
+ "áÍꤪÑè¹"
+ "áÍê´"
+ "áÍë"
+ "áÎ"
+ "áι´ìºÍÅ"
+ "áÎÁ"
+ "áÎÁàºÍÃìà¡ÍÃì"
+ "áÎÐ"
+ "áÎè"
+ "áÎè¡Öê¹"
+ "â¡"
+ "â¡¡"
+ "⡧"
+ "⡧¡Ò§"
+ "⡯Ô"
+ "⡴ѧ"
+ "⡹"
+ "â¡ÁÅ"
+ "â¡ÁØ·"
+ "â¡Â"
+ "â¡Ã¡"
+ "â¡Ã§"
+ "â¡Ã¸"
+ "â¡Ã¸Ò"
+ "â¡Ãè§"
+ "â¡Ãë¹"
+ "â¡Å´ì"
+ "â¡Å¹"
+ "â¡ÅÒËÅ"
+ "â¡ÈÅ"
+ "â¡Ê¹"
+ "â¡ÊÔ¹·Ãì"
+ "â¡ÊÕÂì"
+ "â¡ÊØÁ"
+ "â¡Ë¡"
+ "â¡àÁ¹"
+ "â¡â¡é"
+ "â¡âÃâ¡âÊ"
+ "â¡äÊÂ"
+ "â¡è§"
+ "â¡é"
+ "â¡é§â¤é§"
+ "â¡ë"
+ "â¡ë¹"
+ "â¢"
+ "⢡"
+ "⢧"
+ "⢴"
+ "⢹"
+ "⢹§"
+ "â¢Á"
+ "â¢Á§"
+ "â¢Á´"
+ "â¢Â¡"
+ "â¢Â§"
+ "â¢Âè§"
+ "â¢Å¡"
+ "â¢Å§"
+ "â¢è§"
+ "â¤"
+ "⤡"
+ "⤨Ã"
+ "⤵Ã"
+ "⤹"
+ "⤹Á"
+ "⤺Íŵì"
+ "â¤Á"
+ "â¤ÁèÒ"
+ "â¤Ã¡"
+ "â¤Ã§"
+ "â¤Ã§¡ÒÃ"
+ "â¤ÃÁ"
+ "â¤ÃÒª"
+ "â¤ÃàÁÕÂÁ"
+ "â¤ÃâÁâ«Á"
+ "â¤Ãè§"
+ "â¤Å"
+ "â¤Å§"
+ "â¤Å§à¤Å§"
+ "â¤Å¹"
+ "â¤Å¹¹Ôè§"
+ "â¤ÅÍÁàºÕÂ"
+ "â¤ÇµÒ"
+ "â¤à¤¹"
+ "â¤è§"
+ "â¤è¹"
+ "â¤é§"
+ "â¤éª"
+ "â¤é´"
+ "â¦É¡"
+ "â¦É³Ò"
+ "â¦ÉÐ"
+ "â¦ÉÔµ"
+ "â§"
+ "⧡"
+ "⧧"
+ "⧧১"
+ "⧹"
+ "â§à§"
+ "â§è"
+ "â§è§"
+ "â§è§à§è§"
+ "â§é§"
+ "â¨"
+ "⨡"
+ "⨧"
+ "⨧â¤Ãè§"
+ "⨷"
+ "⨷¡ì"
+ "⨷Âì"
+ "⨹"
+ "â¨Á"
+ "â¨Ã"
+ "â¨Ã¡ÃÃÁ"
+ "â¨É"
+ "â¨É¨Ñ¹"
+ "â¨è§¤ÃÖèÁ"
+ "â¨è§á¨é§"
+ "â¨ê¡"
+ "â¨ë§¤ÃÖèÁ"
+ "â©"
+ "⩧੧"
+ "â©´"
+ "⩹´"
+ "⩺"
+ "â©Á"
+ "â©Å¡"
+ "â©è"
+ "â©è§©èÒ§"
+ "⪡"
+ "⪡ع"
+ "⪤"
+ "⪴¡"
+ "⪴֡"
+ "⪵Ô"
+ "⪹"
+ "âªÂ"
+ "âªÇì"
+ "â«"
+ "â«¡"
+ "â«´Ò"
+ "â«Á"
+ "â«ÃÁ"
+ "â«ÅÒ"
+ "â«ÅÙªÑè¹"
+ "â«à´ÕÂÁ"
+ "â«àÇÕµ"
+ "â«è"
+ "â´"
+ "â´¡à´¡"
+ "â´´"
+ "â´¹"
+ "ⴹѷ"
+ "â´Á"
+ "â´ÁÔâ¹"
+ "â´Â"
+ "â´è"
+ "â´è§"
+ "â´ê»"
+ "âµ"
+ "ⵡ"
+ "ⵧ൧"
+ "âµ¹"
+ "âµ¹´"
+ "âµÁÃ"
+ "âµÃ¡"
+ "âµà¡ÕÂÇ"
+ "âµè§"
+ "âµé"
+ "âµé§"
+ "âµéâ¼"
+ "âµê´"
+ "âµêÐ"
+ "âµêÐÍÔËÁèÒÁ"
+ "â¶"
+ "⶧"
+ "ⶺ"
+ "â¶Á"
+ "â·"
+ "â·¡à·¡"
+ "â·§"
+ "ⷧ෧"
+ "â·¹"
+ "â·Á¹ÑÊ"
+ "â·Ã"
+ "â·Ã¤Á¹Ò¤Á"
+ "â·Ã·ÃÃȹì"
+ "â·Ã·Ñȹì"
+ "â·Ã¾ÔÁ¾ì"
+ "â·ÃÀÒ¾"
+ "â·ÃÁ"
+ "â·ÃÈѾ·ì"
+ "â·ÃàÅ¢"
+ "â·É"
+ "â·É·Ñ³±ì"
+ "â·ÉÒ¹Øâ·É"
+ "â·ÉÒÃÁ³ì"
+ "â·ÊÐ"
+ "â·ÊÒ¤µÔ"
+ "â·âÊ"
+ "â·è"
+ "â¸è"
+ "â¹"
+ "â¹¹"
+ "â¹ÃÒ"
+ "â¹ÃÕ"
+ "â¹è¹"
+ "â¹éµ"
+ "â¹éµºØê¡"
+ "â¹éµÊì"
+ "â¹é¹"
+ "â¹éÁ"
+ "âº"
+ "⺡"
+ "⺡¢Ã³Õ"
+ "⺡Õé"
+ "⺵"
+ "⺵Ñë¹"
+ "⺹ÑÊ"
+ "âºÂ"
+ "âºÃÁÕ¹"
+ "âºÃ͹"
+ "âºÃÒ³"
+ "âºÅÔàÇÕÂ"
+ "âºÇìÅÔè§"
+ "âºÊ¶ì"
+ "âºêàºê"
+ "âºë"
+ "â»"
+ "⻡"
+ "⻧"
+ "⻧ÅÒ§"
+ "⻹"
+ "â»Ã"
+ "â»Ã§"
+ "â»Ã´"
+ "â»ÃµÍ¹"
+ "â»ÃµÕ¹"
+ "â»ÃµØà¡Ê"
+ "â»ÃÂ"
+ "â»Ãà«Êà«ÍÃì"
+ "â»ÃàµÊáµ¹µì"
+ "â»Ãá¡ÃÁ"
+ "â»Ãá¡ÃÁàÁÍÃì"
+ "â»ÃâÁªÑ¹"
+ "â»ÃâÁµ"
+ "â»Ãè§"
+ "â»Ãì"
+ "â»ÅÔâÍ"
+ "â»Åè§"
+ "â»Ê¡ÒÃì´"
+ "â»ÊàµÍÃì"
+ "â»Ð"
+ "â»áŹ´ì"
+ "â»âÅ"
+ "â»è§"
+ "â»è§¢èÒÁ"
+ "â»é"
+ "â»é§"
+ "â»ê"
+ "â»ê¡"
+ "â»ê¡à¡ÍÃì"
+ "â»êÂà«Õ¹"
+ "â»êÐ"
+ "â¼"
+ "⼧"
+ "â¼¹"
+ "â¼Â"
+ "â¼Å¡à¼Å¡"
+ "â¼Å¹"
+ "â¼ÅÐ"
+ "â¼Åè"
+ "â¼Ð"
+ "â¾"
+ "⾡"
+ "⾧"
+ "⾧¾Ò§"
+ "⾫ԵÃ͹"
+ "⾸ԭҳ"
+ "⾸ԺÑÅÅѧ¡ì"
+ "⾸ÔÊÁÀÒÃ"
+ "⾸ÔÊѵÇì"
+ "⾸Ôì"
+ "â¾¹"
+ "â¾¹·Ð¹Ò"
+ "â¾Â"
+ "â¾Â¡êǹ"
+ "â¾ÂÁ"
+ "â¾Ã¡"
+ "â¾Ã§"
+ "â¾Ãд¡"
+ "â¾ÃⵤÍÅ"
+ "â¾Å§"
+ "â¾Å¹"
+ "â¾ÅÐ"
+ "â¾Åè§"
+ "â¾Åé§"
+ "â¾Åéà¾Åé"
+ "â¾Ê¾"
+ "â¾á·Êà«ÕÂÁ"
+ "â¾é¹"
+ "â¿¡ÑÊ"
+ "⿹"
+ "â¿Åìà´ÍÃì"
+ "âÀ¤"
+ "âÀ¤Ô¹"
+ "âÀ¤Õ"
+ "âÀª¹Ð"
+ "âÀª¹Ò"
+ "âÀª¹Ò¡Ã"
+ "âÀª¹Ò¡ÒÃ"
+ "âÀª¹ÒËÒÃ"
+ "âÀª¹ì"
+ "âÁ"
+ "âÁ¡"
+ "âÁ¡¢ì"
+ "âÁ¦¡ÃÃÁ"
+ "âÁ¦ÊÑ­­Ò"
+ "âÁ¦Ð"
+ "âÁ¦Õ¡ÃÃÁ"
+ "âÁ¦ÕÂÐ"
+ "âÁ§"
+ "âÁ§¤ÃØèÁ"
+ "âÁ´ÙÅ"
+ "âÁ·¹Ò"
+ "âÁÅÔº´Õ¹ÑÁ"
+ "âÁÅÕ"
+ "âÁËÐ"
+ "âÁËѹ¸ì"
+ "âÁËÒ¤µÔ"
+ "âÁà´Å"
+ "âÁà´çÁ"
+ "âÁàÁ"
+ "âÁàÁ¹µì"
+ "âÁàÅ¡ØÅ"
+ "âÁàÊ¡"
+ "âÁàÊÊ"
+ "âÁâ¹"
+ "âÁâË"
+ "âÁä¹Â"
+ "âÁè"
+ "âÁè§"
+ "âÁé"
+ "âÂ"
+ "â¡"
+ "⡵Ãì"
+ "â¤Ð"
+ "â¤Õ"
+ "â§"
+ "⪹ì"
+ "â¸Ò"
+ "â¸Թ"
+ "â¹"
+ "â¹Õ"
+ "âÂÁ"
+ "âÂàÂ"
+ "âÂâÊ"
+ "âÂè§"
+ "âÂè§âÂè"
+ "âÂé"
+ "âÃ"
+ "âä"
+ "âä¨ÔµàÀ·"
+ "âäÒ"
+ "âäҾҸ"
+ "âç"
+ "âç¤ÑÅ"
+ "âçàÃÕ¹"
+ "âçáÃÁ"
+ "âè"
+ "âè¹ì"
+ "âõÕ"
+ "âø"
+ "âøÃ"
+ "âÃÁ"
+ "âÃÁѹ"
+ "âÃÁÒà¹ÕÂ"
+ "âÃÂ"
+ "âÃÉ"
+ "âÃËÔµ"
+ "âÃà¹ÕÂÇ"
+ "âÃè"
+ "âÅ¡"
+ "âÅ¡ÇÔ·Ù"
+ "âšѹµÃì"
+ "âÅ¡Ò"
+ "âÅ¡Ò¸Ôº´Õ"
+ "âÅ¡Ò¸ÔäµÂ"
+ "âÅ¡ÒÁÔÊ"
+ "âÅ¡ÒÇÔ¹ÒÈ"
+ "âÅ¡ÔÂÐ"
+ "âÅ¡ÕÂÇѵÃ"
+ "âÅ¡ÕÂì"
+ "âšصøÃÃÁ"
+ "âšصÃÐ"
+ "âŧ"
+ "âŨ¹Ð"
+ "âųÐ"
+ "âÅ´"
+ "âŵÑÊ"
+ "âŹ"
+ "âÅÀ"
+ "âÅÁ"
+ "âÅÁÒ"
+ "âÅËÐ"
+ "âÅËѪ"
+ "âÅËÔµ"
+ "âÅÐ"
+ "âÅàÅ"
+ "âÅè"
+ "âÅè§"
+ "âÅé"
+ "âÅé¹"
+ "âÇ"
+ "âÇÂ"
+ "âÇÂÇÒÂ"
+ "âÇËÒÃ"
+ "âÇè"
+ "âÇè§"
+ "âÇéÂ"
+ "âÇéàÇé"
+ "âÈ¡"
+ "âÈ¡Ò"
+ "âÈ¡Ò´ÙÃ"
+ "âÈ¡ÒÅÑÂ"
+ "âÈ¡Õ"
+ "âÊ"
+ "âʡѹµì"
+ "âʳ"
+ "âʳ±ì"
+ "âÊ´"
+ "âÊ´Ò"
+ "âʴҺѹ"
+ "âʵ"
+ "âÊ·¡"
+ "âÊ·Ã"
+ "âʸ¡"
+ "âʸ¹Ð"
+ "âʹ"
+ "âÊÀ³"
+ "âÊÀÒ"
+ "âÊÀÔ³Õ"
+ "âÊÀÕ"
+ "âÊÁ"
+ "âÊÁ¹ÑÊ"
+ "âÊÁÁ"
+ "âÊÁÂì"
+ "âÊè"
+ "âÊÃè§"
+ "âÊÇÃó"
+ "âÊËØéÂ"
+ "âÊÌÊ"
+ "âÊàÀ³Õ"
+ "âÊâ¤Ã¡"
+ "â˧"
+ "âË´"
+ "â˹"
+ "â˹¡"
+ "â˹è§"
+ "âËÁ"
+ "âËÁ´"
+ "âËÁè§"
+ "âËÂ"
+ "âË¡àË¡"
+ "â˧"
+ "âËÂè§"
+ "âËÃ"
+ "âËçàËç"
+ "âËÃоÒ"
+ "âËÃÒ"
+ "âËÃÒ¨ÒÃÂì"
+ "âËÃÒÈÒʵÃì"
+ "âËÅ"
+ "âËŧâ¨é§"
+ "âËŹ"
+ "âËÅè"
+ "âËÇ"
+ "âËÇ¡àËÇ¡"
+ "âËǧ"
+ "âËÇ´"
+ "âËǵ"
+ "âËÇè"
+ "âËè"
+ "âÍ"
+ "âÍ¡"
+ "âÍ¡ÒÊ"
+ "âÍ¡Ô¹ÒÇÒ"
+ "âͧ¡ÒÃ"
+ "âͧ⢴§"
+ "âͪÐ"
+ "âͪÒ"
+ "âÍ´"
+ "â͵µÑ»»Ð"
+ "â͹"
+ "âͺ"
+ "âÍÀÒ"
+ "âÍÀÒÊ"
+ "âÍÁ"
+ "âÍÂ"
+ "âÍÃÊ"
+ "âÍÅоèÍ"
+ "âÍÅÔÁ»Ô¡"
+ "âÍÇÒ·"
+ "âÍÉ°ÀÑÂ"
+ "âÍÉ°ì"
+ "âÍʶ"
+ "âÍËѧ"
+ "âÍËìÁ"
+ "âÍÌÒÃ"
+ "âÍÌÒÃÔ¡"
+ "âÍÌÒÃÖ¡"
+ "âÍ໡"
+ "âÍàÅÕé§"
+ "âÍàÇÍÃì"
+ "âÍàÍ«ÔÊ"
+ "âÍàÍÊ"
+ "âÍ⫹"
+ "âÍè"
+ "âÍè§"
+ "âÍèÍèÒ"
+ "âÍé"
+ "âÍé¡"
+ "âÍéàÍé"
+ "âÍéâÅÁ"
+ "âÍéâÎ"
+ "âÍê¡"
+ "âÍêÂ"
+ "âÍë"
+ "âÎ"
+ "âΡ"
+ "âÎÁ"
+ "âÎÅìÁ"
+ "âÎʵì"
+ "âÎÊàµÊ"
+ "âÎàµçÅ"
+ "ã¡Åé"
+ "ã¤Ã"
+ "ã¤Ãè"
+ "ã¨"
+ "ãªè"
+ "ãªé"
+ "ã´"
+ "ãµé"
+ "ã¹"
+ "ã¹ËÅǧ"
+ "ãº"
+ "ãºé"
+ "ã½è"
+ "ãÂ"
+ "ãÊ"
+ "ãÊè"
+ "ãË­è"
+ "ãËÁè"
+ "ãËé"
+ "ä¡"
+ "ä¡Ã"
+ "ä¡ÃÅÒÊ"
+ "ä¡ÃÈÃ"
+ "ä¡ÃÊÃ"
+ "ä¡Å"
+ "ä¡Åè"
+ "ä¡Ç"
+ "ä¡è"
+ "ä¡ê´ì"
+ "ä¡ë"
+ "ä¢"
+ "ä¢Çè"
+ "ä¢Çé"
+ "ä¢Ê×Í"
+ "ä¢è"
+ "ä¢è´Ñ¹"
+ "ä¢èÁØ¡"
+ "ä¢é"
+ "ä¤"
+ "ä¤Ãé"
+ "ä¤Å"
+ "ä¤ÅàÍç¹µì"
+ "ä¤Åá͹µì"
+ "ä¤Åé"
+ "ä¤é"
+ "ä§"
+ "ä¨"
+ "䩹"
+ "ä©äÅ"
+ "äª"
+ "äªÂ"
+ "äªâÂ"
+ "ä«"
+ "䫵ì"
+ "䫹ì"
+ "䫺ÕàÃÕÂ"
+ "ä«»ÃÑÊ"
+ "ä«ÂÒä¹´ì"
+ "ä«Ãé"
+ "ä«à¡ÔÅ"
+ "ä«àºÍÃì"
+ "ä«àù"
+ "ä«â¤Å¹"
+ "ä«âÅ"
+ "ä«é"
+ "ä´"
+ "ä´¹ÒâÁ"
+ "ä´¹ÒäÁµì"
+ "ä´ÃàÇÍÃì"
+ "ä´Ãì¿"
+ "ä´ÍÐÅçÍ¡"
+ "ä´ÍÐÅçÍ¡ºçÍ¡«ì"
+ "ä´ÍÒÃÕè"
+ "ä´àá·ÍÃÕ"
+ "ä´â¹àÊÒÃì"
+ "ä´é"
+ "äµ"
+ "äµÃ"
+ "äµÃÁÒÊ"
+ "äµÃèµÃͧ"
+ "äµè"
+ "äµé"
+ "äµé¡ë§"
+ "äµé½Øè¹"
+ "äµéËÇѹ"
+ "äµë"
+ "ä¶"
+ "ä¶Å"
+ "ä¶è"
+ "ä¶é"
+ "ä·"
+ "ä·¡Í"
+ "ä·¿Í´ì"
+ "ä·Â"
+ "ä·ÂÃÑ°"
+ "ä·Ã"
+ "ä·ÃÍ´ì"
+ "ä·à·à¹ÕÂÁ"
+ "ä·é"
+ "ä¹"
+ "ä¹µì¤ÅѺ"
+ "ä¹Å͹"
+ "ä¹Åì"
+ "ä¹âµÃਹ"
+ "亵ì"
+ "äºÍÍÊ"
+ "äºàºÔÅ"
+ "ä»"
+ "ä»ÂÒÅ"
+ "ä»ÃɳÕºÃó"
+ "ä»ÃɳÕºѵÃ"
+ "ä»ÃɳÕÂÀѳ±ì"
+ "ä»ÃɳÕÂÇѵ¶Ø"
+ "ä»ÃɳÕÂÒ¡Ã"
+ "ä»ÃɳÕÂì"
+ "ä»Åè"
+ "ä»è"
+ "ä»ë"
+ "ä¼"
+ "ä¼·"
+ "ä¼è"
+ "ä½"
+ "ä¾"
+ "侨ԵÃ"
+ "ä¾±ÙÃÂì"
+ "侺ÙÅÂì"
+ "ä¾Ã"
+ "ä¾Ã¨ÔµÃ"
+ "ä¾Ã±ÙÃÂì"
+ "ä¾ÃѪ"
+ "ä¾ÃÔ¹"
+ "ä¾ÃÕ"
+ "ä¾Ãè"
+ "ä¾ÅÔ¹"
+ "ä¾Åè"
+ "ä¾ÈÒÅ"
+ "ä¾àÃÒÐ"
+ "ä¾âè¹ì"
+ "ä¾è"
+ "ä¾è»êÍ¡"
+ "ä¿"
+ "ä¿Åì"
+ "ä¿á¹¹«ì"
+ "äÁ¤Ã͹"
+ "äÁµÃÕ"
+ "äÁÂÃÒº"
+ "äÁÅì"
+ "äÁâ¤Ã"
+ "äÁâ¤Ã«Í¿·ì"
+ "äÁâ¤ÃàÇ¿"
+ "äÁâ¤Ã⿹"
+ "äÁè"
+ "äÁé"
+ "äÂ"
+ "äÂè"
+ "äÃ"
+ "äÃè"
+ "äÃé"
+ "äÅÂ"
+ "äÅૹÊì"
+ "äÅè"
+ "äÅèàÅÕèÂ"
+ "äÅé"
+ "äÇ"
+ "äÇ¡Ù³°ì"
+ "äDZÙÃÂì"
+ "äÇ·Âì"
+ "äǹì"
+ "äǾ¨¹ì"
+ "äÇÂҡóì"
+ "äÇÂÒÇѨ¡Ã"
+ "äÇÂÒÇѨÁÑÂ"
+ "äÇÃÑÊ"
+ "äÇâÍÅÔ¹"
+ "äÇé"
+ "äÈÅ"
+ "äÊ"
+ "äÊÂ"
+ "äÊÂÒ"
+ "äÊÃé"
+ "äÊÇ"
+ "äÊé"
+ "äË"
+ "ä˹"
+ "äËÁ"
+ "äËÁé"
+ "äËÃè"
+ "äËÅ"
+ "äËÅè"
+ "äËÇ"
+ "äËÇé"
+ "äËËÅÓ"
+ "äËè"
+ "äËé"
+ "äÍ"
+ "äͤ͹"
+ "äÍ·Õ"
+ "äͺÕàÍçÁ"
+ "äÍÂÃÒ"
+ "äÍÂàÃÈ"
+ "äÍÃÒÇѳ"
+ "äÍÃìᏴì"
+ "äÍÈ¡ÃÕÁ"
+ "äÍÈÇÃÃÂì"
+ "äÍÈÙÃÂì"
+ "äÍÍ͹"
+ "äÍâ«â·»"
+ "äÍâÍ´Õ¹"
+ "äÍé"
+ "äδÃÒ"
+ "äÎâ¡ÃÁÔàµÍÃì"
+ "äÎâ´Ã¤ÒÃìºÍ¹"
+ "äÎâÅ"
+ )))
+ (setq thai-word-table (list 'thai-words))
+ (while l
+ (set-nested-alist (car l) 1 thai-word-table)
+ (setq l (cdr l))))
+
+
+(defun thai-update-word-table (file &optional append)
+ "Update Thai word table by replacing the current word list with
+FILE. If called with a prefix argument, FILE is appended instead to
+the current word list."
+ (interactive "FThai word table file: \nP")
+ (let ((buf (generate-new-buffer "*thai-work*"))
+ (coding-system-for-read 'thai-tis620)
+ (table (if append thai-word-table (list 'thai-words))))
+ (unwind-protect
+ (save-excursion
+ (set-buffer buf)
+ (insert-file-contents file)
+ (goto-char (point-min))
+ (while (re-search-forward "\\ct+" nil t)
+ (set-nested-alist (match-string 0) 1 table)))
+ (kill-buffer buf))
+ (setq thai-word-table table)))
+
+
+;; Two special Thai characters regarded as suffix of words.
+
+(defconst thai-MaiYaMok (make-char 'thai-tis620 ?\xE6))
+(defconst thai-PaiYanNoi (make-char 'thai-tis620 ?\xCF))
+
+
+;; Find Thai words starting at POS and return a list of positions of
+;; the Thai word ends. It doesn't move point. LIMIT limits the
+;; maximum position. IGNORE is a list of positions to ignore. It is
+;; assumed that all following characters to LIMIT are Thai. If the
+;; following char is not Thai (i.e., POS is equal to LIMIT), return t.
+;;
+;; Note that the longest word position comes first.
+
+(defun thai-find-word-ends (pos limit &optional ignore)
+ (if (>= pos limit)
+ t
+ (let* ((char (char-after pos))
+ (this (cdr (assq char (cdr thai-word-table))))
+ category-set
+ positions)
+ ;; Look up the following character sequence in `thai-word-table'
+ ;; character by character.
+ (while this
+ (setq pos (1+ pos)
+ char (char-after pos)
+ category-set (char-category-set char))
+ ;; If the current sequence is recorded in `thai-word-table'
+ ;; (i.e. (car THIS) is 1) and the following Thai character is
+ ;; not an upper-vowel, lower-vowel, or tone-mark, we have
+ ;; found a possible word ending position.
+ (if (and (eq (car this) 1)
+ (not (or (aref category-set ?2)
+ (aref category-set ?3)
+ (aref category-set ?4))))
+ (progn
+ ;; Skip possible Thai suffices.
+ (while (or (eq char thai-MaiYaMok) (eq char thai-PaiYanNoi))
+ (setq pos (1+ pos)
+ char (char-after pos)))
+ ;; Skip character positions in IGNORE list.
+ (or (memq pos ignore)
+ (setq positions (cons pos positions)))))
+ ;; Set up next loop.
+ (setq this (and (< pos limit) (cdr (assq char this)))))
+ positions)))
+
+
+;; Move point forward to the end of Thai word which follows point and
+;; update VEC. VEC is a vector of three elements used to cache word
+;; end positions. The Nth element, if non-nil, is a list of end
+;; points of the Nth word, or t indicating that there is no Thai
+;; character. LIMIT limits the point movement.
+
+(defun thai-forward-word-update-info (vec limit)
+ (let ((pos (point))
+ v0 v1 v2 v3
+ second-best
+ tried
+ positions)
+ (if
+ ;; If four succeeding Thai words are found, throw t, otherwise
+ ;; throw nil.
+ (catch 'tag
+ ;; Start with first vector element.
+ (setq v0 (aref vec 0))
+ (unless v0
+ ;; Update VEC if V0 is empty.
+ (setq v0 (thai-find-word-ends pos limit))
+ (aset vec 0 v0)
+ (aset vec 1 nil))
+ ;; In case we haven't found any wordbreaks resp. point has
+ ;; reached LIMIT, exit the catch body.
+ (if (symbolp v0) ; i.e. nil or t?
+ (throw 'tag nil))
+ ;; OK, V0 holds possible word ends for the current position.
+ ;; We save V0 for later reference.
+ (setq tried v0)
+ (setq v1 (aref vec 1))
+ ;; Now we try all end word positions to find the next word.
+ (while v0
+ (setq pos (car v0))
+ (unless v1
+ ;; Update VEC if V1 is empty, ignoring positions already
+ ;; found -- for Thai, we need the longest match, so if
+ ;; we have
+ ;;
+ ;; start(long-word) = start(short-word1)
+ ;; end(short-word1) = start(short-word2)
+ ;; end(short-word2) = end(long-word)
+ ;;
+ ;; only long-word is used.
+ (setq v1 (thai-find-word-ends pos limit tried))
+ (aset vec 1 v1)
+ (aset vec 2 nil))
+ ;; If point has reached LIMIT, exit the catch body.
+ (if (eq v1 t)
+ (throw 'tag t))
+ ;; Save SECOND-BEST, if this hasn't been done already.
+ ;; The `second best' solution is the end position of the
+ ;; longest first word followed by the longest second word.
+ (or second-best
+ (not v1)
+ (setq second-best (cons v0 v1)))
+ ;; Update the already tried end word positions.
+ (setq tried (append tried v1))
+ ;; Now repeat the whole process to find a third word.
+ (when v1
+ (setq v2 (aref vec 2))
+ (while v1
+ (setq pos (car v1))
+ (unless v2
+ (setq v2 (thai-find-word-ends pos limit tried))
+ (aset vec 2 v2))
+ (if (eq v2 t)
+ (throw 'tag t))
+ (setq tried (append tried v2))
+ ;; And the same for a fourth word.
+ (while v2
+ (setq pos (car v2))
+ (setq v3 (thai-find-word-ends pos limit tried))
+ (if v3
+ (throw 'tag t))
+ (setq v2 (cdr v2)))
+ (setq v1 (cdr v1))))
+ (setq v0 (cdr v0)))
+ ;; No success.
+ nil)
+ (progn
+ ;; We found four succeeding Thai words (or LIMIT has been
+ ;; reached). Move to the end of the first word.
+ (goto-char (car v0))
+ ;; Update VEC for the next function call. If no larger word
+ ;; positions have been found, set the corresponding vector
+ ;; element to nil.
+ (if (and (consp v1) (< (car v1) (car (aref vec 1))))
+ (aset vec 0 nil)
+ (aset vec 0 v1)
+ (if (and (consp v2) (< (car v2) (car (aref vec 2))))
+ (aset vec 1 nil)
+ (aset vec 1 v2)
+ (aset vec 2 v3)))) ; exit function successfully
+
+ ;; We didn't find four consecutive words. If we have found a
+ ;; `second best' solution and the length of those two words is
+ ;; longer than the longest word we can see at the current point,
+ ;; adopt the second best solution. This decision is based on
+ ;; heuristic tests.
+ (if (and second-best
+ (< (car (aref vec 0)) (car (cdr second-best))))
+ (progn
+ (goto-char (car (car second-best)))
+ (aset vec 0 (cdr second-best)))
+ ;; We finally failed to find a word break. For Thai, the best
+ ;; solution is to extend the first longest word so that the
+ ;; end point starts a second word.
+ (setq pos (or (car (aref vec 0)) pos))
+ (while (and (< pos limit)
+ (not (setq positions (thai-find-word-ends pos limit))))
+ (setq pos (1+ pos)))
+ (goto-char pos)
+ (aset vec 0 positions))
+ (aset vec 1 nil)
+ nil)))
+
+
+;; Return a list of Thai word boundary positions after the current
+;; point. LIMIT, if non-nil, limits the region to check.
+
+(defun thai-find-word-boundaries (&optional limit)
+ (or limit
+ (setq limit (point-max)))
+ (save-excursion
+ (let ((vec (make-vector 3 nil))
+ (boundaries nil)
+ this-limit)
+ ;; Loop over all (consecutive) Thai regions by using the
+ ;; character property `t' until LIMIT is reached.
+ (while (and (< (point) limit)
+ (re-search-forward "\\ct+" nil t))
+ (setq this-limit (point))
+ (goto-char (match-beginning 0))
+ (fillarray vec nil)
+ ;; Check the first word, initializing VEC.
+ (thai-forward-word-update-info vec this-limit)
+ ;; Then loop over the remaining words in the current Thai
+ ;; region, collecting the boundaries.
+ (while (< (point) this-limit)
+ (setq boundaries (cons (point) boundaries))
+ (thai-forward-word-update-info vec this-limit)))
+ boundaries)))
+
+
+(defun thai-break-words (separator &optional limit)
+ "Break Thai words by inserting a separator string at word boundaries."
+ (interactive "sSeparator: ")
+ (save-excursion
+ (let ((boundaries (thai-find-word-boundaries limit)))
+ (while boundaries
+ (goto-char (car boundaries))
+ (insert separator)
+ (setq boundaries (cdr boundaries))))))
+
+
+(defun thai-forward-word (count)
+ "Move point forward COUNT words considering Thai word boundaries.
+If COUNT is negative, move point backward (- COUNT) words."
+ (interactive "p")
+ (if (> count 0)
+ (while (> count 0)
+ (skip-syntax-forward "^w")
+ (if (looking-at "\\ct+")
+ ;; We have reached a Thai region, so we must do something
+ ;; special instead of using forward-word.
+ (let ((start (point))
+ (limit (match-end 0))
+ boundaries
+ tail)
+ ;; If thai-forward-word has been called within a Thai
+ ;; region, we must go back until the Thai region starts
+ ;; to do the contextual analysis for finding word
+ ;; breaks.
+ (while (aref (char-category-set (preceding-char)) ?t)
+ (forward-char -1))
+ ;; OK, we ask for the list of word boundaries in
+ ;; reversed order.
+ (setq boundaries (nreverse (thai-find-word-boundaries limit)))
+ ;; Now we search for the next boundary after START.
+ (while (and boundaries (<= (car boundaries) start))
+ (setq boundaries (cdr boundaries)))
+ ;; Adjust loop for next while loop.
+ (setq count (1- count))
+ ;; Now we skip Thai words until the BOUNDARIES list is
+ ;; empty or count-1 words have been passed.
+ (if (not boundaries)
+ (goto-char limit)
+ (while (and (> count 0)
+ boundaries)
+ (setq boundaries (cdr boundaries)
+ count (1- count)))
+ ;; If BOUNDARIES is empty, the word counter is not
+ ;; zero yet (remember that we have decreased COUNT by
+ ;; one), so we go to LIMIT. Otherwise go to next
+ ;; boundary.
+ (if boundaries
+ (goto-char (car boundaries))
+ (goto-char limit))))
+ ;; No Thai region.
+ (forward-word 1)
+ (setq count (1- count))))
+ ;; The symmetrical action for negative values.
+ (if (< count 0)
+ (while (< count 0)
+ (skip-syntax-backward "^w")
+ (if (aref (char-category-set (preceding-char)) ?t)
+ (let ((start (point))
+ (limit (if (looking-at "\\ct+") (match-end 0)
+ (point)))
+ boundaries)
+ (forward-char -1)
+ (while (aref (char-category-set (preceding-char)) ?t)
+ (forward-char -1))
+ (setq boundaries (thai-find-word-boundaries limit))
+ (while (and boundaries (>= (car boundaries) start))
+ (setq boundaries (cdr boundaries)))
+ (setq count (1+ count))
+ (if boundaries
+ (progn
+ (while (and (< count 0) boundaries)
+ (setq boundaries (cdr boundaries)
+ count (1+ count)))
+ (if boundaries
+ (goto-char (car boundaries))))))
+ (forward-word -1)
+ (setq count (1+ count)))))))
+
+
+(defun thai-backward-word (count)
+ "Move point backward COUNT words considering Thai word boundaries.
+If COUNT is negative, move point forward (- COUNT) words."
+ (interactive "p")
+ (thai-forward-word (- count)))
+
+
+(provide 'thai-word)
+
+
+;; Local Variables:
+;; coding: tis-620
+;; End:
+
+;; end of thai-word.el
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/lisp/mule-2.3/cjk-enc.el b/language/chinese/CJK/cjk-4.8.5/utils/lisp/mule-2.3/cjk-enc.el
new file mode 100644
index 0000000000..9f2371bba5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/lisp/mule-2.3/cjk-enc.el
@@ -0,0 +1,625 @@
+;;; cjk-enc.el --- provide a coding system for LaTeX2e CJK package
+
+;; Copyright (C) 1996, 1998 Electrotechnical Laboratory, JAPAN.
+
+;; Author: Kenichi HANDA <handa@etl.go.jp>
+;; Werner LEMBERG <wl@gnu.org>
+
+;; Keywords: CJK package, LaTeX2e, mule
+
+;; 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, 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 GNU Emacs; see the file COPYING. If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;
+;; CJK Version 4.8.5 (16-Oct-2021)
+;;
+
+;;; Code
+
+;; The following tables map from Mule's internal encoding to LaTeX2e
+;; macros. Note that not all macros defined here really do exist. See
+;; MULEenc.sty and cjk-enc.txt for further details.
+;;
+;; The active TeX character 0x80 is defined as a multiplex command which
+;; executes its first argument. To make the macro expansion robust
+;; against \uppercase and \lowercase, numbers are used as parameters which
+;; index the various commands.
+;;
+;; 0xFF will be used as a parameter delimiting character.
+
+(defconst cjk-latin-1
+ [;0xa0
+ "99\177" "1\177" "2\177" "3\177"
+ "4\177" "5\177" "6\177" "7\177"
+ "8\177\\ " "9\177" "10\177" "11\177"
+ "12\177" "0\177-{}" "14\177" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "20\177\\ " "21\177" "22\177" "23\177"
+ "24\177\\ " "25\177" "26\177" "27\177"
+ "28\177" "29\177" "30\177" "31\177"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "0\177\\DJ" "34\177N" "32\177O" "20\177O"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "32\177U" "20\177U" "33\177U"
+ "8\177U" "20\177Y" "0\177\\TH" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "0\177\\dj" "34\177n" "32\177o" "20\177o"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "32\177u" "20\177u" "33\177u"
+ "8\177u" "20\177y" "0\177\\th" "8\177y"
+ ])
+
+(defconst cjk-latin-2
+ [; 0xa0
+ "99\177" "48\177A" "49\177\\ " "0\177\\L"
+ "4\177" "51\177L" "20\177S" "7\177"
+ "8\177\\ " "51\177S" "24\177S" "51\177T"
+ "20\177Z" "0\177-{}" "51\177Z" "52\177Z"
+
+ ; 0xb0
+ "16\177" "48\177a" "48\177\\ " "0\177\\l"
+ "20\177\\ " "51\177l" "20\177s" "51\177\\ "
+ "24\177\\ " "51\177s" "24\177s" "51\177t"
+ "20\177z" "55\177\\ " "51\177z" "52\177z"
+
+ ; 0xc0
+ "20\177R" "20\177A" "33\177A" "49\177A"
+ "8\177A" "20\177L" "20\177C" "24\177C"
+ "51\177C" "20\177E" "48\177E" "8\177E"
+ "51\177E" "20\177I" "33\177I" "51\177D"
+
+ ; 0xd0
+ "0\177\\DJ" "20\177N" "51\177N" "20\177O"
+ "33\177O" "55\177O" "8\177O" "38\177"
+ "51\177R" "53\177U" "20\177U" "55\177U"
+ "8\177U" "20\177Y" "24\177T" "0\177\\ss"
+
+ ; 0xe0
+ "20\177r" "20\177a" "33\177a" "49\177a"
+ "8\177a" "20\177l" "20\177c" "24\177c"
+ "51\177c" "20\177e" "48\177e" "8\177e"
+ "51\177e" "20\177\\i" "33\177\\i" "51\177d"
+
+ ; 0xf0
+ "0\177\\dj" "20\177n" "51\177n" "20\177o"
+ "33\177o" "55\177o" "8\177o" "45\177"
+ "51\177r" "53\177u" "20\177u" "55\177u"
+ "8\177u" "20\177y" "24\177t" "52\177\\ "
+ ])
+
+(defconst cjk-latin-3
+ [; 0xa0
+ "99\177" "0\177\\TEXTMALTESEH" "49\177\\ " "3\177"
+ "4\177" "" "33\177H" "7\177"
+ "8\177\\ " "52\177I" "24\177S" "49\177G"
+ "33\177J" "0\177-{}" "" "52\177Z"
+
+ ; 0xb0
+ "16\177" "0\177\\textmalteseh" "18\177" "19\177"
+ "20\177\\ " "21\177" "33\177h" "23\177"
+ "24\177\\ " "0\177\\i" "24\177s" "49\177g"
+ "33\177\\j" "29\177" "" "52\177z"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" ""
+ "8\177A" "52\177C" "33\177C" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "" "34\177N" "32\177O" "20\177O"
+ "33\177O" "52\177G" "8\177O" "38\177"
+ "33\177G" "32\177U" "20\177U" "33\177U"
+ "8\177U" "49\177U" "33\177S" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" ""
+ "8\177a" "52\177c" "33\177c" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "" "34\177n" "32\177o" "20\177o"
+ "33\177o" "52\177g" "8\177o" "45\177"
+ "33\177g" "32\177u" "20\177u" "33\177u"
+ "8\177u" "49\177u" "33\177s" "52\177\\ "
+ ])
+
+(defconst cjk-latin-4
+ [; 0xa0
+ "99\177" "48\177A" "59\177" "24\177R"
+ "4\177" "34\177I" "24\177L" "7\177"
+ "8\177\\ " "51\177S" "15\177E" "24\177G"
+ "0\177\\TEXTTSTROKE" "0\177-{}" "51\177Z" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "48\177a" "48\177\\ " "24\177r"
+ "20\177\\ " "34\177\\i" "24\177l" "51\177\\ "
+ "24\177\\ " "51\177s" "15\177e" "24\177g"
+ "0\177\\texttstroke" "0\177\\NG" "51\177z" "0\177\\ng"
+
+ ; 0xc0
+ "15\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "48\177I"
+ "51\177C" "20\177E" "48\177E" "8\177E"
+ "52\177E" "20\177I" "33\177I" "15\177I"
+
+ ; 0xd0
+ "0\177\\DJ" "24\177N" "15\177O" "24\177K"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "48\177U" "20\177U" "33\177U"
+ "8\177U" "34\177U" "15\177U" "0\177\\ss"
+
+ ; 0xe0
+ "15\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "48\177i"
+ "51\177c" "20\177e" "48\177e" "8\177e"
+ "52\177e" "20\177\\i" "33\177\\i" "15\177\\i"
+
+ ; 0xf0
+ "0\177\\dj" "24\177n" "15\177o" "24\177k"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "48\177u" "20\177u" "33\177u"
+ "8\177u" "34\177u" "15\177u" "52\177\\ "
+ ])
+
+(defconst cjk-latin-5 ; ISO 8859-9
+ [; 0xa0
+ "99\177" "1\177" "2\177" "3\177"
+ "4\177" "5\177" "6\177" "7\177"
+ "8\177\\ " "9\177" "10\177" "11\177"
+ "12\177" "0\177-{}" "14\177" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "20\177\\ " "21\177" "22\177" "23\177"
+ "24\177\\ " "25\177" "26\177" "27\177"
+ "28\177" "29\177" "30\177" "31\177"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "49\177G" "34\177N" "32\177O" "20\177O"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "32\177U" "20\177U" "33\177U"
+ "8\177U" "52\177I" "24\177S" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "49\177g" "34\177n" "32\177o" "20\177o"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "32\177u" "20\177u" "33\177u"
+ "8\177u" "0\177\\i" "24\177s" "8\177y"
+ ])
+
+(defconst cjk-latin-jisx ; JIS X 0201 lower half
+ [; 0xa0
+ "" "0\177!" "37\177" "0\177\\#"
+ "39\177" "0\177\\%" "0\177\\&" "40\177"
+ "0\177(" "0\177)" "0\177*" "0\177+"
+ "0\177," "0\177-" "0\177." "0\177/"
+
+ ; 0xb0
+ "0\1770" "0\1771" "0\1772" "0\1773"
+ "0\1774" "0\1775" "0\1776" "0\1777"
+ "0\1778" "0\1779" "0\177:" "0\177;"
+ "41\177" "0\177=" "42\177" "0\177?"
+
+ ; 0xc0
+ "36\177" "0\177A" "0\177B" "0\177C"
+ "0\177D" "0\177E" "0\177F" "0\177G"
+ "0\177H" "0\177I" "0\177J" "0\177K"
+ "0\177L" "0\177M" "0\177N" "0\177O"
+
+ ; 0xd0
+ "0\177P" "0\177Q" "0\177R" "0\177S"
+ "0\177T" "0\177U" "0\177V" "0\177W"
+ "0\177X" "0\177Y" "0\177Z" "0\177["
+ "5\177" "0\177]" "43\177" "44\177"
+
+ ; 0xe0
+ "46\177" "0\177a" "0\177b" "0\177c"
+ "0\177d" "0\177e" "0\177f" "0\177g"
+ "0\177h" "0\177i" "0\177j" "0\177k"
+ "0\177l" "0\177m" "0\177n" "0\177o"
+
+ ; 0xf0
+ "0\177p" "0\177q" "0\177r" "0\177s"
+ "0\177t" "0\177u" "0\177v" "0\177w"
+ "0\177x" "0\177y" "0\177z" "47\177"
+ "50\177" "54\177" "56\177" ""
+ ])
+
+(defconst cjk-cyrillic ; ISO 8859-5
+ [; 0xa0
+ "99\177" "0\177\\CYRYO" "0\177\\CYRDJE" "20\177\\CYRG"
+ "0\177\\CYRIE" "0\177\\CYRDZE" "0\177\\CYRII" "0\177\\CYRYI"
+ "0\177\\CYRJE" "0\177\\CYRLJE" "0\177\\CYRNJE" "0\177\\CYRTSHE"
+ "20\177\\CYRK" "0\177-{}" "0\177\\CYRUSHRT" "0\177\\CYRDZHE"
+
+ ; 0xb0
+ "0\177\\CYRA" "0\177\\CYRB" "0\177\\CYRV" "0\177\\CYRG"
+ "0\177\\CYRD" "0\177\\CYRE" "0\177\\CYRZH" "0\177\\CYRZ"
+ "0\177\\CYRI" "0\177\\CYRISHRT" "0\177\\CYRK" "0\177\\CYRL"
+ "0\177\\CYRM" "0\177\\CYRN" "0\177\\CYRO" "0\177\\CYRP"
+
+ ; 0xc0
+ "0\177\\CYRR" "0\177\\CYRS" "0\177\\CYRT" "0\177\\CYRU"
+ "0\177\\CYRF" "0\177\\CYRH" "0\177\\CYRC" "0\177\\CYRCH"
+ "0\177\\CYRSH" "0\177\\CYRSHCH" "0\177\\CYRHRDSN" "0\177\\CYRERY"
+ "0\177\\CYRSFTSN" "0\177\\CYREREV" "0\177\\CYRYU" "0\177\\CYRYA"
+
+ ; 0xd0
+ "0\177\\cyra" "0\177\\cyrb" "0\177\\cyrv" "0\177\\cyrg"
+ "0\177\\cyrd" "0\177\\cyre" "0\177\\cyrzh" "0\177\\cyrz"
+ "0\177\\cyri" "0\177\\cyrishrt" "0\177\\cyrk" "0\177\\cyrl"
+ "0\177\\cyrm" "0\177\\cyrn" "0\177\\cyro" "0\177\\cyrp"
+
+ ; 0xe0
+ "0\177\\cyrr" "0\177\\cyrs" "0\177\\cyrt" "0\177\\cyru"
+ "0\177\\cyrf" "0\177\\cyrh" "0\177\\cyrc" "0\177\\cyrch"
+ "0\177\\cyrsh" "0\177\\cyrshch" "0\177\\cyrhrdsn" "0\177\\cyrery"
+ "0\177\\cyrsftsn" "0\177\\cyrerev" "0\177\\cyryu" "0\177\\cyrya"
+
+ ; 0xf0
+ "35\177" "0\177\\cyryo" "0\177\\cyrdje" "20\177\\cyrg"
+ "0\177\\cyrie" "0\177\\cyrdze" "0\177\\cyrii" "0\177\\cyryi"
+ "0\177\\cyrje" "0\177\\cyrlje" "0\177\\cyrnje" "0\177\\cyrtshe"
+ "20\177\\cyrk" "7\177" "0\177\\cyrushrt" "0\177\\cyrdzhe"
+ ])
+
+(defconst cjk-greek ; ISO 8859-7
+ [;0xa0
+ "99\177" "0\177<{}" "0\177>{}" "3\177"
+ "" "" "6\177" "7\177"
+ "8\177\\ " "9\177" "" "0\177(("
+ "12\177" "0\177-{}" "" "0\177---"
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "0\177'{}" "0\177\"'{}" "0\177'A" "0\177;"
+ "0\177'E" "0\177'H" "0\177'I" "0\177))"
+ "0\177'O" "29\177" "0\177'U" "0\177'W"
+
+ ; 0xc0
+ "0\177\"'i" "0\177A" "0\177B" "0\177G"
+ "0\177D" "0\177E" "0\177Z" "0\177H"
+ "0\177J" "0\177I" "0\177K" "0\177L"
+ "0\177M" "0\177N" "0\177X" "0\177O"
+
+ ; 0xd0
+ "0\177P" "0\177R" "" "0\177S"
+ "0\177T" "0\177U" "0\177F" "0\177Q"
+ "0\177Y" "0\177W" "0\177\"I" "0\177\"U"
+ "0\177'a" "0\177'e" "0\177'h" "0\177'i"
+
+ ; 0xe0
+ "0\177\"'u" "0\177a" "0\177b" "0\177g"
+ "0\177d" "0\177e" "0\177z" "0\177h"
+ "0\177j" "0\177i" "0\177k" "0\177l"
+ "0\177m" "0\177n" "0\177x" "0\177o"
+
+ ; 0xf0
+ "0\177p" "0\177r" "0\177c" "0\177s"
+ "0\177t" "0\177u" "0\177f" "0\177q"
+ "0\177y" "0\177w" "0\177\"i" "0\177\"u"
+ "0\177'o" "0\177'u" "0\177'w" ""
+ ])
+
+(defconst cjk-viscii-lower
+ [; 0xA0
+ "" "20\177\\abreve" "32\177\\abreve" "71\177\\abreve"
+ "20\177\\acircumflex" "32\177\\acircumflex" "73\177\\acircumflex" "71\177\\acircumflex"
+ "34\177e" "71\177e" "20\177\\ecircumflex" "32\177\\ecircumflex"
+ "73\177\\ecircumflex" "34\177\\ecircumflex" "71\177\\ecircumflex" "20\177\\ocircumflex"
+
+ ; 0xB0
+ "32\177\\ocircumflex" "73\177\\ocircumflex" "34\177\\ocircumflex" ""
+ "" "71\177\\ocircumflex" "32\177\\ohorn" "73\177\\ohorn"
+ "71\177i" "" "" ""
+ "" "0\177\\ohorn" "20\177\\ohorn" ""
+
+ ; 0xC0
+ "" "" "" ""
+ "" "" "73\177\\abreve" "34\177\\abreve"
+ "" "" "" ""
+ "" "" "" "32\177y"
+
+ ; 0xD0
+ "" "20\177\\uhorn" "" ""
+ "" "71\177a" "73\177y" "32\177\\uhorn"
+ "73\177\\uhorn" "" "" "34\177y"
+ "71\177y" "" "34\177\\ohorn" "0\177\\uhorn"
+
+ ; 0xE0
+ "32\177a" "20\177a" "0\177\\acircumflex" "34\177a"
+ "73\177a" "0\177\\abreve" "34\177\\uhorn" "34\177\\acircumflex"
+ "32\177e" "20\177e" "0\177\\ecircumflex" "73\177e"
+ "32\177i" "20\177i" "34\177i" "73\177i"
+
+ ; 0xF0
+ "0\177\\dj" "71\177\\uhorn" "32\177o" "20\177o"
+ "0\177\\ocircumflex" "34\177o" "73\177o" "71\177o"
+ "71\177u" "32\177u" "20\177u" "34\177u"
+ "73\177u" "20\177y" "71\177\\ohorn" ""
+ ])
+
+(defconst cjk-viscii-upper
+ [; 0xA0
+ "" "20\177\\ABREVE" "32\177\\ABREVE" "71\177\\ABREVE"
+ "20\177\\ACIRCUMFLEX" "32\177\\ACIRCUMFLEX" "73\177\\ACIRCUMFLEX" "71\177\\ACIRCUMFLEX"
+ "34\177E" "71\177E" "20\177\\ECIRCUMFLEX" "32\177\\ECIRCUMFLEX"
+ "73\177\\ECIRCUMFLEX" "34\177\\ECIRCUMFLEX" "71\177\\ECIRCUMFLEX" "20\177\\OCIRCUMFLEX"
+
+ ; 0xB0
+ "32\177\\OCIRCUMFLEX" "73\177\\OCIRCUMFLEX" "34\177\\OCIRCUMFLEX" ""
+ "" "71\177\\OCIRCUMFLEX" "32\177\\OHORN" "73\177\\OHORN"
+ "71\177I" "" "" ""
+ "" "0\177\\OHORN" "20\177\\OHORN" ""
+
+ ; 0xC0
+ "" "" "" ""
+ "" "" "73\177\\ABREVE" "34\177\\ABREVE"
+ "" "" "" ""
+ "" "" "" "32\177Y"
+
+ ; 0xD0
+ "" "20\177\\UHORN" "" ""
+ "" "71\177A" "73\177Y" "32\177\\UHORN"
+ "73\177\\UHORN" "" "" "34\177Y"
+ "71\177Y" "" "34\177\\OHORN" "0\177\\UHORN"
+
+ ; 0xE0
+ "32\177A" "20\177A" "0\177\\ACIRCUMFLEX" "34\177A"
+ "73\177A" "0\177\\ABREVE" "34\177\\UHORN" "34\177\\ACIRCUMFLEX"
+ "32\177E" "20\177E" "0\177\\ECIRCUMFLEX" "73\177E"
+ "32\177I" "20\177I" "34\177I" "73\177I"
+
+ ; 0xF0
+ "0\177\\DJ" "71\177\\UHORN" "32\177O" "20\177O"
+ "0\177\\OCIRCUMFLEX" "34\177O" "73\177O" "71\177O"
+ "71\177U" "32\177U" "20\177U" "34\177U"
+ "73\177U" "20\177Y" "71\177\\OHORN" ""
+ ])
+
+
+;; The following encodings will be selected (if they occur in the input
+;; buffer) at the very beginning of the output buffer to load the
+;; corresponding CJK macros.
+(defconst cjk-enc-table
+ (let ((vec (make-vector 256 nil)))
+ (aset vec lc-cn "GB")
+ (aset vec lc-kana "SJIS")
+ (aset vec lc-jp "JIS")
+ (aset vec lc-jp2 "JIS2")
+ (aset vec lc-kr "KS")
+ (aset vec lc-big5-1 "Bg5")
+ (aset vec lc-big5-2 "Bg5")
+ (aset vec lc-cns1 "CNS1")
+ (aset vec lc-cns2 "CNS2")
+ (aset vec lc-cns3 "CNS3")
+ (aset vec lc-cns4 "CNS4")
+ (aset vec lc-cns5 "CNS5")
+ (aset vec lc-cns6 "CNS6")
+ (aset vec lc-cns7 "CNS7")
+ vec))
+
+(defconst cjk-space "\17764\177\177")
+(defconst cjk-nospace "\17765\177\177")
+
+;; here we have the format specification table which defines what to do
+;; for each encoding.
+(defconst cjk-format-spec-table
+ (let ((vec (make-vector 256 nil)))
+ ;; Element is a vector VEC. Each character is formatted as:
+ ;; (format "\177%s\177" (aref VEC (- char-code 160)))
+ (aset vec lc-ltn1 cjk-latin-1)
+ (aset vec lc-ltn2 cjk-latin-2)
+ (aset vec lc-ltn3 cjk-latin-3)
+ (aset vec lc-ltn4 cjk-latin-4)
+ (aset vec lc-ltn5 cjk-latin-5)
+ (aset vec lc-roman cjk-latin-jisx)
+ ;; T2A encoding is used for Cyrillic letters. You must explicitly
+ ;; switch between T2 and T1/OT1 encoding.
+ (aset vec lc-crl cjk-cyrillic)
+ ;; LGR encoding (resp. its ligatures) is used for Greek letters. You
+ ;; must explicitly switch between LGR and T1/OT1 encoding (using
+ ;; e.g. Babel's `greek' option).
+ (aset vec lc-grk cjk-greek)
+ ;; for Vietnamese a Vietnamese TeX-font has to be used which contains
+ ;; ASCII characters too! You must explicitly switch between Vietnamese
+ ;; T5 and T1/OT1 encoding.
+ (aset vec lc-vn-1 cjk-viscii-lower)
+ (aset vec lc-vn-2 cjk-viscii-upper)
+
+ ;; Element is a cons of header HEAD and formatter FORMAT. HEAD is
+ ;; printed first, then each character is formatted as:
+ ;; (format FORMAT char-code-1 char-code-2)
+ (aset vec lc-kana '("\17770\177\177" . "\177%c\177\177"))
+ (aset vec lc-jp '("\17766\177\177" . "\177%c\177%d\177"))
+ (aset vec lc-cn '("\17767\177\177" . "\177%c\177%d\177"))
+ (aset vec lc-big5-1 '("\17768\177\177" . "\177%c\177%d\177"))
+ (aset vec lc-big5-2 '("\17768\177\177" . "\177%c\177%d\177"))
+ (aset vec lc-kr '("\17769\177\177" . "\177%c\177%d\177"))
+
+ ;; Element is a formatter string FORMAT. Each character is
+ ;; formatted as:
+ ;; (format FORMAT char-code-1 char-code-2)
+ (aset vec lc-jp2 "\17772\177JIS2\177\177%d\177%d\177")
+ (aset vec lc-cns1 "\17772\177CNS1\177\177%d\177%d\177")
+ (aset vec lc-cns2 "\17772\177CNS2\177\177%d\177%d\177")
+ (aset vec lc-cns3 "\17772\177CNS3\177\177%d\177%d\177")
+ (aset vec lc-cns4 "\17772\177CNS4\177\177%d\177%d\177")
+ (aset vec lc-cns5 "\17772\177CNS5\177\177%d\177%d\177")
+ (aset vec lc-cns6 "\17772\177CNS6\177\177%d\177%d\177")
+ (aset vec lc-cns7 "\17772\177CNS7\177\177%d\177%d\177")
+ vec))
+
+
+(make-coding-system
+ '*cjk-coding* 0 ?c
+ "Coding-system for LaTeX2e CJK Package" 1)
+
+
+(put '*cjk-coding* 'pre-write-conversion 'cjk-encode)
+
+
+(defun cjk-encode (from to)
+ (save-excursion
+ (save-restriction
+ (narrow-to-region from to)
+ (let ((mc-flag t)
+ (re-multibyte-char "[\177-\237][\240-\177]+")
+ (enc (make-vector 256 nil))
+ (space-state nil)
+ (require-cjk-execute nil)
+ prev-lc lc ch ch1 ch2 format-spec)
+ (goto-char (point-min))
+ (if (null (let (mc-flag) (re-search-forward re-multibyte-char nil t)))
+ ;; No multilingual text. Nothing to do.
+ nil
+ (goto-char (match-beginning 0))
+ (setq prev-lc lc-ascii)
+ (while (not (eobp))
+ ;; Now we are at a multibyte character.
+ ;; Set the following variables:
+ ;; LC -- leading char
+ ;; CH1 -- first char code
+ ;; CH2 -- second char code (of two byte chars)
+ (setq ch (following-char))
+ (delete-char 1)
+ (setq lc (char-component ch 0))
+ (if (or (= lc lc-big5-1) (= lc lc-big5-2))
+ ;; Mule has special encoding for Big5 characters. We
+ ;; must decode them to the normal Big5 codes.
+ (let ((vec (g2b ch)))
+ (setq ch1 (aref vec 0) ch2 (aref vec 1)))
+ (setq ch1 (char-component ch 1)
+ ch2 (char-component ch 2)))
+
+ ;; FORMAT-SPEC tells how to encode this character.
+ (setq format-spec (aref cjk-format-spec-table lc))
+ (if (null format-spec)
+ ;; Unsupported character set.
+ nil
+ ;; Ok, it is supported. If this character set is one of
+ ;; CJK, we need a special header at the beginning of the
+ ;; file.
+ (if (aset enc lc (aref cjk-enc-table lc))
+ (setq require-cjk-execute t))
+
+ (cond ((consp format-spec)
+ ;; We may have to insert the car part of the cons
+ ;; and/or space controlling commands
+ ;; (cjk-space/cjk-nospace) depending on the current
+ ;; context.
+ (if (= lc lc-kr)
+ (or (eq space-state cjk-space)
+ (insert (setq space-state cjk-space)))
+ (or (eq space-state cjk-nospace)
+ (insert (setq space-state cjk-nospace))))
+ (if (/= prev-lc lc)
+ (insert (car format-spec)))
+ (insert (format (cdr format-spec) ch1 ch2)))
+
+ ((vectorp format-spec)
+ (insert (format "\177%s\177"
+ (aref format-spec (- ch1 160)))))
+ (t ; FORMAT-SPEC is just a formatting string.
+ (insert (format format-spec ch1 ch2)))))
+
+ ;; Prepare the next loop.
+ (setq prev-lc lc)
+ ;; Skip spaces, etc.
+ (skip-chars-forward " \t\n")
+ ;; If there are any ASCII chars, skip them also, but set
+ ;; PREV-LC to LC-ASCII.
+ (if (and (< (following-char) 128)
+ (let (mc-flag)
+ (re-search-forward re-multibyte-char nil 'move)))
+ (progn
+ (goto-char (match-beginning 0))
+ (setq prev-lc lc-ascii))))
+
+ ;; Now, insert an appropriate header at the head of the file.
+ (goto-char (point-min))
+ (if require-cjk-execute
+ (let ((i 128))
+ (insert "\\def\\CJKhook{")
+ (while (< i 256)
+ (if (aref enc i)
+ (insert (format "\\CJKenc{%s}" (aref enc i))))
+ (setq i (1+ i)))
+ (insert "}")
+ (insert "\\ifx\\CJKpreproc\\undefined")
+ (insert "\\def\\CJKpreproc{cjk-enc}")
+ (insert "\\RequirePackage[global]{CJK}")
+ (insert "\\AtBeginDocument{\\begin{CJK}{}{}\\CJKspace}")
+ (insert "\\AtEndDocument{\\end{CJK}}")
+ (insert "\\else\\CJKhook\\fi "))
+ (insert "\\ifx\\CJKpreproc\\undefined")
+ (insert "\\def\\CJKpreproc{cjk-enc}")
+ (insert "\\RequirePackage{MULEenc}")
+ (insert "\\fi ")))))))
+
+
+(defun cjk-write-file ()
+ "Save current buffer and <buffername>.cjk in *cjk-coding*.
+Files of the form <buffername>.bib are saved as <buffername>-cjk.bib"
+
+ (interactive)
+ (let ((bufname (buffer-file-name))
+ body
+ extension
+ newbufname)
+ (save-buffer)
+ (string-match "\\(.*\\)\\(\\.[^/]*$\\)" bufname)
+ (setq body (match-string 1 bufname)
+ extension (match-string 2 bufname))
+ (setq newbufname
+ (concat body
+ (if (string-equal extension ".bib")
+ "-cjk.bib"
+ ".cjk")))
+ (message "Saving %s and %s" bufname newbufname)
+ (let ((set-file-coding-system *cjk-coding*))
+ (write-region (point-min) (point-max) newbufname))))
+
+
+;;; EOF
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/GNUmakefile b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/GNUmakefile
new file mode 100644
index 0000000000..de8c7c41de
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/GNUmakefile
@@ -0,0 +1,75 @@
+# Makefile to create hyphenation patterns for pinyin with tone marks and
+# pinyin without tone marks.
+
+BASH = bash
+CC = cc
+DATE = date
+GIT = git
+ICONV = iconv -f latin1 -t utf8
+RM = rm -f
+SED = sed # should be GNU sed
+
+GIT_VERSION = $(shell $(GIT) log --format=%H -1 HEAD --)
+LEFTHYPHENMIN = $(strip $(shell $(SED) 's/^\(..\).*/\1/;q' < pinyin.tr))
+RIGHTHYPHENMIN = $(strip $(shell $(SED) 's/^..\(..\).*/\1/;q' < pinyin.tr))
+TODAY = $(shell $(DATE) '+%Y-%m-%d')
+
+
+all: hyph-zh-latn-pinyin.tex \
+ hyph-zh-latn-tonepinyin.tex
+
+pinyin: pinyin.c
+ $(CC) -o $@ $<
+
+pinyin.dic: pinyin
+ ./$< > $@
+
+pattern.rules pinyin.pat: make-patterns.sh \
+ pinyin.dic \
+ pinyin.tr
+ $(BASH) make-patterns.sh pinyin.dic pinyin.tr \
+ && $(ICONV) < pattern.2 > pinyin.pat
+
+tonepinyin.pat: pinyin.pat
+ LANG=en_US.UTF-8 \
+ $(SED) -e 's/\(.*\)a\(.*\)/\1a\2 \1Ä\2 \1á\2 \1ÇŽ\2 \1à\2/' \
+ -e 's/\(.*\)e\(.*\)/\1e\2 \1ē\2 \1é\2 \1ě\2 \1è\2/' \
+ -e 's/\(.*\)i\(.*\)/\1i\2 \1Ä«\2 \1í\2 \1Ç\2 \1ì\2/' \
+ -e 's/\(.*\)o\(.*\)/\1o\2 \1Å\2 \1ó\2 \1Ç’\2 \1ò\2/' \
+ -e 's/\(.*\)u\(.*\)/\1u\2 \1ū\2 \1ú\2 \1ǔ\2 \1ù\2/' \
+ -e 's/\(.*\)ü\(.*\)/\1ü\2 \1ǖ\2 \1ǘ\2 \1ǚ\2 \1ǜ\2/' \
+ < $< > $@
+
+hyph-zh-latn-pinyin.tex: hyph-zh-latn-pinyin.in \
+ pattern.rules \
+ pinyin.pat
+ $(SED) -e 's/@WITH@/without/' \
+ -e 's/@DATE@/$(TODAY)/' \
+ -e 's/@GIT_VERSION@/$(GIT_VERSION)/' \
+ -e 's/@LEFTHYPHENMIN@/$(LEFTHYPHENMIN)/' \
+ -e 's/@RIGHTHYPHENMIN@/$(RIGHTHYPHENMIN)/' \
+ -e '/used patgen parameters/ r pattern.rules' \
+ -e '/\\patterns/ r pinyin.pat' \
+ < $< > $@
+
+hyph-zh-latn-tonepinyin.tex: hyph-zh-latn-pinyin.in \
+ pattern.rules \
+ tonepinyin.pat
+ $(SED) -e 's/@WITH@/with/' \
+ -e 's/@DATE@/$(TODAY)/' \
+ -e 's/@GIT_VERSION@/$(GIT_VERSION)/' \
+ -e 's/@LEFTHYPHENMIN@/$(LEFTHYPHENMIN)/' \
+ -e 's/@RIGHTHYPHENMIN@/$(RIGHTHYPHENMIN)/' \
+ -e '/used patgen parameters/ r pattern.rules' \
+ -e '/\\patterns/ r tonepinyin.pat' \
+ < $< > $@
+
+clean:
+ $(RM) pinyin pinyin.dic pinyin.pat tonepinyin.pat
+ $(RM) pattern.*
+ $(RM) pattmp.*
+
+# Local Variables:
+# mode: makefile
+# coding: utf-8
+# End:
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-pinyin.in b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-pinyin.in
new file mode 100644
index 0000000000..f905d3000c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-pinyin.in
@@ -0,0 +1,66 @@
+% title: Hyphenation patterns for Chinese pinyin (Mandarin), @WITH@ tone
+% markers
+%
+% version: @DATE@
+%
+% authors:
+% -
+% name: Werner Lemberg
+% contact: wl (at) gnu.org
+%
+% copyright: Copyright (C) 1994-2018 Werner Lemberg
+%
+% licence:
+% name: MIT
+% url: http://opensource.org/licenses/mit-license.php
+% text: >
+% 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.
+%
+% source: http://git.savannah.gnu.org/gitweb/?p=cjk.git;a=commit;h=@GIT_VERSION@
+%
+% language:
+% name: Mandarin Chinese, pinyin transliteration (@WITH@ tone markers)
+% tag: zh-latn-pinyin
+%
+% hyphenmins:
+% generation:
+% left: @LEFTHYPHENMIN@
+% right: @RIGHTHYPHENMIN@
+% typesetting:
+% left: @LEFTHYPHENMIN@
+% right: @RIGHTHYPHENMIN@
+
+\message{Pinyin Hyphenation Patterns (@WITH@ tone markers) @DATE@ (WL)}
+
+%
+% The used patgen parameters are
+%
+
+\patterns{
+}
+
+\endinput
+
+%%% Local Variables:
+%%% mode: tex
+%%% coding: utf-8
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-pinyin.tex b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-pinyin.tex
new file mode 100644
index 0000000000..7180859886
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-pinyin.tex
@@ -0,0 +1,253 @@
+% title: Hyphenation patterns for Chinese pinyin (Mandarin), without tone
+% markers
+%
+% version: 2018-11-25
+%
+% authors:
+% -
+% name: Werner Lemberg
+% contact: wl (at) gnu.org
+%
+% copyright: Copyright (C) 1994-2018 Werner Lemberg
+%
+% licence:
+% name: MIT
+% url: http://opensource.org/licenses/mit-license.php
+% text: >
+% 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.
+%
+% source: http://git.savannah.gnu.org/gitweb/?p=cjk.git;a=commit;h=e058ceae5561a89e33828f593b094c8b57f6a72e
+%
+% language:
+% name: Mandarin Chinese, pinyin transliteration (without tone markers)
+% tag: zh-latn-pinyin
+%
+% hyphenmins:
+% generation:
+% left: 1
+% right: 2
+% typesetting:
+% left: 1
+% right: 2
+
+\message{Pinyin Hyphenation Patterns (without tone markers) 2018-11-25 (WL)}
+
+%
+% The used patgen parameters are
+%
+% 1 1 | 2 5 | 1 1 1
+% 2 2 | 2 5 | 1 2 1
+%
+
+\patterns{
+a1b
+a1c
+a1d
+a1f
+a1g
+a1h
+a1j
+a1k
+a1l
+a1m
+a1p
+a1q
+a1r
+a1s
+a1t
+a1w
+a1x
+a1y
+a1z
+e1b
+e1c
+e1d
+e1f
+e1g
+e1h
+e1j
+e1k
+e1l
+e1m
+e1p
+e1q
+e1r
+e1s
+e1t
+e1w
+e1x
+e1y
+e1z
+1ga
+g1b
+g1c
+g1d
+1ge
+g1f
+g1g
+g1h
+g1j
+g1k
+g1l
+g1m
+g1n
+1go
+g1p
+g1q
+g1r
+g1s
+g1t
+1gu
+g1w
+g1x
+g1y
+g1z
+i1b
+i1c
+i1d
+i1f
+i1g
+i1h
+i1j
+i1k
+i1l
+i1m
+i1p
+i1q
+i1r
+i1s
+i1t
+i1w
+i1x
+i1y
+i1z
+1na
+n1b
+n1c
+n1d
+1ne
+n1f
+n1h
+1ni
+n1j
+n1k
+n1l
+n1m
+n1n
+1no
+n1p
+n1q
+n1r
+n1s
+n1t
+1nu
+1nü
+n1w
+n1x
+n1y
+n1z
+o1b
+o1c
+o1d
+o1f
+o1g
+o1h
+o1j
+o1k
+o1l
+o1m
+o1p
+o1q
+o1r
+o1s
+o1t
+o1w
+o1x
+o1y
+o1z
+2r1b
+2r1c
+2r1d
+2r1f
+2r1g
+2r1h
+2r1j
+2r1k
+2r1l
+2r1m
+2r1n
+2r1p
+2r1q
+2r1r
+2r1s
+2r1t
+2r1w
+2r1x
+2r1y
+2r1z
+u1b
+u1c
+u1d
+u1f
+u1g
+u1h
+u1j
+u1k
+u1l
+u1m
+u1p
+u1q
+u1r
+u1s
+u1t
+u1w
+u1x
+u1y
+u1z
+ü1b
+ü1c
+ü1d
+ü1f
+ü1g
+ü1h
+ü1j
+ü1k
+ü1l
+ü1m
+ü1n
+ü1p
+ü1q
+ü1r
+ü1s
+ü1t
+ü1w
+ü1x
+ü1y
+ü1z
+}
+
+\endinput
+
+%%% Local Variables:
+%%% mode: tex
+%%% coding: utf-8
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-tonepinyin.tex b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-tonepinyin.tex
new file mode 100644
index 0000000000..2e927ca70f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/hyph-zh-latn-tonepinyin.tex
@@ -0,0 +1,253 @@
+% title: Hyphenation patterns for Chinese pinyin (Mandarin), with tone
+% markers
+%
+% version: 2018-11-25
+%
+% authors:
+% -
+% name: Werner Lemberg
+% contact: wl (at) gnu.org
+%
+% copyright: Copyright (C) 1994-2018 Werner Lemberg
+%
+% licence:
+% name: MIT
+% url: http://opensource.org/licenses/mit-license.php
+% text: >
+% 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.
+%
+% source: http://git.savannah.gnu.org/gitweb/?p=cjk.git;a=commit;h=e058ceae5561a89e33828f593b094c8b57f6a72e
+%
+% language:
+% name: Mandarin Chinese, pinyin transliteration (with tone markers)
+% tag: zh-latn-pinyin
+%
+% hyphenmins:
+% generation:
+% left: 1
+% right: 2
+% typesetting:
+% left: 1
+% right: 2
+
+\message{Pinyin Hyphenation Patterns (with tone markers) 2018-11-25 (WL)}
+
+%
+% The used patgen parameters are
+%
+% 1 1 | 2 5 | 1 1 1
+% 2 2 | 2 5 | 1 2 1
+%
+
+\patterns{
+a1b Ä1b á1b ÇŽ1b à1b
+a1c Ä1c á1c ÇŽ1c à1c
+a1d Ä1d á1d ÇŽ1d à1d
+a1f Ä1f á1f ÇŽ1f à1f
+a1g Ä1g á1g ÇŽ1g à1g
+a1h Ä1h á1h ÇŽ1h à1h
+a1j Ä1j á1j ÇŽ1j à1j
+a1k Ä1k á1k ÇŽ1k à1k
+a1l Ä1l á1l ÇŽ1l à1l
+a1m Ä1m á1m ÇŽ1m à1m
+a1p Ä1p á1p ÇŽ1p à1p
+a1q Ä1q á1q ÇŽ1q à1q
+a1r Ä1r á1r ÇŽ1r à1r
+a1s Ä1s á1s ÇŽ1s à1s
+a1t Ä1t á1t ÇŽ1t à1t
+a1w Ä1w á1w ÇŽ1w à1w
+a1x Ä1x á1x ÇŽ1x à1x
+a1y Ä1y á1y ÇŽ1y à1y
+a1z Ä1z á1z ÇŽ1z à1z
+e1b ē1b é1b ě1b è1b
+e1c ē1c é1c ě1c è1c
+e1d ē1d é1d ě1d è1d
+e1f ē1f é1f ě1f è1f
+e1g ē1g é1g ě1g è1g
+e1h ē1h é1h ě1h è1h
+e1j ē1j é1j ě1j è1j
+e1k ē1k é1k ě1k è1k
+e1l ē1l é1l ě1l è1l
+e1m ē1m é1m ě1m è1m
+e1p ē1p é1p ě1p è1p
+e1q ē1q é1q ě1q è1q
+e1r ē1r é1r ě1r è1r
+e1s ē1s é1s ě1s è1s
+e1t ē1t é1t ě1t è1t
+e1w ē1w é1w ě1w è1w
+e1x ē1x é1x ě1x è1x
+e1y ē1y é1y ě1y è1y
+e1z ē1z é1z ě1z è1z
+1ga 1gÄ 1gá 1gÇŽ 1gà
+g1b
+g1c
+g1d
+1ge 1gē 1gé 1gě 1gè
+g1f
+g1g
+g1h
+g1j
+g1k
+g1l
+g1m
+g1n
+1go 1gŠ1gó 1gǒ 1gò
+g1p
+g1q
+g1r
+g1s
+g1t
+1gu 1gū 1gú 1gǔ 1gù
+g1w
+g1x
+g1y
+g1z
+i1b Ä«1b í1b Ç1b ì1b
+i1c Ä«1c í1c Ç1c ì1c
+i1d Ä«1d í1d Ç1d ì1d
+i1f Ä«1f í1f Ç1f ì1f
+i1g Ä«1g í1g Ç1g ì1g
+i1h Ä«1h í1h Ç1h ì1h
+i1j Ä«1j í1j Ç1j ì1j
+i1k Ä«1k í1k Ç1k ì1k
+i1l Ä«1l í1l Ç1l ì1l
+i1m Ä«1m í1m Ç1m ì1m
+i1p Ä«1p í1p Ç1p ì1p
+i1q Ä«1q í1q Ç1q ì1q
+i1r Ä«1r í1r Ç1r ì1r
+i1s Ä«1s í1s Ç1s ì1s
+i1t Ä«1t í1t Ç1t ì1t
+i1w Ä«1w í1w Ç1w ì1w
+i1x Ä«1x í1x Ç1x ì1x
+i1y Ä«1y í1y Ç1y ì1y
+i1z Ä«1z í1z Ç1z ì1z
+1na 1nÄ 1ná 1nÇŽ 1nà
+n1b
+n1c
+n1d
+1ne 1nē 1né 1ně 1nè
+n1f
+n1h
+1ni 1nÄ« 1ní 1nÇ 1nì
+n1j
+n1k
+n1l
+n1m
+n1n
+1no 1nŠ1nó 1nǒ 1nò
+n1p
+n1q
+n1r
+n1s
+n1t
+1nu 1nū 1nú 1nǔ 1nù
+1nü 1nǖ 1nǘ 1nǚ 1nǜ
+n1w
+n1x
+n1y
+n1z
+o1b Å1b ó1b Ç’1b ò1b
+o1c Å1c ó1c Ç’1c ò1c
+o1d Å1d ó1d Ç’1d ò1d
+o1f Å1f ó1f Ç’1f ò1f
+o1g Å1g ó1g Ç’1g ò1g
+o1h Å1h ó1h Ç’1h ò1h
+o1j Å1j ó1j Ç’1j ò1j
+o1k Å1k ó1k Ç’1k ò1k
+o1l Å1l ó1l Ç’1l ò1l
+o1m Å1m ó1m Ç’1m ò1m
+o1p Å1p ó1p Ç’1p ò1p
+o1q Å1q ó1q Ç’1q ò1q
+o1r Å1r ó1r Ç’1r ò1r
+o1s Å1s ó1s Ç’1s ò1s
+o1t Å1t ó1t Ç’1t ò1t
+o1w Å1w ó1w Ç’1w ò1w
+o1x Å1x ó1x Ç’1x ò1x
+o1y Å1y ó1y Ç’1y ò1y
+o1z Å1z ó1z Ç’1z ò1z
+2r1b
+2r1c
+2r1d
+2r1f
+2r1g
+2r1h
+2r1j
+2r1k
+2r1l
+2r1m
+2r1n
+2r1p
+2r1q
+2r1r
+2r1s
+2r1t
+2r1w
+2r1x
+2r1y
+2r1z
+u1b ū1b ú1b ǔ1b ù1b
+u1c ū1c ú1c ǔ1c ù1c
+u1d ū1d ú1d ǔ1d ù1d
+u1f ū1f ú1f ǔ1f ù1f
+u1g ū1g ú1g ǔ1g ù1g
+u1h ū1h ú1h ǔ1h ù1h
+u1j ū1j ú1j ǔ1j ù1j
+u1k ū1k ú1k ǔ1k ù1k
+u1l ū1l ú1l ǔ1l ù1l
+u1m ū1m ú1m ǔ1m ù1m
+u1p ū1p ú1p ǔ1p ù1p
+u1q ū1q ú1q ǔ1q ù1q
+u1r ū1r ú1r ǔ1r ù1r
+u1s ū1s ú1s ǔ1s ù1s
+u1t ū1t ú1t ǔ1t ù1t
+u1w ū1w ú1w ǔ1w ù1w
+u1x ū1x ú1x ǔ1x ù1x
+u1y ū1y ú1y ǔ1y ù1y
+u1z ū1z ú1z ǔ1z ù1z
+ü1b ǖ1b ǘ1b ǚ1b ǜ1b
+ü1c ǖ1c ǘ1c ǚ1c ǜ1c
+ü1d ǖ1d ǘ1d ǚ1d ǜ1d
+ü1f ǖ1f ǘ1f ǚ1f ǜ1f
+ü1g ǖ1g ǘ1g ǚ1g ǜ1g
+ü1h ǖ1h ǘ1h ǚ1h ǜ1h
+ü1j ǖ1j ǘ1j ǚ1j ǜ1j
+ü1k ǖ1k ǘ1k ǚ1k ǜ1k
+ü1l ǖ1l ǘ1l ǚ1l ǜ1l
+ü1m ǖ1m ǘ1m ǚ1m ǜ1m
+ü1n ǖ1n ǘ1n ǚ1n ǜ1n
+ü1p ǖ1p ǘ1p ǚ1p ǜ1p
+ü1q ǖ1q ǘ1q ǚ1q ǜ1q
+ü1r ǖ1r ǘ1r ǚ1r ǜ1r
+ü1s ǖ1s ǘ1s ǚ1s ǜ1s
+ü1t ǖ1t ǘ1t ǚ1t ǜ1t
+ü1w ǖ1w ǘ1w ǚ1w ǜ1w
+ü1x ǖ1x ǘ1x ǚ1x ǜ1x
+ü1y ǖ1y ǘ1y ǚ1y ǜ1y
+ü1z ǖ1z ǘ1z ǚ1z ǜ1z
+}
+
+\endinput
+
+%%% Local Variables:
+%%% mode: tex
+%%% coding: utf-8
+%%% End:
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/make-patterns.sh b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/make-patterns.sh
new file mode 100644
index 0000000000..d4b6591732
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/make-patterns.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+# -*- coding: utf-8 -*-
+
+#
+# This script generates patterns for pinyin.
+#
+# Usage:
+#
+# sh make-patterns.sh pinyin.dic pinyin.tr
+#
+#
+# Input: pinyin.dic List of all two-syllable combinations of pinyin
+# syllables (which don't need an apostrophe), with
+# hyphens inbetween.
+# pinyin.tr Translation file for patgen.
+#
+# Output: pattmp.[1-2] patgen results.
+# pattern.[0-2] patterns -- pattern.2 is the final pattern file.
+# pattern.[0-2].log Log files.
+# pattern.rules A compact description of the used patgen
+# parameters.
+#
+
+
+# patgen parameters for levels one and two.
+
+hyph_start_finish[1]='1 1'
+hyph_start_finish[2]='2 2'
+
+pat_start_finish[1]='2 5'
+pat_start_finish[2]='2 5'
+
+good_bad_thres[1]='1 1 1'
+good_bad_thres[2]='1 2 1'
+
+
+# Create empty start patterns.
+rm -f pattern.0
+touch pattern.0
+
+printf "%%\n" > pattern.rules
+
+for i in 1 2; do
+
+ # Create patterns for current level. Control instructions for patgen are
+ # sent using a pipe.
+ printf "%s\n%s\n%s\n%s" "${hyph_start_finish[$i]}" \
+ "${pat_start_finish[$i]}" \
+ "${good_bad_thres[$i]}" \
+ "y" \
+ | patgen $1 pattern.$(($i-1)) pattern.$i $2 \
+ | tee pattern.$i.log
+
+ # Collect the used patgen parameters.
+ printf "%% %s | %s | %s\n" "${hyph_start_finish[$i]}" \
+ "${pat_start_finish[$i]}" \
+ "${good_bad_thres[$i]}" \
+ >> pattern.rules
+
+done
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.c b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.c
new file mode 100644
index 0000000000..f7648db699
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.c
@@ -0,0 +1,494 @@
+/*
+
+ This is the file pinyin.c of the CJK macro package ver. 4.8.5
+ (16-Oct-2021).
+
+ Use this file to generate a hyphenation input file for patgen.
+
+ Usage:
+
+ pinyin > pinyin.dic
+
+ */
+
+/*
+ Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+
+ 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 in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+ */
+
+#include <stdio.h>
+
+
+/* A list of all Chinese syllables. We use latin-1 encoding for the
+ `umlaut u' character.
+
+ In the array below, syllables starting with `a', `e', or `u' are marked
+ with a leading exclamation mark, which we filter out later on to ensure
+ that those syllables are omitted on the right side. If written without a
+ line break, an apostrophe must be inserted before such syllables, e.g.,
+
+ Tien'anmen
+
+ However, if there is a line break, the apostrophe disappears:
+
+ Tien-
+ anmen
+
+ This situation can't be handled by patgen; instead, a solution to this
+ problem can be provided by TeX with
+
+ \discretionary{-}{}{'}
+
+ The babel support file (`pinyin.ldf') provides "' as a shorthand for this
+ situation.
+ */
+
+char *py[] =
+{
+ "!a",
+ "!ai",
+ "!an",
+ "!ang",
+ "!ao",
+ "ba",
+ "bai",
+ "ban",
+ "bang",
+ "bao",
+ "bei",
+ "ben",
+ "beng",
+ "bi",
+ "bian",
+ "biao",
+ "bie",
+ "bin",
+ "bing",
+ "bo",
+ "bu",
+ "ca",
+ "cai",
+ "can",
+ "cang",
+ "cao",
+ "ce",
+ "cen",
+ "ceng",
+ "cha",
+ "chai",
+ "chan",
+ "chang",
+ "chao",
+ "che",
+ "chen",
+ "cheng",
+ "chi",
+ "chong",
+ "chou",
+ "chu",
+ "chuai",
+ "chuan",
+ "chuang",
+ "chui",
+ "chun",
+ "chuo",
+ "ci",
+ "cong",
+ "cou",
+ "cu",
+ "cuan",
+ "cui",
+ "cun",
+ "cuo",
+ "da",
+ "dai",
+ "dan",
+ "dang",
+ "dao",
+ "de",
+ "dei",
+ "deng",
+ "di",
+ "dian",
+ "diao",
+ "die",
+ "ding",
+ "diu",
+ "dong",
+ "dou",
+ "du",
+ "duan",
+ "dui",
+ "dun",
+ "duo",
+ "!e",
+ "!ei",
+ "!en",
+ "!eng",
+ "!er",
+ "fa",
+ "fan",
+ "fang",
+ "fei",
+ "fen",
+ "feng",
+ "fiao",
+ "fo",
+ "fou",
+ "fu",
+ "ga",
+ "gai",
+ "gan",
+ "gang",
+ "gao",
+ "ge",
+ "gei",
+ "gen",
+ "geng",
+ "gong",
+ "gou",
+ "gu",
+ "gua",
+ "guai",
+ "guan",
+ "guang",
+ "gui",
+ "gun",
+ "guo",
+ "ha",
+ "hai",
+ "han",
+ "hang",
+ "hao",
+ "he",
+ "hei",
+ "hen",
+ "heng",
+ "hong",
+ "hou",
+ "hu",
+ "hua",
+ "huai",
+ "huan",
+ "huang",
+ "hui",
+ "hun",
+ "huo",
+ "ji",
+ "jia",
+ "jian",
+ "jiang",
+ "jiao",
+ "jie",
+ "jin",
+ "jing",
+ "jiong",
+ "jiu",
+ "ju",
+ "juan",
+ "jue",
+ "jun",
+ "ka",
+ "kai",
+ "kan",
+ "kang",
+ "kao",
+ "ke",
+ "kei",
+ "ken",
+ "keng",
+ "kong",
+ "kou",
+ "ku",
+ "kua",
+ "kuai",
+ "kuan",
+ "kuang",
+ "kui",
+ "kun",
+ "kuo",
+ "la",
+ "lai",
+ "lan",
+ "lang",
+ "lao",
+ "le",
+ "lei",
+ "leng",
+ "li",
+ "lia",
+ "lian",
+ "liang",
+ "liao",
+ "lie",
+ "lin",
+ "ling",
+ "liu",
+ "long",
+ "lou",
+ "lu",
+ "luan",
+ "lun",
+ "luo",
+ "lü",
+ "lüe",
+ "ma",
+ "mai",
+ "man",
+ "mang",
+ "mao",
+ "me",
+ "mei",
+ "men",
+ "meng",
+ "mi",
+ "mian",
+ "miao",
+ "mie",
+ "min",
+ "ming",
+ "miu",
+ "mo",
+ "mou",
+ "mu",
+ "na",
+ "nai",
+ "nan",
+ "nang",
+ "nao",
+ "ne",
+ "nei",
+ "nen",
+ "neng",
+ "ni",
+ "nian",
+ "niang",
+ "niao",
+ "nie",
+ "nin",
+ "ning",
+ "niu",
+ "nong",
+ "nou",
+ "nu",
+ "nuan",
+ "nuo",
+ "nü",
+ "nüe",
+ "!o",
+ "!ou",
+ "pa",
+ "pai",
+ "pan",
+ "pang",
+ "pao",
+ "pei",
+ "pen",
+ "peng",
+ "pi",
+ "pian",
+ "piao",
+ "pie",
+ "pin",
+ "ping",
+ "po",
+ "pou",
+ "pu",
+ "qi",
+ "qia",
+ "qian",
+ "qiang",
+ "qiao",
+ "qie",
+ "qin",
+ "qing",
+ "qiong",
+ "qiu",
+ "qu",
+ "quan",
+ "que",
+ "qun",
+ "ran",
+ "rang",
+ "rao",
+ "re",
+ "ren",
+ "reng",
+ "ri",
+ "rong",
+ "rou",
+ "ru",
+ "ruan",
+ "rui",
+ "run",
+ "ruo",
+ "sa",
+ "sai",
+ "san",
+ "sang",
+ "sao",
+ "se",
+ "sen",
+ "seng",
+ "sha",
+ "shai",
+ "shan",
+ "shang",
+ "shao",
+ "she",
+ "shei",
+ "shen",
+ "sheng",
+ "shi",
+ "shou",
+ "shu",
+ "shua",
+ "shuai",
+ "shuan",
+ "shuang",
+ "shui",
+ "shun",
+ "shuo",
+ "si",
+ "song",
+ "sou",
+ "su",
+ "suan",
+ "sui",
+ "sun",
+ "suo",
+ "ta",
+ "tai",
+ "tan",
+ "tang",
+ "tao",
+ "te",
+ "tei",
+ "teng",
+ "ti",
+ "tian",
+ "tiao",
+ "tie",
+ "ting",
+ "tong",
+ "tou",
+ "tu",
+ "tuan",
+ "tui",
+ "tun",
+ "tuo",
+ "wa",
+ "wai",
+ "wan",
+ "wang",
+ "wei",
+ "wen",
+ "weng",
+ "wo",
+ "wu",
+ "xi",
+ "xia",
+ "xian",
+ "xiang",
+ "xiao",
+ "xie",
+ "xin",
+ "xing",
+ "xiong",
+ "xiu",
+ "xu",
+ "xuan",
+ "xue",
+ "xun",
+ "ya",
+ "yan",
+ "yang",
+ "yao",
+ "ye",
+ "yi",
+ "yin",
+ "ying",
+ "yo",
+ "yong",
+ "you",
+ "yu",
+ "yuan",
+ "yue",
+ "yun",
+ "za",
+ "zai",
+ "zan",
+ "zang",
+ "zao",
+ "ze",
+ "zei",
+ "zen",
+ "zeng",
+ "zha",
+ "zhai",
+ "zhan",
+ "zhang",
+ "zhao",
+ "zhe",
+ "zhei",
+ "zhen",
+ "zheng",
+ "zhi",
+ "zhong",
+ "zhou",
+ "zhu",
+ "zhua",
+ "zhuai",
+ "zhuan",
+ "zhuang",
+ "zhui",
+ "zhun",
+ "zhuo",
+ "zi",
+ "zong",
+ "zou",
+ "zu",
+ "zuan",
+ "zui",
+ "zun",
+ "zuo"
+};
+
+
+int main(void)
+{
+ size_t i, j;
+ size_t size = sizeof (py) / sizeof (char*);
+
+ /* Now we loop through all possible syllable combinations. */
+
+ for (i = 0; i < size; i++)
+ {
+ for (j = 0; j < size; j++)
+ {
+ if (py[j][0] == '!')
+ continue;
+
+ if (py[i][0] == '!')
+ printf("%s-%s\n", py[i] + 1, py[j]);
+ else
+ printf("%s-%s\n", py[i], py[j]);
+ }
+ }
+
+ return 0;
+}
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.ldf b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.ldf
new file mode 100644
index 0000000000..a92b42253f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.ldf
@@ -0,0 +1,75 @@
+% This is the file pinyin.ldf of the CJK package
+% for hyphenating Chinese pinyin syllables.
+%
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+
+% Two shorthands are defined for pinyin.
+%
+% "u This represents `u umlaut'.
+%
+% "' This represents the apostrophe used to resolve syllabic
+% ambiguities as in
+%
+% Tien'anmen ,
+%
+% which should be thus typed in as
+%
+% Tien"'anmen .
+%
+% Internally, this converts to a discretionary hyphen, since the
+% apostrophe should vanish after a line break.
+
+
+\ProvidesLanguage{pinyin}
+ [CJK 4.8.5 pinyin support for the babel system]
+
+\LdfInit{pinyin}{captionspinyin}
+
+\ifx\l@pinyin\@undefined
+ \@nopatterns{pinyin}
+ \adddialect\l@pinyin0
+\fi
+
+\providehyphenmins{pinyin}{\@ne\tw@}
+\def\captionspinyin{}
+\def\datepinyin{}
+
+\initiate@active@char{"}
+
+\addto\extraspinyin{\languageshorthands{pinyin}}
+\addto\extraspinyin{\bbl@activate{"}}
+\addto\extraspinyin{\babel@save\"\umlautlow}
+
+\addto\noextraspinyin{\umlauthigh}
+
+\declare@shorthand{pinyin}{"u}{\textormath{\"{u}\allowhyphens}{\ddot u}}
+\declare@shorthand{pinyin}{"U}{\textormath{\"{U}\allowhyphens}{\ddot U}}
+\declare@shorthand{pinyin}{"'}{\textormath{\discretionary{-}{}{'}}{'}}
+
+\def\mdqon{\shorthandon{"}}
+\def\mdqoff{\shorthandoff{"}}
+
+\ldf@finish{pinyin}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.tr b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.tr
new file mode 100644
index 0000000000..b6007eb3f2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pinyin.tr
@@ -0,0 +1,51 @@
+ 1 2
+%% This is the file pinyin.tr of the CJK package
+%% defining the letters used for generating pinyin hyphenation patterns
+%% with patgen.
+%%
+%% created by Werner Lemberg <wl@gnu.org>
+%%
+%% Version 4.8.5 (16-Oct-2021)
+%%
+%% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%%
+%% 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 in doc/COPYING; if not, write to the Free
+%% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+%% MA 02110-1301 USA
+ a A
+ b B
+ c C
+ d D
+ e E
+ f F
+ g G
+ h H
+ i I
+ j J
+ k K
+ l L
+ m M
+ n N
+ o O
+ p P
+ q Q
+ r R
+ s S
+ t T
+ u U
+ ü Ü
+ w W
+ x X
+ y Y
+ z Z
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pytest.tex b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pytest.tex
new file mode 100644
index 0000000000..bbef6d4162
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pytest.tex
@@ -0,0 +1,51 @@
+% This is the file pytest.tex of the CJK package
+% for testing Chinese pinyin hyphenation.
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+%
+%%
+%% Attention! This will work only if you have created a new format file
+%% with `hyph-zh-latn-pinyin.tex' as additional hyphenation patterns for the
+%% language `pinyin'. Otherwise no hyphenation will be used.
+%%
+% Note that the Babel package searches for `pinyin.ldf', not `pinyin.sty'
+% -- the latter is for typesetting accented pinyin syllables.
+
+\documentclass[12pt,b5paper]{article}
+
+\usepackage[10pt]{type1ec} % use only 10pt fonts
+\usepackage[T1]{fontenc}
+\usepackage[pinyin]{babel}
+
+
+\begin{document}
+
+% Taken from the TeXbook (p. 451) to force frequent insertion of hyphens.
+\hyphenpenalty -1000
+\pretolerance -1
+\tolerance 1000
+\doublehyphendemerits -100000
+\finalhyphendemerits -100000
+
+\selectlanguage{pinyin}
+
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian"'anmen.
+Mingtian women xiang yao dao Xi"'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian"'anmen.
+Mingtian women xiang yao dao Xi"'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian"'anmen.
+Mingtian women xiang yao dao Xi"'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian"'anmen.
+Mingtian women xiang yao dao Xi"'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian"'anmen.
+Mingtian women xiang yao dao Xi"'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian"'anmen.
+Mingtian women xiang yao dao Xi"'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian"'anmen.
+Mingtian women xiang yao dao Xi"'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian"'anmen.
+Mingtian women xiang yao dao Xi"'an qu. Xiage libai zai hui jia.
+
+\end{document}
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pytestutf8.tex b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pytestutf8.tex
new file mode 100644
index 0000000000..725a6a9c0f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/pyhyphen/pytestutf8.tex
@@ -0,0 +1,68 @@
+% This is the file pytestutf8.tex of the CJK package
+% for testing Chinese pinyin hyphenation.
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.5 (16-Oct-2021)
+%
+%%
+%% Attention! This will work only if you have created a new format file
+%% with `hyph-zh-latn-tonepinyin.tex' as additional hyphenation patterns for
+%% the language `pinyin'. Otherwise no hyphenation will be used.
+%%
+% Note that the Babel package searches for `pinyin.ldf', not `pinyin.sty'
+% -- the latter is for typesetting accented pinyin syllables.
+
+\documentclass[12pt,a5paper]{article}
+
+\usepackage{ifxetex}
+\usepackage{ifluatex}
+\usepackage{ifuptex}
+
+\ifxetex
+ \relax
+\else
+ \ifluatex
+ \relax
+ \else
+ \ifuptex
+ \relax
+ \else
+ \errmessage{You need a UTF-8 engine to process this file.}
+ \fi
+ \fi
+\fi
+
+\usepackage{libertine}
+\usepackage[pinyin]{babel}
+
+
+\begin{document}
+
+% Taken from the TeXbook (p. 451) to force frequent insertion of hyphens.
+\hyphenpenalty -1000
+\pretolerance -1
+\tolerance 1000
+\doublehyphendemerits -100000
+\finalhyphendemerits -100000
+
+\selectlanguage{pinyin}
+
+WÇ’men hÄ›n xÇhuÄn lÇšxíng. Zài BÄ›ijÄ«ng wÇ’men hÄ›n xiÇŽng kàn TiÄn"'Änmén.
+MíngtiÄn wÇ’men xiÇŽng yào dào XÄ«"'Än qù. Xiàge lÇbài zài huí jiÄ.
+WÇ’men hÄ›n xÇhuÄn lÇšxíng. Zài BÄ›ijÄ«ng wÇ’men hÄ›n xiÇŽng kàn TiÄn"'Änmén.
+MíngtiÄn wÇ’men xiÇŽng yào dào XÄ«"'Än qù. Xiàge lÇbài zài huí jiÄ.
+WÇ’men hÄ›n xÇhuÄn lÇšxíng. Zài BÄ›ijÄ«ng wÇ’men hÄ›n xiÇŽng kàn TiÄn"'Änmén.
+MíngtiÄn wÇ’men xiÇŽng yào dào XÄ«"'Än qù. Xiàge lÇbài zài huí jiÄ.
+WÇ’men hÄ›n xÇhuÄn lÇšxíng. Zài BÄ›ijÄ«ng wÇ’men hÄ›n xiÇŽng kàn TiÄn"'Änmén.
+MíngtiÄn wÇ’men xiÇŽng yào dào XÄ«"'Än qù. Xiàge lÇbài zài huí jiÄ.
+WÇ’men hÄ›n xÇhuÄn lÇšxíng. Zài BÄ›ijÄ«ng wÇ’men hÄ›n xiÇŽng kàn TiÄn"'Änmén.
+MíngtiÄn wÇ’men xiÇŽng yào dào XÄ«"'Än qù. Xiàge lÇbài zài huí jiÄ.
+WÇ’men hÄ›n xÇhuÄn lÇšxíng. Zài BÄ›ijÄ«ng wÇ’men hÄ›n xiÇŽng kàn TiÄn"'Änmén.
+MíngtiÄn wÇ’men xiÇŽng yào dào XÄ«"'Än qù. Xiàge lÇbài zài huí jiÄ.
+WÇ’men hÄ›n xÇhuÄn lÇšxíng. Zài BÄ›ijÄ«ng wÇ’men hÄ›n xiÇŽng kàn TiÄn"'Änmén.
+MíngtiÄn wÇ’men xiÇŽng yào dào XÄ«"'Än qù. Xiàge lÇbài zài huí jiÄ.
+WÇ’men hÄ›n xÇhuÄn lÇšxíng. Zài BÄ›ijÄ«ng wÇ’men hÄ›n xiÇŽng kàn TiÄn"'Änmén.
+MíngtiÄn wÇ’men xiÇŽng yào dào XÄ«"'Än qù. Xiàge lÇbài zài huí jiÄ.
+
+\end{document}
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/subfonts/clonevf.pl b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/clonevf.pl
new file mode 100644
index 0000000000..74a7964a42
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/clonevf.pl
@@ -0,0 +1,122 @@
+#! /usr/bin/perl -w
+#
+# This script clones a virtual font from a TFM file.
+#
+# As prerequisites, it needs the programs `tftopl' and `vptovf', which must
+# be in the path.
+#
+# Call the script as
+#
+# perl clonevf.pl tfm-name vf-name
+#
+# Example:
+#
+# perl clonevf.pl bsmiuv bsmilpv
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+if ($#ARGV != 1) {
+ die("usage: $prog tfm-name vf-name\n");
+}
+
+my $tfmname = $ARGV[0];
+my $vfname = $ARGV[1];
+
+
+# Create PL file.
+
+print("Processing metrics file \`$tfmname.tfm'...\n");
+
+my $arg = "tftopl $tfmname.tfm > $tfmname.pl";
+system($arg) == 0
+|| die("$prog: calling \`$arg' failed: $?\n");
+
+
+# Create VPL file.
+
+print("Writing virtual property list file \`$vfname.vpl'...\n");
+
+open(PL, "$tfmname.pl")
+|| die("$prog: can't open \`$tfmname.pl': $!\n");
+
+open(VPL, ">", "$vfname.vpl")
+|| die("$prog: can't open \`$vfname.vpl': $!\n");
+
+print(VPL "(VTITLE Created by \`$prog " . join(" ", @ARGV) . "')\n");
+print(VPL "(FAMILY TEX-\U$vfname\E)\n");
+
+my $have_mapfont = 0;
+while (<PL>) {
+ next if /^\(FAMILY/;
+ next if /^\(CHECKSUM/;
+
+ if (/^\(CHARACTER (.*)/) {
+ if (!$have_mapfont) {
+ print(VPL "(MAPFONT D 0\n");
+ print(VPL " (FONTNAME $tfmname)\n");
+ print(VPL " )\n");
+ $have_mapfont = 1;
+ }
+
+ my $char = $1;
+
+ print(VPL $_);
+
+ $_ = <PL>;
+ if (/CHARWD/) {
+ print(VPL $_);
+ $_ = <PL>;
+ }
+ if (/CHARHT/) {
+ print(VPL $_);
+ $_ = <PL>;
+ }
+ if (/CHARDP/) {
+ print(VPL $_);
+ $_ = <PL>;
+ }
+
+ print(VPL " (MAP\n");
+ print(VPL " (SELECTFONT D 0)\n");
+ print(VPL " (SETCHAR $char)\n");
+ print(VPL " )\n");
+ }
+
+ print(VPL $_);
+}
+
+close(PL);
+close(VPL);
+
+print("Processing \`$vfname.vpl'\n");
+$arg = "vptovf $vfname.vpl";
+system($arg) == 0
+|| die("$prog: calling \`$arg' failed: $?\n");
+
+print("Removing \`$tfmname.pl'...\n");
+unlink("$tfmname.pl");
+print("Removing \`$vfname.vpl'...\n");
+unlink("$vfname.vpl");
+
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/subfonts/hlatex2agl.pl b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/hlatex2agl.pl
new file mode 100644
index 0000000000..d0b0ffea02
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/hlatex2agl.pl
@@ -0,0 +1,477 @@
+#! /usr/bin/perl -w
+#
+# This script adds AGL compliant glyph names to fonts from the HLaTeX
+# package version 0.97 or newer. Note that only glyphs actually used in the
+# (virtual) HLaTeX subfonts get new names; additionally, the used glyph
+# shapes in the HLaTeX fonts aren't always correct -- consider this script
+# as an auxiliary means, not a definitive solution. At least the Hangul and
+# Hanja shapes are correct.
+#
+# As prerequisites, it needs the programs `t1asm' and `t1disasm' (from the
+# t1utils package) and `vftovp' which must be in the path. The subfont
+# definition file `UKS-HLaTeX.sfd' (from the ttf2pk package) and the file
+#
+# http://partners.adobe.com/public/developer/en/opentype/aglfn13.txt
+#
+# are necessary also.
+#
+# Call the script as
+#
+# perl hlatex2agl.pl virtual-namestem real-namestem sfd-file
+#
+# `virtual-namestem' specifies the name stem of the virtual subfonts
+# directly used by LaTeX; both the VF and TFM files are needed.
+# `real-namestem' gives the name stem of the real subfonts used by the
+# virtual fonts; TFM, AFM, and PFB files are needed.
+#
+# Example:
+#
+# perl hlatex2agl.pl wmj umj UKS-HLaTeX.sfd
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+if ($#ARGV != 2) {
+ die("usage: $prog virtual-namestem real-namestem sfd-file\n");
+}
+
+my $virtnamestem = $ARGV[0];
+my $realnamestem = $ARGV[1];
+my $sfdfile = $ARGV[2];
+
+
+# Read UKS-HLaTeX.sfd.
+
+my @sfd;
+my @virtsubfonts;
+
+read_sfdfile($sfdfile, \@sfd, \@virtsubfonts);
+
+
+# Read AGL file.
+
+my %agl;
+
+read_aglfile("aglfn13.txt", \%agl);
+
+
+# Read VF files.
+
+my %vpl;
+my %subfonts;
+
+for my $suffix (@virtsubfonts) {
+ read_vffile("$virtnamestem$suffix.vf", $suffix, \%vpl, \%subfonts);
+}
+
+
+# Decompose all Hangul syllables.
+
+my @hangul;
+
+decompose_hangul(\@hangul);
+
+
+# Build glyph names.
+
+my %names;
+
+build_glyphnames(\%names);
+
+
+# Process AFM files.
+
+foreach my $suffix (sort (keys %subfonts)) {
+ process_afmfile("$realnamestem$suffix.afm", $suffix);
+}
+
+
+# Process PFB files.
+
+foreach my $suffix (sort (keys %subfonts)) {
+ process_pfbfile("$realnamestem$suffix.pfb", $suffix);
+}
+
+
+# Read an SFD file.
+#
+# $1: Name of the SFD file.
+# $2: Reference to the target array, mapping from Unicode to the subfont.
+# The format of the array values is the concatenation of the subfont
+# suffix, a space, and the index.
+# $3: Reference to a target array which holds the subfont suffixes.
+
+sub read_sfdfile {
+ my ($sfdfile, $sfdarray, $subarray) = @_;
+
+ print("Reading subfont definition file \`$sfdfile'...\n");
+
+ open(SFD, $sfdfile)
+ || die("$prog: can't open \`$sfdfile': $!\n");
+
+ my $line;
+ my $continuation = 0;
+ while (<SFD>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ if ($continuation) {
+ $line .= $_;
+ }
+ else {
+ $line = $_;
+ }
+ $continuation = 0;
+
+ if ($line =~ s/\\$//) {
+ $continuation = 1;
+ next;
+ }
+
+ $_ = $line;
+ my @field = split(" ");
+
+ my $suffix = $field[0];
+ push(@{$subarray}, $suffix);
+
+ shift(@field);
+ my $index = 0;
+
+ while (@field) {
+ if ($field[0] =~ /(.*):$/) {
+ $index = $1;
+ }
+ elsif ($field[0] =~ /(.*)_(.*)/) {
+ my $start = $1;
+ my $end = $2;
+ $start = oct($start) if ($start =~ /^0/);
+ $end = oct($end) if ($end =~ /^0/);
+ foreach my $i ($start .. $end) {
+ $sfdarray->[$i] = "$suffix $index";
+ $index++;
+ }
+ }
+ else {
+ my $value = $field[0];
+ $value = oct($value) if ($value =~ /^0/);
+ $sfdarray->[$value] = "$suffix $index";
+ $index++;
+ }
+ shift(@field);
+ }
+ }
+ close(SFD);
+}
+
+
+# Read an AGL file.
+#
+# $1: Name of the AGL file.
+# $2: Reference to the target hash file, mapping from the Unicode value
+# to the glyph name.
+
+sub read_aglfile {
+ my ($aglfile, $aglhash) = @_;
+
+ print("Reading Adobe Glyph List file \`$aglfile'...\n");
+
+ open(AGL, $aglfile)
+ || die("$prog: can't open \`$aglfile': $!\n");
+
+ while (<AGL>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ my @field = split(";");
+ $aglhash->{hex($field[0])} = $field[1];
+ }
+ close(AGL);
+}
+
+
+# Read a VF file.
+#
+# $1: Name of the VF file.
+# $2: Subfont suffix.
+# $3: Reference to a target hash, mapping from the virtual subfont to the
+# real subfonts. The format of the key is the concatenation of the
+# subfont suffix, a space, and the index. The format of the hash value
+# is `<suffix1> <idx1>[,<suffix2> <idx2>[,...]]'.
+# $4: Reference to a target hash, collecting the suffixes of the real
+# subfonts.
+
+sub read_vffile {
+ my ($vffile, $vfsuffix, $vplhash, $subfonthash) = @_;
+ my $vplfile = "$vffile.vpl";
+
+ print("Creating virtual property list file \`$vplfile'...\n");
+ my $arg = "vftovp -charcode-format=octal $vffile > $vplfile";
+ system("$arg") == 0
+ || die("$prog: calling \`$arg' failed: $?");
+
+ print("Reading \`$vplfile'...\n");
+ open(VPL, $vplfile)
+ || die("$prog: can't open \`$vplfile': $!\n");
+
+ my @subfonts;
+ my $subindex;
+ my $index;
+ my $currfont;
+ my $map = "";
+
+ while (<VPL>) {
+ if (/\(MAPFONT D ([0-9]+)/) {
+ $subindex = $1;
+ }
+ elsif (/\(FONTNAME $realnamestem(.*?)\)/) {
+ $subfonts[$subindex] = $1;
+ if (!defined ($subfonthash->{$1})) {
+ $subfonthash->{$1} = 1;
+ }
+ }
+ elsif (/\(CHARACTER O ([0-7]+)/) {
+ # Save data from previous CHARACTER block.
+ $vplhash->{"$vfsuffix $index"} = $map if ($map);
+
+ # Reset variables.
+ $index = oct($1);
+ $currfont = 0;
+ $map = "";
+ }
+ elsif (/\(SELECTFONT D ([0-9]+)\)/) {
+ $currfont = $1;
+ }
+ elsif (/\(SETCHAR O ([0-7]+)\)/) {
+ $map .= "," if ($map);
+ $map .= "$subfonts[$currfont] " . oct($1);
+ }
+ }
+
+ # Save data from last CHARACTER block.
+ $vplhash->{"$vfsuffix $index"} = $map if ($map);
+
+ close(VPL);
+ unlink($vplfile);
+}
+
+
+# Decompose all Unicode Hangul syllables into Jamo elements.
+#
+# $1: The target array, mapping from Unicode value to a list of Jamos (in
+# Unicode), separated by commata.
+#
+# This follows the algorithm given in the Unicode standard.
+
+sub decompose_hangul {
+ my ($hangularray) = @_;
+
+ my $s_base = 0xAC00;
+ my $l_base = 0x1100;
+ my $v_base = 0x1161;
+ my $t_base = 0x11A7;
+
+ my $s_count = 11172;
+ my $l_count = 19;
+ my $v_count = 21;
+ my $t_count = 28;
+
+ my $n_count = $v_count * $t_count;
+
+ for my $s ($s_base .. ($s_base + $s_count - 1)) {
+ my $s_index = $s - $s_base;
+
+ my $l = $l_base + int($s_index / $n_count);
+ my $v = $v_base + int(($s_index % $n_count) / $t_count);
+ my $t = $t_base + $s_index % $t_count;
+
+ my $jamos = "$l,$v";
+ $jamos .= ",$t" if ($t != $t_base);
+ $hangularray->[$s] = $jamos;
+ }
+}
+
+
+# Build glyph names.
+#
+# $1: The target hash which maps from real subfonts to glyph names. Keys
+# are of the form `<suffix> <index>', hash values are AGL compliant
+# glyph names. Glyph variants get a trailing suffix of the form `.N',
+# where is is a running number starting with 1. Example: `uni1100.24'.
+
+sub build_glyphnames {
+ my ($nameshash) = @_;
+
+ my @entries;
+
+ foreach my $unicode (0 .. 0xFFFF) {
+ next if !defined ($sfd[$unicode]);
+
+ my $virtdata = $sfd[$unicode];
+
+ # We assume that only Hangul syllables are composed of more than
+ # a single element.
+ if (defined ($hangul[$unicode])) {
+ my @unijamos = split(",", $hangul[$unicode]);
+ my @jamos = split(",", $vpl{$virtdata});
+
+ foreach my $i (0 .. $#jamos) {
+ if (!defined ($nameshash->{$jamos[$i]})) {
+ if (defined ($entries[$unijamos[$i]])) {
+ $nameshash->{$jamos[$i]} = sprintf("uni%04X.%d",
+ $unijamos[$i],
+ $entries[$unijamos[$i]]);
+ $entries[$unijamos[$i]] += 1;
+ }
+ else {
+ $nameshash->{$jamos[$i]} = sprintf("uni%04X", $unijamos[$i]);
+ $entries[$unijamos[$i]] = 1;
+ }
+ }
+ }
+ }
+ else {
+ if (defined ($agl{$unicode})) {
+ $nameshash->{$vpl{$virtdata}} = $agl{$unicode};
+ }
+ else {
+ $nameshash->{$vpl{$virtdata}} = sprintf("uni%04X", $unicode);
+ }
+ }
+ }
+}
+
+
+# Process AFM file.
+#
+# $1: Name of the AFM file to process. The file is first saved, then all
+# glyph names are replaced for which an AGL compliant glyph name is
+# known.
+# $2: The suffix.
+
+sub process_afmfile {
+ my ($afmfile, $sub) = @_;
+
+ print("Processing \`$afmfile'...\n");
+
+ if (!-f $afmfile) {
+ die("$prog: \`$afmfile' doesn't exist\n");
+ }
+
+ rename($afmfile, "$afmfile.old");
+
+ open(INFILE, "$afmfile.old")
+ || die("$prog: can't open \`$afmfile.old': $!\n");
+ open(OUTFILE, ">", "$afmfile")
+ || die("$prog: can't open \`$afmfile': $!\n");
+
+ while (<INFILE>) {
+ # Replace the `kxx' entries.
+ if (/ N k(.*?) ;/) {
+ my $index = hex($1);
+ if (defined ($names{"$sub $index"})) {
+ s/ N .*? ;/ N $names{"$sub $index"} ;/;
+ }
+ }
+
+ # Update version number.
+ s/001\.000/001.001/;
+ s/Altsys\ Fontographer\ 4\.1\ 1\/10\/95$/001.001/;
+
+ print(OUTFILE $_);
+
+ # Add comment.
+ if (/^Comment\ UniqueID/ || /^Comment\ Generated/) {
+ print(OUTFILE "Comment AGL compliant glyph names added "
+ . "by script $prog 2005-Jul-27.\n");
+ }
+ }
+
+ close(INFILE);
+ close(OUTFILE);
+}
+
+
+# Process PFB file.
+#
+# $1: Name of the PFB file to process. The file is first saved, then all
+# glyph names are replaced for which an AGL compliant glyph name is
+# known.
+# $2: The suffix.
+
+sub process_pfbfile {
+ my ($pfbfile, $sub) = @_;
+ my $arg;
+
+ print("Processing \`$pfbfile'...\n");
+
+ if (!-f $pfbfile) {
+ die("$prog: \`$pfbfile' doesn't exist\n");
+ }
+
+ rename($pfbfile, "$pfbfile.old");
+
+ $arg = "t1disasm < $pfbfile.old > $pfbfile.disasm.old";
+ system("$arg") == 0
+ || die("$prog: calling \`$arg' failed: $?");
+
+ open(INFILE, "$pfbfile.disasm.old")
+ || die("$prog: can't open \`$pfbfile.disasm.old': $!\n");
+ open(OUTFILE, ">", "$pfbfile.disasm")
+ || die("$prog: can't open \`$pfbfile.disasm': $!\n");
+
+ while (<INFILE>) {
+ # Replace the `kxx' entries.
+ if (m@/k(.*?) @) {
+ my $index = hex($1);
+ if (defined ($names{"$sub $index"})) {
+ s@/k.*? @/$names{"$sub $index"} @;
+ }
+ }
+
+ # Update version number.
+ s/001\.000/001.001/;
+
+ print(OUTFILE $_);
+
+ # Add comment.
+ if (/^%%CreationDate/) {
+ print(OUTFILE "% AGL compliant glyph names added "
+ . "by script $prog 2005-Jul-27.\n");
+ }
+ }
+
+ close(INFILE);
+ close(OUTFILE);
+
+ $arg = "t1asm < $pfbfile.disasm > $pfbfile";
+ system("$arg") == 0
+ || die("$prog: calling \`$arg' failed: $?");
+
+ unlink("$pfbfile.disasm.old", "$pfbfile.disasm");
+}
+
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/subfonts/makefdx.pl b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/makefdx.pl
new file mode 100644
index 0000000000..5363e5b63d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/makefdx.pl
@@ -0,0 +1,340 @@
+#! /usr/bin/perl -w
+#
+# This script creates proper entries for an FDX file as used by the CJK
+# package for LaTeX.
+#
+# As a prerequisite, it needs the file
+#
+# http://partners.adobe.com/public/developer/en/opentype/aglfn13.txt
+#
+# which must be located in the current directory.
+#
+# Call the script as
+#
+# perl [-u] makefdx.pl vertref-afm-file sfd-file encoding font-name
+#
+# `vertref-afm-file' is an AFM file as produced by the script `vertref.pe'.
+# The subfont definition file `sfd-file' gives the subfont scheme to get the
+# proper entries in the FDX file. `encoding' and `font-name' are TeX font
+# parameters as used by the CJK package; the scripts uses the concatenation
+# of those two values as the name of the FDX file (with suffix `.fdx').
+#
+# The switch `-u' makes the script add a macro to the FDX file (which is
+# used by the CJKutf8.sty) to provide a proper /ToUnicode cmap to pdftex.
+#
+# Note that the created FDX file has to be completed manually.
+#
+# Examples:
+#
+# perl makefdx.pl bsmiuvr.afm UBig5.sfd c00 bsmi
+#
+# The result of this call is the file `c00bsmi.fdx' (you get some warnings
+# because not all glyphs contained in bsmiuvr.afm can be accessed with Big5
+# encoding).
+#
+# perl makefdx.pl -u bsmiuvr.afm Unicode.sfd c70 bsmi
+#
+# The result of this call is the file `c70bsmi.fdx'.
+#
+# A collection of useful subfont definition files for CJK fonts can be found
+# in the ttf2pk package.
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+my $is_unicode = 0;
+if ($ARGV[0] eq "-u") {
+ $is_unicode = 1;
+ shift @ARGV;
+}
+
+if ($#ARGV != 3) {
+ die("usage: $prog [-u] vertref-afm-file sfd-file encoding font-name\n");
+}
+
+my $vertrefafmfile = $ARGV[0];
+my $sfdfile = $ARGV[1];
+my $encoding = $ARGV[2];
+my $fontname = $ARGV[3];
+
+my $fdxfile = $encoding . $fontname . ".fdx";
+
+# Read AGL file.
+
+my %agl;
+
+read_aglfile("aglfn13.txt", \%agl);
+
+
+# Read AFM file.
+
+my @vertref;
+
+read_afmfile($vertrefafmfile, \@vertref);
+
+
+# Read subfont definition file.
+
+my @sfd;
+
+read_sfdfile($sfdfile, \@sfd);
+
+
+# Write FDX file.
+
+print("Writing extended font definition file \`$fdxfile'...\n");
+
+open(FDX, ">", $fdxfile)
+|| die("$prog: can't open \`$fdxfile': $!\n");
+my $oldfh = select(FDX);
+
+print("% This is the file $fdxfile of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by the script makefdx.pl for CJK Version 4.8.5 (16-Oct-2021).
+
+\\def\\fileversion{4.8.5}
+\\def\\filedate{2021/10/16}
+\\ProvidesFile{$fdxfile}[\\filedate\\space\\fileversion]
+
+\\CJKvdef{fullheight}{1em}
+\\CJKvdef{height}{.88em}
+\\CJKvdef{offset}{.6em}
+
+% Uncomment if necessary.
+%\\CJKvdef{norotate}{}
+");
+
+my @unicodes;
+my $mapping_count = 0;
+
+foreach my $index (0 .. $#vertref) {
+ my $glyphnameref = $vertref[$index];
+ my $unicode;
+
+ if (defined ($agl{$glyphnameref})) {
+ $unicode = $agl{$glyphnameref};
+ }
+ elsif ($glyphnameref =~ /^uni([0-9A-F]{4})$/) {
+ $unicode = hex($1);
+ }
+ elsif ($glyphnameref =~ /^u([0-9A-F]{4,6})$/) {
+ $unicode = hex($1);
+ }
+ else {
+ $unicode = -1;
+ }
+ if ($unicode == -1
+ || ($unicode >= 0xD800 && $unicode <= 0xDFFF)
+ || $unicode > 0x10FFFF) {
+ print(STDERR "Can't map glyph name \`$glyphnameref' to Unicode.\n");
+ $unicodes[$index] = -1;
+ next;
+ }
+ $unicodes[$index] = $unicode;
+
+ my $sfdentry;
+
+ if (defined ($sfd[$unicode])) {
+ $sfdentry = $sfd[$unicode];
+ }
+ else {
+ $unicodes[$index] = -1;
+ printf(STDERR "\`%s' (U+%04X) not in subfont encoding\n",
+ $glyphnameref, $unicode);
+ next;
+ }
+
+ $mapping_count++;
+
+ print("\\CJKvdef{m/n/$sfdentry}");
+ print("{\\def\\CJK\@plane{v}\\selectfont\\CJKsymbol{$index}}\n");
+ print("\\CJKvlet{bx/n/$sfdentry}");
+ print("{m/n/$sfdentry}\n");
+}
+
+if ($is_unicode) {
+ print("
+\\gdef\\CJK\@cmap\@${fontname}v{
+ \\expandafter\\ifx\\csname CJK\@CMap\@${fontname}v\\endcsname \\relax
+ \\immediate\\pdfobj stream {
+ /CIDInit\\space/ProcSet\\space findresource\\space begin\\space
+ 12\\space dict\\space begin\\space
+ begincmap\\space
+ /CIDSystemInfo\\space <<\\space
+ /Registry\\space (TeX)\\space
+ /Ordering\\space (${fontname}v)\\space
+ /Supplement\\space 0\\space >>\\space def\\space
+ /CMapName\\space /TeX-${fontname}v-0\\space def\\space
+ 1\\space begincodespacerange\\space
+ <00>\\space <FF>\\space
+ endcodespacerange\\space
+ $mapping_count\\space beginbfchar\\space
+");
+
+ foreach my $index (0 .. $#vertref) {
+ if ($unicodes[$index] != -1) {
+ printf(" <%02X>\\space <%04X>\\space\n",
+ $index, $unicodes[$index]);
+ }
+ }
+
+ print(" endbfchar\\space
+ endcmap\\space
+ CMapName\\space currentdict\\space /CMap\\space defineresource\\space
+ pop\\space
+ end\\space
+ end\\space}
+ \\expandafter\\xdef\\csname CJK\@CMap\@${fontname}v\\endcsname{
+ \\the\\pdflastobj}
+ \\fi
+ \\pdffontattr\\font\@name{
+ /ToUnicode\\space\\csname CJK\@CMap\@${fontname}v\\endcsname\\space 0\\space R}
+}
+
+\\endinput
+");
+}
+
+
+# Read an AGL file.
+#
+# $1: Name of the AGL file.
+# $2: Reference to the target hash file, mapping from the glyph name
+# to the Unicode value.
+
+sub read_aglfile {
+ my ($aglfile, $aglhash) = @_;
+
+ print("Reading Adobe Glyph List file \`$aglfile'...\n");
+
+ open(AGL, $aglfile)
+ || die("$prog: can't open \`$aglfile': $!\n");
+
+ while (<AGL>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ my @field = split(";");
+ $aglhash->{$field[1]} = hex($field[0]);
+ }
+ close(AGL);
+}
+
+
+# Read an SFD file.
+#
+# $1: Name of the SFD file.
+# $2: Reference to the target array file, mapping from the character code
+# to the subfont index. The format of an array value is the
+# concatenation of the subfont suffix, a slash, and the index.
+
+sub read_sfdfile {
+ my ($sfdfile, $sfdarray) = @_;
+
+ print("Reading subfont definition file \`$sfdfile'...\n");
+
+ open(SFD, $sfdfile)
+ || die("$prog: can't open \`$sfdfile': $!\n");
+
+ my $line;
+ my $continuation = 0;
+ while (<SFD>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ if ($continuation) {
+ $line .= $_;
+ }
+ else {
+ $line = $_;
+ }
+ $continuation = 0;
+
+ if ($line =~ s/\\$//) {
+ $continuation = 1;
+ next;
+ }
+
+ $_ = $line;
+ my @field = split(" ");
+
+ my $suffix = $field[0];
+
+ shift(@field);
+ my $index = 0;
+
+ while (@field) {
+ if ($field[0] =~ /(.*):$/) {
+ $index = $1;
+ }
+ elsif ($field[0] =~ /(.*)_(.*)/) {
+ my $start = $1;
+ my $end = $2;
+ $start = oct($start) if ($start =~ /^0/);
+ $end = oct($end) if ($end =~ /^0/);
+ foreach my $i ($start .. $end) {
+ $sfdarray->[$i] = "$suffix/$index";
+ $index++;
+ }
+ }
+ else {
+ my $value = $field[0];
+ $value = oct($value) if ($value =~ /^0/);
+ $sfdarray->[$value] = "$suffix/$index";
+ $index++;
+ }
+ shift(@field);
+ }
+ }
+ close(SFD);
+}
+
+
+# Read an AFM file.
+#
+# $1: Name of the AFM file.
+# $2: Reference to array which maps glyph indices to glyph names.
+
+sub read_afmfile {
+ my ($afmfile, $maparray) = @_;
+
+ print("Reading metrics file \`$afmfile'\n");
+
+ open(AFM, $afmfile)
+ || die("$prog: can't open \`$afmfile': $!\n");
+
+ while (<AFM>) {
+ if (/^C \d+ ;/) {
+ / N (.*?) ;/;
+ push (@$maparray, $1);
+ }
+ }
+ close(AFM);
+}
+
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/subfonts/sfd2uni.pl b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/sfd2uni.pl
new file mode 100644
index 0000000000..5aa1946d32
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/sfd2uni.pl
@@ -0,0 +1,348 @@
+#! /usr/bin/perl -w
+#
+# This script creates virtual subfonts in Unicode encoding for a font
+# encoding given by a subfont definition file (which must use Unicode
+# code points).
+#
+# As prerequisites it needs the programs `tftopl' and `vptovf' which must be
+# in the path.
+#
+# Call the script as
+#
+# perl sfd2uni.pl sfd-file namestem uni-namestem codingscheme
+#
+# `sfd-file' is the subfont definition file, `namestem' is the name stem
+# of the subfonts defined in `sfd-file', and `uni-namestem' holds the prefix
+# for the Unicode subfonts. `codingscheme' (converted to uppercase) is used
+# for the CODINGSCHEME parameter in the resulting TFM files.
+#
+# `sfd2uni.pl' reads all TFM files from the font family with name stem
+# `namestem'.
+#
+# Example:
+#
+# perl sfd2uni.pl UKS-HLaTeX.sfd wmj uwmj HLATEX
+#
+# A collection of useful subfont definition files for CJK fonts can be found
+# in the ttf2pk package.
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+if ($#ARGV != 3) {
+ die("usage: $prog sfd-file namestem uni-namestem codingscheme\n");
+}
+
+my $sfdfile = $ARGV[0];
+my $namestem = $ARGV[1];
+my $uninamestem = $ARGV[2];
+my $codingscheme = $ARGV[3];
+
+
+# Read subfont definition file.
+
+my %sfd;
+my @subfonts;
+
+read_sfdfile($sfdfile, \%sfd, \@subfonts);
+
+
+# Read TFM files.
+
+my @unicmetrics;
+
+foreach my $sub (@subfonts) {
+ my $tfmname = "$namestem$sub.tfm";
+
+ read_tfmfile($tfmname, \@unicmetrics, \%sfd, $sub);
+}
+
+
+# Read FONTDIMEN block.
+
+my $fontdimen = read_fontdimen("$namestem$subfonts[0].tfm");
+
+
+# Write VPL files.
+
+my $index = 0;
+foreach my $i (0 .. 255) {
+ my @entries;
+
+ foreach my $j (0 .. 255) {
+ if (defined ($unicmetrics[$index])) {
+ push(@entries, "$j $unicmetrics[$index]");
+ }
+ $index++;
+ }
+
+ if ($#entries >= 0) {
+ write_vplfile($uninamestem . sprintf("%02x.vpl", $i), \@entries);
+ }
+}
+
+
+# Generate VF and TFM files, then remove the VPL files.
+
+my @vplfiles = glob("$uninamestem*.vpl");
+foreach my $vplfile (@vplfiles) {
+ print("Processing \`$vplfile'...\n");
+ my $arg = "vptovf $vplfile";
+ system($arg) == 0
+ || die("$prog: calling \`$arg' failed: $?");;
+ print("Removing \`$vplfile'...\n");
+ unlink($vplfile);
+}
+
+
+# Read an SFD file.
+#
+# $1: Name of the SFD file.
+# $2: Reference to the target hash file, mapping from the subfont index to
+# the character code. The format of the key value is the concatenation
+# of the subfont suffix, a space, and the index.
+# $3: Reference to a target array which holds the subfont suffixes.
+
+sub read_sfdfile {
+ my ($sfdfile, $sfdhash, $sfdarray) = @_;
+
+ print("Reading subfont definition file \`$sfdfile'...\n");
+
+ open(SFD, $sfdfile)
+ || die("$prog: can't open \`$sfdfile': $!\n");
+
+ my $line;
+ my $continuation = 0;
+ while (<SFD>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ if ($continuation) {
+ $line .= $_;
+ }
+ else {
+ $line = $_;
+ }
+ $continuation = 0;
+
+ if ($line =~ s/\\$//) {
+ $continuation = 1;
+ next;
+ }
+
+ $_ = $line;
+ my @field = split(" ");
+
+ my $suffix = $field[0];
+ push(@{$sfdarray}, $suffix);
+
+ shift(@field);
+ my $index = 0;
+
+ while (@field) {
+ if ($field[0] =~ /(.*):$/) {
+ $index = $1;
+ }
+ elsif ($field[0] =~ /(.*)_(.*)/) {
+ my $start = $1;
+ my $end = $2;
+ $start = oct($start) if ($start =~ /^0/);
+ $end = oct($end) if ($end =~ /^0/);
+ foreach my $i ($start .. $end) {
+ $sfdhash->{"$suffix $index"} = $i;
+ $index++;
+ }
+ }
+ else {
+ my $value = $field[0];
+ $value = oct($value) if ($value =~ /^0/);
+ $sfdhash->{"$suffix $index"} = $value;
+ $index++;
+ }
+ shift(@field);
+ }
+ }
+ close(SFD);
+}
+
+
+# Read TFM file.
+#
+# $1: Name of the TFM file.
+# $2: Reference to the target array holding metric information in the form
+# `<subfont> <subfont_index> <width> <heigth> <depth>'.
+# $3: Reference to a hash created by `read_sfdfile'.
+# $4: Subfont suffix.
+
+sub read_tfmfile {
+ my ($tfmfile, $unicarray, $sfdhash, $sub) = @_;
+
+ print("Processing metrics file \`$tfmfile'...\n");
+ my $arg = "tftopl $tfmfile > $tfmfile.pl";
+ system($arg) == 0
+ || die("$prog: calling \`$arg' failed: $?\n");
+
+ print("Reading property list file \`$tfmfile.pl'...\n");
+ open(PL, "$tfmfile.pl")
+ || die("$prog: can't open \`$tfmfile.pl': $!\n");
+
+ while (<PL>) {
+ my $index;
+ if (/^\(CHARACTER O (\d+)/) {
+ $index = oct($1);
+ }
+ elsif (/^\(CHARACTER C (.)/) {
+ $index = ord($1);
+ }
+ else {
+ next;
+ }
+
+ my $wd = "0";
+ my $ht = "0";
+ my $dp = "0";
+
+ $_ = <PL>;
+ if (/\(CHARWD R (.*)\)/) {
+ $wd = "$1";
+ $_ = <PL>;
+ }
+ if (/\(CHARHT R (.*)\)/) {
+ $ht = "$1";
+ $_ = <PL>;
+ }
+ if (/\(CHARDP R (.*)\)/) {
+ $dp = "$1";
+ }
+
+ if (defined ($sfdhash->{"$sub $index"})) {
+ $unicarray->[$sfdhash->{"$sub $index"}] = "$sub $index $wd $ht $dp";
+ }
+ }
+ close(PL);
+ print("Removing \`$tfmfile.pl'...\n");
+ unlink("$tfmfile.pl");
+}
+
+
+# Read FONTDIMEN block of a TFM file.
+#
+# $1: Name of the TFM file.
+#
+# Return the block as a string.
+
+sub read_fontdimen {
+ my ($tfmfile) = @_;
+
+ print("Processing metrics file \`$tfmfile'...\n");
+ my $arg = "tftopl $tfmfile > $tfmfile.pl";
+ system($arg) == 0
+ || die("$prog: calling \`$arg' failed: $?\n");
+
+ print("Reading property list file \`$tfmfile.pl'...\n");
+ open(PL, "$tfmfile.pl")
+ || die("$prog: can't open \`$tfmfile.pl': $!\n");
+
+ my $s = "";
+ my $have_fontdimen = 0;
+
+ while (<PL>) {
+ if (/^\(FONTDIMEN/) {
+ $have_fontdimen = 1;
+ }
+
+ if ($have_fontdimen) {
+ $s .= $_;
+
+ last if (/^ \)/);
+ }
+ }
+
+ close(PL);
+ print("Removing \`$tfmfile.pl'...\n");
+ unlink("$tfmfile.pl");
+
+ return $s;
+}
+
+
+# Write VPL file.
+#
+# $1: Name of the VPL file.
+# $2: Reference to list which holds the font entries. An entry has the
+# form `<idx> <subfont> <subfont_idx> <width> <height> <depth>'.
+
+sub write_vplfile {
+ my ($vplfile, $metricsarray) = @_;
+
+ my %subfonts;
+ my $subcount = 0;
+
+ foreach my $entry (@{$metricsarray}) {
+ my @field = split(" ", $entry);
+ my $subfont = $field[1];
+ if (!defined ($subfonts{$subfont})) {
+ $subfonts{$subfont} = $subcount;
+ $subcount++;
+ }
+ }
+
+ print("Writing virtual property list file \`$vplfile'...\n");
+
+ open(VPL, ">", $vplfile)
+ || die("$prog: can't open \`$vplfile': $!\n");
+ my $oldfh = select(VPL);
+
+ print("(VTITLE Created by \`$prog " . join(" ", @ARGV) . "')\n");
+ print("(FAMILY TEX-\U$uninamestem\E)\n");
+ print("(CODINGSCHEME \U$codingscheme\E)\n");
+ print $fontdimen;
+
+ foreach my $subfont
+ (sort { $subfonts{$a} <=> $subfonts{$b} } keys %subfonts) {
+ print("(MAPFONT D $subfonts{$subfont}\n");
+ print(" (FONTNAME $namestem$subfont)\n");
+ print(" )\n");
+ }
+
+ foreach my $entry (@{$metricsarray}) {
+ my ($index, $subnumber, $subindex, $wd, $ht, $dp) = split(" ", $entry);
+
+ print("(CHARACTER D $index\n");
+ print(" (CHARWD R $wd)\n");
+ print(" (CHARHT R $ht)\n");
+ print(" (CHARDP R $dp)\n");
+ print(" (MAP\n");
+ print(" (SELECTFONT D $subfonts{$subnumber})\n");
+ print(" (SETCHAR D $subindex)\n");
+ print(" )\n");
+ print(" )\n");
+ }
+
+ close(VPL);
+ select($oldfh);
+}
+
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/subfonts/subfonts.pe b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/subfonts.pe
new file mode 100644
index 0000000000..347e53b6df
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/subfonts.pe
@@ -0,0 +1,95 @@
+# Generate CJK subfonts from master font.
+# The fonts are created in the current directory.
+#
+# $1: The master font (e.g., `bsmi00lp.ttf').
+# $2: The name stem for the subfonts (e.g., `bsmilp').
+# $3: The subfont definition file, mapping from Unicode to whatever
+# (e.g., `UBig5.sfd', which maps to Big 5).
+#
+# A collection of useful subfont definition files for CJK fonts can be found
+# in the ttf2pk package.
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+if (Strtol($version) < 20071105)
+ Print("Can't use FontForge version before 2007-11-05. Aborting.");
+ Quit(1);
+endif;
+
+if ($argc != 4)
+ Print("usage: [fontforge -script] ", $0, " master-font name-stem SFD-file");
+ Quit(1);
+endif;
+
+Print("Loading ", $1, "...");
+Open($1);
+
+if ($cidfontname != "")
+ CIDFlatten();
+endif;
+
+Reencode("ucs4");
+
+copyright = $copyright \
+ + Chr(10) + Chr(10) \
+ + "Subfont version " \
+ + Strftime("%F", 1, "C") \
+ + ".";
+SetFontNames("", "", "", "", copyright, "");
+
+Print("Ensure third order curves...");
+SetFontOrder(3);
+
+Print("Scaling to PostScript units...");
+ScaleToEm(900, 100);
+
+num_chars = CharCnt();
+count = 0;
+delta = 100;
+
+while (count + delta < num_chars)
+ Print(count, "/", num_chars - 1, ":");
+ Select(count, count + delta);
+
+ Print(" Add extrema...");
+ AddExtrema();
+
+ Print(" Simplifying outlines...");
+ Simplify(0, 2);
+
+ count += delta;
+endloop;
+
+Print(count, "/", num_chars - 1, ":");
+Select(count, num_chars - 1);
+
+Print(" Add extrema...");
+AddExtrema();
+
+Print(" Simplifying outlines...");
+Simplify(0, 2);
+
+SelectAll();
+
+# generate AFM and TFM files, no PS hints, and rounded PS coordinates
+Print("Generating subfonts...");
+Generate($2 + "%s.pfb", "", \
+ 0x1 | 0x100 | 0x10000 | 0x80000 | 0x200000, \
+ -1, $3);
+
+Quit(0);
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/subfonts/uni2sfd.pl b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/uni2sfd.pl
new file mode 100644
index 0000000000..fc89bf7017
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/uni2sfd.pl
@@ -0,0 +1,312 @@
+#! /usr/bin/perl -w
+#
+# This script creates virtual subfonts in a font encoding given by a subfont
+# definition file, based on Unicode subfonts.
+#
+# As prerequisites, it needs the programs `tftopl' and `vptovf' which must
+# be in the path.
+#
+# Call the script as
+#
+# perl uni2sfd.pl uni-namestem sfd-file namestem codingscheme
+#
+# `uni-namestem' is the namestem of the Unicode subfonts; `uni2sfd.pl'
+# appends the Unicode suffixes and reads the corresponding TFM files.
+# `sfd-file' is the subfont definition file which maps Unicode input
+# characters to the target subfont scheme using `namestem' as the namestem.
+# `codingscheme' gives the value for the CODINGSCHEME parameter in the
+# VF files (always converted to uppercase).
+#
+# Example:
+#
+# perl uni2sfd.pl bsmiu UBig5.sfd bsmilp cjkbig5
+#
+# A collection of useful subfont definition files for CJK fonts can be found
+# in the ttf2pk package.
+
+# Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+if ($#ARGV != 3) {
+ die("usage: $prog uni-namestem sfd-file namestem codingscheme\n");
+}
+
+my $uninamestem = $ARGV[0];
+my $sfdfile = $ARGV[1];
+my $namestem = $ARGV[2];
+my $codingscheme = $ARGV[3];
+
+
+# Read subfont definition file.
+
+my %sfd;
+my @subfonts;
+
+read_sfdfile($sfdfile, \%sfd, \@subfonts);
+
+
+# Read TFM files.
+
+my @unimetrics;
+
+foreach my $sub (0 .. 0xFF) {
+ my $suffix = sprintf("%02x", $sub);
+ my $tfmname = "$uninamestem$suffix.tfm";
+
+ if (-f $tfmname) {
+ read_tfmfile($tfmname, \@unimetrics, $suffix);
+ }
+}
+
+
+# Write VPL files.
+
+foreach my $sub (@subfonts) {
+ my @entries;
+
+ foreach my $i (0 .. 255) {
+ if (defined ($sfd{"$sub $i"})) {
+ my $index = $sfd{"$sub $i"};
+ if (defined ($unimetrics[$index])) {
+ push(@entries, "$i $index $unimetrics[$index]");
+ }
+ }
+ }
+
+ if ($#entries >= 0) {
+ write_vplfile("$namestem$sub.vpl", \@entries);
+ }
+}
+
+
+# Generate VF and TFM files, then remove the VPL files.
+
+my @vplfiles = glob("$namestem*.vpl");
+foreach my $vplfile (@vplfiles) {
+ print("Processing \`$vplfile'...\n");
+ my $arg = "vptovf $vplfile";
+ system($arg) == 0
+ || die("$prog: calling \`$arg' failed: $?\n");
+ print("Removing \`$vplfile'...\n");
+ unlink($vplfile);
+}
+
+
+# Read an SFD file.
+#
+# $1: Name of the SFD file.
+# $2: Reference to the target hash file, mapping from the character code
+# to the subfont index. The format of the key value is the
+# concatenation of the subfont suffix, a space, and the index.
+# $3: Reference to a target array which holds the subfont suffixes.
+
+sub read_sfdfile {
+ my ($sfdfile, $sfdhash, $sfdarray) = @_;
+
+ print("Reading subfont definition file \`$sfdfile'...\n");
+
+ open(SFD, $sfdfile)
+ || die("$prog: can't open \`$sfdfile': $!\n");
+
+ my $line;
+ my $continuation = 0;
+ while (<SFD>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ if ($continuation) {
+ $line .= $_;
+ }
+ else {
+ $line = $_;
+ }
+ $continuation = 0;
+
+ if ($line =~ s/\\$//) {
+ $continuation = 1;
+ next;
+ }
+
+ $_ = $line;
+ my @field = split(" ");
+
+ my $suffix = $field[0];
+ push(@{$sfdarray}, $suffix);
+
+ shift(@field);
+ my $index = 0;
+
+ while (@field) {
+ if ($field[0] =~ /(.*):$/) {
+ $index = $1;
+ }
+ elsif ($field[0] =~ /(.*)_(.*)/) {
+ my $start = $1;
+ my $end = $2;
+ $start = oct($start) if ($start =~ /^0/);
+ $end = oct($end) if ($end =~ /^0/);
+ foreach my $i ($start .. $end) {
+ $sfdhash->{"$suffix $index"} = $i;
+ $index++;
+ }
+ }
+ else {
+ my $value = $field[0];
+ $value = oct($value) if ($value =~ /^0/);
+ $sfdhash->{"$suffix $index"} = $value;
+ $index++;
+ }
+ shift(@field);
+ }
+ }
+ close(SFD);
+}
+
+
+# Read TFM file.
+#
+# $1: Name of the TFM file.
+# $2: Reference to the target array holding metric information in the form
+# `<width> <heigth> <depth>'.
+# $3: Subfont suffix.
+
+sub read_tfmfile {
+ my ($tfmfile, $unicarray, $suffix) = @_;
+
+ print("Processing metrics file \`$tfmfile'...\n");
+ my $arg = "tftopl $tfmfile > $tfmfile.pl";
+ system($arg) == 0
+ || die("$prog: calling \`$arg' failed: $?\n");
+
+ print("Reading property list file \`$tfmfile.pl'...\n");
+ open(PL, "$tfmfile.pl")
+ || die("$prog: can't open \`$tfmfile.pl': $!\n");
+
+ while (<PL>) {
+ my $idx;
+ if (/^\(CHARACTER O (\d+)/) {
+ $idx = oct($1);
+ }
+ elsif (/^\(CHARACTER C (.)/) {
+ $idx = ord($1);
+ }
+ else {
+ next;
+ }
+ $idx += hex($suffix) * 256;
+
+ my $wd = "0";
+ my $ht = "0";
+ my $dp = "0";
+
+ $_ = <PL>;
+ if (/\(CHARWD R (.*)\)/) {
+ $wd = "$1";
+ $_ = <PL>;
+ }
+ if (/\(CHARHT R (.*)\)/) {
+ $ht = "$1";
+ $_ = <PL>;
+ }
+ if (/\(CHARDP R (.*)\)/) {
+ $dp = "$1";
+ }
+
+ $unicarray->[$idx] = "$wd $ht $dp";
+ }
+ close(PL);
+ print("Removing \`$tfmfile.pl'...\n");
+ unlink("$tfmfile.pl");
+}
+
+
+# Write VPL file.
+#
+# $1: Name of the VPL file.
+# $2: Reference to list which holds the font entries. An entry has the
+# form `<index> <Unicode> <width> <height> <depth>'.
+
+sub write_vplfile {
+ my ($vplfile, $glypharray) = @_;
+
+ my %subfonts;
+ my $subcount = 0;
+
+ foreach my $entry (@{$glypharray}) {
+ my @field = split(" ", $entry);
+ my $subfont = int($field[1] / 256);
+ if (!defined ($subfonts{$subfont})) {
+ $subfonts{$subfont} = $subcount;
+ $subcount++;
+ }
+ }
+
+ print("Writing virtual property list file \`$vplfile'...\n");
+
+ open(VPL, ">", $vplfile)
+ || die("$prog: can't open \`$vplfile': $!\n");
+ my $oldfh = select(VPL);
+
+ print("(VTITLE Created by \`$prog " . join(" ", @ARGV) . "')\n");
+ print("(FAMILY TEX-\U$namestem\E)\n");
+ print("(CODINGSCHEME \U$codingscheme\E)\n");
+ print("(FONTDIMEN\n");
+ print(" (SPACE R 0.5)\n");
+ print(" (XHEIGHT R 0.4)\n");
+ print(" (QUAD R 1)\n");
+ print(" )\n");
+
+ foreach my $subfont
+ (sort { $subfonts{$a} <=> $subfonts{$b} } keys %subfonts) {
+ print("(MAPFONT D $subfonts{$subfont}\n");
+ print(" (FONTNAME $uninamestem" . sprintf("%02x", $subfont) . ")\n");
+ print(" )\n");
+ }
+
+ foreach my $entry (@{$glypharray}) {
+ my @field = split(" ", $entry);
+ my $index = $field[0];
+ my $subnumber = $subfonts{int($field[1] / 256)};
+ my $subindex = $field[1] % 256;
+ my $width = $field[2];
+ my $height = $field[3];
+ my $depth = $field[4];
+
+ print("(CHARACTER D $index\n");
+ print(" (CHARWD R $width)\n");
+ print(" (CHARHT R $height)\n");
+ print(" (CHARDP R $depth)\n");
+ print(" (MAP\n");
+ print(" (SELECTFONT D $subnumber)\n");
+ print(" (SETCHAR D $subindex)\n");
+ print(" )\n");
+ print(" )\n");
+ }
+
+ close(VPL);
+ select($oldfh);
+}
+
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/subfonts/vertical.pe b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/vertical.pe
new file mode 100644
index 0000000000..a10faef088
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/vertical.pe
@@ -0,0 +1,108 @@
+# Generate a font which contains vertical glyph representations.
+# The font is created in the current directory.
+#
+# $1: The master font (e.g., `bsmi00lp.ttf').
+# $2: The name of the vertical font (e.g., `bsmilpv').
+
+# Copyright (C) 1994-2007 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+if (Strtol($version) < 20071105)
+ Print("Can't use FontForge version before 2007-11-05. Aborting.";
+ Quit(1);
+endif;
+
+if ($argc != 3)
+ Print("usage: [fontforge -script] ", $0, " master-font vertical-fontname");
+ Quit(1);
+endif;
+
+Print("Loading ", $1, "...");
+Open($1);
+
+fontname = $2;
+fullname = $fullname + " vertical";
+copyright = $copyright \
+ + Chr(10) + Chr(10) \
+ + "Vertical glyph representations version " \
+ + Strftime("%F", 1, "C") \
+ + ".";
+SetFontNames(fontname, "", fullname, "", copyright, "");
+
+SelectAll();
+ApplySubstitution("*", "*", "vert");
+
+if (!$fontchanged)
+ Print("No vertical glyph representation forms found.");
+ Quit(1);
+endif;
+
+SelectChanged();
+
+SelectInvert();
+DetachAndRemoveGlyphs();
+
+Print("Ensure third order curves...");
+SetFontOrder(3);
+
+Print("Scaling to PostScript units...");
+ScaleToEm(900, 100);
+
+num_chars = CharCnt();
+count = 0;
+delta = 100;
+
+while (count + delta < num_chars)
+ Print(count, "/", num_chars - 1, ":");
+ Select(count, count + delta);
+
+ Print(" Add extrema...");
+ AddExtrema();
+
+ Print(" Simplifying outlines...");
+ Simplify(0, 2);
+
+ count += delta;
+endloop;
+
+Print(count, "/", num_chars - 1, ":");
+Select(count, num_chars - 1);
+
+Print(" Add extrema...");
+AddExtrema();
+
+Print(" Simplifying outlines...");
+Simplify(0, 2);
+
+SelectAll();
+foreach
+ unicode = GlyphInfo("Unicode");
+ if (unicode > 0)
+ SetUnicodeValue(unicode);
+ name = GlyphInfo("Name");
+ SetGlyphName(name + ".vert", 0);
+ endif
+endloop;
+
+Reencode("original");
+
+# generate AFM and TFM files, no PS hints, and rounded PS coordinates
+Print("Generating font...");
+Generate($2 + ".pfb", "", \
+ 0x1 | 0x100 | 0x10000 | 0x80000 | 0x200000);
+
+Quit(0);
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/subfonts/vertref.pe b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/vertref.pe
new file mode 100644
index 0000000000..63533f9473
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/subfonts/vertref.pe
@@ -0,0 +1,121 @@
+# Generate a font with glyphs which have vertical glyph representations (but
+# don't include the vertical glyph representations itself). This is used by
+# the perl script `makefdx.pl' to create an FDX file as used by the CJK
+# package for LaTeX.
+#
+# The font is created in the current directory.
+#
+# $1: The master font (e.g., `bsmi00lp.ttf').
+# $2: The name of the target font (e.g., `bsmilpvr').
+
+# Copyright (C) 1994-2007 Werner Lemberg <wl@gnu.org>
+#
+# 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 in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+if (Strtol($version) < 20071105)
+ Print("Can't use FontForge version before 2007-11-05. Aborting.";
+ Quit(1);
+endif;
+
+if ($argc != 3)
+ Print("usage: [fontforge -script] ", $0, " master-font fontname");
+ Quit(1);
+endif;
+
+Print("Loading ", $1, "...");
+Open($1);
+
+fontname = $2;
+fullname = $fullname + " vertical reference";
+copyright = $copyright \
+ + Chr(10) + Chr(10) \
+ + "Vertical glyph reference font version " \
+ + Strftime("%F", 1, "C") \
+ + ".";
+SetFontNames(fontname, "", fullname, "", copyright, "");
+
+lookups = GetLookups("GSUB");
+
+i = 0;
+result = -1;
+while (i < SizeOf(lookups))
+ if (Strstr(lookups[i], "'vert'") >= 0)
+ result = i;
+ endif;
+ i++;
+endloop;
+
+if (result == -1)
+ Print("This font doesn't contain a GSUB table with a `vert' feature.");
+ Quit(1);
+endif;
+
+subtables = GetLookupSubtables(lookups[result]);
+
+i = 0;
+result = -1;
+while (i < SizeOf(subtables))
+ if (Strstr(subtables[i], "'vert'") >= 0)
+ result = i;
+ endif;
+ i++;
+endloop;
+
+SelectByPosSub(subtables[result], 1);
+
+SelectInvert();
+DetachAndRemoveGlyphs();
+
+Print("Ensure third order curves...");
+SetFontOrder(3);
+
+Print("Scaling to PostScript units...");
+ScaleToEm(900, 100);
+
+num_chars = CharCnt();
+count = 0;
+delta = 100;
+
+while (count + delta < num_chars)
+ Print(count, "/", num_chars - 1, ":");
+ Select(count, count + delta);
+
+ Print(" Add extrema...");
+ AddExtrema();
+
+ Print(" Simplifying outlines...");
+ Simplify(0, 2);
+
+ count += delta;
+endloop;
+
+Print(count, "/", num_chars - 1, ":");
+Select(count, num_chars - 1);
+
+Print(" Add extrema...");
+AddExtrema();
+
+Print(" Simplifying outlines...");
+Simplify(0, 2);
+
+Reencode("original");
+
+# generate AFM and TFM files, no PS hints, and rounded PS coordinates
+Print("Generating font...");
+Generate($2 + ".pfb", "", \
+ 0x1 | 0x100 | 0x10000 | 0x80000 | 0x200000);
+
+Quit(0);
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90 b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90
new file mode 100644
index 0000000000..69e0d59326
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90
@@ -0,0 +1 @@
+p +garuda-c90.map
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90 b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90
new file mode 100644
index 0000000000..655dace2ba
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90
@@ -0,0 +1 @@
+p +norasi-c90.map
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc
new file mode 100644
index 0000000000..a929987831
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc
@@ -0,0 +1,334 @@
+%!PS-Adobe-3.0 Resource-Encoding
+% @psencodingfile{
+% author = "See file c90.etx",
+% version = "See file c90.etx",
+% date = "generated 2005/07/04",
+% filename = "c90.enc",
+% email = "See file c90.etx",
+% codetable = "ISO/ASCII",
+% checksum = "",
+% abstract = "This is a postscript encoding file, automatically generated by fontinst from c90.etx."
+% }
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% Created by: tex garuda
+% Created using: \etxtoenc{c90}{c90}
+
+% This file should be installed somewhere that your DVI
+% to postscript driver looks for files. It is needed for
+% reencoding some font you have transformed.
+
+% After installing this file, you should add the following
+% line (minus %) to your finstmsc.rc file:
+% \declarepsencoding{c90}{C90Encoding}{\download{c90.enc}}
+
+%%BeginResource: encoding C90Encoding
+/C90Encoding [
+% 0
+/Gamma
+/Delta
+/Theta
+/Lambda
+/Xi
+/Pi
+/Sigma
+/Upsilon
+% 8
+/Phi
+/Psi
+/Omega
+/endash
+/emdash
+/quotesingle
+/exclamdown
+/questiondown
+% 16
+/dotlessi
+/quotedblleft
+/grave
+/acute
+/caron
+/breve
+/macron
+/ring
+% 24
+/cedilla
+/germandbls
+/ae
+/oe
+/oslash
+/AE
+/OE
+/Oslash
+% 32
+/.notdef
+/exclam
+/quotedblright
+/numbersign
+/dollar
+/percent
+/ampersand
+/quoteright
+% 40
+/parenleft
+/parenright
+/asterisk
+/plus
+/comma
+/hyphen
+/period
+/slash
+% 48
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+% 56
+/eight
+/nine
+/colon
+/semicolon
+/less
+/equal
+/greater
+/question
+% 64
+/at
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+% 72
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+% 80
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+% 88
+/X
+/Y
+/Z
+/bracketleft
+/backslash
+/bracketright
+/circumflex
+/underscore
+% 96
+/quoteleft
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+% 104
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+% 112
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+% 120
+/x
+/y
+/z
+/braceleft
+/bar
+/braceright
+/tilde
+/dieresis
+% 128
+/uni0E38
+/uni0E39
+/uni0E3A
+/uni0E48.low_left
+/uni0E49.low_left
+/uni0E4A.low_left
+/uni0E4B.low_left
+/uni0E4C.low_left
+% 136
+/uni0E48.low
+/uni0E49.low
+/uni0E4A.low
+/uni0E4B.low
+/uni0E4C.low
+/.notdef
+/.notdef
+/uni0E4D.left
+% 144
+/uni0E0D.descless
+/.notdef
+/uni0E31.left
+/uni0E47.left
+/uni0E34.left
+/uni0E35.left
+/uni0E36.left
+/uni0E37.left
+% 152
+/uni0E48.left
+/uni0E49.left
+/uni0E4A.left
+/uni0E4B.left
+/uni0E4C.left
+/.notdef
+/.notdef
+/uni0E10.descless
+% 160
+/.notdef
+/uni0E01
+/uni0E02
+/uni0E03
+/uni0E04
+/uni0E05
+/uni0E06
+/uni0E07
+% 168
+/uni0E08
+/uni0E09
+/uni0E0A
+/uni0E0B
+/uni0E0C
+/uni0E0D
+/uni0E0E
+/uni0E0F
+% 176
+/uni0E10
+/uni0E11
+/uni0E12
+/uni0E13
+/uni0E14
+/uni0E15
+/uni0E16
+/uni0E17
+% 184
+/uni0E18
+/uni0E19
+/uni0E1A
+/uni0E1B
+/uni0E1C
+/uni0E1D
+/uni0E1E
+/uni0E1F
+% 192
+/uni0E20
+/uni0E21
+/uni0E22
+/uni0E23
+/uni0E24
+/uni0E25
+/uni0E26
+/uni0E27
+% 200
+/uni0E28
+/uni0E29
+/uni0E2A
+/uni0E2B
+/uni0E2C
+/uni0E2D
+/uni0E2E
+/uni0E2F
+% 208
+/uni0E30
+/uni0E31
+/uni0E32
+/uni0E33
+/uni0E34
+/uni0E35
+/uni0E36
+/uni0E37
+% 216
+/uni0E38
+/uni0E39
+/uni0E3A
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/uni0E3F
+% 224
+/uni0E40
+/uni0E41
+/uni0E42
+/uni0E43
+/uni0E44
+/uni0E45
+/uni0E46
+/uni0E47
+% 232
+/uni0E48
+/uni0E49
+/uni0E4A
+/uni0E4B
+/uni0E4C
+/uni0E4D
+/uni0E4E
+/uni0E4F
+% 240
+/uni0E50
+/uni0E51
+/uni0E52
+/uni0E53
+/uni0E54
+/uni0E55
+/uni0E56
+/uni0E57
+% 248
+/uni0E58
+/uni0E59
+/uni0E5A
+/uni0E5B
+/uni0E38.low
+/uni0E39.low
+/uni0E3A.low
+/.notdef
+] def
+%%EndResource
+
+% End of file c90.enc.
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map
new file mode 100644
index 0000000000..0c1af91bfe
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map
@@ -0,0 +1,4 @@
+fgdr8z Garuda " C90Encoding ReEncodeFont " <c90.enc <garuda.pfb
+fgdb8z Garuda-Bold " C90Encoding ReEncodeFont " <c90.enc <garuda_b.pfb
+fgdo8z Garuda-Oblique " C90Encoding ReEncodeFont " <c90.enc <garuda_o.pfb
+fgdbo8z Garuda-BoldOblique " C90Encoding ReEncodeFont " <c90.enc <garuda_bo.pfb
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map
new file mode 100644
index 0000000000..6d6a7790fd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map
@@ -0,0 +1,4 @@
+ftnr8z Norasi " C90Encoding ReEncodeFont " <c90.enc <norasi.pfb
+ftnb8z Norasi-Bold " C90Encoding ReEncodeFont " <c90.enc <norasi_b.pfb
+ftni8z Norasi-Italic " C90Encoding ReEncodeFont " <c90.enc <norasi_i.pfb
+ftnbi8z Norasi-BoldItalic " C90Encoding ReEncodeFont " <c90.enc <norasi_bi.pfb
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfm b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfm
new file mode 100644
index 0000000000..65f79a03d9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfm b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfm
new file mode 100644
index 0000000000..10f04c2013
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfm b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfm
new file mode 100644
index 0000000000..729bb4f89e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfm b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfm
new file mode 100644
index 0000000000..7e7ab8eb41
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfm b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfm
new file mode 100644
index 0000000000..29f8047108
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfm b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfm
new file mode 100644
index 0000000000..be784971fc
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftni8z.tfm b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftni8z.tfm
new file mode 100644
index 0000000000..202a7c5bbe
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftni8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfm b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfm
new file mode 100644
index 0000000000..866eac16ba
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/INSTALL b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/INSTALL
new file mode 100644
index 0000000000..21e0236826
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/INSTALL
@@ -0,0 +1,333 @@
+Installation of Thai fonts for TeX with fontinst
+------------------------------------------------
+
+0. The files `c90.etx' and `c90.mtx' must be in the TEXINPUTS path.
+ Normally, the current directory also works. Note that you need
+ fontinst version 1.918 or higher.
+
+1. In case your Thai font doesn't come with an AFM metrics file you
+ must extract it from the font using tools like `type1afm' (from the
+ t1lib package) or ghostscript's `ps2afm' program.
+
+2. Create a control file for fontinst.
+
+ Example:
+
+ Let us assume that we have the following AFM files for the Garuda
+ family, using version 0.5 of the `fonts-tlwg' project:
+
+ garuda.afm
+ garuda_b.afm
+ garuda_o.afm
+ garuda_bo.afm
+
+ You should use glyph names compliant to Karl Berry's `fontname'
+ scheme. For `garuda', this could be `fgdr8z': `f' is the foundry
+ (`small foundry'), `gd' is the typeface name, `r' means the
+ weight (`regular'), and `8z' the encoding (`8bit user').
+ Similarly, suitable names for the other fonts are `fgdb8z',
+ `fgdo8z', and `fgdbo8z', respectively.
+
+ Fonts with `f' as the supplier should go into a `public' font
+ directory. The typeface `Garuda' already exists in the latest
+ fontname version (typeface.map version 4-Jul-2005 at the time of
+ writing), the associated directory is `garuda'. Please consult
+ the `fontname' standard for more information.
+
+ A template for the fontinst control file can be found as
+ `garuda-c90.fontinst' which looks like the following.
+
+ ==== garuda-c90.fontinst ====
+
+ \input fontinst.sty
+
+ \needsfontinstversion{1.918}
+
+
+ % we explicitly set all slots in the encoding, so provide all
+ % glyph names in AFM files equally (this is, don't create
+ % `<glyph>-not' names)
+ \let\setnotglyph \setrawglyph
+
+ % we want warnings for missing glyphs
+ \fontinstcc
+ \add_to\pre_fourth_etx_pass_hook{
+ \def\do_slot{
+ \if_undefined{g-\slot_name}\then
+ \fontinstwarningnoline{fontinst}
+ {missing~glyph~`\slot_name'\space
+ for~slot~\the\slot_number\space
+ in~font~`\out_filename'}
+ \fi
+ \do_character
+ }
+ }
+ \normalcc
+
+
+ % create PL files and an FD file
+ \installfonts
+ \setint{fontdimen(2)}{500} % SPACE
+ \setint{fontdimen(3)}{300} % STRETCH
+ \setint{fontdimen(4)}{100} % SHRINK
+ \setint{fontdimen(6)}{1000} % QUAD
+ \setint{fontdimen(7)}{0} % EXTRASPACE
+
+ \installrawfont{fdbr8z}{garuda,c90}{c90}
+ {C90}{garuda}{m}{n}{}
+ \installrawfont{fdbb8z}{garuda_b,c90}{c90}
+ {C90}{garuda}{bx}{n}{}
+ \installrawfont{fdbbo8z}{garuda_bo,c90}{c90}
+ {C90}{garuda}{bx}{sl}{}
+ \installrawfont{fdbo8z}{garuda_o,c90}{c90}
+ {C90}{garuda}{m}{sl}{}
+ \endinstallfonts
+
+
+ \input finstmsc.sty
+
+
+ % create the c90.enc file
+ \installfonts
+ % the `makeenc' flag is used in c90.etx
+ \setint{makeenc}{1}
+ \setstr{encodingname}{C90Encoding}
+ \etxtoenc{c90}{c90}
+ \endinstallfonts
+
+ \end
+
+ ==== garuda-c90.fontinst ====
+
+ Some explanations.
+
+ - The control files also create MTX and PL files for the AFM
+ files (e.g., garuda.mtx and garuda.pl) which aren't needed and
+ can be deleted.
+
+ - AFM files don't provide all necessary font dimensions for TeX.
+ Consequently, you have to set some dimensions manually. The
+ `SPACE' value must be larger than for a Latin font; a
+ reasonable value is 500. You should increase the `STRETCH'
+ value also -- some tests have shown that 300 yields good
+ results, but this depends on the font. `EXTRASPACE' can be set
+ to zero since you must always use TeX's \frenchspacing command
+ for Thai. All other font dimension values given above are
+ default values and can stay unmodified.
+
+ There is nothing for free: The changed font dimensions improve
+ spacing between Thai words, but Latin words are far too widely
+ spaced.
+
+ - The arguments to \installrawfont are as follows.
+
+ #1 The target font name.
+ #2 A comma separated list (without spaces) of metric
+ files. Above, the first one is the AFM file, the
+ second one is c90.mtx which sets up the three mandatory
+ alias glyph slots.
+ #3 The name of the encoding file (c90.etx).
+ #4-#7 The NFSS attributes for the font.
+ #8 The size command. If it is empty, `<->' is used.
+
+ - The second \installfonts...\endinstallfonts block creates an
+ encoding file.
+
+3. Run fontinst:
+
+ tex garuda-c90.fontinst
+
+ If you get warnings about missing glyphs which are critical (this
+ is, if they affect Thai characters), you have to configure fontinst
+ to use an alias file for glyph names. This is described below.
+
+4. Say
+
+ pltotf <PL-file>
+
+ for all target PL files to create TFM files.
+
+ Example:
+
+ pltotf fgdr8z
+ pltotf fgdb8z
+ pltotf fgdo8z
+ pltotf fgdbo8z
+
+ After the conversion, the PL files are no longer needed and can be
+ deleted. As mentioned above, the PL files created directly from the
+ AFM files need not be converted.
+
+5. Create a mapping file <font>.map for the PS fonts (which can be
+ used by both dvips and pdftex).
+
+ Example `garuda-c90.map' (the lines are split for readability only):
+
+ fgdr8z Garuda \
+ " C90Encoding ReEncodeFont " <c90.enc <garuda.pfb
+ fgdb8z Garuda-Bold \
+ " C90Encoding ReEncodeFont " <c90.enc <garuda_b.pfb
+ fgdo8z Garuda-Oblique \
+ " C90Encoding ReEncodeFont " <c90.enc <garuda_o.pfb
+ fgdbo8z Garuda-BoldOblique \
+ " C90Encoding ReEncodeFont " <c90.enc <garuda_bo.pfb
+
+ A proper entry for the mapping file (dvipdfm.map) of dvipdfm (and
+ dvipdfmx) looks like this:
+
+ fgdr8z c90 garuda
+ fgdb8z c90 garuda_b
+ fgdo8z c90 garuda_o
+ fgdbo8z c90 garuda_bo
+
+ Note that teTeX's (and TeXLive's) `updmap' script can automatically
+ convert a map line for dvips to a proper entry for dvipdfm and
+ dvipdfmx.
+
+6. There are two possibilities how to make the Thai fonts known to
+ dvips.
+
+ - Append the contents of the map file to `psfonts.map' (or the map
+ file specified in the configuration file of dvips, `config.ps',
+ with the `p' option). How to do this may vary depending on the
+ used TeX system; for example, teTeX and TeXLive both use a script
+ called `updmap' to maintain `psfonts.map'.
+
+ - Write a small file called config.<font> (e.g. `config.garuda-c90')
+ with the following line in it:
+
+ p +<map_file>
+
+ Example:
+
+ p +garuda-c90.map
+
+ Then you can use the `-P' command line option of dvips to include
+ the reencoded font. Example:
+
+ dvips -P garuda-c90 test.dvi
+
+7. After testing, install the font and its support files in your TeX
+ tree. In the following example, `TEXMF' denotes the location of
+ your (local) `texmf' directory (we assume a TeX installation
+ compliant to TDS 1.1 as provided recent versions of TeXLive and
+ teTeX).
+
+ garuda.pfb -> TEXMF/fonts/type1/public/garuda/
+ garuda.afm -> TEXMF/fonts/afm/public/garuda/
+ ...
+
+ c90.enc -> TEXMF/fonts/enc/dvips/thai/
+
+ garuda.map -> TEXMF/fonts/map/dvips/garuda-c90/
+ config.garuda -> TEXMF/dvips/garuda-c90/
+
+ fgdr8z.tfm -> TEXMF/fonts/tfm/public/garuda-c90/
+ ...
+
+ c90gar.fd -> TEXMF/tex/latex/CJK/thai/
+
+8. Run texhash or a similar program to update the TDS database if
+ necessary.
+
+
+You are done! With plain TeX, say e.g.
+
+ \font\thai = fgdr9z at 16pt
+
+to use the font \thai. This will typeset TIS-620 encoded Thai. Note,
+however, that you need CJK's cjk-enc.el for Emacs to insert proper
+inter-character glue and word breakpoints in case you want to typeset
+longer Thai phrases.
+
+
+Reencoding Thai fonts
+---------------------
+
+Older Thai fonts don't use proper glyph names, and recent ones
+probably use different suffixes; it is thus necessary to make fontinst
+aware of those names.
+
+A complete example can be found in the `dbtt-old' subdirectory (which
+can be used for the dbtt fonts from TeXLive 8 or earlier).
+
+a. Set up a file which contains all the aliases, using the \galias
+ macro. This file should have the extension `.tex'.
+
+ Example:
+
+ If glyph `endash' is represented with glyph name `ucircumflex' in
+ the font, use the following:
+
+ \galias{ucircumflex}{endash}
+
+b. Set up both ETX and MTX files which load the just created glyph
+ alias file. To do that, use the files `dbtt-old-alias.etx' and
+ `dbtt-old-alias.mtx' as templates. Leave everything unchanged
+ except the line with \input which should load your glyph alias
+ file.
+
+c. Set up a proper fontinst control file. Use `dbtt-old.fontinst' as
+ a template, replacing the `dbtt-old-alias' items in the
+ \installrawfont lines with the name of your MTX file. Similarly,
+ the three last lines in the second \installfonts...\endinstallfonts
+ block should be adjusted accordingly.
+
+d. Continue with item 3 above. Note that in item 5, you have to use
+ not `C90Encoding' but the encoding name defined with the \setstr
+ line in your fontinst control file.
+
+
+Using different LaTeX encodings for Thai
+----------------------------------------
+
+The used encoding scheme within the CJK package for Thai is `C90', but
+it is straightforward to adapt it to other Thai encodings like `LTH'
+by reordering the `\setslot ... \endsetslot' blocks in the file
+`c90.etx'.
+
+Currently, only CJK's cjk-enc.el output filter for Emacs needs the
+Thai ligatures -- other Thai word segmentation programs like `swath'
+or `cttex' already replace the input characters with proper glyph
+variants. Anyway, they don't harm, and it is on the TODO list of the
+thailatex maintainers to finally use those ligatures also.
+
+
+Printing c90.etx
+----------------
+
+It is possible to convert the main fontinst encoding file for Thai,
+c90.etx, into a printable document. To do so, you have to apply the
+patch below to the file `fontdoc.sty' (which is part of the fontinst
+package -- tested with fontinst version 1.926; newer versions have
+already been corrected and don't need this patch), then simply say
+
+ latex c90.etx
+
+
+====================================================================
+
+
+--- fontdoc.sty.old Mon Feb 9 21:28:59 2004
++++ fontdoc.sty Wed Jun 23 12:13:04 2004
+@@ -1052,7 +1052,7 @@
+ \x@cs\def{FD@lig-/LIG}#1#2{%
+ \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}%
+ ${}\rightarrow{}$%
+- \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#2}$%
++ \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#2}%
+ }
+ \x@cs\def{FD@lig-LIG/}#1#2{%
+ \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}%
+@@ -1085,7 +1085,7 @@
+ \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}%
+ ${}\rightarrow{}$%
+ \FD@typeset@string{\slot@name}${}*{}$%
+- \typeset@glyph{#2}${}*\lfloor$\typeset@glyph{#1}$}
++ \typeset@glyph{#2}${}*\lfloor$\typeset@glyph{#1}}
+ \def\nextlarger#1{\Bheading{Next larger} \typeset@glyph{#1}}
+ \def\makerightboundary#1{%
+ \Bheading{Right boundary marker slot} designation \typeset@glyph{#1}%
+
+
+---End of INSTALL---
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/c90.etx b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/c90.etx
new file mode 100644
index 0000000000..db68bd43d7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/c90.etx
@@ -0,0 +1,2346 @@
+% c90.etx
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\relax
+\documentclass{article}
+
+\usepackage[specification]{fontdoc}[2001/06/01]
+\usepackage{textcomp}
+\usepackage{shortvrb}
+\usepackage{mflogo}
+\usepackage{multicol}
+\usepackage{url}
+
+\MakeShortVerb{\|}
+
+\newlength{\Stackwidth}
+
+\newcommand\StackAbove[2]{%
+ \settowidth{\Stackwidth}{$#1$}%
+ \vbox{\hbox{$#1$}%
+ \hbox to \Stackwidth{\hss $#2$\hss}}%
+}
+\newcommand\StackBelow[2]{%
+ \settowidth{\Stackwidth}{$#1$}%
+ \vtop{\hbox{$#1$}%
+ \hbox to \Stackwidth{\hss $#2$\hss}}%
+}
+
+\newcommand{\thaiclass}[1]{%
+ {\textit{#1}}%
+}
+\newcommand{\thaiclassx}[2]{%
+ \thaiclass{#1}%
+ \raisebox{-0.4ex}{{\footnotesize\textit{#2}}}%
+}
+\newcommand{\thaiclassxx}[3]{%
+ \thaiclassx{#1}{#2}%
+ \raisebox{-0.8ex}{{\tiny\textit{#3}}}%
+}
+
+
+\begin{document}
+
+\title{The \texttt{C90} encoding for Thai}
+\author{Werner Lemberg}
+\date{2005/07/04}
+\maketitle
+
+
+\section{Introduction}
+
+This file describes a font encoding for Thai, as presented in a
+TUGboat article~\cite{TUG-Thai}. The glyph names follow the Adobe
+Glyph List (AGL)~\cite{AGL} recommendations. Since most available
+Thai fonts neither use AGL glyph names nor follow the font encoding
+used here, you have to be careful in setting up a proper encoding
+vector. A specialty (for reasons explained below) is that three
+glyphs, namely |/uni0E38| (Thai character `sara u'), |/uni0E39| (Thai
+character `sara uu'), and |/uni0E3A| (Thai character `phinthu') must
+appear twice in the encoding; the additional glyph indices are |0x80|,
+|0x81|, and |0x82|, respectively.
+
+
+\section{Ligatures}
+The tricky part is implementing the ligatures. TeX's ligature
+mechanism only provides contextual patterns of length~2. Due to the
+very nature of the ETX format, ligatures aren't grouped into classes
+which makes this file rather long.
+
+Thai glyphs can be grouped functionally into base glyphs (which are
+spacing glyphs) and diacritics (which have zero advance width).
+Usually, diacritical glyphs represent either vowels or tone
+indicators, whereas base glyphs represent consonants -- I won't go
+into detail here; please read the Unicode standard~\cite{Unicode} or
+any introduction into the Thai script for more information.
+
+The general composing rules are as follows:
+
+\[
+ CV \longrightarrow \StackAbove{V}{C}\,,\quad
+ CT \longrightarrow \StackAbove{T}{C}\,,\quad
+ CVT \longrightarrow \StackAbove{\StackAbove{T}{V}}{C}\,,\quad
+ Cv \longrightarrow \StackBelow{C}{v}\,,\quad
+ CvT \longrightarrow \StackBelow{\StackAbove{T}{C}}{v}
+\]
+
+\noindent
+where $C$ represents a base consonant, $V$ an upper vowel, $v$ a lower
+vowel, and $T$ a tone mark. The tone mark always comes last.
+
+Sometimes you will find documents which have first the tone mark and
+then the vowel. In real Thai input systems, this error will be
+catched and fixed by reordering the characters according to the
+TIS-620 Thai encoding standard before any output is created. The
+ligatures given below are not able to handle such incorrect data, and
+you have to normalize it before using them.
+
+It depends on context where the diacritics are exactly positioned;
+some base glyphs have overlong ascenders or descenders, making it
+necessary to shift the diacritics vertically and horizontally.
+
+To complicate things, the Thai vowel `sara am' (TIS-620 code point
+|0xD3|, Unicode value |U+0E33|), which looks like the final nasal sign
+`nikhahit' (|0xED|, |U+0E4D|) followed by the vowel `sara aa' (|0xD2|,
+|U+0E32|), will be decomposed into these two glyphs for rendering.
+The difficulty is that we must position the tone mark of the
+\emph{previous} character properly! Thus we have
+
+\[
+ C + SM \longrightarrow \StackAbove{N}{C} + SA\,,\quad
+ C + T + SM \longrightarrow \StackAbove{\StackAbove{T}{N}}{C} + SA
+\]
+
+A last specialty (used for Sanskrit written in Thai) is that `sara aa'
+if it follows the independent vowel letter `ru' (|0xC4|, |U+0E24|) or
+`lu' (|0xC6|, |U+0E26|) is replaced with the `lakkhangyao' sign
+(|0xE5|, |U+0E45|).
+
+
+\section{Glyph Classes}
+
+To describe the patterns and rules we start with defining glyph
+classes.
+
+\begin{quote}
+ \begin{description}
+ \item[\thaiclassx{base}{normal}] Normal base glyphs without special
+ features.
+ \item[\thaiclassx{base}{desc}] Base glyphs with descender.
+ \item[\thaiclassx{base}{desclike}] These base glyphs consist of two
+ elements which look like a normal base glyph combined with a lower
+ vowel diacritic; the diacritic-like element will be omitted if
+ combined with a lower vowel.
+ \item[\thaiclassx{base}{asc}] Base glyphs with an ascender on the
+ right side.
+ \item[\thaiclassx{base}{indic}] The two independent vowels \emph{ru}
+ and \emph{lu}.
+ \item[\thaiclassx{base}{sign}] The sign \emph{lakkhangyao}.
+ \item[\thaiclassx{base}{sara am}] The vowel \emph{sara am}.
+ \item[\thaiclassx{base}{sara aa}] The vowel \emph{sara aa}.
+ \item[\thaiclass{lower}] Lower vowel diacritics.
+ \item[\thaiclassx{upper}{vowel}] Upper vowel diacritics.
+ \item[\thaiclassx{upper}{sign}] The \emph{nikhahit} final nasal
+ sign.
+ \item[\thaiclass{top}] Tone marks.
+ \end{description}
+\end{quote}
+
+Here the glyph variant classes:
+
+\begin{quote}
+ \begin{description}
+ \item[\thaiclassx{base}{descless}] The glyphs of class
+ \thaiclassx{base}{desclike} without the lower part.
+ \item[\thaiclassx{lower}{low}] The glyphs of class
+ \thaiclass{lower} shifted downwards.
+ \item[\thaiclassxx{upper}{vowel}{left}] The glyphs of class
+ \thaiclassx{upper}{vowel} shifted to the left.
+ \item[\thaiclassxx{upper}{sign}{left}] The glyphs of class
+ \thaiclassx{upper}{sign} shifted to the left.
+ \item[\thaiclassx{top}{left}] The glyphs of class
+ \thaiclass{top} shifted to the left.
+ \item[\thaiclassx{top}{low}] The glyphs of class
+ \thaiclass{top} shifted downwards.
+ \item[\thaiclassx{top}{low-left}] The glyphs of class
+ \thaiclass{top} shifted to the left and downwards.
+ \end{description}
+\end{quote}
+
+
+\section{Context Patterns}
+
+Using the glyph classes defined in the last section it is easy to
+describe the context patterns for base glyphs with diacritical signs.
+Surprisingly, these patterns are quite systematic. Patterns in
+table~\ref{table:context-dia} which are marked with an asterisk do
+nothing and are listed for completeness only. Note that these
+patterns cover combinations which don't happen in the Thai script
+(which doesn't harm).
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}
+ {l@{~}l@{~}l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclass{lower}
+ & &
+ &\thaiclass{base} &\thaiclass{lower}
+ & & &* \\
+ \thaiclass{base} &
+ &\thaiclass{upper} &
+ &\thaiclass{base} &
+ &\thaiclass{upper} & &* \\
+ \thaiclass{base} &
+ & &\thaiclass{top}
+ &\thaiclass{base} &
+ & &\thaiclassx{top}{low} & \\
+ \thaiclass{base} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclass{base} &\thaiclass{lower}
+ & &\thaiclassx{top}{low} & \\
+ \thaiclass{base} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclass{base} &
+ &\thaiclass{upper} &\thaiclass{top} &* \\[2ex]
+
+ \thaiclassx{base}{desc} &\thaiclass{lower}
+ & &
+ &\thaiclassx{base}{desc} &\thaiclassx{lower}{low}
+ & & & \\
+ \thaiclassx{base}{desc} &
+ &\thaiclass{upper} &
+ &\thaiclassx{base}{desc} &
+ &\thaiclass{upper} & &* \\
+ \thaiclassx{base}{desc} &
+ & &\thaiclass{top}
+ &\thaiclassx{base}{desc} &
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desc} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclassx{base}{desc} &\thaiclassx{lower}{low}
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desc} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclassx{base}{desc} &
+ &\thaiclass{upper} &\thaiclass{top} &* \\[2ex]
+
+ \thaiclassx{base}{desclike} &\thaiclass{lower}
+ & &
+ &\thaiclassx{base}{descless} &
+ & & & \\
+ \thaiclassx{base}{desclike} &
+ &\thaiclass{upper} &
+ &\thaiclassx{base}{desclike} &
+ &\thaiclass{upper} & &* \\
+ \thaiclassx{base}{desclike} &
+ & &\thaiclass{top}
+ &\thaiclassx{base}{desclike} &
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desclike} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclassx{base}{descless} &\thaiclass{lower}
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desclike} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclassx{base}{desclike} &
+ &\thaiclass{upper} &\thaiclass{top} &* \\[2ex]
+
+ \thaiclassx{base}{asc} &\thaiclass{lower}
+ & &
+ &\thaiclassx{base}{asc} &\thaiclass{lower}
+ & & &* \\
+ \thaiclassx{base}{asc} &
+ &\thaiclass{upper} &
+ &\thaiclassx{base}{asc} &
+ &\thaiclassx{upper}{left} & & \\
+ \thaiclassx{base}{asc} &
+ & &\thaiclass{top}
+ &\thaiclassx{base}{asc} &
+ & &\thaiclassx{top}{low-left} & \\
+ \thaiclassx{base}{asc} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclassx{base}{asc} &\thaiclass{lower}
+ & &\thaiclassx{top}{low-left} & \\
+ \thaiclassx{base}{asc} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclassx{base}{asc} &
+ &\thaiclassx{upper}{left} &\thaiclassx{top}{left} & \\
+ \end{tabular}
+
+ \caption{Context patterns for diacritical signs. Here,
+ \thaiclass{base} refers to the union of the subclasses
+ \thaiclass{normal}, \thaiclass{indic}, \thaiclass{sign},
+ \thaiclass{sara am}, and \thaiclass{sara aa} of \thaiclass{base};
+ \thaiclass{upper} is the union of the subclasses \thaiclass{vowel}
+ and \thaiclass{sign} of \thaiclass{upper}.}
+ \label{table:context-dia}
+\end{table*}
+
+Table~\ref{table:context-sara} covers the ligatures of the character
+\emph{sara am}. Finally, table~\ref{table:context-indic} describes
+the letters specific to Sanskrit.
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclassx{base}{sara am} &
+ &\thaiclass{base} &\thaiclassx{upper}{sign}
+ & &\thaiclassx{base}{sara aa} \\
+ \thaiclassx{base}{asc} &\thaiclassx{base}{sara am} &
+ &\thaiclassx{base}{asc} &\thaiclassxx{upper}{sign}{left}
+ & &\thaiclassx{base}{sara aa} \\[2ex]
+
+ \thaiclass{base} &\thaiclass{top} &\thaiclassx{base}{sara am}
+ &\thaiclass{base} &\thaiclassx{upper}{sign}
+ &\thaiclass{top} &\thaiclassx{base}{sara aa} \\
+ \thaiclassx{base}{asc} &\thaiclass{top} &\thaiclassx{base}{sara
+ am}
+ &\thaiclassx{base}{asc} &\thaiclassxx{upper}{sign}{left}
+ &\thaiclassx{top}{left} &\thaiclassx{base}{sara aa}
+ \end{tabular}
+ \caption{Context patterns for \emph{sara am}. Here,
+ \thaiclass{base} denotes the union of subclasses
+ \thaiclass{normal}, \thaiclass{desc}, and \thaiclass{desclike} of
+ \thaiclass{base}.}
+ \label{table:context-sara}
+\end{table*}
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l}
+ \thaiclassx{base}{indic} &\thaiclassx{base}{sara aa}
+ &\thaiclassx{base}{indic} &\thaiclassx{base}{sign}
+ \end{tabular}
+ \caption{Context patterns for \emph{ru} and \emph{lu}.}
+ \label{table:context-indic}
+\end{table*}
+
+\section{\TeX's Ligature Mechanism}
+
+\DeleteShortVerb{\|}
+
+A small introduction into the exotic variants of \TeX's ligature
+mechanism which probably many users haven't seen before.
+Additionally, the documentation in the \emph{\MF book}~\cite{MFbook}
+is very sparse. In the following examples \MF's notation is used.
+
+The usual ligature action of two glyphs $a$ and~$b$ is the replacement
+of both glyphs with another glyph~$c$.
+
+\begin{center}
+ \texttt{a b =:\ c}
+\end{center}
+
+Another possibility is to retain the left or the right original glyph
+(before and after the ligature, respectively) or both.
+
+\begin{center}
+ \texttt{a b |=:\ c} \quad
+ \texttt{a b =:| c} \quad
+ \texttt{a b |=:| c}
+\end{center}
+
+\noindent
+The first rule creates $ac$, the second $cb$, and the last $acb$. In
+all three cases, the current point after appying the ligature rule is
+still at the first glyph of the replaced glyphs, and \TeX\ simply
+restarts there to check ligatures (and kernings). A classical example
+is
+
+\begin{center}
+ f f i \textrightarrow\ ff i \textrightarrow\ ffi
+\end{center}
+
+To advance the current point to the right, append either \texttt{>} or
+\texttt{>{}>} (the latter is only possible if you retain both input
+glyphs). Here are the remaining four ligature rules.
+
+\begin{center}
+ \texttt{a b |=:> c} \quad
+ \texttt{a b =:|> c} \\
+ \texttt{a b |=:|> c} \quad
+ \texttt{a b |=:|>{}> c}
+\end{center}
+
+For Thai ligatures, the most often needed rule is \texttt{|=:}\ (i.e.,
+retain the left glyph and stay at the same position before applying
+the next ligature rule). Note that using \texttt{|=:>} instead is not
+a good idea since this would prohibit kerning between the left glyph
+and the ligature.
+
+\section{Ligature Rules}
+
+\MakeShortVerb{\|}
+
+As just explained, \TeX\ can only handle context patterns of length~2,
+whereas Thai needs patterns of length~3. It was an interesting
+challenge to find out whether the problem can be solved with \TeX's
+somewhat restricted ligature rules -- the gentle reader is invited to
+find a solution by herself! There won't be any difficulties in
+understanding ligatures afterwards.
+
+The tables~\ref{table:liga-dia}, \ref{table:liga-sara},
+and~\ref{table:liga-indic} use the same conventions as
+tables~\ref{table:context-dia}, \ref{table:context-sara},
+and~\ref{table:context-indic}, respectively. The current point isn't
+increased in any of the rules.
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l}
+ \thaiclass{base} &\thaiclass{top}
+ &\thaiclass{base} &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{desc} &\thaiclass{lower}
+ &\thaiclassx{base}{desc} &\thaiclassx{lower}{low} \\
+ \thaiclassx{base}{desc} &\thaiclass{top}
+ &\thaiclassx{base}{desc} &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{desclike} &\thaiclass{lower}
+ &\thaiclassx{base}{descless} &\thaiclass{lower} \\
+ \thaiclassx{base}{desclike} &\thaiclass{top}
+ &\thaiclassx{base}{desclike} &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{asc} &\thaiclass{lower}
+ &\thaiclassx{base}{asc} &\thaiclassx{lower}{left} \\
+ \thaiclassx{base}{asc} &\thaiclass{upper}
+ &\thaiclassx{base}{asc} &\thaiclassx{upper}{left} \\
+ \thaiclassx{base}{asc} &\thaiclass{top}
+ &\thaiclassx{base}{asc} &\thaiclassx{top}{low-left} \\[2ex]
+
+ \thaiclass{lower} &\thaiclass{top}
+ &\thaiclass{lower} &\thaiclassx{top}{low} \\
+ \thaiclassx{lower}{low} &\thaiclass{top}
+ &\thaiclassx{lower}{low} &\thaiclassx{top}{low} \\[2ex]
+
+ \thaiclassx{upper}{left} &\thaiclass{top}
+ &\thaiclassx{upper}{left} &\thaiclassx{top}{left} \\[2ex]
+
+ \thaiclassx{lower}{left} &\thaiclass{top}
+ &\thaiclassx{lower}{left} &\thaiclassx{top}{low-left} \\
+ \end{tabular}
+
+ \caption{Ligature rules for diacritical marks.}
+ \label{table:liga-dia}
+\end{table*}
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclassx{base}{sara am}
+ &\thaiclass{base} &\thaiclassx{upper}{sign}
+ &\thaiclassx{base}{sara am} \\
+ \thaiclassx{base}{asc} &\thaiclassx{base}{sara am}
+ &\thaiclassx{base}{asc} &\thaiclassxx{upper}{sign}{left}
+ &\thaiclassx{base}{sara am} \\[2ex]
+
+ \thaiclassx{upper}{sign} &\thaiclassx{base}{sara am}
+ &\thaiclassx{upper}{sign} &\thaiclassx{base}{sara aa}
+ & \\
+ \thaiclassxx{upper}{sign}{left} &\thaiclassx{base}{sara am}
+ &\thaiclassxx{upper}{sign}{left} &\thaiclassx{base}{sara aa}
+ & \\[2ex]
+
+ \thaiclassx{top}{low} &\thaiclassx{base}{sara am}
+ &\thaiclassx{top}{low} &\thaiclass{top}
+ &\thaiclassx{base}{sara am} \\
+ \thaiclassx{top}{low} &\thaiclass{top}
+ &\thaiclassx{upper}{sign} &\thaiclass{top}
+ & \\
+ \thaiclass{top} &\thaiclassx{base}{sara am}
+ &\thaiclass{top} &\thaiclassx{base}{sara aa}
+ & \\[2ex]
+
+ \thaiclassx{top}{low-left} &\thaiclassx{base}{sara am}
+ &\thaiclassx{top}{low-left} &\thaiclassx{top}{left}
+ &\thaiclassx{base}{sara am} \\
+ \thaiclassx{top}{low-left} &\thaiclassx{top}{left}
+ &\thaiclassxx{upper}{sign}{left} &\thaiclassx{top}{left}
+ & \\
+ \thaiclassx{top}{left} &\thaiclassx{base}{sara am}
+ &\thaiclassx{top}{left} &\thaiclassx{base}{sara aa} \\
+ \end{tabular}
+
+ \caption{Ligature rules for \emph{sara am}.}
+ \label{table:liga-sara}
+\end{table*}
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l}
+ \thaiclassx{base}{indic} &\thaiclassx{base}{sara aa}
+ &\thaiclassx{base}{indic} &\thaiclassx{base}{sign}
+ \end{tabular}
+ \caption{Ligature rule for \emph{ru} and \emph{lu}.}
+ \label{table:liga-indic}
+\end{table*}
+
+Most of the ligature rules can be derived easily by handling the
+patterns sequentially (quite similar to logic puzzles found in various
+magazines), but at the end there remain two patterns which apparently
+contradict.
+
+\setlength{\tabcolsep}{3pt}
+
+\begin{center}
+ \begin{tabular}{l@{~}l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclass{lower} &\thaiclass{top}
+ &\thaiclass{base} &\thaiclass{lower}
+ &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{asc} &\thaiclass{lower} &\thaiclass{top}
+ &\thaiclassx{base}{asc} &\thaiclass{lower}
+ &\thaiclassx{top}{low-left} \\
+ \end{tabular}
+\end{center}
+
+After applying ligature rules for the first two glyph classes it is
+necessary to handle the context `\thaiclass{lower} \thaiclass{top}',
+but depending on the previous glyph class \thaiclass{top} must be
+replaced with \thaiclassx{top}{left} and \thaiclassx{top}{low-left},
+respectively. With a context pattern length of~3 this would be easy
+to solve, but \TeX\ doesn't have this feature. What to do?
+
+The context `\thaiclass{base} \thaiclass{lower} \thaiclass{top}' must
+be distinguished from `\thaiclassx{base}{asc} \thaiclass{lower}
+\thaiclass{top}', i.e., two different \thaiclass{lower} classes are
+needed depending on the previous character since \TeX\ is not able to
+forward information from one ligature cycle to the next. The idea is
+now to create an `alias class', a class which behaves identically to
+the original one. The glyphs in this alias class are the same, but
+different glyph indices and glyph names are assigned to it. A
+closer look to table~\ref{table:liga-dia} shows that
+\thaiclassx{lower}{left} isn't a typo but the alias class of
+\thaiclass{lower}.
+
+
+\section{The Implementation}
+
+After solving the problem theoretically now the practical
+implementation. All glyph names follow the \emph{Adobe Glyph List
+ (AGL)}~\cite{AGL}. There are no predefined Adobe glyph names for
+Thai, so the prefix `uni' with attached Unicode value will be used for
+all glyphs which are encoded in Unicode. Glyph variants are
+identified by an arbitrarily chosen postfix.
+
+Here the real glyph names for the various classes. Hexadecimal values
+in parentheses after the glyph name give the glyph indices in the
+encoding vector.
+
+\vspace{1ex}
+\multicolsep 1ex
+
+\begin{multicols}{2}[\thaiclassx{base}{normal}:]
+ \begin{quote}
+ |uni0E01| (|0xA1|)\\
+ |uni0E02| (|0xA2|)\\
+ |uni0E03| (|0xA3|)\\
+ |uni0E04| (|0xA4|)\\
+ |uni0E05| (|0xA5|)\\
+ |uni0E06| (|0xA6|)\\
+ |uni0E07| (|0xA7|)\\
+ |uni0E08| (|0xA8|)\\
+ |uni0E09| (|0xA9|)\\
+ |uni0E0A| (|0xAA|)\\
+ |uni0E0B| (|0xAB|)\\
+ |uni0E0C| (|0xAC|)\\
+ |uni0E11| (|0xB1|)\\
+ |uni0E12| (|0xB2|)\\
+ |uni0E13| (|0xB3|)\\
+ |uni0E14| (|0xB4|)\\
+ |uni0E15| (|0xB5|)\\
+ |uni0E16| (|0xB6|)\\
+ |uni0E17| (|0xB7|)\\
+ |uni0E18| (|0xB8|)\\
+ |uni0E19| (|0xB9|)\\
+ |uni0E1A| (|0xBA|)\\
+ |uni0E1C| (|0xBC|)\\
+ |uni0E1E| (|0xBE|)\\
+ |uni0E20| (|0xC0|)\\
+ |uni0E21| (|0xC1|)\\
+ |uni0E22| (|0xC2|)\\
+ |uni0E23| (|0xC3|)\\
+ |uni0E25| (|0xC5|)\\
+ |uni0E27| (|0xC7|)\\
+ |uni0E28| (|0xC8|)\\
+ |uni0E29| (|0xC9|)\\
+ |uni0E2A| (|0xCA|)\\
+ |uni0E2B| (|0xCB|)\\
+ |uni0E2D| (|0xCD|)\\
+ |uni0E2E| (|0xCE|)\\
+ |uni0E2F| (|0xCF|)\\
+ |uni0E30| (|0xD0|)\\
+ |uni0E40| (|0xE0|)\\
+ |uni0E41| (|0xE1|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{desc}:]
+ \begin{quote}
+ |uni0E0E| (|0xAE|)\\
+ |uni0E0F| (|0xAF|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{desclike}:]
+ \begin{quote}
+ |uni0E0D| (|0xAD|)\\
+ |uni0E10| (|0xB0|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{indic}:]
+ \begin{quote}
+ |uni0E24| (|0xC4|)\\
+ |uni0E26| (|0xC6|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{sign}:]
+ \begin{quote}
+ |uni0E45| (|0xE5|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{asc}:]
+ \begin{quote}
+ |uni0E1B| (|0xBB|)\\
+ |uni0E1D| (|0xBD|)\\
+ |uni0E1F| (|0xBF|)\\
+ |uni0E2C| (|0xCC|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{sara am}:]
+ \begin{quote}
+ |uni0E33| (|0xD3|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{sara aa}:]
+ \begin{quote}
+ |uni0E32| (|0xD2|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{descless}:]
+ \begin{quote}
+ |uni0E0D.descless| (|0x90|)\\
+ |uni0E10.descless| (|0x9F|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclass{lower}:]
+ \begin{quote}
+ |uni0E38| (|0xD8|)\\
+ |uni0E39| (|0xD9|)\\
+ |uni0E3A| (|0xDA|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{lower}{left}:]
+ \begin{quote}
+ |uni0E38.left| (|0x80|)\\
+ |uni0E39.left| (|0x81|)\\
+ |uni0E3A.left| (|0x82|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{lower}{low}:]
+ \begin{quote}
+ |uni0E38.low| (|0xFC|)\\
+ |uni0E39.low| (|0xFD|)\\
+ |uni0E3A.low| (|0xFE|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{upper}{vowel}:]
+ \begin{quote}
+ |uni0E31| (|0xD1|)\\
+ |uni0E34| (|0xD4|)\\
+ |uni0E35| (|0xD5|)\\
+ |uni0E36| (|0xD6|)\\
+ |uni0E37| (|0xD7|)\\
+ |uni0E47| (|0xE7|)\\
+ |uni0E4D| (|0xED|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{upper}{sign}:]
+ \begin{quote}
+ |uni0E4D| (|0xED|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassxx{upper}{vowel}{left}:]
+ \begin{quote}
+ |uni0E31.left| (|0x92|)\\
+ |uni0E34.left| (|0x94|)\\
+ |uni0E35.left| (|0x95|)\\
+ |uni0E36.left| (|0x96|)\\
+ |uni0E37.left| (|0x97|)\\
+ |uni0E47.left| (|0x93|)\\
+ |uni0E4D.left| (|0x8F|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassxx{upper}{sign}{left}:]
+ \begin{quote}
+ |uni0E4D.left| (|0x8F|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclass{top}:]
+ \begin{quote}
+ |uni0E48| (|0xE8|)\\
+ |uni0E49| (|0xE9|)\\
+ |uni0E4A| (|0xEA|)\\
+ |uni0E4B| (|0xEB|)\\
+ |uni0E4C| (|0xEC|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{top}{left}:]
+ \begin{quote}
+ |uni0E48.left| (|0x98|)\\
+ |uni0E49.left| (|0x99|)\\
+ |uni0E4A.left| (|0x9A|)\\
+ |uni0E4B.left| (|0x9B|)\\
+ |uni0E4C.left| (|0x9C|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{top}{low}:]
+ \begin{quote}
+ |uni0E48.low| (|0x88|)\\
+ |uni0E49.low| (|0x89|)\\
+ |uni0E4A.low| (|0x8A|)\\
+ |uni0E4B.low| (|0x8B|)\\
+ |uni0E4C.low| (|0x8C|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{top}{low-left}:]
+ \begin{quote}
+ |uni0E48.low_left| (|0x83|)\\
+ |uni0E49.low_left| (|0x84|)\\
+ |uni0E4A.low_left| (|0x85|)\\
+ |uni0E4B.low_left| (|0x86|)\\
+ |uni0E4C.low_left| (|0x87|)
+ \end{quote}
+\end{multicols}
+
+\vspace{1ex}
+
+
+\encoding
+\needsfontinstversion{1.918}
+
+
+\begincomment
+\section{Coding Scheme}
+\endcomment
+
+\setstr{codingscheme}{C90 THAI ENCODING}
+
+
+\begincomment
+\section{Non-Thai Characters}
+
+Of the many different \LaTeX{} encodings, |OT1| supports {\small
+ ASCII} best (and this is what most Type~1 Thai fonts have). This
+has two advantages: We can use the raw Thai font without specifying a
+new encoding (switching to |OT1| will be sufficient), and it will work
+with plain \TeX{} also.
+
+We use the |OT1| layout for typewriter fonts (i.e., for |cmtt|) with
+the exception that `arrowup' and `arrowdown' are replaced with
+`endash' and `emdash', and the seldom used `dotlessj' with
+`quotedblleft'.
+\endcomment
+
+
+% 0x00 | 0
+\setslot{Gamma}
+ \Unicode{0393}{GREEK CAPITAL LETTER GAMMA}
+\endsetslot
+
+\setslot{Delta}
+ \Unicode{0394}{GREEK CAPITAL LETTER DELTA}
+\endsetslot
+
+\setslot{Theta}
+ \Unicode{0398}{GREEK CAPITAL LETTER THETA}
+\endsetslot
+
+\setslot{Lambda}
+ \Unicode{039B}{GREEK CAPITAL LETTER LAMDA}
+\endsetslot
+
+\setslot{Xi}
+ \Unicode{039E}{GREEK CAPITAL LETTER XI}
+\endsetslot
+
+\setslot{Pi}
+ \Unicode{03A0}{GREEK CAPITAL LETTER PI}
+\endsetslot
+
+\setslot{Sigma}
+ \Unicode{03A3}{GREEK CAPITAL LETTER SIGMA}
+\endsetslot
+
+\setslot{Upsilon}
+ \Unicode{03D2}{GREEK UPSILON WITH HOOK SYMBOL}
+\endsetslot
+
+\setslot{Phi}
+ \Unicode{03A6}{GREEK CAPITAL LETTER PHI}
+\endsetslot
+
+\setslot{Psi}
+ \Unicode{03A8}{GREEK CAPITAL LETTER PSI}
+\endsetslot
+
+\setslot{Omega}
+ \Unicode{03A9}{GREEK CAPITAL LETTER OMEGA}
+\endsetslot
+
+\setslot{endash}
+ \Unicode{2013}{EN DASH}
+ \Ligature{LIG}{hyphen}{emdash}
+ \comment{This is `arrowup' in |OT1| encoding.}
+\endsetslot
+
+\setslot{emdash}
+ \Unicode{2014}{EM DASH}
+ \comment{This is `arrowdown' in |OT1| encoding.}
+\endsetslot
+
+\setslot{quotesingle}
+ \Unicode{0027}{APOSTROPHE}
+\endsetslot
+
+\setslot{exclamdown}
+ \Unicode{00A1}{INVERTED EXCLAMATION MARK}
+\endsetslot
+
+\setslot{questiondown}
+ \Unicode{00BF}{INVERTED QUESTION MARK}
+\endsetslot
+
+% 0x10 | 16
+\setslot{dotlessi}
+ \Unicode{0131}{LATIN SMALL LETTER DOTLESS I}
+\endsetslot
+
+\setslot{quotedblleft}
+ \Unicode{201C}{LEFT DOUBLE QUOTATION MARK}
+ \comment{This is `dotlessj' in |OT1| encoding.}
+\endsetslot
+
+\setslot{grave}
+ \Unicode{0300}{COMBINING GRAVE ACCENT}
+\endsetslot
+
+\setslot{acute}
+ \Unicode{0301}{COMBINING ACUTE ACCENT}
+\endsetslot
+
+\setslot{caron}
+ \Unicode{030C}{COMBINING CARON}
+\endsetslot
+
+\setslot{breve}
+ \Unicode{0306}{COMBINING BREVE}
+\endsetslot
+
+\setslot{macron}
+ \Unicode{0304}{COMBINING MACRON}
+\endsetslot
+
+\setslot{ring}
+ \Unicode{030A}{COMBINING RING ABOVE}
+\endsetslot
+
+\setslot{cedilla}
+ \Unicode{0327}{COMBINING CEDILLA}
+\endsetslot
+
+\setslot{germandbls}
+ \Unicode{00DF}{LATIN SMALL LETTER SHARP S}
+\endsetslot
+
+\setslot{ae}
+ \Unicode{00E6}{LATIN SMALL LETTER AE}
+\endsetslot
+
+\setslot{oe}
+ \Unicode{0153}{LATIN SMALL LIGATURE OE}
+\endsetslot
+
+\setslot{oslash}
+ \Unicode{00F8}{LATIN SMALL LETTER O WITH STROKE}
+\endsetslot
+
+\setslot{AE}
+ \Unicode{00C6}{LATIN CAPITAL LETTER AE}
+\endsetslot
+
+\setslot{OE}
+ \Unicode{0152}{LATIN CAPITAL LIGATURE OE}
+\endsetslot
+
+\setslot{Oslash}
+ \Unicode{00D8}{LATIN CAPITAL LETTER O WITH STROKE}
+\endsetslot
+
+% 0x20 | 32
+\skipslots{1}
+
+\setslot{exclam}
+ \Unicode{0021}{EXCLAMATION MARK}
+ \Ligature{LIG}{quoteleft}{exclamdown}
+\endsetslot
+
+\setslot{quotedblright}
+ \Unicode{201D}{RIGHT DOUBLE QUOTATION MARK}
+\endsetslot
+
+\setslot{numbersign}
+ \Unicode{0023}{NUMBER SIGN}
+\endsetslot
+
+\setslot{dollar}
+ \Unicode{0024}{DOLLAR SIGN}
+\endsetslot
+
+\setslot{percent}
+ \Unicode{0025}{PERCENT SIGN}
+\endsetslot
+
+\setslot{ampersand}
+ \Unicode{0026}{AMPERSAND}
+\endsetslot
+
+\setslot{quoteright}
+ \Unicode{2019}{RIGHT SINGLE QUOTATION MARK}
+ \Ligature{LIG}{quoteright}{quotedblright}
+\endsetslot
+
+\setslot{parenleft}
+ \Unicode{0028}{LEFT PARENTHESIS}
+\endsetslot
+
+\setslot{parenright}
+ \Unicode{0029}{RIGHT PARENTHESIS}
+\endsetslot
+
+\setslot{asterisk}
+ \Unicode{002A}{ASTERISK}
+\endsetslot
+
+\setslot{plus}
+ \Unicode{002B}{PLUS SIGN}
+\endsetslot
+
+\setslot{comma}
+ \Unicode{002C}{COMMA}
+\endsetslot
+
+\setslot{hyphen}
+ \Unicode{002D}{HYPHEN-MINUS}
+ \Ligature{LIG}{hyphen}{endash}
+\endsetslot
+
+\setslot{period}
+ \Unicode{002E}{FULL STOP}
+\endsetslot
+
+\setslot{slash}
+ \Unicode{002F}{SOLIDUS}
+\endsetslot
+
+% 0x30 | 48
+\setslot{zero}
+ \Unicode{0030}{DIGIT ZERO}
+\endsetslot
+
+\setslot{one}
+ \Unicode{0031}{DIGIT ONE}
+\endsetslot
+
+\setslot{two}
+ \Unicode{0032}{DIGIT TWO}
+\endsetslot
+
+\setslot{three}
+ \Unicode{0033}{DIGIT THREE}
+\endsetslot
+
+\setslot{four}
+ \Unicode{0034}{DIGIT FOUR}
+\endsetslot
+
+\setslot{five}
+ \Unicode{0035}{DIGIT FIVE}
+\endsetslot
+
+\setslot{six}
+ \Unicode{0036}{DIGIT SIX}
+\endsetslot
+
+\setslot{seven}
+ \Unicode{0037}{DIGIT SEVEN}
+\endsetslot
+
+\setslot{eight}
+ \Unicode{0038}{DIGIT EIGHT}
+\endsetslot
+
+\setslot{nine}
+ \Unicode{0039}{DIGIT NINE}
+\endsetslot
+
+\setslot{colon}
+ \Unicode{003A}{COLON}
+\endsetslot
+
+\setslot{semicolon}
+ \Unicode{003B}{SEMICOLON}
+\endsetslot
+
+\setslot{less}
+ \Unicode{003C}{LESS-THAN SIGN}
+\endsetslot
+
+\setslot{equal}
+ \Unicode{003D}{EQUALS SIGN}
+\endsetslot
+
+\setslot{greater}
+ \Unicode{003E}{GREATER-THAN SIGN}
+\endsetslot
+
+\setslot{question}
+ \Unicode{003F}{QUESTION MARK}
+ \Ligature{LIG}{quoteleft}{questiondown}
+\endsetslot
+
+% 0x40 | 64
+\setslot{at}
+ \Unicode{0040}{COMMERCIAL AT}
+\endsetslot
+
+\setslot{A}
+ \Unicode{0041}{LATIN CAPITAL LETTER A}
+\endsetslot
+
+\setslot{B}
+ \Unicode{0042}{LATIN CAPITAL LETTER B}
+\endsetslot
+
+\setslot{C}
+ \Unicode{0043}{LATIN CAPITAL LETTER C}
+\endsetslot
+
+\setslot{D}
+ \Unicode{0044}{LATIN CAPITAL LETTER D}
+\endsetslot
+
+\setslot{E}
+ \Unicode{0045}{LATIN CAPITAL LETTER E}
+\endsetslot
+
+\setslot{F}
+ \Unicode{0046}{LATIN CAPITAL LETTER F}
+\endsetslot
+
+\setslot{G}
+ \Unicode{0047}{LATIN CAPITAL LETTER G}
+\endsetslot
+
+\setslot{H}
+ \Unicode{0048}{LATIN CAPITAL LETTER H}
+\endsetslot
+
+\setslot{I}
+ \Unicode{0049}{LATIN CAPITAL LETTER I}
+\endsetslot
+
+\setslot{J}
+ \Unicode{004A}{LATIN CAPITAL LETTER J}
+\endsetslot
+
+\setslot{K}
+ \Unicode{004B}{LATIN CAPITAL LETTER K}
+\endsetslot
+
+\setslot{L}
+ \Unicode{004C}{LATIN CAPITAL LETTER L}
+\endsetslot
+
+\setslot{M}
+ \Unicode{004D}{LATIN CAPITAL LETTER M}
+\endsetslot
+
+\setslot{N}
+ \Unicode{004E}{LATIN CAPITAL LETTER N}
+\endsetslot
+
+\setslot{O}
+ \Unicode{004F}{LATIN CAPITAL LETTER O}
+\endsetslot
+
+% 0x50 | 80
+\setslot{P}
+ \Unicode{0050}{LATIN CAPITAL LETTER P}
+\endsetslot
+
+\setslot{Q}
+ \Unicode{0051}{LATIN CAPITAL LETTER Q}
+\endsetslot
+
+\setslot{R}
+ \Unicode{0052}{LATIN CAPITAL LETTER R}
+\endsetslot
+
+\setslot{S}
+ \Unicode{0053}{LATIN CAPITAL LETTER S}
+\endsetslot
+
+\setslot{T}
+ \Unicode{0054}{LATIN CAPITAL LETTER T}
+\endsetslot
+
+\setslot{U}
+ \Unicode{0055}{LATIN CAPITAL LETTER U}
+\endsetslot
+
+\setslot{V}
+ \Unicode{0056}{LATIN CAPITAL LETTER V}
+\endsetslot
+
+\setslot{W}
+ \Unicode{0057}{LATIN CAPITAL LETTER W}
+\endsetslot
+
+\setslot{X}
+ \Unicode{0058}{LATIN CAPITAL LETTER X}
+\endsetslot
+
+\setslot{Y}
+ \Unicode{0059}{LATIN CAPITAL LETTER Y}
+\endsetslot
+
+\setslot{Z}
+ \Unicode{005A}{LATIN CAPITAL LETTER Z}
+\endsetslot
+
+\setslot{bracketleft}
+ \Unicode{005B}{LEFT SQUARE BRACKET}
+\endsetslot
+
+\setslot{backslash}
+ \Unicode{005C}{REVERSE SOLIDUS}
+\endsetslot
+
+\setslot{bracketright}
+ \Unicode{005D}{RIGHT SQUARE BRACKET}
+\endsetslot
+
+\setslot{circumflex}
+ \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT}
+\endsetslot
+
+\setslot{underscore}
+ \Unicode{005F}{LOW LINE}
+\endsetslot
+
+% 0x60 | 96
+\setslot{quoteleft}
+ \Unicode{2018}{LEFT SINGLE QUOTATION MARK}
+ \Ligature{LIG}{quoteleft}{quotedblleft}
+\endsetslot
+
+\setslot{a}
+ \Unicode{0061}{LATIN SMALL LETTER A}
+\endsetslot
+
+\setslot{b}
+ \Unicode{0062}{LATIN SMALL LETTER B}
+\endsetslot
+
+\setslot{c}
+ \Unicode{0063}{LATIN SMALL LETTER C}
+\endsetslot
+
+\setslot{d}
+ \Unicode{0064}{LATIN SMALL LETTER D}
+\endsetslot
+
+\setslot{e}
+ \Unicode{0065}{LATIN SMALL LETTER E}
+\endsetslot
+
+\setslot{f}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+\endsetslot
+
+\setslot{g}
+ \Unicode{0067}{LATIN SMALL LETTER G}
+\endsetslot
+
+\setslot{h}
+ \Unicode{0068}{LATIN SMALL LETTER H}
+\endsetslot
+
+\setslot{i}
+ \Unicode{0069}{LATIN SMALL LETTER I}
+\endsetslot
+
+\setslot{j}
+ \Unicode{006A}{LATIN SMALL LETTER J}
+\endsetslot
+
+\setslot{k}
+ \Unicode{006B}{LATIN SMALL LETTER K}
+\endsetslot
+
+\setslot{l}
+ \Unicode{006C}{LATIN SMALL LETTER L}
+\endsetslot
+
+\setslot{m}
+ \Unicode{006D}{LATIN SMALL LETTER M}
+\endsetslot
+
+\setslot{n}
+ \Unicode{006E}{LATIN SMALL LETTER N}
+\endsetslot
+
+\setslot{o}
+ \Unicode{006F}{LATIN SMALL LETTER O}
+\endsetslot
+
+% 0x70 | 112
+\setslot{p}
+ \Unicode{0070}{LATIN SMALL LETTER P}
+\endsetslot
+
+\setslot{q}
+ \Unicode{0071}{LATIN SMALL LETTER Q}
+\endsetslot
+
+\setslot{r}
+ \Unicode{0072}{LATIN SMALL LETTER R}
+\endsetslot
+
+\setslot{s}
+ \Unicode{0073}{LATIN SMALL LETTER S}
+\endsetslot
+
+\setslot{t}
+ \Unicode{0074}{LATIN SMALL LETTER T}
+\endsetslot
+
+\setslot{u}
+ \Unicode{0075}{LATIN SMALL LETTER U}
+\endsetslot
+
+\setslot{v}
+ \Unicode{0076}{LATIN SMALL LETTER V}
+\endsetslot
+
+\setslot{w}
+ \Unicode{0077}{LATIN SMALL LETTER W}
+\endsetslot
+
+\setslot{x}
+ \Unicode{0078}{LATIN SMALL LETTER X}
+\endsetslot
+
+\setslot{y}
+ \Unicode{0079}{LATIN SMALL LETTER Y}
+\endsetslot
+
+\setslot{z}
+ \Unicode{007A}{LATIN SMALL LETTER Z}
+\endsetslot
+
+\setslot{braceleft}
+ \Unicode{007B}{LEFT CURLY BRACKET}
+\endsetslot
+
+\setslot{bar}
+ \Unicode{007C}{VERTICAL LINE}
+\endsetslot
+
+\setslot{braceright}
+ \Unicode{007D}{RIGHT CURLY BRACKET}
+\endsetslot
+
+\setslot{tilde}
+ \Unicode{0303}{COMBINING TILDE}
+\endsetslot
+
+\setslot{dieresis}
+ \Unicode{0308}{COMBINING DIAERESIS}
+\endsetslot
+
+
+\begincomment
+\section{Thai Characters}
+
+This is |TIS-620| encoding with glyph variants. The encoding presented
+in~\cite{TUG-Thai} contained two alternate glyph forms at positions 157
+and 158 which have been removed meanwhile.
+
+The number of all Thai ligature rules is quite big (464~in total).
+Note that |vptovf| will make the ligature table much more compact as
+it may appear here.
+\endcomment
+
+% 0x80 | 128
+\ifisint{makeenc}\then
+ \setslot{uni0E38}
+ \endsetslot
+\Else
+ \setslot{uni0E38.left}
+ \comment{An alias for
+ \textunicode{0E38}{THAI CHARACTER SARA U}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low_left}
+ \endsetslot
+\Fi
+
+\ifisint{makeenc}\then
+ \setslot{uni0E39}
+ \endsetslot
+\Else
+ \setslot{uni0E39.left}
+ \comment{An alias for
+ \textunicode{0E39}{THAI CHARACTER SARA UU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low_left}
+ \endsetslot
+\Fi
+
+\ifisint{makeenc}\then
+ \setslot{uni0E3A}
+ \endsetslot
+\Else
+ \setslot{uni0E3A.left}
+ \comment{An alias for
+ \textunicode{0E3A}{THAI CHARACTER PHINTHU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low_left}
+ \endsetslot
+\Fi
+
+\setslot{uni0E48.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E48}{THAI CHARACTER MAI EK}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E48.left}
+ \Ligature{LIG/}{uni0E48.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E49.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E49}{THAI CHARACTER MAI THO}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E49.left}
+ \Ligature{LIG/}{uni0E49.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E4A.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E4A}{THAI CHARACTER MAI TRI}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4A.left}
+ \Ligature{LIG/}{uni0E4A.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E4B.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E4B}{THAI CHARACTER MAI CHATTAWA}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4B.left}
+ \Ligature{LIG/}{uni0E4B.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E4C.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E4C}{THAI CHARACTER THANTHAKHAT}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4C.left}
+ \Ligature{LIG/}{uni0E4C.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E48.low}
+ \comment{A glyph variant of
+ \textunicode{0E48}{THAI CHARACTER MAI EK}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E48}
+ \Ligature{LIG/}{uni0E48}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E49.low}
+ \comment{A glyph variant of
+ \textunicode{0E49}{THAI CHARACTER MAI THO}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E49}
+ \Ligature{LIG/}{uni0E49}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E4A.low}
+ \comment{A glyph variant of
+ \textunicode{0E4A}{THAI CHARACTER MAI TRI}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4A}
+ \Ligature{LIG/}{uni0E4A}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E4B.low}
+ \comment{A glyph variant of
+ \textunicode{04EB}{THAI CHARACTER MAI CHATTAWA}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4B}
+ \Ligature{LIG/}{uni0E4B}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E4C.low}
+ \comment{A glyph variant of
+ \textunicode{0E4C}{THAI CHARACTER THANTHAKHAT}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4C}
+ \Ligature{LIG/}{uni0E4C}{uni0E4D}
+\endsetslot
+
+\skipslots{2}
+
+\setslot{uni0E4D.left}
+ \comment{A glyph variant of
+ \textunicode{0E4D}{THAI CHARACTER NIKHAHIT}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+% 0x90 | 144
+\setslot{uni0E0D.descless}
+ \comment{A glyph variant of
+ \textunicode{0E0D}{THAI CHARACTER YO YING}.}
+\endsetslot
+
+\skipslots{1}
+
+\setslot{uni0E31.left}
+ \comment{A glyph variant of
+ \textunicode{0E31}{THAI CHARACTER MAI HAN-AKAT}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E47.left}
+ \comment{A glyph variant of
+ \textunicode{0E47}{THAI CHARACTER MAITAIKHU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E34.left}
+ \comment{A glyph variant of
+ \textunicode{0E34}{THAI CHARACTER SARA I}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E35.left}
+ \comment{A glyph variant of
+ \textunicode{0E35}{THAI CHARACTER SARA II}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E36.left}
+ \comment{A glyph variant of
+ \textunicode{0E36}{THAI CHARACTER SARA UE}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E37.left}
+ \comment{A glyph variant of
+ \textunicode{0E37}{THAI CHARACTER SARA UEE}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E48.left}
+ \comment{A glyph variant of
+ \textunicode{0E48}{THAI CHARACTER MAI EK}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E49.left}
+ \comment{A glyph variant of
+ \textunicode{0E49}{THAI CHARACTER MAI THO}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4A.left}
+ \comment{A glyph variant of
+ \textunicode{0E4A}{THAI CHARACTER MAI TRI}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4B.left}
+ \comment{A glyph variant of
+ \textunicode{0E4B}{THAI CHARACTER MAI CHATTAWA}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4C.left}
+ \comment{A glyph variant of
+ \textunicode{0E4C}{THAI CHARACTER THANTHAKHAT}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\skipslots{2}
+
+\setslot{uni0E10.descless}
+ \comment{A glyph variant of
+ \textunicode{0E10}{THAI CHARACTER THO THAN}.}
+\endsetslot
+
+% 0xA0 | 160
+\skipslots{1}
+
+\setslot{uni0E01}
+ \Unicode{0E01}{THAI CHARACTER KO KAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E02}
+ \Unicode{0E02}{THAI CHARACTER KHO KHAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E03}
+ \Unicode{0E03}{THAI CHARACTER KHO KHUAT}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E04}
+ \Unicode{0E04}{THAI CHARACTER KHO KHWAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E05}
+ \Unicode{0E05}{THAI CHARACTER KHO KHON}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E06}
+ \Unicode{0E06}{THAI CHARACTER KHO RAKHANG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E07}
+ \Unicode{0E07}{THAI CHARACTER NGO NGU}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E08}
+ \Unicode{0E08}{THAI CHARACTER CHO CHAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E09}
+ \Unicode{0E09}{THAI CHARACTER CHO CHING}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0A}
+ \Unicode{0E0A}{THAI CHARACTER CHO CHANG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0B}
+ \Unicode{0E0B}{THAI CHARACTER SO SO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0C}
+ \Unicode{0E0C}{THAI CHARACTER CHO CHOE}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0D}
+ \Unicode{0E0D}{THAI CHARACTER YO YING}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{LIG/}{uni0E38}{uni0E0D.descless}
+ \Ligature{LIG/}{uni0E39}{uni0E0D.descless}
+ \Ligature{LIG/}{uni0E3A}{uni0E0D.descless}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0E}
+ \Unicode{0E0E}{THAI CHARACTER DO CHADA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E38}{uni0E38.low}
+ \Ligature{/LIG}{uni0E39}{uni0E39.low}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.low}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0F}
+ \Unicode{0E0F}{THAI CHARACTER TO PATAK}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E38}{uni0E38.low}
+ \Ligature{/LIG}{uni0E39}{uni0E39.low}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.low}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+% 0xB0 | 176
+\setslot{uni0E10}
+ \Unicode{0E10}{THAI CHARACTER THO THAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{LIG/}{uni0E38}{uni0E10.descless}
+ \Ligature{LIG/}{uni0E39}{uni0E10.descless}
+ \Ligature{LIG/}{uni0E3A}{uni0E10.descless}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E11}
+ \Unicode{0E11}{THAI CHARACTER THO NANGMONTHO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E12}
+ \Unicode{0E12}{THAI CHARACTER THO PHUTHAO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E13}
+ \Unicode{0E13}{THAI CHARACTER NO NEN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E14}
+ \Unicode{0E14}{THAI CHARACTER DO DEK}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E15}
+ \Unicode{0E15}{THAI CHARACTER TO TAO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E16}
+ \Unicode{0E16}{THAI CHARACTER THO THUNG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E17}
+ \Unicode{0E17}{THAI CHARACTER THO THAHAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E18}
+ \Unicode{0E18}{THAI CHARACTER THO THONG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E19}
+ \Unicode{0E19}{THAI CHARACTER NO NU}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1A}
+ \Unicode{0E1A}{THAI CHARACTER BO BAIMAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1B}
+ \Unicode{0E1B}{THAI CHARACTER PO PLA}
+ \Ligature{/LIG}{uni0E31}{uni0E31.left}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E34}{uni0E34.left}
+ \Ligature{/LIG}{uni0E35}{uni0E35.left}
+ \Ligature{/LIG}{uni0E36}{uni0E36.left}
+ \Ligature{/LIG}{uni0E37}{uni0E37.left}
+ \Ligature{/LIG}{uni0E38}{uni0E38.left}
+ \Ligature{/LIG}{uni0E39}{uni0E39.left}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.left}
+ \Ligature{/LIG}{uni0E47}{uni0E47.left}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+ \Ligature{/LIG}{uni0E4D}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E1C}
+ \Unicode{0E1C}{THAI CHARACTER PHO PHUNG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1D}
+ \Unicode{0E1D}{THAI CHARACTER FO FA}
+ \Ligature{/LIG}{uni0E31}{uni0E31.left}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E34}{uni0E34.left}
+ \Ligature{/LIG}{uni0E35}{uni0E35.left}
+ \Ligature{/LIG}{uni0E36}{uni0E36.left}
+ \Ligature{/LIG}{uni0E37}{uni0E37.left}
+ \Ligature{/LIG}{uni0E38}{uni0E38.left}
+ \Ligature{/LIG}{uni0E39}{uni0E39.left}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.left}
+ \Ligature{/LIG}{uni0E47}{uni0E47.left}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+ \Ligature{/LIG}{uni0E4D}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E1E}
+ \Unicode{0E1E}{THAI CHARACTER PHO PHAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1F}
+ \Unicode{0E1F}{THAI CHARACTER FO FAN}
+ \Ligature{/LIG}{uni0E31}{uni0E31.left}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E34}{uni0E34.left}
+ \Ligature{/LIG}{uni0E35}{uni0E35.left}
+ \Ligature{/LIG}{uni0E36}{uni0E36.left}
+ \Ligature{/LIG}{uni0E37}{uni0E37.left}
+ \Ligature{/LIG}{uni0E38}{uni0E38.left}
+ \Ligature{/LIG}{uni0E39}{uni0E39.left}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.left}
+ \Ligature{/LIG}{uni0E47}{uni0E47.left}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+ \Ligature{/LIG}{uni0E4D}{uni0E4D.left}
+\endsetslot
+
+% 0xC0 | 192
+\setslot{uni0E20}
+ \Unicode{0E20}{THAI CHARACTER PHO SAMPHAO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E21}
+ \Unicode{0E21}{THAI CHARACTER MO MA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E22}
+ \Unicode{0E22}{THAI CHARACTER YO YAK}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E23}
+ \Unicode{0E23}{THAI CHARACTER RO RUA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E24}
+ \Unicode{0E24}{THAI CHARACTER RU}
+ \Ligature{/LIG}{uni0E32}{uni0E45}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E25}
+ \Unicode{0E25}{THAI CHARACTER LO LING}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E26}
+ \Unicode{0E26}{THAI CHARACTER LU}
+ \Ligature{/LIG}{uni0E32}{uni0E45}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E27}
+ \Unicode{0E27}{THAI CHARACTER WO WAEN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E28}
+ \Unicode{0E28}{THAI CHARACTER SO SALA}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E29}
+ \Unicode{0E29}{THAI CHARACTER SO RUSI}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2A}
+ \Unicode{0E2A}{THAI CHARACTER SO SUA}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2B}
+ \Unicode{0E2B}{THAI CHARACTER HO HIP}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2C}
+ \Unicode{0E2C}{THAI CHARACTER LO CHULA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+\endsetslot
+
+\setslot{uni0E2D}
+ \Unicode{0E2D}{THAI CHARACTER O ANG}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2E}
+ \Unicode{0E2E}{THAI CHARACTER HO NOKHUK}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2F}
+ \Unicode{0E2F}{THAI CHARACTER PAIYANNOI}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+% 0xD0 | 208
+\setslot{uni0E30}
+ \Unicode{0E30}{THAI CHARACTER SARA A}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E31}
+ \Unicode{0E31}{THAI CHARACTER MAI HAN-AKAT}
+\endsetslot
+
+\setslot{uni0E32}
+ \Unicode{0E32}{THAI CHARACTER SARA AA}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E33}
+ \Unicode{0E33}{THAI CHARACTER SARA AM}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E34}
+ \Unicode{0E34}{THAI CHARACTER SARA I}
+\endsetslot
+
+\setslot{uni0E35}
+ \Unicode{0E35}{THAI CHARACTER SARA II}
+\endsetslot
+
+\setslot{uni0E36}
+ \Unicode{0E36}{THAI CHARACTER SARA UE}
+\endsetslot
+
+\setslot{uni0E37}
+ \Unicode{0E37}{THAI CHARACTER SARA UEE}
+\endsetslot
+
+\setslot{uni0E38}
+ \Unicode{0E38}{THAI CHARACTER SARA U}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E39}
+ \Unicode{0E39}{THAI CHARACTER SARA UU}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E3A}
+ \Unicode{0E3A}{THAI CHARACTER PHINTHU}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\skipslots{4}
+
+\setslot{uni0E3F}
+ \Unicode{0E3F}{THAI CURRENCY SYMBOL BAHT}
+\endsetslot
+
+% 0xE0 | 224
+\setslot{uni0E40}
+ \Unicode{0E40}{THAI CHARACTER SARA E}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E41}
+ \Unicode{0E41}{THAI CHARACTER SARA AE}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E42}
+ \Unicode{0E42}{THAI CHARACTER SARA O}
+\endsetslot
+
+\setslot{uni0E43}
+ \Unicode{0E43}{THAI CHARACTER SARA AI MAIMUAN}
+\endsetslot
+
+\setslot{uni0E44}
+ \Unicode{0E44}{THAI CHARACTER SARA AI MAIMALAI}
+\endsetslot
+
+\setslot{uni0E45}
+ \Unicode{0E45}{THAI CHARACTER LAKKHANGYAO}
+\endsetslot
+
+\setslot{uni0E46}
+ \Unicode{0E46}{THAI CHARACTER MAIYAMOK}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E47}
+ \Unicode{0E47}{THAI CHARACTER MAITAIKHU}
+\endsetslot
+
+\setslot{uni0E48}
+ \Unicode{0E48}{THAI CHARACTER MAI EK}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E49}
+ \Unicode{0E49}{THAI CHARACTER MAI THO}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4A}
+ \Unicode{0E4A}{THAI CHARACTER MAI TRI}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4B}
+ \Unicode{0E4B}{THAI CHARACTER MAI CHATTAWA}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4C}
+ \Unicode{0E4C}{THAI CHARACTER THANTHAKHAT}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4D}
+ \Unicode{0E4D}{THAI CHARACTER NIKHAHIT}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4E}
+ \Unicode{0E4E}{THAI CHARACTER YAMAKKAN}
+\endsetslot
+
+\setslot{uni0E4F}
+ \Unicode{0E4F}{THAI CHARACTER FONGMAN}
+\endsetslot
+
+% 0xF0 | 240
+\setslot{uni0E50}
+ \Unicode{0E50}{THAI DIGIT ZERO}
+\endsetslot
+
+\setslot{uni0E51}
+ \Unicode{0E51}{THAI DIGIT ONE}
+\endsetslot
+
+\setslot{uni0E52}
+ \Unicode{0E52}{THAI DIGIT TWO}
+\endsetslot
+
+\setslot{uni0E53}
+ \Unicode{0E53}{THAI DIGIT THREE}
+\endsetslot
+
+\setslot{uni0E54}
+ \Unicode{0E54}{THAI DIGIT FOUR}
+\endsetslot
+
+\setslot{uni0E55}
+ \Unicode{0E55}{THAI DIGIT FIVE}
+\endsetslot
+
+\setslot{uni0E56}
+ \Unicode{0E56}{THAI DIGIT SIX}
+\endsetslot
+
+\setslot{uni0E57}
+ \Unicode{0E57}{THAI DIGIT SEVEN}
+\endsetslot
+
+\setslot{uni0E58}
+ \Unicode{0E58}{THAI DIGIT EIGHT}
+\endsetslot
+
+\setslot{uni0E59}
+ \Unicode{0E59}{THAI DIGIT NINE}
+\endsetslot
+
+\setslot{uni0E5A}
+ \Unicode{0E5A}{THAI CHARACTER ANGKHANKHU}
+\endsetslot
+
+\setslot{uni0E5B}
+ \Unicode{0E5B}{THAI CHARACTER KHOMUT}
+\endsetslot
+
+\setslot{uni0E38.low}
+ \comment{A glyph variant of \textunicode{0E38}{THAI CHARACTER SARA U}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E39.low}
+ \comment{A glyph variant of \textunicode{0E39}{THAI CHARACTER SARA UU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E3A.low}
+ \comment{A glyph variant of \textunicode{0E3A}{THAI CHARACTER PHINTHU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\skipslots{1}
+
+
+\begincomment
+\section{Font Dimensions}
+\endcomment
+
+\setfontdimen{1}{italicslant}
+\setfontdimen{2}{interword}
+\setfontdimen{3}{stretchword}
+\setfontdimen{4}{shrinkword}
+\setfontdimen{5}{xheight}
+\setfontdimen{6}{quad}
+\setfontdimen{7}{extraspace}
+
+\endencoding
+
+
+\begin{thebibliography}{9}
+\bibitem{TUG-Thai}
+ Werner Lemberg: \textit{Thai Fonts}, in \textit{TUGboat},
+ 21(2):113--120, June 2000. Available online in PDF format as
+ \url{http://tug.org/TUGboat/Articles/tb21-2/tb67lemb.pdf}.
+\bibitem{AGL}
+ Adobe Systems Incorporated: \textit{Adobe Glyph List}, 2003;
+ \url{http://partners.adobe.com/asn/developer/type/unicodegn.html}.
+\bibitem{MFbook}
+ Donald E.\ Knuth, Duane Bibby (illustrations): \textit{The \MF
+ book}, Ad\-di\-son--Wes\-ley, 1986; ISBN~0-201-13445-4.
+\bibitem{Unicode}
+ The Unicode Consortium (editor), \emph{et al.}: \textit{The Unicode
+ Standard, Version 4.0}, Addison Wesley Longman Publisher, 2003;
+ ISBN~0-321-18578-1. Most of the information in this book is also
+ available online at the Unicode consortium website, at
+ \url{http://www.unicode.org/versions/Unicode4.0.1}.
+\end{thebibliography}
+
+\end{document}
+
+% end of c90.etx
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/c90.mtx b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/c90.mtx
new file mode 100644
index 0000000000..b14d502a2d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/c90.mtx
@@ -0,0 +1,42 @@
+% c90.mtx
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\relax
+
+\metrics
+
+\needsfontinstversion{1.918}
+
+% provide glyph aliases needed for the ligature mechanism
+
+\setglyph{uni0E38.left}
+ \glyph{uni0E38}{1000}
+\endsetglyph
+
+\setglyph{uni0E39.left}
+ \glyph{uni0E39}{1000}
+\endsetglyph
+
+\setglyph{uni0E3A.left}
+ \glyph{uni0E3A}{1000}
+\endsetglyph
+
+\endmetrics
+
+% end of c90.mtx
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/config.dbtt-old b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/config.dbtt-old
new file mode 100644
index 0000000000..5ce1be96b2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/config.dbtt-old
@@ -0,0 +1 @@
+p +dbtt-old.map
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx
new file mode 100644
index 0000000000..fceec94a97
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx
@@ -0,0 +1,46 @@
+% dbtt-old-alias.etx
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\relax
+
+\encoding
+
+\needsfontinstversion{1.918}
+
+\fontinstcc
+\def\galias#1#2{
+ \expandafter\def\csname slot-#2\endcsname{#1}
+}
+\def\setslot#1{
+ \edef\slot_name{
+ \if_defined{slot-#1}\then
+ \csname slot-#1\endcsname
+ \else
+ #1
+ \fi
+ }
+ \do_slot
+}
+\normalcc
+
+\input dbtt-old-alias
+
+\endencoding
+
+% end of dbtt-old-alias.etx
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx
new file mode 100644
index 0000000000..3ee09b8cf2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx
@@ -0,0 +1,36 @@
+% dbtt-old-alias.mtx
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\relax
+
+\metrics
+
+\needsfontinstversion{1.918}
+
+\def\galias#1#2{
+ \setglyph{#2}
+ \glyph{#1}{1000}
+ \endsetglyph
+}
+
+\input dbtt-old-alias
+
+\endmetrics
+
+% end of dbtt-old-alias.mtx
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex
new file mode 100644
index 0000000000..0d6c25b1e3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex
@@ -0,0 +1,139 @@
+% dbtt-old-alias.tex
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\galias{ucircumflex}{endash}
+\galias{uacute}{emdash}
+\galias{quotedbl}{quotedblleft}
+\galias{quotedbl}{quotedblright}
+\galias{quotesingle}{quoteright}
+\galias{grave}{quoteleft}
+\galias{florin}{uni0E48.low_left}
+\galias{quotedblbase}{uni0E49.low_left}
+\galias{ellipsis}{uni0E4A.low_left}
+\galias{dagger}{uni0E4B.low_left}
+\galias{daggerdbl}{uni0E4C.low_left}
+\galias{circumflex}{uni0E48.low}
+\galias{perthousand}{uni0E49.low}
+\galias{Scaron}{uni0E4A.low}
+\galias{guilsinglleft}{uni0E4B.low}
+\galias{OE}{uni0E4C.low}
+\galias{u008F}{uni0E4D.left}
+\galias{u0090}{uni0E0D.descless}
+\galias{quoteright}{uni0E31.left}
+\galias{quotedblleft}{uni0E47.left}
+\galias{quotedblright}{uni0E34.left}
+\galias{bullet}{uni0E35.left}
+\galias{emdash}{uni0E36.left}
+\galias{endash}{uni0E37.left}
+\galias{tilde}{uni0E48.left}
+\galias{trademark}{uni0E49.left}
+\galias{scaron}{uni0E4A.left}
+\galias{guilsinglright}{uni0E4B.left}
+\galias{oe}{uni0E4C.left}
+\galias{Ydieresis}{uni0E10.descless}
+\galias{exclamdown}{uni0E01}
+\galias{cent}{uni0E02}
+\galias{sterling}{uni0E03}
+\galias{currency}{uni0E04}
+\galias{yen}{uni0E05}
+\galias{brokenbar}{uni0E06}
+\galias{section}{uni0E07}
+\galias{dieresis}{uni0E08}
+\galias{copyright}{uni0E09}
+\galias{ordfeminine}{uni0E0A}
+\galias{guillemotleft}{uni0E0B}
+\galias{logicalnot}{uni0E0C}
+\galias{hyphen}{uni0E0D}
+\galias{registered}{uni0E0E}
+\galias{macron}{uni0E0F}
+\galias{degree}{uni0E10}
+\galias{plusminus}{uni0E11}
+\galias{twosuperior}{uni0E12}
+\galias{threesuperior}{uni0E13}
+\galias{acute}{uni0E14}
+\galias{mu}{uni0E15}
+\galias{paragraph}{uni0E16}
+\galias{periodcentered}{uni0E17}
+\galias{cedilla}{uni0E18}
+\galias{onesuperior}{uni0E19}
+\galias{ordmasculine}{uni0E1A}
+\galias{guillemotright}{uni0E1B}
+\galias{onequarter}{uni0E1C}
+\galias{onehalf}{uni0E1D}
+\galias{threequarters}{uni0E1E}
+\galias{questiondown}{uni0E1F}
+\galias{Agrave}{uni0E20}
+\galias{Aacute}{uni0E21}
+\galias{Acircumflex}{uni0E22}
+\galias{Atilde}{uni0E23}
+\galias{Adieresis}{uni0E24}
+\galias{Aring}{uni0E25}
+\galias{AE}{uni0E26}
+\galias{Ccedilla}{uni0E27}
+\galias{Egrave}{uni0E28}
+\galias{Eacute}{uni0E29}
+\galias{Ecircumflex}{uni0E2A}
+\galias{Edieresis}{uni0E2B}
+\galias{Igrave}{uni0E2C}
+\galias{Iacute}{uni0E2D}
+\galias{Icircumflex}{uni0E2E}
+\galias{Idieresis}{uni0E2F}
+\galias{Eth}{uni0E30}
+\galias{Ntilde}{uni0E31}
+\galias{Ograve}{uni0E32}
+\galias{Oacute}{uni0E33}
+\galias{Ocircumflex}{uni0E34}
+\galias{Otilde}{uni0E35}
+\galias{Odieresis}{uni0E36}
+\galias{multiply}{uni0E37}
+\galias{Oslash}{uni0E38}
+\galias{Ugrave}{uni0E39}
+\galias{Uacute}{uni0E3A}
+\galias{germandbls}{uni0E3F}
+\galias{agrave}{uni0E40}
+\galias{aacute}{uni0E41}
+\galias{acircumflex}{uni0E42}
+\galias{atilde}{uni0E43}
+\galias{adieresis}{uni0E44}
+\galias{aring}{uni0E45}
+\galias{ae}{uni0E46}
+\galias{ccedilla}{uni0E47}
+\galias{egrave}{uni0E48}
+\galias{eacute}{uni0E49}
+\galias{ecircumflex}{uni0E4A}
+\galias{edieresis}{uni0E4B}
+\galias{igrave}{uni0E4C}
+\galias{iacute}{uni0E4D}
+\galias{icircumflex}{uni0E4E}
+\galias{idieresis}{uni0E4F}
+\galias{eth}{uni0E50}
+\galias{ntilde}{uni0E51}
+\galias{ograve}{uni0E52}
+\galias{oacute}{uni0E53}
+\galias{ocircumflex}{uni0E54}
+\galias{otilde}{uni0E55}
+\galias{odieresis}{uni0E56}
+\galias{divide}{uni0E57}
+\galias{oslash}{uni0E58}
+\galias{ugrave}{uni0E59}
+\galias{udieresis}{uni0E38.low}
+\galias{yacute}{uni0E39.low}
+\galias{Ucircumflex}{uni0E3A.low}
+
+% end of dbtt-old-alias.tex
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst
new file mode 100644
index 0000000000..4e50a8ac0a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst
@@ -0,0 +1,78 @@
+% dbtt-old.fontinst
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\input fontinst.sty
+
+\needsfontinstversion{1.918}
+
+
+% we explicitly set all slots in the encoding, so provide all glyph names
+% in AFM files equally (this is, don't create `<glyph>-not' names)
+\let\setnotglyph \setrawglyph
+
+% we want warnings for missing glyphs
+\fontinstcc
+\add_to\pre_fourth_etx_pass_hook{
+ \def\do_slot{
+ \if_undefined{g-\slot_name}\then
+ \fontinstwarningnoline{fontinst}
+ {missing~glyph~`\slot_name'\space
+ for~slot~\the\slot_number\space
+ in~font~`\out_filename'}
+ \fi
+ \do_character
+ }
+}
+\normalcc
+
+
+% create PL files and an FD file
+\installfonts
+ \setint{fontdimen(2)}{500} % SPACE
+ \setint{fontdimen(3)}{300} % STRETCH
+ \setint{fontdimen(4)}{100} % SHRINK
+ \setint{fontdimen(6)}{1000} % QUAD
+ \setint{fontdimen(7)}{0} % EXTRASPACE
+
+ \installrawfont{fdbr8z}{dbtt,dbtt-old-alias,c90}{c90}
+ {C90}{dbss}{m}{n}{<-> s *[1.3]}
+ \installrawfont{fdbb8z}{dbttb,dbtt-old-alias,c90}{c90}
+ {C90}{dbss}{bx}{n}{<-> s *[1.3]}
+ \installrawfont{fdbbo8z}{dbttbi,dbtt-old-alias,c90}{c90}
+ {C90}{dbss}{bx}{sl}{<-> s *[1.3]}
+ \installrawfont{fdbo8z}{dbtti,dbtt-old-alias,c90}{c90}
+ {C90}{dbss}{m}{sl}{<-> s *[1.3]}
+\endinstallfonts
+
+
+\input finstmsc.sty
+
+
+% create the dbtt-old.enc file
+\installfonts
+ % the `makeenc' flag is used in c90.etx
+ \setint{makeenc}{1}
+ \setstr{encodingname}{dbtt-oldEncoding}
+ \inputetx{dbtt-old-alias}
+ \etxtoenc{c90}{dbtt-old}
+\endinstallfonts
+
+\end
+
+% end of dbtt-old.fontinst
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old.map b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old.map
new file mode 100644
index 0000000000..c48f73fe71
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/dbtt-old/dbtt-old.map
@@ -0,0 +1,4 @@
+fdbr8z DBThaiText " dbtt-oldEncoding ReEncodeFont " <dbtt-old.enc <dbtt.pfb
+fdbb8z DBThaiTextBold " dbtt-oldEncoding ReEncodeFont " <dbtt-old.enc <dbttb.pfb
+fdbo8z DBThaiTextItalic " dbtt-oldEncoding ReEncodeFont " <dbtt-old.enc <dbtti.pfb
+fdbbo8z DBThaiTextBoldItalic " dbtt-oldEncoding ReEncodeFont " <dbtt-old.enc <dbttbi.pfb
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/garuda-c90.fontinst b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/garuda-c90.fontinst
new file mode 100644
index 0000000000..81a1584d37
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/garuda-c90.fontinst
@@ -0,0 +1,77 @@
+% garuda-c90.fontinst
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\input fontinst.sty
+
+\needsfontinstversion{1.918}
+
+
+% we explicitly set all slots in the encoding, so provide all glyph names
+% in AFM files equally (this is, don't create `<glyph>-not' names)
+\let\setnotglyph \setrawglyph
+
+% we want warnings for missing glyphs
+\fontinstcc
+\add_to\pre_fourth_etx_pass_hook{
+ \def\do_slot{
+ \if_undefined{g-\slot_name}\then
+ \fontinstwarningnoline{fontinst}
+ {missing~glyph~`\slot_name'\space
+ for~slot~\the\slot_number\space
+ in~font~`\out_filename'}
+ \fi
+ \do_character
+ }
+}
+\normalcc
+
+
+% create PL files and an FD file
+\installfonts
+ \setint{fontdimen(2)}{500} % SPACE
+ \setint{fontdimen(3)}{300} % STRETCH
+ \setint{fontdimen(4)}{100} % SHRINK
+ \setint{fontdimen(6)}{1000} % QUAD
+ \setint{fontdimen(7)}{0} % EXTRASPACE
+
+ \installrawfont{fgdr8z}{garuda,c90}{c90}
+ {C90}{garuda}{m}{n}{}
+ \installrawfont{fgdb8z}{garuda_b,c90}{c90}
+ {C90}{garuda}{bx}{n}{}
+ \installrawfont{fgdbo8z}{garuda_bo,c90}{c90}
+ {C90}{garuda}{bx}{sl}{}
+ \installrawfont{fgdo8z}{garuda_o,c90}{c90}
+ {C90}{garuda}{m}{sl}{}
+\endinstallfonts
+
+
+\input finstmsc.sty
+
+
+% create the c90.enc file
+\installfonts
+ % the `makeenc' flag is used in c90.etx
+ \setint{makeenc}{1}
+ \setstr{encodingname}{C90Encoding}
+ \etxtoenc{c90}{c90}
+\endinstallfonts
+
+\end
+
+% end of garuda-c90.fontinst
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/norasi-c90.fontinst b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/norasi-c90.fontinst
new file mode 100644
index 0000000000..417f697194
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/thaifont/tools/norasi-c90.fontinst
@@ -0,0 +1,85 @@
+% norasi-c90.fontinst
+
+% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+%
+% 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 in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\input fontinst.sty
+
+\needsfontinstversion{1.918}
+
+
+% we explicitly set all slots in the encoding, so provide all glyph names
+% in AFM files equally (this is, don't create `<glyph>-not' names)
+\let\setnotglyph \setrawglyph
+
+% we want warnings for missing glyphs
+\fontinstcc
+\add_to\pre_fourth_etx_pass_hook{
+ \def\do_slot{
+ \if_undefined{g-\slot_name}\then
+ \fontinstwarningnoline{fontinst}
+ {missing~glyph~`\slot_name'\space
+ for~slot~\the\slot_number\space
+ in~font~`\out_filename'}
+ \fi
+ \do_character
+ }
+}
+\normalcc
+
+
+% create PL files and an FD file
+\installfonts
+ \setint{fontdimen(2)}{500} % SPACE
+ \setint{fontdimen(3)}{300} % STRETCH
+ \setint{fontdimen(4)}{100} % SHRINK
+ \setint{fontdimen(6)}{1000} % QUAD
+ \setint{fontdimen(7)}{0} % EXTRASPACE
+
+ \installrawfont{ftnr8z}{norasi,c90}{c90}
+ {C90}{nrsr}{m}{n}{}
+ \installrawfont{ftnb8z}{norasi_b,c90}{c90}
+ {C90}{nrsr}{bx}{n}{}
+ \installrawfont{ftnbi8z}{norasi_bi,c90}{c90}
+ {C90}{nrsr}{bx}{it}{}
+ \installrawfont{ftni8z}{norasi_i,c90}{c90}
+ {C90}{nrsr}{m}{it}{}
+
+% Thai glyphs in norasi_o and norasi_bo are identical to the shapes
+% in norasi_i and norasi_bi, respectively.
+%
+% \installrawfont{ftno8z}{norasi_o,c90}{c90}
+% {C90}{nrsr}{m}{sl}{}
+% \installrawfont{ftnbo8z}{norasi_bo,c90}{c90}
+% {C90}{nrsr}{bx}{sl}{}
+\endinstallfonts
+
+
+\input finstmsc.sty
+
+
+% create the c90.enc file
+\installfonts
+ % the `makeenc' flag is used in c90.etx
+ \setint{makeenc}{1}
+ \setstr{encodingname}{C90Encoding}
+ \etxtoenc{c90}{c90}
+\endinstallfonts
+
+\end
+
+% end of norasi-c90.fontinst