From 87e909ad6bf97ddf6790a93e82c4ff4ce7011d65 Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Sat, 18 Apr 2015 11:14:51 +0000 Subject: cjkutils 4.8.4 git-svn-id: svn://tug.org/texlive/trunk@36903 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/cjkutils/ChangeLog | 5 + Build/source/texk/cjkutils/bg5conv.c | 4 +- Build/source/texk/cjkutils/cef5conv.c | 4 +- Build/source/texk/cjkutils/cefconv.c | 4 +- Build/source/texk/cjkutils/cefsconv.c | 4 +- .../texk/cjkutils/cjkutils-4.8.3-PATCHES/ChangeLog | 63 - .../cjkutils/cjkutils-4.8.3-PATCHES/TL-Changes | 21 - .../cjkutils-4.8.3-PATCHES/patch-01-static | 373 --- .../cjkutils-4.8.3-PATCHES/patch-02-unused | 16 - .../cjkutils-4.8.3-PATCHES/patch-03-unsigned | 100 - .../cjkutils-4.8.3-PATCHES/patch-04-mingw64 | 21 - .../texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.1 | 110 - .../texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.c | 33 - .../texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.w | 121 - .../texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex | 43 - .../cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex.bat | 3 - .../cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex.cmd | 44 - .../cjkutils/cjkutils-4.8.3/Bg5conv/bg5pdflatex | 43 - .../cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.1 | 127 - .../cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.c | 135 - .../cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.w | 237 -- .../texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5latex | 43 - .../cjkutils/cjkutils-4.8.3/CEFconv/cef5ltx.bat | 3 - .../cjkutils/cjkutils-4.8.3/CEFconv/cef5ltx.cmd | 46 - .../cjkutils/cjkutils-4.8.3/CEFconv/cef5pdflatex | 43 - .../texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.1 | 117 - .../texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.c | 127 - .../texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.w | 221 -- .../texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex | 43 - .../cjkutils/cjkutils-4.8.3/CEFconv/ceflatex.bat | 3 - .../cjkutils/cjkutils-4.8.3/CEFconv/ceflatex.cmd | 46 - .../cjkutils/cjkutils-4.8.3/CEFconv/cefpdflatex | 43 - .../cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.1 | 127 - .../cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.c | 135 - .../cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.w | 240 -- .../texk/cjkutils/cjkutils-4.8.3/CEFconv/cefslatex | 43 - .../cjkutils/cjkutils-4.8.3/CEFconv/cefsltx.bat | 3 - .../cjkutils/cjkutils-4.8.3/CEFconv/cefsltx.cmd | 46 - .../cjkutils/cjkutils-4.8.3/CEFconv/cefspdflatex | 43 - .../source/texk/cjkutils/cjkutils-4.8.3/ChangeLog | 2404 ----------------- Build/source/texk/cjkutils/cjkutils-4.8.3/README | 35 - .../cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.1 | 110 - .../cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.c | 33 - .../cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.w | 123 - .../cjkutils/cjkutils-4.8.3/SJISconv/sjislatex | 43 - .../cjkutils/cjkutils-4.8.3/SJISconv/sjisltx.bat | 3 - .../cjkutils/cjkutils-4.8.3/SJISconv/sjisltx.cmd | 44 - .../cjkutils/cjkutils-4.8.3/SJISconv/sjispdflatex | 43 - .../cjkutils/cjkutils-4.8.3/cjklatex/cjklatex.c | 293 -- .../texk/cjkutils/cjkutils-4.8.3/extconv/bg5+latex | 43 - .../cjkutils/cjkutils-4.8.3/extconv/bg5+pdflatex | 43 - .../cjkutils/cjkutils-4.8.3/extconv/bg5pltx.bat | 3 - .../cjkutils/cjkutils-4.8.3/extconv/bg5pltx.cmd | 44 - .../texk/cjkutils/cjkutils-4.8.3/extconv/extconv.1 | 111 - .../texk/cjkutils/cjkutils-4.8.3/extconv/extconv.c | 34 - .../texk/cjkutils/cjkutils-4.8.3/extconv/extconv.w | 122 - .../texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex | 43 - .../cjkutils/cjkutils-4.8.3/extconv/gbklatex.bat | 3 - .../cjkutils/cjkutils-4.8.3/extconv/gbklatex.cmd | 44 - .../cjkutils/cjkutils-4.8.3/extconv/gbkpdflatex | 43 - .../cjkutils/cjkutils-4.8.3/hbf2gf/Makefile.gnu | 127 - .../cjkutils/cjkutils-4.8.3/hbf2gf/Makefile.in | 127 - .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/README | 2 - .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/README | 10 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5ka12.cfg | 28 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5kr12.cfg | 30 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5so12.cfg | 31 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c1so12.cfg | 28 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c2so12.cfg | 28 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c3so12.cfg | 28 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c4so12.cfg | 28 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c5so12.cfg | 28 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c6so12.cfg | 28 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c7so12.cfg | 28 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/csso12.cfg | 28 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/gsfs14.cfg | 27 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/j2so12.cfg | 30 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/jsso12.cfg | 28 - .../cjkutils/cjkutils-4.8.3/hbf2gf/cfg/ksso17.cfg | 27 - .../cjkutils/cjkutils-4.8.3/hbf2gf/configure.ac | 131 - .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/dvidrv.btm | 352 --- .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/emdir.c | 109 - .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/emdir.h | 25 - .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/emtexdir.c | 405 --- .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/emtexdir.h | 57 - .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf.c | 1494 ----------- .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf.h | 215 -- .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.1 | 718 ----- .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.c | 2242 ---------------- .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.def | 3 - .../texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.w | 2816 -------------------- .../texk/cjkutils/cjkutils-4.8.4-PATCHES/ChangeLog | 71 + .../cjkutils/cjkutils-4.8.4-PATCHES/TL-Changes | 21 + .../cjkutils-4.8.4-PATCHES/patch-04-mingw64 | 21 + .../texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.1 | 110 + .../texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.c | 33 + .../texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.w | 121 + .../texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex | 43 + .../cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex.bat | 3 + .../cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex.cmd | 44 + .../cjkutils/cjkutils-4.8.4/Bg5conv/bg5pdflatex | 43 + .../cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.1 | 127 + .../cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.c | 135 + .../cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.w | 237 ++ .../texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5latex | 43 + .../cjkutils/cjkutils-4.8.4/CEFconv/cef5ltx.bat | 3 + .../cjkutils/cjkutils-4.8.4/CEFconv/cef5ltx.cmd | 46 + .../cjkutils/cjkutils-4.8.4/CEFconv/cef5pdflatex | 43 + .../texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.1 | 117 + .../texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.c | 127 + .../texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.w | 221 ++ .../texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex | 43 + .../cjkutils/cjkutils-4.8.4/CEFconv/ceflatex.bat | 3 + .../cjkutils/cjkutils-4.8.4/CEFconv/ceflatex.cmd | 46 + .../cjkutils/cjkutils-4.8.4/CEFconv/cefpdflatex | 43 + .../cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.1 | 127 + .../cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.c | 135 + .../cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.w | 240 ++ .../texk/cjkutils/cjkutils-4.8.4/CEFconv/cefslatex | 43 + .../cjkutils/cjkutils-4.8.4/CEFconv/cefsltx.bat | 3 + .../cjkutils/cjkutils-4.8.4/CEFconv/cefsltx.cmd | 46 + .../cjkutils/cjkutils-4.8.4/CEFconv/cefspdflatex | 43 + .../source/texk/cjkutils/cjkutils-4.8.4/ChangeLog | 2486 +++++++++++++++++ Build/source/texk/cjkutils/cjkutils-4.8.4/README | 36 + .../cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.1 | 110 + .../cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.c | 33 + .../cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.w | 123 + .../cjkutils/cjkutils-4.8.4/SJISconv/sjislatex | 43 + .../cjkutils/cjkutils-4.8.4/SJISconv/sjisltx.bat | 3 + .../cjkutils/cjkutils-4.8.4/SJISconv/sjisltx.cmd | 44 + .../cjkutils/cjkutils-4.8.4/SJISconv/sjispdflatex | 43 + .../cjkutils/cjkutils-4.8.4/cjklatex/cjklatex.c | 293 ++ .../texk/cjkutils/cjkutils-4.8.4/extconv/bg5+latex | 43 + .../cjkutils/cjkutils-4.8.4/extconv/bg5+pdflatex | 43 + .../cjkutils/cjkutils-4.8.4/extconv/bg5pltx.bat | 3 + .../cjkutils/cjkutils-4.8.4/extconv/bg5pltx.cmd | 44 + .../texk/cjkutils/cjkutils-4.8.4/extconv/extconv.1 | 111 + .../texk/cjkutils/cjkutils-4.8.4/extconv/extconv.c | 34 + .../texk/cjkutils/cjkutils-4.8.4/extconv/extconv.w | 122 + .../texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex | 43 + .../cjkutils/cjkutils-4.8.4/extconv/gbklatex.bat | 3 + .../cjkutils/cjkutils-4.8.4/extconv/gbklatex.cmd | 44 + .../cjkutils/cjkutils-4.8.4/extconv/gbkpdflatex | 43 + .../cjkutils/cjkutils-4.8.4/hbf2gf/Makefile.gnu | 127 + .../cjkutils/cjkutils-4.8.4/hbf2gf/Makefile.in | 127 + .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/README | 2 + .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/README | 10 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5ka12.cfg | 28 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5kr12.cfg | 30 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5so12.cfg | 31 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c1so12.cfg | 28 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c2so12.cfg | 28 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c3so12.cfg | 28 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c4so12.cfg | 28 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c5so12.cfg | 28 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c6so12.cfg | 28 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c7so12.cfg | 28 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/csso12.cfg | 28 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/gsfs14.cfg | 27 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/j2so12.cfg | 30 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/jsso12.cfg | 28 + .../cjkutils/cjkutils-4.8.4/hbf2gf/cfg/ksso17.cfg | 27 + .../cjkutils/cjkutils-4.8.4/hbf2gf/configure.ac | 131 + .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/dvidrv.btm | 352 +++ .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/emdir.c | 109 + .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/emdir.h | 25 + .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/emtexdir.c | 405 +++ .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/emtexdir.h | 57 + .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf.c | 1494 +++++++++++ .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf.h | 215 ++ .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.1 | 718 +++++ .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.c | 2250 ++++++++++++++++ .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.def | 3 + .../texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.w | 2816 ++++++++++++++++++++ Build/source/texk/cjkutils/configure | 26 +- Build/source/texk/cjkutils/extconv.c | 4 +- Build/source/texk/cjkutils/hbf2gf.c | 210 +- Build/source/texk/cjkutils/hbf2gf.dvi | Bin 184560 -> 184560 bytes Build/source/texk/cjkutils/hbf2gf.tex | 10 +- Build/source/texk/cjkutils/sjisconv.c | 4 +- Build/source/texk/cjkutils/tests/bg5conv.cjk | 2 +- Build/source/texk/cjkutils/tests/cef5conv.cjk | 2 +- Build/source/texk/cjkutils/tests/cefconv.cjk | 2 +- Build/source/texk/cjkutils/tests/cefsconv.cjk | 2 +- Build/source/texk/cjkutils/tests/extconv.cjk | 2 +- Build/source/texk/cjkutils/tests/sjisconv.cjk | 2 +- Build/source/texk/cjkutils/version.ac | 6 +- 187 files changed, 15543 insertions(+), 15928 deletions(-) delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/ChangeLog delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/TL-Changes delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-01-static delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-02-unused delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-03-unsigned delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-04-mingw64 delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.1 delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.c delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.w delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex.bat delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex.cmd delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5pdflatex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.1 delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.c delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.w delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5latex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5ltx.bat delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5ltx.cmd delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5pdflatex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.1 delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.c delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.w delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex.bat delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex.cmd delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefpdflatex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.1 delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.c delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.w delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefslatex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsltx.bat delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsltx.cmd delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefspdflatex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/ChangeLog delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/README delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.1 delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.c delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.w delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjislatex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisltx.bat delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisltx.cmd delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjispdflatex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/cjklatex/cjklatex.c delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5+latex delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5+pdflatex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5pltx.bat delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5pltx.cmd delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.1 delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.c delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.w delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex.bat delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex.cmd delete mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbkpdflatex delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/Makefile.gnu delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/Makefile.in delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/README delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/README delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5ka12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5kr12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5so12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c1so12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c2so12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c3so12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c4so12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c5so12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c6so12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c7so12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/csso12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/gsfs14.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/j2so12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/jsso12.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/ksso17.cfg delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/configure.ac delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/dvidrv.btm delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emdir.c delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emdir.h delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emtexdir.c delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emtexdir.h delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf.c delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf.h delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.1 delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.c delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.def delete mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.w create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/ChangeLog create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/TL-Changes create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/patch-04-mingw64 create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.1 create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.c create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.w create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex.bat create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex.cmd create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5pdflatex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.1 create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.c create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.w create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5latex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5ltx.bat create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5ltx.cmd create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5pdflatex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.1 create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.c create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.w create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex.bat create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex.cmd create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefpdflatex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.1 create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.c create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.w create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefslatex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsltx.bat create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsltx.cmd create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefspdflatex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/ChangeLog create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/README create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.1 create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.c create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.w create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjislatex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisltx.bat create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisltx.cmd create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjispdflatex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/cjklatex/cjklatex.c create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5+latex create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5+pdflatex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5pltx.bat create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5pltx.cmd create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.1 create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.c create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.w create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex.bat create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex.cmd create mode 100755 Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbkpdflatex create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/Makefile.gnu create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/Makefile.in create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/README create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/README create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5ka12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5kr12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5so12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c1so12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c2so12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c3so12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c4so12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c5so12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c6so12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c7so12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/csso12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/gsfs14.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/j2so12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/jsso12.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/ksso17.cfg create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/configure.ac create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/dvidrv.btm create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emdir.c create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emdir.h create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emtexdir.c create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emtexdir.h create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf.c create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf.h create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.1 create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.c create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.def create mode 100644 Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.w (limited to 'Build/source/texk/cjkutils') diff --git a/Build/source/texk/cjkutils/ChangeLog b/Build/source/texk/cjkutils/ChangeLog index 8129f4ba1ae..b1538194ebb 100644 --- a/Build/source/texk/cjkutils/ChangeLog +++ b/Build/source/texk/cjkutils/ChangeLog @@ -1,3 +1,8 @@ +2015-04-18 Peter Breitenlohner + + Import cjk-4.8.4/utils as cjkutils-4.8.4. + * version.ac, tests/*.cjk: Adapted. + 2015-03-10 Peter Breitenlohner * configure.ac: Drop checks for strdup, strstr, strtol, strtoul. diff --git a/Build/source/texk/cjkutils/bg5conv.c b/Build/source/texk/cjkutils/bg5conv.c index 6a2e9fe5a0f..7acc54321ef 100644 --- a/Build/source/texk/cjkutils/bg5conv.c +++ b/Build/source/texk/cjkutils/bg5conv.c @@ -1,8 +1,8 @@ #define banner \ -"bg5conv (CJK ver. 4.8.3)" \ +"bg5conv (CJK ver. 4.8.4)" \ /*2:*/ -#line 94 "./cjkutils-4.8.3/Bg5conv/bg5conv.w" +#line 94 "./cjkutils-4.8.4/Bg5conv/bg5conv.w" #include #include diff --git a/Build/source/texk/cjkutils/cef5conv.c b/Build/source/texk/cjkutils/cef5conv.c index 8349f3a7955..e8524a023ed 100644 --- a/Build/source/texk/cjkutils/cef5conv.c +++ b/Build/source/texk/cjkutils/cef5conv.c @@ -1,8 +1,8 @@ #define banner \ -"cef5conv (CJK ver. 4.8.3)" \ +"cef5conv (CJK ver. 4.8.4)" \ /*2:*/ -#line 108 "./cjkutils-4.8.3/CEFconv/cef5conv.w" +#line 108 "./cjkutils-4.8.4/CEFconv/cef5conv.w" #include #include diff --git a/Build/source/texk/cjkutils/cefconv.c b/Build/source/texk/cjkutils/cefconv.c index f8b3fd4a15f..6773e45bdd5 100644 --- a/Build/source/texk/cjkutils/cefconv.c +++ b/Build/source/texk/cjkutils/cefconv.c @@ -1,8 +1,8 @@ #define banner \ -"cefconv (CJK ver. 4.8.3)" \ +"cefconv (CJK ver. 4.8.4)" \ /*2:*/ -#line 100 "./cjkutils-4.8.3/CEFconv/cefconv.w" +#line 100 "./cjkutils-4.8.4/CEFconv/cefconv.w" #include #include diff --git a/Build/source/texk/cjkutils/cefsconv.c b/Build/source/texk/cjkutils/cefsconv.c index 431f06b5aa4..528e880063d 100644 --- a/Build/source/texk/cjkutils/cefsconv.c +++ b/Build/source/texk/cjkutils/cefsconv.c @@ -1,8 +1,8 @@ #define banner \ -"cefsconv (CJK ver. 4.8.3)" \ +"cefsconv (CJK ver. 4.8.4)" \ /*2:*/ -#line 111 "./cjkutils-4.8.3/CEFconv/cefsconv.w" +#line 111 "./cjkutils-4.8.4/CEFconv/cefsconv.w" #include #include diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/ChangeLog b/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/ChangeLog deleted file mode 100644 index 1d1f37acc82..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/ChangeLog +++ /dev/null @@ -1,63 +0,0 @@ -2014-11-05 Peter Breitenlohner - - * patch-04-mingw64 (new): Required for MinGW64, but why? - -2014-06-19 Peter Breitenlohner - - * patch-03-unsigned (new): Avoid undefined behaviour. - -2012-12-07 Peter Breitenlohner - - * patch-02-unused (new): Drop unused variable (gcc-4.6 warning). - -2012-05-20 Peter Breitenlohner - - * patch-01-static (new): Build fix for 64-bit Mac OS X 10.7.3. - 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-11 Peter Breitenlohner - - Imported cjk-4.8.3/utils source tree from: - http://cjk.ffii.org/cjk-4.8.3.tar.gz - * patch-01-ANSI-C, patch-02-const, patch-03-kpathsea, - patch-04-cjklatex, patch-05-cjkpdflatex, patch-06-cjklatex, - patch-07-CEFconv, patch-09-from-git (removed): All included. - -2011-10-04 Peter Breitenlohner - - * patch-08-SJISconv (removed): The user-defined character area of - SJIS is not supported because it is not portable. - - Updates from http://git.savannah.gnu.org/r/cjk.git. - * patch-09-from-git (new): From Werner Lemberg . - Update test results tests/{cefs,sjis}conv.cjk. - -2011-09-17 Peter Breitenlohner - - * patch-07-CEFconv (new): Make sure that, as advertised, - cef5conv acts as bg5conv + cefconv and cefsconv as sjisconv + - cefconv; make TeX description of cefconv agree with the code. - * patch-08-SJISconv (new): Correct upper limit for first byte of - Kanji SJIS (CP 292) codes. - -2011-09-12 Peter Breitenlohner - - * patch-06-cjklatex (new): Drop #include . - -2010-12-19 Peter Breitenlohner - - Adapt to cjk-4.8.2/utils. - * patch-01-ANSI-C (new): ANSI C function declarations. - * patch-02-const (new): Declare numerous strings as const. - * patch-03-kpathsea (new): Require recent kpathsea version. - - * patch-04-cjklatex (new): Merge upstream versions with changes - from Akira (mail 18 Dec 2010 09:12:01). - Return type of main is int. ANSI C function declarations. - Declare functions as static. Declare various strings as const. - - * patch-05-cjkpdflatex (new) [LATEX]: Allow to build both - gbklatex.exe and gbkpdflatex.exe from cjklatex.c. - diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/TL-Changes b/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/TL-Changes deleted file mode 100644 index a93c0322860..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/TL-Changes +++ /dev/null @@ -1,21 +0,0 @@ -Changes applied to the cjk-4.8.3/utils tree as obtained from: - http://cjk.ffii.org/cjk-4.8.3.tar.gz - -Moved from top level to here: - ChangeLog - README - -Removed: - f_name.bat - hbf2gf/c-auto.h - hbf2gf/config.guess - hbf2gf/config.sub - hbf2gf/configure - hbf2gf/install-sh - hbf2gf/mkinstalldirs - hbf2gf/scripts/ - lisp/ - pyhyphen/ - subfonts/ - thaifont/ - diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-01-static b/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-01-static deleted file mode 100644 index f0bfeba60ba..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-01-static +++ /dev/null @@ -1,373 +0,0 @@ - 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. - -diff -ur cjkutils-4.8.3.orig/hbf2gf/hbf2gf.w cjkutils-4.8.3/hbf2gf/hbf2gf.w ---- cjkutils-4.8.3.orig/hbf2gf/hbf2gf.w 2012-05-07 00:00:00.000000000 +0200 -+++ cjkutils-4.8.3/hbf2gf/hbf2gf.w 2012-05-20 14:09:25.143819152 +0200 -@@ -427,7 +427,7 @@ - functions |write_pre()|, |write_data()|, and |write_post()| handle this. - - @= --void write_file(void); -+static void write_file(void); - - - @ -@@ -435,7 +435,7 @@ - the \.{-n} option isn't specified; otherwise only `\.{.gf}' will be appended. - - @c --void write_file(void) -+static void write_file(void) - {char output_file[FILE_NAME_LENGTH + 1]; - - -@@ -489,14 +489,14 @@ - @d header " hbf2gf output " - - @= --void write_pre(void); -+static void write_pre(void); - - - @ - @s tm int - - @c --void write_pre(void) -+static void write_pre(void) - {char out_s[40], s[20]; - time_t secs_now; - struct tm *time_now; -@@ -577,12 +577,12 @@ - - @ - @= --void write_data(void); -+static void write_data(void); - - - @ - @c --void write_data(void) -+static void write_data(void) - {dot_count = 0; - char_adr_p = char_adr;@# - -@@ -688,12 +688,12 @@ - \TeX\ defines that 72.27~points are exactly 1~inch. - - @= --void write_post(void); -+static void write_post(void); - - - @ - @c --void write_post(void) -+static void write_post(void) - {long special_adr; - long post_adr;@# - -@@ -832,12 +832,12 @@ - \TeX\ wants the most significant byte first. - - @= --void fputl(long, FILE *); -+static void fputl(long, FILE *); - - - @ - @c --void fputl(long num, FILE *f) -+static void fputl(long num, FILE *f) - {fputc(num >> 24, f); - fputc(num >> 16, f); - fputc(num >> 8, f); -@@ -992,12 +992,12 @@ - - - @= --void make_pixel_array(void); -+static void make_pixel_array(void); - - - @ - @c --void make_pixel_array(void) -+static void make_pixel_array(void) - {unsigned char *prP; - unsigned char *temp_prP; - unsigned char *new_prP; -@@ -1220,6 +1220,7 @@ - glyph). - - @= -+static - #ifdef __GNUC__ - __inline__ - #endif -@@ -1228,6 +1229,7 @@ - - @ - @c -+static - #ifdef __GNUC__ - __inline__ - #endif -@@ -1270,6 +1272,7 @@ - - @ - @= -+static - #ifdef __GNUC__ - __inline__ - #endif -@@ -1278,6 +1281,7 @@ - - @ - @c -+static - #ifdef __GNUC__ - __inline__ - #endif -@@ -1323,7 +1327,7 @@ - @d NOOP 244 /* not used */ - - @= --void write_coding(void); -+static void write_coding(void); - - - @ -@@ -1331,7 +1335,7 @@ - ``Unreachable code $\ldots$'' or something similar. - - @c --void write_coding(void) -+static void write_coding(void) - {register int count, skip; - register unsigned char paint; - register int x, y; -@@ -1484,12 +1488,12 @@ - single bytes and use the \.{HEADER} command repeatedly. - - @= --void write_pl(void); -+static void write_pl(void); - - - @ - @c --void write_pl(void) -+static void write_pl(void) - {int i, pos; - char output_file[FILE_NAME_LENGTH + 1]; - long t, sc; -@@ -1581,12 +1585,12 @@ - of the subfonts back to the original encoding positions. - - @= --void write_ovp(void); -+static void write_ovp(void); - - - @ - @c --void write_ovp(void) -+static void write_ovp(void) - {int c, i, nmb_subfonts, remainder, count, pos; - char output_file[FILE_NAME_LENGTH + 1]; - long t, sc; -@@ -1726,12 +1730,12 @@ - - @ - @= --void write_job(void); -+static void write_job(void); - - - @ - @c --void write_job(void) -+static void write_job(void) - {FILE *out; - int i, j; - char buffer[FILE_NAME_LENGTH + 1]; -@@ -1975,7 +1979,7 @@ - - @ - @= --void read_config(void); -+static void read_config(void); - - - @ -@@ -1983,7 +1987,7 @@ - isn't a HBF font at all. - - @c --void read_config(void) -+static void read_config(void) - {HBF_BBOX *boxp; - char *real_config_file; - -@@ -2306,12 +2310,12 @@ - |Buffer| if existent. |fsearch()| returns~1 on success. - - @= --int fsearch(const char *); -+static int fsearch(const char *); - - - @ - @c --int fsearch(const char *search_string) -+static int fsearch(const char *search_string) - {char *P, p; - const char *Q; - char temp_buffer[STRING_LENGTH + 1]; -@@ -2445,12 +2449,12 @@ - message. - - @= --void config_error(const char *); -+static void config_error(const char *); - - - @ - @c --void config_error(const char *message) -+static void config_error(const char *message) - {fprintf(stderr, "Couldn't find `%s' entry in configuration file\n", - message); - exit(1); -@@ -2488,12 +2492,12 @@ - - @ - @= --const char *TeX_search_version(void); -+static const char *TeX_search_version(void); - - - @ - @c --const char *TeX_search_version(void) -+static const char *TeX_search_version(void) - { - #if defined(HAVE_LIBKPATHSEA) - return kpathsea_version_string; -@@ -2525,8 +2529,8 @@ - @= - #ifdef HAVE_EMTEXDIR - extern int setup_list(struct emtex_dir *, char *, const char *, unsigned); --int dir_setup(struct emtex_dir *, const char *, const char *, unsigned); --char *file_find(char *, struct emtex_dir *); -+static int dir_setup(struct emtex_dir *, const char *, const char *, unsigned); -+static char *file_find(char *, struct emtex_dir *); - #endif - - -@@ -2536,7 +2540,7 @@ - - @c - #ifdef HAVE_EMTEXDIR --int dir_setup(ed, env, dir, flags) -+static int dir_setup(ed, env, dir, flags) - struct emtex_dir *ed; - const char *env; - const char *dir; -@@ -2558,16 +2562,20 @@ - - return TRUE; - } -+#endif - - - @ - @= -+#ifdef HAVE_EMTEXDIR - char name_buffer[FILE_NAME_LENGTH + 1]; -+#endif - - - @ - @c --char *file_find(name, list) -+#ifdef HAVE_EMTEXDIR -+static char *file_find(name, list) - char *name; - struct emtex_dir *list; - -@@ -2611,38 +2619,38 @@ - versions, and within \.{HBF2GFINPUTS} for new versions. - - @= --char *TeX_search_cfg_file(char *); --char *TeX_search_hbf_file(char *); -+static char *TeX_search_cfg_file(char *); -+static char *TeX_search_hbf_file(char *); - - - @ - @c - #if defined(HAVE_LIBKPATHSEA) --char *TeX_search_cfg_file(char *name) -+static char *TeX_search_cfg_file(char *name) - { - return kpse_find_file(name, kpse_program_text_format, TRUE); - }@# - - --char *TeX_search_hbf_file(char *name) -+static char *TeX_search_hbf_file(char *name) - { - return kpse_find_file(name, kpse_miscfonts_format, TRUE); - }@# - - - #elif defined(HAVE_EMTEXDIR) --char *TeX_search_cfg_file(char *name) -+static char *TeX_search_cfg_file(char *name) - {return file_find(name, &cfg_path); - }@# - - --char *TeX_search_hbf_file(char *name) -+static char *TeX_search_hbf_file(char *name) - {return file_find(name, &hbf_path); - }@# - - - #elif defined(HAVE_MIKTEX) --char *TeX_search_cfg_file(char *name) -+static char *TeX_search_cfg_file(char *name) - {char result[_MAX_PATH]; - - if (!miktex_find_input_file("hbf2gf", *name, result)) -@@ -2651,7 +2659,7 @@ - }@# - - --char *TeX_search_hbf_file(char *name) -+static char *TeX_search_hbf_file(char *name) - {char result[_MAX_PATH]; - - -@@ -2662,12 +2670,12 @@ - - - #else --char *TeX_search_cfg_file(char *name) -+static char *TeX_search_cfg_file(char *name) - {return name; - }@# - - --char *TeX_search_hbf_file(char *name) -+static char *TeX_search_hbf_file(char *name) - {return name; - } - #endif diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-02-unused b/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-02-unused deleted file mode 100644 index cf4838d5781..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-02-unused +++ /dev/null @@ -1,16 +0,0 @@ -diff -ur cjkutils-4.8.3.orig/hbf2gf/hbf.c cjkutils-4.8.3/hbf2gf/hbf.c ---- cjkutils-4.8.3.orig/hbf2gf/hbf.c 2012-05-07 00:00:00.000000000 +0200 -+++ cjkutils-4.8.3/hbf2gf/hbf.c 2012-12-07 10:57:31.000000000 +0100 -@@ -1041,12 +1041,10 @@ - { - if (LocalFileName(filename) && path != NULL) { - #ifdef PATH_DELIMITER -- int len; - char *fullname; - FILE *f; - const char *p_next; - -- len = strlen(filename); - for (;;) { - p_next = strchr(path, PATH_DELIMITER); - if (p_next == NULL) diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-03-unsigned b/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-03-unsigned deleted file mode 100644 index 301bb0f6b42..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-03-unsigned +++ /dev/null @@ -1,100 +0,0 @@ - Avoid undefined behaviour when char is signed. - -diff -ur cjkutils-4.8.3.orig/hbf2gf/hbf.c cjkutils-4.8.3/hbf2gf/hbf.c ---- cjkutils-4.8.3.orig/hbf2gf/hbf.c 2012-12-07 10:57:31.000000000 +0100 -+++ cjkutils-4.8.3/hbf2gf/hbf.c 2014-06-19 12:44:16.000000000 +0200 -@@ -378,7 +378,7 @@ - lp++; - sp++; - } -- return (*lp == '\0' || isspace(*lp)) && *sp == '\0'; -+ return (*lp == '\0' || isspace((unsigned char)*lp)) && *sp == '\0'; - } - - #ifdef NO_STRDUP -@@ -407,12 +407,12 @@ - prop = NEW(PROPERTY); - - tp = tmp; -- while (*lp != '\0' && ! isspace(*lp)) -+ while (*lp != '\0' && ! isspace((unsigned char)*lp)) - *tp++ = *lp++; - *tp = '\0'; - prop->prop_name = strdup(tmp); - -- while (*lp != '\0' && isspace(*lp)) -+ while (*lp != '\0' && isspace((unsigned char)*lp)) - lp++; - - tp = tmp; -@@ -423,9 +423,9 @@ - } - else - for (;;) { -- while (*lp != '\0' && ! isspace(*lp)) -+ while (*lp != '\0' && ! isspace((unsigned char)*lp)) - *tp++ = *lp++; -- while (*lp != '\0' && isspace(*lp)) -+ while (*lp != '\0' && isspace((unsigned char)*lp)) - lp++; - if (*lp == '\0') - break; -@@ -765,9 +765,9 @@ - skip_word(int n, const char *s) - { - for ( ; n > 0; n--) { -- while (*s != '\0' && ! isspace(*s)) -+ while (*s != '\0' && ! isspace((unsigned char)*s)) - s++; -- while (*s != '\0' && isspace(*s)) -+ while (*s != '\0' && isspace((unsigned char)*s)) - s++; - } - return s; -@@ -869,7 +869,7 @@ - } - if (c == '\n' || c == '\r') { - /* trim trailing space */ -- while (bp > buf && isspace(*(bp-1))) -+ while (bp > buf && isspace((unsigned char)*(bp-1))) - bp--; - *bp = '\0'; - return TRUE; -diff -ur cjkutils-4.8.3.orig/hbf2gf/hbf2gf.w cjkutils-4.8.3/hbf2gf/hbf2gf.w ---- cjkutils-4.8.3.orig/hbf2gf/hbf2gf.w 2012-05-20 14:09:25.000000000 +0200 -+++ cjkutils-4.8.3/hbf2gf/hbf2gf.w 2014-06-19 12:44:16.000000000 +0200 -@@ -2330,7 +2330,7 @@ - - do - {Q = search_string; -- p = tolower(*Q); -+ p = tolower((unsigned char)*Q); - Ch = fgetc(config); - ch = tolower(Ch); - while(!(ch == p && old_ch == '\n') && Ch != EOF) -@@ -2347,7 +2347,7 @@ - /* there must be a space or a tab stop after the keyword */ - goto success; - Ch = fgetc(config); -- if(tolower(Ch) != tolower(*Q)) -+ if(tolower(Ch) != tolower((unsigned char)*Q)) - break; - } - } -@@ -2410,14 +2410,14 @@ - } - while(*P == '{') @q } @> - P++; -- if(!(isalpha(*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(*P) || *P == '_') -+ {if(isalnum((unsigned char)*P) || *P == '_') - *(env_p++) = *(P++); - else - {@q { @> while(*P == '}') diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-04-mingw64 b/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-04-mingw64 deleted file mode 100644 index 9232116055d..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3-PATCHES/patch-04-mingw64 +++ /dev/null @@ -1,21 +0,0 @@ -diff -ur cjkutils-4.8.3.orig/hbf2gf/hbf2gf.w cjkutils-4.8.3/hbf2gf/hbf2gf.w ---- cjkutils-4.8.3.orig/hbf2gf/hbf2gf.w 2014-06-19 12:44:16.000000000 +0200 -+++ cjkutils-4.8.3/hbf2gf/hbf2gf.w 2014-11-05 12:56:50.000000000 +0100 -@@ -486,7 +486,7 @@ - @d GF_ID 131 - @d PRE 247@# - --@d header " hbf2gf output " -+@d headertstring " hbf2gf output " - - @= - static void write_pre(void); -@@ -502,7 +502,7 @@ - struct tm *time_now; - - -- strcpy(out_s, header);@# -+ strcpy(out_s, headertstring);@# - - secs_now = time(NULL); /* system date and time */ - time_now = localtime(&secs_now); diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.1 deleted file mode 100644 index 4ee4815cfef..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.1 +++ /dev/null @@ -1,110 +0,0 @@ -.\" man page for bg5conv -.\" Copyright (C) 1994-2012 Werner Lemberg -.\" -.\" 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 07-May-2012 "CJK Version 4.8.3" -. -.\" ==== -.\" ==== 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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.c b/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.c deleted file mode 100644 index e3a366fd1d3..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.c +++ /dev/null @@ -1,33 +0,0 @@ -#define banner \ -"bg5conv (CJK ver. 4.8.3)" \ - -/*2:*/ -#line 94 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/Bg5conv/bg5conv.w" - -#include -#include - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.w b/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.w deleted file mode 100644 index 23f520f181f..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5conv.w +++ /dev/null @@ -1,121 +0,0 @@ -% This is the cweb file bg5conv.w of the CJK Package Ver. 4.8.3 07-May-2012 - -% Copyright (C) 1994-2012 Werner Lemberg -% -% 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.3)} - -\def\topofcontents{ - \null\vfill - \centerline{\titlefont The {\ttitlefont bg5conv} program} - \vskip 20pt - \centerline{(CJK Version 4.8.3)} - \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.3)" - -@c -#include -#include @# - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex b/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex deleted file mode 100755 index 1839e354680..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex.bat b/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex.bat deleted file mode 100644 index 91e7dfd8575..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex.bat +++ /dev/null @@ -1,3 +0,0 @@ -call f_name %1 -bg5conv < %1 > %fd%%fp%%fn%.cjk -latex %fd%%fu%%fn%.cjk diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex.cmd deleted file mode 100644 index 24c8a2fbdf0..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5latex.cmd +++ /dev/null @@ -1,44 +0,0 @@ -/*----------------------------------------------------------------------*\ - bg5latex.cmd - - This file is part of the CJK macro package for LaTeX2e ver. 4.8.3 - - Copyright (C) 1994-2012 Wonkoo Kim - - 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/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5pdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5pdflatex deleted file mode 100755 index 685c3c2228b..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/Bg5conv/bg5pdflatex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.1 deleted file mode 100644 index e1d2c6a7ad8..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.1 +++ /dev/null @@ -1,127 +0,0 @@ -.\" man page for cef5conv -.\" Copyright (C) 1994-2012 Werner Lemberg -.\" -.\" 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 07-May-2012 "CJK Version 4.8.3" -. -.\" ==== -.\" ==== 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 -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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.c b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.c deleted file mode 100644 index 05355b13085..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.c +++ /dev/null @@ -1,135 +0,0 @@ -#define banner \ -"cef5conv (CJK ver. 4.8.3)" \ - -/*2:*/ -#line 108 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/CEFconv/cef5conv.w" - -#include -#include -#include - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.w b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.w deleted file mode 100644 index c8630fdc8b9..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5conv.w +++ /dev/null @@ -1,237 +0,0 @@ -% This is the cweb file cef5conv.w of the CJK Package Ver. 4.8.3 07-May-2012 - -% Copyright (C) 1994-2012 Werner Lemberg -% -% 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.3)} - -\def\topofcontents{ - \null\vfill - \centerline{\titlefont The {\ttitlefont cef5conv} program} - \vskip 20pt - \centerline{(CJK Version 4.8.3)} - \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.3)" - -@c -#include -#include -#include @# - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5latex b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5latex deleted file mode 100755 index e729c27d4c7..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5latex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5ltx.bat b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5ltx.bat deleted file mode 100644 index 187485301f9..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5ltx.bat +++ /dev/null @@ -1,3 +0,0 @@ -call f_name %1 -cef5conv < %1 > %fd%%fp%%fn%.cjk -latex %fd%%fu%%fn%.cjk diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5ltx.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5ltx.cmd deleted file mode 100644 index cd3ebb5650b..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5ltx.cmd +++ /dev/null @@ -1,46 +0,0 @@ -/*----------------------------------------------------------------------*\ - cef5ltx.cmd - - This file is part of the CJK macro package for LaTeX2e ver. 4.8.3 - - This file is part of the CJK macro package for LaTeX2e ver. 4.8.3 - - Copyright (C) 1994-2012 Wonkoo Kim - - 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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5pdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5pdflatex deleted file mode 100755 index 7ff040cbfaa..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cef5pdflatex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.1 deleted file mode 100644 index 312740d7d1c..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.1 +++ /dev/null @@ -1,117 +0,0 @@ -.\" man page for cefconv -.\" Copyright (C) 1994-2012 Werner Lemberg -.\" -.\" 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 07-May-2012 "CJK Version 4.8.3" -. -.\" ==== -.\" ==== 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 -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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.c b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.c deleted file mode 100644 index b60b8682580..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.c +++ /dev/null @@ -1,127 +0,0 @@ -#define banner \ -"cefconv (CJK ver. 4.8.3)" \ - -/*2:*/ -#line 100 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/CEFconv/cefconv.w" - -#include -#include -#include - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.w b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.w deleted file mode 100644 index 909f93ec2d3..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefconv.w +++ /dev/null @@ -1,221 +0,0 @@ -% This is the cweb file cefconv.w of the CJK Package Ver. 4.8.3 07-May-2012 - -% Copyright (C) 1994-2012 Werner Lemberg -% -% 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.3)} - -\def\topofcontents{ - \null\vfill - \centerline{\titlefont The {\ttitlefont cefconv} program} - \vskip 20pt - \centerline{(CJK Version 4.8.3)} - \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.3)" - -@c -#include -#include -#include @# - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex deleted file mode 100755 index 4c1d5eb3936..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex.bat b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex.bat deleted file mode 100644 index ba5925a6df3..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex.bat +++ /dev/null @@ -1,3 +0,0 @@ -call f_name %1 -cefconv < %1 > %fd%%fp%%fn%.cjk -latex %fd%%fu%%fn%.cjk diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex.cmd deleted file mode 100644 index 8209d0aeea7..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/ceflatex.cmd +++ /dev/null @@ -1,46 +0,0 @@ -/*----------------------------------------------------------------------*\ - ceflatex.cmd - - This file is part of the CJK macro package for LaTeX2e ver. 4.8.3 - - This file is part of the CJK macro package for LaTeX2e ver. 4.8.3 - - Copyright (C) 1994-2012 Wonkoo Kim - - 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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefpdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefpdflatex deleted file mode 100755 index db653b6f65a..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefpdflatex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.1 deleted file mode 100644 index d9c2d578acd..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.1 +++ /dev/null @@ -1,127 +0,0 @@ -.\" man page for cefsconv -.\" Copyright (C) 1994-2012 Werner Lemberg -.\" -.\" 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 07-May-2012 "CJK Version 4.8.3" -. -.\" ==== -.\" ==== 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 -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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.c b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.c deleted file mode 100644 index a4b7eb9f7c3..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.c +++ /dev/null @@ -1,135 +0,0 @@ -#define banner \ -"cefsconv (CJK ver. 4.8.3)" \ - -/*2:*/ -#line 111 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/CEFconv/cefsconv.w" - -#include -#include -#include - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.w b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.w deleted file mode 100644 index bcb7118a84e..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsconv.w +++ /dev/null @@ -1,240 +0,0 @@ -% This is the cweb file cefsconv.w of the CJK Package Ver. 4.8.3 07-May-2012 - -% Copyright (C) 1994-2012 Werner Lemberg -% -% 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.3)} - -\def\topofcontents{ - \null\vfill - \centerline{\titlefont The {\ttitlefont cefsconv} program} - \vskip 20pt - \centerline{(CJK Version 4.8.3)} - \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.3)" - -@c -#include -#include -#include @# - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefslatex b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefslatex deleted file mode 100755 index a7054b3c207..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefslatex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsltx.bat b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsltx.bat deleted file mode 100644 index 662ef9e3af4..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsltx.bat +++ /dev/null @@ -1,3 +0,0 @@ -call f_name %1 -cefsconv < %1 > %fd%%fp%%fn%.cjk -latex %fd%%fu%%fn%.cjk diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsltx.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsltx.cmd deleted file mode 100644 index df42357b094..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefsltx.cmd +++ /dev/null @@ -1,46 +0,0 @@ -/*----------------------------------------------------------------------*\ - cefsltx.cmd - - This file is part of the CJK macro package for LaTeX2e ver. 4.8.3 - - This file is part of the CJK macro package for LaTeX2e ver. 4.8.3 - - Copyright (C) 1994-2012 Wonkoo Kim - - 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/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefspdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefspdflatex deleted file mode 100755 index d4cc95bff89..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/CEFconv/cefspdflatex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/ChangeLog b/Build/source/texk/cjkutils/cjkutils-4.8.3/ChangeLog deleted file mode 100644 index e7c27efe761..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/ChangeLog +++ /dev/null @@ -1,2404 +0,0 @@ -2012-05-07 Werner LEMBERG - - 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 - - * 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 - - [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 - - [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 - - 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 - - [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 - - * texinput/Bg5/Bg5.cpx, texinput/JIS/JIS.cpx: Fix typos. - -2012-04-20 Werner LEMBERG - - * texinput/UTF8/zh-Hans.cpx: Synchronize. - -2012-04-20 Jiangsheng Yu - - * texinput/GB/GB.cap, texinput/GB/GB.cpx: Improve. - -2011-12-16 Hin-Tak Leung - - [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 - - * examples/thai.tex: Improve prologue comments. - -2011-10-04 Werner LEMBERG - - [CEFconv, SJISconv] Document missing range 0xF0-0xFC. - - * utils/CEFconv/cefsconv.w, utils/SJISconv/sjisconv.w: Do it. - -2011-10-04 Peter Breitenlohner - - [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 - - [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 - - [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 - - [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 - - [hbf2gf] Update manpage. - - * utils/hbf2gf/hbf2gf.1, doc/hbf2gf.txt: Remove information on - ancient kpathsea versions. - -2011-09-03 Peter Breitenlohner - - [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 - - [hbf2gf] Decorate with `const'. - - * utils/hbf2gf/hbf2gf.w, utils/hbf2gf/hbf.c: Do it. - -2011-09-03 Peter Breitenlohner - - 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 - - * doc/CJK.txt: Document possible problems in `tabular' environment. - Problem reported by LI Ruo-Meng <15003990378@163.com>. - -2010-01-04 Werner LEMBERG - - * doc/CJK.txt: Document Babel bug related to ^^xx notation. - Problem reported by Peter Grzybek . - -2009-11-07 Werner LEMBERG - - 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 - - * examples/CJKfntef.tex: Updated. - -2009-08-25 Wenchang Sun - - 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 - - * texinput/CJKfntef.sty: Replace \global with \CJKf@global. - -2009-01-19 Werner LEMBERG - - * texlive/cjk-build.pl: Remove unused stuff. - From Karl Berry. - -2009-01-05 Werner LEMBERG - - * doc/CJK.txt: Document usage of CJKutf8.sty with beamer class. - -2008-12-29 Werner LEMBERG - - 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 - - * 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 - - * 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 - - * doc/history.txt: Updated. - - * doc/CJKnumb.txt: New file. - - * MANIFEST: Updated. - -2008-12-28 Werner LEMBERG - - 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 - - * contrib/wadalab/DNP.txt: Renamed to... - * contrib/wadalab/wadalab.txt: This. - * MANIFEST: Updated. - -2008-12-28 Werner LEMBERG - - 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 - - * 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 - - * texinput/CJK.sty (\Unicode): Use vertical glyph representation - forms. - -2008-11-25 Werner LEMBERG - - * texinput/CJKnumb.sty (\CJKdigits*): New command to use traditional - form of glyph zero. - - * doc/history.txt: Updated. - -2008-10-01 Werner LEMBERG - - * *.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 - - * utils/subfonts/subfonts.pe: Fix error message for too-old - FontForge versions. - -2008-08-21 Werner LEMBERG - - * utils/subfonts/subfonts.pe: Handle CID-keyed fonts. - -2008-08-10 Werner LEMBERG - - 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 - - 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 - - Make macros in pinyin.sty robust. - - Problem reported by Denis Roegel . - - * 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 - - 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 - - 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 - - * Makefile (DISTDIRS): We are now using git, not CVS. - -2008-05-18 Werner LEMBERG - - * doc/history.txt: Mention xCJK.sty. - -2008-05-17 Werner LEMBERG - - * 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 - - * utils/hbf2gf/hbf2gf.1: Replace some `-' with `\-'. - -2008-03-10 Werner LEMBERG - - * utils/hbf2gf/hbf2gf.1: s|-|\-| where appropriate. - -2008-03-09 Werner LEMBERG - - * Makefile (XELATEX): Call xelatex twice. - (manpages): Increase font size to 11pt for DVI and PDF output. - -2008-03-09 Werner LEMBERG - - 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 - - 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 - - * texinput/CJKutf8.sty, texinput/xCJK.sty, - texinput/mule/MULEenc.sty: Use \ProvidesPackage, not \ProvidesFile. - -2008-03-03 Werner LEMBERG - - 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 - - * doc/xCJK.txt: New file. - * MANIFEST: Updated. - -2008-02-11 Werner LEMBERG - - * doc/fonts.txt: Document installation of cyberbit.ttf. - -2008-02-05 Werner LEMBERG - - 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 - - * 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 - - * utils/subfonts/vertical.pe, utils/subfonts/vertref.pe: Abort if no - vertical glyph representation forms are available. - -2006-12-05 Werner LEMBERG - - 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 - - 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 - - * texinput/CJK.enc: Add punctuation tables for GBK encoding. - -2007-11-06 Werner LEMBERG - - * 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 - - * texinput/CJKfntef.sty (\CJK@preUnderdot): Use \cdot (in math mode). - (\CJKxout): Use `/' in math mode. - (\CJKunderdotbasesep, \CJKunderdotsep): Adjusted. - -2007-10-26 Werner LEMBERG - - * 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 - - 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 - - * 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 - - * utils/subfonts/vertical.pe, utils.subfonts/vertref.pe: Adapt to - FontForge version 2007-Sep-10 and newer. - -2007-07-26 Gernot Hassenpflug - - * 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 - - * texinput/pinyin.sty (\ding): Rename to... - (\py@ding): This to make \ding work actually. - -2007-05-04 Werner LEMBERG - - * texinput/CJKvert.sty (\CJKsymbol): Honour \CJKhdef{offset}{...}. - * doc/fdxfiles.txt, doc/history.txt: Document it. - -2007-04-08 Werner LEMBERG - - * 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 - - * texinput/pinyin.sty (\py@macron, \py@@@v): Support T5 encoding. - * doc/history.txt: Document it. - -2006-10-31 Werner LEMBERG - - * doc/CJK.txt, doc/CJKutf8.txt: Mention Byte Order Mark in UTF-8. - -2006-10-19 Werner LEMBERG - - * 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 - - 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 - - * 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 - - * doc/CJKutf8.txt, doc/history.txt: Minor additions. - * MANIFEST: Sorted and updated. - -2006-10-05 Werner LEMBERG - - * 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 - - * 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 - - 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 - - * 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 - - * 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 - - 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 - - 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 - - * 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 - - * 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 - - * texinput/*: Add various replacement files for TeXLive. - -2006-08-17 Werner LEMBERG - - * doc/CJK.txt: Mention problem with fourier.sty. - -2006-08-01 Werner LEMBERG - - * doc/cjk-enc.txt: Mention problems with UTF-8. - -2006-07-30 Werner LEMBERG - - * contrib/wadalab/DNP.txt: Fix patch for wftodm.c. - -2006-04-25 Danai SAE-HAN - - * : Add GPL. - * MANIFEST: New file. - -2006-03-25 Werner LEMBERG - - * texinput/CJKutf8.sty (\pdfstringdefPreHook): Don't overwrite but - prepend to this macro. - -2006-03-23 Werner LEMBERG - - * 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 - - * texinput/KS/HLaTeX/c63sh.fd, texinput/KS/HLaTeX/c64sh.fd, - texinput/KS/HLaTeX/c65sh.fd: Fix font declaration. Bug reported by - Danai SAE-HAN . - -2006-02-20 Werner LEMBERG - - * texinput/UTF8/UTF8.bdg: Bugfix: Handle 0x80 also. - - * doc/history.txt: Mention it. - -2006-02-09 Werner LEMBERG - - 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 - - * 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 - - 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 - - * doc/CJK.txt: Mention usage of Bg5+ for HKSCS-2001/HKSCS-2004. - -2006-01-04 Werner LEMBERG - - * 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 - - * utils/hbf2gf/cfg/csso12.cfg: Fix typo. - -2005-10-31 Danai SAE-HAN - - * utils/subfonts/makefdx.pl: Provide header for output. - Add \CJKvlet lines. - -2005-08-19 Werner LEMBERG - - * doc/TeXLive.txt: New file, describing the relationship between - CJK files and TeXLive packages. - -2005-08-18 Werner LEMBERG - - * 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 - - 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 - - * 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 - - * COPYING: Updated to new FSF address. - -2005-08-05 Werner LEMBERG - - 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 - - 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 - - * 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 - - * 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 - - 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 - - * utils/subfont/uni2sfd.pl (read_tfmfile): Fix reading CHARWD, - CHARHT, and CHARDP. - -2005-07-31 Werner LEMBERG - - * utils/subfont/sfd2uni.pl: New script to produce Unicode virtual - subfonts from encoding specific subfonts. - -2005-07-29 Werner LEMBERG - - * 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 - - * 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 - - * utils/subfonts/makefdx.pl: New script to create FDX entries. - -2005-07-17 Werner LEMBERG - - * 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 - - * 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 - - * doc/history.txt: Updated. - -2005-07-05 Werner LEMBERG - - * utils/thaifont/tools/c90.etx: Fix some typos. - -2005-07-04 Werner LEMBERG - - 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 - - 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 - - * 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 - - * 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 - - * doc/CJK.doc: Improve documentation of `encapsulated' option. - Suggested by Brian Murphy. - -2005-04-26 Werner LEMBERG - - * 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 - - * 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 - - * texinput/CJK.sty (\CJKspace): Don't use \relax but \@empty. - -2005-03-02 Werner LEMBERG - - * doc/CJK.doc: Mention `CJKbookmarks' option of hyperref package. - -2005-02-23 Werner LEMBERG - - * README: Updated. No public CVS access possible currently. - -2004-07-26 Werner LEMBERG - - * 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 - - * 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 - - * doc/reftex.doc: New file. - * doc/history.txt: Updated. - -2004-06-07 Werner LEMBERG - - * 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 - - * 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 - - * contrib/wadalab/DNP.doc: Improve patch for wftodm.c. - -2004-04-29 Werner LEMBERG - - 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 - - * 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 - - Bug fix: Umlaut u with diacritic appears bold. - - * texinput/pinyin.sty (\py@@@v): Apply kerning at correct place. - -2004-02-07 Werner LEMBERG - - 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 - - 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 - - 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 - - * doc/pdf/*: New directory tree documenting usage of CJK for - improved PDF output. - * doc/history.txt: Document it. - -2004-01-29 Wenchang Sun - - * 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 - - 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 - - * texinput/mule/MULEenc.sty: Fix positions of \texordfeminine and - \textordmasculine. - -2003-09-20 Werner LEMBERG - - With the help of Paul Eggert and Edward G.J. - Lee , 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 - - * 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 - - * 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 - - * 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 - - Version 4.5.2 released - ====================== - - Update version numbers and time stamps in all non-binary files. - -2003-03-19 Werner LEMBERG - - Add improved support for pseudo-vertical typesetting. Based on - ideas by Robert Fendt . - - * 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 - - \///// - - This macro is then called if it exists, instead of calling - \CJKsymbol. For halfwidth katakana, the macro is called - - \//// - - For HLaTeX, the macro is called - - \///// - - For UTF8, only characters in the range 0x800-0xFFFF get the new - code. - - , , and 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 - - * texinput/pinyin.sty (\rua): New syllable. While only dialect, it - actually is used... - -2003-03-12 Werner LEMBERG - - * texinput/pinyin.sty (\den, \chua): Add missing syllables (found by - Jean-Luc Koning ). - -2003-03-07 Werner LEMBERG - - * texinput/pinyin.sty (\py@hy): Assure horizontal mode. - -2003-02-10 Werner LEMBERG - - * 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 - - 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 - - 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 - - * texinput/CNS/EUC-TW.chr (\CJK@shiftchar): Pass correct parameters - to \CJKchar. - -2002-06-19 Werner LEMBERG - - Version 4.5.1 released - ====================== - - Update version numbers and time stamps in all non-binary files. - -2002-06-17 Werner LEMBERG - - 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 - - * 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 - - * texinput/Bg5/c00bsmi.fd, texinput/Bg5/c00bsmir.fd: Fix typo. - -2002-06-13 Werner LEMBERG - - * 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 - - * texinput/JISdnp.enc (\CJK@JISdnpEncoding): Fix position of closing - brace. - -2002-06-07 Werner LEMBERG - - * texinput/thai/c90enc.def: New file, contributed by Dominique - Unruh . - * texinput/thai/thaicjk.ldf: Use it. - * doc/history.txt: Updated. - -2002-05-16 Werner LEMBERG - - * 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 - - * 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 - - * texinput/CJKnumb.sty (\CJK@traditionalNumbers, - \CJK@simplifiedNumbers): New macros. - Use them for GB, GBK, Bg5, Bg5+ hooks. - -2002-05-01 Werner LEMBERG - - * 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 - - * 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 - - * texinput/CJK.sty (\pickup@font): Add comment character. - -2002-04-28 Werner LEMBERG - - Preparation of release 4.5.0. - - * README: Updated. - -2002-04-27 Werner LEMBERG - - * texinput/CJK.sty (\CJKsymbol, \CJKsymbols): Simplified. - (\Unicode, \CJKenc): Fix error text. - -2001-10-08 Mike Fabian - - * contrib/wadalab/c42goth.fd: Use `dgj' for normal series and add - `\CJKbold' for bold series. - -2001-07-31 Werner LEMBERG - - * doc/CJK.doc: Note use of \cleardoublepage if problems occur with - two-column printing. - -2001-07-27 Fabrice Popineau - - * utils/cjklatex/cjklatex.c: New file. - -2001-06-27 Werner LEMBERG - - * 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 - - * texinput/CJK.enc (\CJK@disableMakeUppercase): Define it as \relax - if in preprocessed mode. - -2001-06-14 HANDA Ken'ichi - - * 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 - - 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 - - * texinputs/CJK.sty: Restore EOL character before loading `CJK.cfg'. - -2001-05-18 Werner LEMBERG - - * contrib/wadalab/DNP.doc: Document installation for pdfTeX. - * contrib/wadalab/makefont: Updated to normalize font matrix of - PS fonts. - -2001-04-24 Werner LEMBERG - - * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub: Updated to - latest version from gnu.org. - -2001-04-21 Werner LEMBERG - - * 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 - - * 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 - - * utils/lisp/emacs-20.3/cjk-enc.el: Fix documentation to follow - Elisp documentation conventions. - -2001-04-01 Werner LEMBERG - - Make UTF8 encoding work in TOC. - - * texinput/CJK.sty (\CJK@namedef): New macro. - * texinput/UTF8/UTF8.bdg: Use it. - -2001-03-28 Werner LEMBERG - - * texinput/mule/MULEenc.sty: Use \textnumero instead of \CYRNo - (found by Vladimir Volovich). - -2001-03-18 Werner LEMBERG - - * utils/lisp/cjkspace.el, INSTALL: Fix documentation. - -2001-03-15 Werner LEMBERG - - 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 - - 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 - - * doc/INSTALL: Minor improvements. - -2001-02-13 Werner LEMBERG - - * utils/hbf2gf/config.{guess,sub}: Updated (from ftp.gnu.org). - -2000-12-17 Werner LEMBERG - - * 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 - - * utils/hbf2gf/configure.in: Fix kpathsea checking message. - * utils/hbf2gf/configure: Updated. - -2000-12-02 Werner LEMBERG - - * 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 - - * doc/INSTALL: Fix documentation of --with-kpathsea-include. - * doc/cjk-enc.doc: Fix typo. - -2000-09-21 Werner LEMBERG - - * texinput/{CJK.sty, CJKulem.sty, pinyin.sty, ruby.sty}: Replacing - some \ifdim with \ifnum. - -2000-09-20 Werner LEMBERG - - * texinput/CJKulem.sty: Fixed two nasty bugs (spotted by Sim Ing - ): No underlining for \CJKglue and no \CJKglue - before and after \uline. - -2000-08-28 Werner LEMBERG - - * utils/thaifont/texmf/dvips/config/config.{norasi,dbtt}: New files. - * doc/thaifont.doc: Added info about PS font configuration. - -2000-08-24 Werner LEMBERG - - * utils/lisp/emacs-20.3/thai-word.el (thai-update-word-table): Add - documentation string. - -2000-08-24 HANDA Ken'ichi - - * 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 - - * texinput/thai/thaicjk.ldf: Remove warning about nonexistent - hyphenation patterns. - -2000-08-20 Werner LEMBERG - - 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 - - * examples/thai.tex: New file. - * doc/history.txt: Updated. - - * examples/CJKbabel.tex: Doc fixes. - -2000-08-17 Werner LEMBERG - - * doc/cjk-enc.el, doc/thaifont.doc: Give better URL for thailatex - package. - -2000-08-15 Werner LEMBERG - - 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 - - * 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 - - 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 . - Will now run under XEmacs also (with help of Martin Buchholz - ). 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 - - * texinput/CJKulem.sty: New file which provides CJK support for - ulem.sty. - * doc/history.txt, doc/CJK.doc: Updated. - -2000-08-09 Werner LEMBERG - - * 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 - - * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub: Updated to - latest version from ftp.gnu.org. - -2000-07-27 Werner LEMBERG - - * utils/thaiconv/thaiconv.c: Improve comment. - - * *.fd: Set \hyphenchar to -1 for all CJK fonts. - -2000-06-23 Werner LEMBERG - - * 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 - - * 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 - - * texinput/*/*.cpx: Replace incorrect 0xFF with 0x7F. - -2000-04-18 Werner LEMBERG - - * 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 - - 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 - - * 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 - - * 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 - - * texinput/CJK.sty: Fixing definition of ^^7f to do nothing if - written to the TOC file. - -2000-03-12 Werner LEMBERG - - * 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 - - * 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 it is impossible to provide - hyphenation patterns for transcribed Japanese without semantic - analysis. - -2000-03-02 Werner LEMBERG - - * README, doc/INSTALL: Slight improvements. - - * utils/hbf2gf/Makefile.in, utils/hbf2gf/configure.in: Fix incorrect - test for NO_STRDUP. Thanks to . - -2000-02-06 Werner LEMBERG - - * 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 - for finding this bug). - -2000-01-26 Werner LEMBERG - - * 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 - - * 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@ - definitions. - -2000-01-14 Werner LEMBERG - - * doc/cjk-enc.doc: Added info about file variables to specify - document encoding. - -2000-01-03 Ching-Mo CHANG - - * 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 - - * utils/hbf2gf/configure.in: Removed `-pedantic' flag which causes - problems with newer gcc versions. - -1999-11-19 Werner LEMBERG - - * examples/muletest.tex, examples/CJKbabel.tex: Fixing a typo. - -1999-11-07 Werner LEMBERG - - * doc/CEF.doc: Minor fixes. - - * doc/CJK.doc: Updated; minor fixes. - -1999-11-06 Werner LEMBERG - - * doc/cjk-enc.doc, doc/commands.doc, doc/fonts.doc: Minor fixes. - - * doc/vertical.doc, doc/history.txt: Updated. - -1999-11-05 Werner LEMBERG - - * texinput/mule/MULEenc.sty: Added \CJKinclude{} and - \CJKbibliography{}. These functions act identically to - \include resp. \bibliography but load .cjk - resp. -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 - - * doc/cjk-enc.doc: Small improvement in explanation of usage with - AUC TeX. - -1999-10-24 Werner LEMBERG - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * doc/history.txt: Updated. - -1999-09-21 Werner LEMBERG - - * texinput/pinyin.sty: Adding hyphenation points at the end of all - syllables. - -1999-09-18 Werner LEMBERG - - * 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 - - * 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 - - * utils/thaiconv/thaiconv.c (adj): Fixed invalid array index in - case of marks without base characters. - -1999-07-07 Werner LEMBERG - - * texinput/Bg5/Bg5.chr, - texinput/extended.chr: Fixed a typo \CJK@temp->\CJK@gtemp - -1999-06-30 Werner LEMBERG - - * 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 - - * doc/TDS.doc: Completely revised. - -1999-06-10 Werner LEMBERG - - * 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 - - * 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 - - * *.fd files: minor documentation addition regarding font - encoding. - - * all files: Changed date/version to 4.3.0. - -1999-06-02 Werner LEMBERG - - * README: Added info about http and ftp home sites and how to - access the CVS repository. - -1999-06-01 Werner LEMBERG - - * README: Added info about CVS mailing list. - -1999-05-29 Werner LEMBERG - - * README: Added mailing list. - - * doc/INSTALL: Small correction. - - * README: Small additions. - -;; Local Variables: -;; coding: utf-8 -;; End: - - Copyright (C) 1999, 2001-2012 - Werner Lemberg - - 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/Build/source/texk/cjkutils/cjkutils-4.8.3/README b/Build/source/texk/cjkutils/cjkutils-4.8.3/README deleted file mode 100644 index 6ff91c164e3..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/README +++ /dev/null @@ -1,35 +0,0 @@ -Welcome to CJK version 4.8.3 (07-May-2012), a LaTeX2e macro package which -enables the use of CJK scripts (Chinese/Japanese/Korean) in various -encodings, written by Werner Lemberg . - -A mailing list exists at cjk@ffii.org; bugs should be sent to -cjk-bug@ffii.org. To subscribe one of the lists, send a mail with the -subject `subscribe' (without the quotes) to -request@ffii.org, e.g., -cjk-request@ffii.org. - -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://cjk.ffii.org - -Additionally, the latest non-development version can be found on all CTAN -hosts and its mirrors in the directory /language/chinese. - - -The package comes in two parts: - - cjk-4.8.3.tar.gz: The source files. Needed for all platforms. - cjk-4.8.3-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/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.1 deleted file mode 100644 index 87eb59e4859..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.1 +++ /dev/null @@ -1,110 +0,0 @@ -.\" man page for sjisconv -.\" Copyright (C) 1994-2012 Werner Lemberg -.\" -.\" 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 07-May-2012 "CJK Version 4.8.3" -. -.\" ==== -.\" ==== 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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.c b/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.c deleted file mode 100644 index 5fd6ac1e214..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.c +++ /dev/null @@ -1,33 +0,0 @@ -#define banner \ -"sjisconv (CJK ver. 4.8.3)" \ - -/*2:*/ -#line 96 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/SJISconv/sjisconv.w" - -#include -#include - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.w b/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.w deleted file mode 100644 index 8d81c07081f..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisconv.w +++ /dev/null @@ -1,123 +0,0 @@ -% This is the cweb file sjisconv.w of the CJK Package Ver. 4.8.3 07-May-2012 - -% Copyright (C) 1994-2012 Werner Lemberg -% -% 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.3)} - -\def\topofcontents{ - \null\vfill - \centerline{\titlefont The {\ttitlefont sjisconv} program} - \vskip 20pt - \centerline{(CJK Version 4.8.3)} - \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.3)" - -@c -#include -#include @# - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjislatex b/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjislatex deleted file mode 100755 index 077eec710e0..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjislatex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisltx.bat b/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisltx.bat deleted file mode 100644 index 5702c113bdf..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisltx.bat +++ /dev/null @@ -1,3 +0,0 @@ -call f_name %1 -sjisconv < %1 > %fd%%fp%%fn%.cjk -latex %fd%%fu%%fn%.cjk diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisltx.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisltx.cmd deleted file mode 100644 index e6c72f9ff92..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjisltx.cmd +++ /dev/null @@ -1,44 +0,0 @@ -/*----------------------------------------------------------------------*\ - sjisltx.cmd - - This file is part of the CJK macro package for LaTeX2e ver. 4.8.3 - - Copyright (C) 1994-2012 Wonkoo Kim - - 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/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjispdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjispdflatex deleted file mode 100755 index a1395cee780..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/SJISconv/sjispdflatex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/cjklatex/cjklatex.c b/Build/source/texk/cjkutils/cjkutils-4.8.3/cjklatex/cjklatex.c deleted file mode 100644 index 822c6c1a449..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/cjklatex/cjklatex.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - 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 - Date : <29/06/2001> -*/ - -#ifndef LATEX -#define LATEX "latex" -#endif - -/* - Copyright (C) 2001-2012 F. Popineau - - 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 -#include - -#include -#include -#include - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5+latex b/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5+latex deleted file mode 100755 index 9fa75a712e3..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5+latex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5+pdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5+pdflatex deleted file mode 100755 index 88bd7232116..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5+pdflatex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5pltx.bat b/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5pltx.bat deleted file mode 100644 index ccc6c76acd5..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5pltx.bat +++ /dev/null @@ -1,3 +0,0 @@ -call f_name %1 -extconv < %1 > %fd%%fp%%fn%.cjk -latex %fd%%fu%%fn%.cjk diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5pltx.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5pltx.cmd deleted file mode 100644 index cf65f69393b..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/bg5pltx.cmd +++ /dev/null @@ -1,44 +0,0 @@ -/*----------------------------------------------------------------------*\ - bg5pltx.cmd - - This file is part of the CJK macro package for LaTeX2e ver. 4.8.3 - - Copyright (C) 1994-2012 Wonkoo Kim - - 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/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.1 deleted file mode 100644 index e09bfefb544..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.1 +++ /dev/null @@ -1,111 +0,0 @@ -.\" man page for bg5conv -.\" -.\" Copyright (C) 1994-2012 Werner Lemberg -.\" -.\" 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 07-May-2012 "CJK Version 4.8.3" -. -.\" ==== -.\" ==== 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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.c b/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.c deleted file mode 100644 index b57130f4ee3..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.c +++ /dev/null @@ -1,34 +0,0 @@ -#define banner \ -"extconv (CJK ver. 4.8.3)" \ - -/*2:*/ -#line 94 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/extconv/extconv.w" - -#include -#include - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.w b/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.w deleted file mode 100644 index f415466a4fb..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/extconv.w +++ /dev/null @@ -1,122 +0,0 @@ -% This is the cweb file extconv.w of the CJK Package Ver. 4.8.3 07-May-2012 - -% Copyright (C) 1994-2012 Werner Lemberg -% -% 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.3)} - -\def\topofcontents{ - \null\vfill - \centerline{\titlefont The {\ttitlefont extconv} program} - \vskip 20pt - \centerline{(CJK Version 4.8.3)} - \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.3)" - -@c -#include -#include @# - - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex b/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex deleted file mode 100755 index 9fa75a712e3..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex.bat b/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex.bat deleted file mode 100644 index ccc6c76acd5..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex.bat +++ /dev/null @@ -1,3 +0,0 @@ -call f_name %1 -extconv < %1 > %fd%%fp%%fn%.cjk -latex %fd%%fu%%fn%.cjk diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex.cmd deleted file mode 100644 index e831e7424a3..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbklatex.cmd +++ /dev/null @@ -1,44 +0,0 @@ -/*----------------------------------------------------------------------*\ - gbklatex.cmd - - This file is part of the CJK macro package for LaTeX2e ver. 4.8.3 - - Copyright (C) 1994-2012 Wonkoo Kim - - 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/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbkpdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbkpdflatex deleted file mode 100755 index 88bd7232116..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/extconv/gbkpdflatex +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/Makefile.gnu b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/Makefile.gnu deleted file mode 100644 index f33001dac15..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/Makefile.gnu +++ /dev/null @@ -1,127 +0,0 @@ -# This file is part of the CJK package Version 4.8.3 (07-May-2012) - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/Makefile.in b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/Makefile.in deleted file mode 100644 index 7f40c2c6080..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/Makefile.in +++ /dev/null @@ -1,127 +0,0 @@ -# Makefile for hbf2gf -- wl@gnu.org - -# Copyright (C) 1994-2012 Werner Lemberg -# -# 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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/README b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/README deleted file mode 100644 index a7de0ec1402..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/README +++ /dev/null @@ -1,2 +0,0 @@ -Additional installation documentation can be found in the files `INSTALL' -(in the top directory) and `doc/hbf2gf.txt'. diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/README b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/README deleted file mode 100644 index 689d59e7397..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/README +++ /dev/null @@ -1,10 +0,0 @@ -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5ka12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5ka12.cfg deleted file mode 100644 index f5c142f0235..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5ka12.cfg +++ /dev/null @@ -1,28 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5kr12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5kr12.cfg deleted file mode 100644 index 9d9da2c1a2f..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5kr12.cfg +++ /dev/null @@ -1,30 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5so12.cfg deleted file mode 100644 index dc0bcd9fbf0..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/b5so12.cfg +++ /dev/null @@ -1,31 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c1so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c1so12.cfg deleted file mode 100644 index de5b32b3efc..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c1so12.cfg +++ /dev/null @@ -1,28 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c2so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c2so12.cfg deleted file mode 100644 index 969af8fae14..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c2so12.cfg +++ /dev/null @@ -1,28 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c3so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c3so12.cfg deleted file mode 100644 index 0e65768ee5e..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c3so12.cfg +++ /dev/null @@ -1,28 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c4so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c4so12.cfg deleted file mode 100644 index 8ea3a8b270c..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c4so12.cfg +++ /dev/null @@ -1,28 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c5so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c5so12.cfg deleted file mode 100644 index 1b81c90a0d3..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c5so12.cfg +++ /dev/null @@ -1,28 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c6so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c6so12.cfg deleted file mode 100644 index 5b9c912ce53..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c6so12.cfg +++ /dev/null @@ -1,28 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c7so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c7so12.cfg deleted file mode 100644 index 051b2601426..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/c7so12.cfg +++ /dev/null @@ -1,28 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/csso12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/csso12.cfg deleted file mode 100644 index 9ad91b0c574..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/csso12.cfg +++ /dev/null @@ -1,28 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/gsfs14.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/gsfs14.cfg deleted file mode 100644 index 4b397aca464..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/gsfs14.cfg +++ /dev/null @@ -1,27 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/j2so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/j2so12.cfg deleted file mode 100644 index 7e0d70b5c0f..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/j2so12.cfg +++ /dev/null @@ -1,30 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/jsso12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/jsso12.cfg deleted file mode 100644 index 9bdfc7b1e8a..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/jsso12.cfg +++ /dev/null @@ -1,28 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/ksso17.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/ksso17.cfg deleted file mode 100644 index c82f7e7eee4..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/cfg/ksso17.cfg +++ /dev/null @@ -1,27 +0,0 @@ - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/configure.ac b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/configure.ac deleted file mode 100644 index 14bbfb7c447..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/configure.ac +++ /dev/null @@ -1,131 +0,0 @@ -dnl This file is part of the CJK package ver. 4.8.3 - -dnl Copyright (C) 1994-2012 Werner Lemberg - -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 - - -dnl Checks for header files. -AC_HEADER_STDC - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/dvidrv.btm b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/dvidrv.btm deleted file mode 100644 index dba59adb309..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/dvidrv.btm +++ /dev/null @@ -1,352 +0,0 @@ -setdos /y1 -:: -:: Copyright (C) 1994-2012 Werner Lemberg -:: -:: 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 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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emdir.c b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emdir.c deleted file mode 100644 index 4e759c83eb2..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emdir.c +++ /dev/null @@ -1,109 +0,0 @@ -/* emdir.c -- Written by Eberhard Mattes, donated to the public domain */ - -#include "emdir.h" - -#ifdef OS2 - -#undef HPS -#define INCL_DOSFILEMGR -#include -#include - -#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 -#include - -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 - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emdir.h b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emdir.h deleted file mode 100644 index 0606d476ab1..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emdir.h +++ /dev/null @@ -1,25 +0,0 @@ -/* 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 -#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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emtexdir.c b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emtexdir.c deleted file mode 100644 index 9a35570adb3..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emtexdir.c +++ /dev/null @@ -1,405 +0,0 @@ -/* emtexdir.c -- written by Eberhard Mattes, donated to the public domain */ - -#if defined (__EMX__) -#include -#else -#include "emdir.h" -#endif -#if defined(DJGPP) || defined(GO32) -#include -#endif -#include -#include -#include -#include -#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 - -int main (int argc, char *argv[]) -{ - struct emtex_dir ed; - int i; - unsigned flags1, flags2; - char path[260]; - - if (argc != 6) - { - puts ("Usage: emtexdir "); - 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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emtexdir.h b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emtexdir.h deleted file mode 100644 index a9a986db05b..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/emtexdir.h +++ /dev/null @@ -1,57 +0,0 @@ -/* 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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf.c b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf.c deleted file mode 100644 index dedb9650b21..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf.c +++ /dev/null @@ -1,1494 +0,0 @@ -/* - * 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 - * 17 October 1995 - * - * The following people have supplied bug fixes: - * - * Simon Chow - * Fung Fung Lee - * Man-Chi Pong - * Steven Simpson - * Charles Wang - * Werner Lemberg - * - * Ross no longer maintains this code. Please send bug reports to - * Werner Lemberg . - * - */ - -/* - * 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 -#include -#include -#include -#include -#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 - -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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf.h b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf.h deleted file mode 100644 index 34f5940a71b..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * 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 no longer maintains this code. Please send bug reports to - * Werner Lemberg . - * - */ -#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/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.1 b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.1 deleted file mode 100644 index 55bfddf57fa..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.1 +++ /dev/null @@ -1,718 +0,0 @@ -.\" man page for hbf2gf -.\" -.\" Copyright (C) 1994-2012 Werner Lemberg -.\" -.\" 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 07-May-2012 "CJK Version 4.8.3" -.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 -.br -Ross Paterson (the HBF API) -.C diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.c b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.c deleted file mode 100644 index 1c1d0358a39..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.c +++ /dev/null @@ -1,2242 +0,0 @@ -#define banner \ -"hbf2gf (CJK ver. 4.8.3)" \ - \ - -#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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -/*10:*/ -#line 408 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#ifdef TM_IN_SYS_TIME -#include -#endif -#include "hbf.h" - - - -/*:10*//*69:*/ -#line 2469 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -/*11:*/ -#line 429 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void write_file(void); - - -/*:11*//*13:*/ -#line 491 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void write_pre(void); - - -/*:13*//*16:*/ -#line 579 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void write_data(void); - - -/*:16*//*20:*/ -#line 690 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void write_post(void); - - -/*:20*//*25:*/ -#line 834 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void fputl(long,FILE*); - - -/*:25*//*29:*/ -#line 994 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void make_pixel_array(void); - - -/*:29*//*36:*/ -#line 1222 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -#ifdef __GNUC__ -__inline__ -#endif -void read_row(unsigned char*); - - -/*:36*//*39:*/ -#line 1272 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -#ifdef __GNUC__ -__inline__ -#endif -void write_row(unsigned char*); - - -/*:39*//*41:*/ -#line 1325 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void write_coding(void); - - -/*:41*//*45:*/ -#line 1486 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void write_pl(void); - - -/*:45*//*47:*/ -#line 1583 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void write_ovp(void); - - -/*:47*//*50:*/ -#line 1728 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void write_job(void); - - -/*:50*//*54:*/ -#line 1977 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void read_config(void); - - -/*:54*//*64:*/ -#line 2308 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -int fsearch(const char*); - - -/*:64*//*67:*/ -#line 2447 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void config_error(const char*); - - -/*:67*//*71:*/ -#line 2490 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -const char*TeX_search_version(void); - - -/*:71*//*74:*/ -#line 2525 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -#ifdef HAVE_EMTEXDIR -extern int setup_list(struct emtex_dir*,char*,const char*,unsigned); -int dir_setup(struct emtex_dir*,const char*,const char*,unsigned); -char*file_find(char*,struct emtex_dir*); -#endif - - -/*:74*//*79:*/ -#line 2613 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -char*TeX_search_cfg_file(char*); -char*TeX_search_hbf_file(char*); - - -/*:79*/ -#line 193 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -/*2:*/ -#line 127 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 1267 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -int threshold= 128; - - -/*:38*//*49:*/ -#line 1717 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 1972 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -char Buffer[STRING_LENGTH+1]; - - -/*:53*//*58:*/ -#line 2090 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -int offset_x; -int offset_y; - -HBF_CHAR user_min_char; -int have_min_char= FALSE; - -/*:58*//*60:*/ -#line 2247 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -HBF_CHAR min_char,max_char; - - -/*:60*//*62:*/ -#line 2274 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -char b2_codes[256]; -unsigned char min_2_byte,max_2_byte; -int nmb_2_bytes= 0; - - -/*:62*//*70:*/ -#line 2481 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 2518 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -#ifdef HAVE_EMTEXDIR -struct emtex_dir cfg_path,hbf_path; -#endif - - -/*:73*//*76:*/ -#line 2564 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -char name_buffer[FILE_NAME_LENGTH+1]; - - -/*:76*/ -#line 194 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - - - -int main(int argc,char*argv[]) -{char*p; - -/*78:*/ -#line 2586 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - - -/*7:*/ -#line 307 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -if(argc==2) -{if(strcmp(argv[1],"--help")==0) -/*6:*/ -#line 288 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -{printf(USAGE); -exit(0); -} - - -/*:6*/ -#line 310 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -else if(strcmp(argv[1],"--version")==0) -/*5:*/ -#line 261 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -{printf("\n"); -printf(banner); -printf(" (%s)\n",TeX_search_version()); -printf(VERSION); -exit(0); -} - - -/*:5*/ -#line 312 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - - -/*28:*/ -#line 903 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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=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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - - -/*9:*/ -#line 387 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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>24,f); -fputc(num>>16,f); -fputc(num>>8,f); -fputc(num,f); -} - - -/*:26*//*30:*/ -#line 999 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -} - - -/*:32*/ -#line 1064 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -/*34:*/ -#line 1140 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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=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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -} - - -/*:34*/ -#line 1066 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -} -} - - -/*:31*/ -#line 1035 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 1230 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -#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>bitshift)&1)==1?PIXEL_MAXVAL:0; -bP+= offset; -} -curr_row--; -} -else -{bitshift= -1; -for(col= 0,xP= pixelrow;col>bitshift)&1)==1?PIXEL_MAXVAL:0; ---bitshift; -} -} -} - - -/*:37*//*40:*/ -#line 1280 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -#ifdef __GNUC__ -__inline__ -#endif -void write_row(unsigned char*pixelrow) -{register int col; -register unsigned char*xP; - -for(col= 0,xP= pixelrow;col=threshold)?1:0; - -} - - -/*:40*//*42:*/ -#line 1333 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -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>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 1348 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -start: -/*44:*/ -#line 1425 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -while(x>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 1350 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -y++; -} -} - - -/*:42*//*46:*/ -#line 1491 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -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++))<=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++))<>8),j= 0;j>8),j= 0;jhbf_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 2024 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -/*59:*/ -#line 2098 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 2025 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - - -/*61:*/ -#line 2252 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 2027 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -/*63:*/ -#line 2281 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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 2028 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - - -fclose(config); -} - - -/*:55*//*65:*/ -#line 2313 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -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(*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(*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 2392 "/usr/local/home/wl/git/cjk/cjk-4.8.3/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(*P)||*P=='_')) -{fprintf(stderr, -"Invalid environment variable name in configuration file\n"); -exit(1); -} -*(env_p++)= *(P++); -while(*P) -{if(isalnum(*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 2367 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -else -*Buffer= '\0'; - -return(*Buffer)?1:0; -} - - -/*:65*//*68:*/ -#line 2452 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -void config_error(const char*message) -{fprintf(stderr,"Couldn't find `%s' entry in configuration file\n", -message); -exit(1); -} - - - -/*:68*//*72:*/ -#line 2495 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -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 2537 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -#ifdef HAVE_EMTEXDIR -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; -} - - -/*:75*//*77:*/ -#line 2569 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -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 2619 "/usr/local/home/wl/git/cjk/cjk-4.8.3/utils/hbf2gf/hbf2gf.w" - -#if defined(HAVE_LIBKPATHSEA) -char*TeX_search_cfg_file(char*name) -{ -return kpse_find_file(name,kpse_program_text_format,TRUE); -} - - -char*TeX_search_hbf_file(char*name) -{ -return kpse_find_file(name,kpse_miscfonts_format,TRUE); -} - - -#elif defined(HAVE_EMTEXDIR) -char*TeX_search_cfg_file(char*name) -{return file_find(name,&cfg_path); -} - - -char*TeX_search_hbf_file(char*name) -{return file_find(name,&hbf_path); -} - - -#elif defined(HAVE_MIKTEX) -char*TeX_search_cfg_file(char*name) -{char result[_MAX_PATH]; - -if(!miktex_find_input_file("hbf2gf",*name,result)) -return 0; -return strdup(result); -} - - -char*TeX_search_hbf_file(char*name) -{char result[_MAX_PATH]; - - -if(!miktex_find_miscfont_file(*name,result)) -return 0; -return strdup(result); -} - - -#else -char*TeX_search_cfg_file(char*name) -{return name; -} - - -char*TeX_search_hbf_file(char*name) -{return name; -} -#endif - - - -/*:80*/ diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.def b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.def deleted file mode 100644 index 784dc01da50..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.def +++ /dev/null @@ -1,3 +0,0 @@ -NAME HBF2GF WINDOWCOMPAT -DESCRIPTION 'hbf2gf (CJK Ver. 4.8.3)' -STACKSIZE 0x80000 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.w b/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.w deleted file mode 100644 index 21fd1df2e53..00000000000 --- a/Build/source/texk/cjkutils/cjkutils-4.8.3/hbf2gf/hbf2gf.w +++ /dev/null @@ -1,2816 +0,0 @@ -% This is the cweb file hbf2gf.w of the CJK package ver. 4.8.3 07-May-2012 - -% Copyright (C) 1994-2012 Werner Lemberg -% -% 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.3)} - -\def\topofcontents{ - \null\vfill - \centerline{\titlefont The {\ttitlefont hbf2gf} program} - \vskip 20pt - \centerline{(CJK Version 4.8.3)} - \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.3)" - - -@ -\.{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 */@# - -@= -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 -@@; -@@; -@@;@# - - -int main(int argc, char *argv[]) - {char *p; - - @@;@# - - @@;@# - - 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) - @@;@# - - @@;@# - - @@;@# - - 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" - -@= - {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" - -@= - {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. - -@= - if(argc == 2) - {if(strcmp(argv[1], "--help") == 0) - @@; - else if(strcmp(argv[1], "--version") == 0) - @@; - }@# - - 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. - -@= - {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|. - -@= - {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 */ - } - - -@ -@= -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#ifdef TM_IN_SYS_TIME -#include -#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. - -@= -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 headertstring " hbf2gf output " - -@= -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, headertstring);@# - - 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. - -@= -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 */ - - -@ -@= -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++) - @@; - } - - -@ -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 - -@= - {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}$ */ - -@= -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. - -@= -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}$ */@# - - @@; - @@; - @@; - } - - -@ -\.{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_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_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 - -@= - 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. - -@= -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 - -@= -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. - -@= - {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. - - -@= -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 - @@; - } - } - 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; - } - } - - -@ -@= - {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) - {@@; - @@; - } - } - - -@ -@= - 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; - }@# - - @@; - } - - -@ -Now |frac_row_left >= frac_row_to_fill|, so we can produce a 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. - -@= - 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; - } - }@# - - @@; - } - - -@ -@= - 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). - -@= -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. - -@= -int threshold = 128; - - -@ -@= -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 */ - -@= -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) - {@@; -start: - @@; - y++; - } - }@# - - -@ -@= - 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; - } - - -@ -@= - 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. - -@= -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. - -@= -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" - -@= -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; - - -@ -@= -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 - -@= -char Buffer[STRING_LENGTH + 1]; - - -@ -@= -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; - - - @@;@# - - 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); - } - - @@; - @@;@# - - @@; - @@;@# - - fclose(config); - } - - -@ -Here we check whether we have to add an 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"); - } - - -@ -@= - {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); - } - - -@ -@= -int offset_x; -int offset_y;@# - -HBF_CHAR user_min_char; -int have_min_char = FALSE; - -@ -@= - {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. - -@= -HBF_CHAR min_char, max_char; - - -@ -@= - {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 - -@= -char b2_codes[256]; -unsigned char min_2_byte, max_2_byte; -int nmb_2_bytes = 0; - - -@ -@= - {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. - -@= -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) - @@; - 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. - -@= - {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. - -@= -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. - -@= -#if defined(HAVE_LIBKPATHSEA) -#include "kpathsea/kpathsea.h" - -#elif defined(HAVE_EMTEXDIR) -#include "emtexdir.h" - -#elif defined(HAVE_MIKTEX) -#include "miktex.h" -#endif - -@ -@= -#if defined(HAVE_EMTEXDIR) -char emtex_version_string[] = "emTeXdir"; -#elif !defined(HAVE_MIKTEX) -char no_version_string[] = "no search library"; -#endif - - -@ -@= -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 - -@= -#ifdef HAVE_EMTEXDIR -struct emtex_dir cfg_path, hbf_path; -#endif - - -@ -@= -#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 - - -@ -@= -#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. - -@= -#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. - -@= -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/Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/ChangeLog b/Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/ChangeLog new file mode 100644 index 00000000000..d05c74e94fd --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/ChangeLog @@ -0,0 +1,71 @@ +2015-04-18 Peter Breitenlohner + + Imported cjk-4.8.4/utils source tree from: + http://cjk.ffii.org/cjk-4.8.4.tar.gz + * patch-01-static, patch-02-unused, patch-03-unsigned (removed): + Now included upstream. + * patch-04-mingw64: Adapted. + +2014-11-05 Peter Breitenlohner + + * patch-04-mingw64 (new): Required for MinGW64, but why? + +2014-06-19 Peter Breitenlohner + + * patch-03-unsigned (new): Avoid undefined behaviour. + +2012-12-07 Peter Breitenlohner + + * patch-02-unused (new): Drop unused variable (gcc-4.6 warning). + +2012-05-20 Peter Breitenlohner + + * patch-01-static (new): Build fix for 64-bit Mac OS X 10.7.3. + 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-11 Peter Breitenlohner + + Imported cjk-4.8.3/utils source tree from: + http://cjk.ffii.org/cjk-4.8.3.tar.gz + * patch-01-ANSI-C, patch-02-const, patch-03-kpathsea, + patch-04-cjklatex, patch-05-cjkpdflatex, patch-06-cjklatex, + patch-07-CEFconv, patch-09-from-git (removed): All included. + +2011-10-04 Peter Breitenlohner + + * patch-08-SJISconv (removed): The user-defined character area of + SJIS is not supported because it is not portable. + + Updates from http://git.savannah.gnu.org/r/cjk.git. + * patch-09-from-git (new): From Werner Lemberg . + Update test results tests/{cefs,sjis}conv.cjk. + +2011-09-17 Peter Breitenlohner + + * patch-07-CEFconv (new): Make sure that, as advertised, + cef5conv acts as bg5conv + cefconv and cefsconv as sjisconv + + cefconv; make TeX description of cefconv agree with the code. + * patch-08-SJISconv (new): Correct upper limit for first byte of + Kanji SJIS (CP 292) codes. + +2011-09-12 Peter Breitenlohner + + * patch-06-cjklatex (new): Drop #include . + +2010-12-19 Peter Breitenlohner + + Adapt to cjk-4.8.2/utils. + * patch-01-ANSI-C (new): ANSI C function declarations. + * patch-02-const (new): Declare numerous strings as const. + * patch-03-kpathsea (new): Require recent kpathsea version. + + * patch-04-cjklatex (new): Merge upstream versions with changes + from Akira (mail 18 Dec 2010 09:12:01). + Return type of main is int. ANSI C function declarations. + Declare functions as static. Declare various strings as const. + + * patch-05-cjkpdflatex (new) [LATEX]: Allow to build both + gbklatex.exe and gbkpdflatex.exe from cjklatex.c. + diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/TL-Changes b/Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/TL-Changes new file mode 100644 index 00000000000..e3e36c9fef6 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/TL-Changes @@ -0,0 +1,21 @@ +Changes applied to the cjk-4.8.4/utils tree as obtained from: + http://cjk.ffii.org/cjk-4.8.4.tar.gz + +Moved from top level to here: + ChangeLog + README + +Removed: + f_name.bat + hbf2gf/c-auto.h + hbf2gf/config.guess + hbf2gf/config.sub + hbf2gf/configure + hbf2gf/install-sh + hbf2gf/mkinstalldirs + hbf2gf/scripts/ + lisp/ + pyhyphen/ + subfonts/ + thaifont/ + diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/patch-04-mingw64 b/Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/patch-04-mingw64 new file mode 100644 index 00000000000..d429f5cb873 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4-PATCHES/patch-04-mingw64 @@ -0,0 +1,21 @@ +diff -ur cjkutils-4.8.4.orig/hbf2gf/hbf2gf.w cjkutils-4.8.4/hbf2gf/hbf2gf.w +--- cjkutils-4.8.4.orig/hbf2gf/hbf2gf.w 2015-04-18 08:51:28.000000000 +0200 ++++ cjkutils-4.8.4/hbf2gf/hbf2gf.w 2015-04-18 12:44:01.000000000 +0200 +@@ -486,7 +486,7 @@ + @d GF_ID 131 + @d PRE 247@# + +-@d header " hbf2gf output " ++@d headerstring " hbf2gf output " + + @= + static void write_pre(void); +@@ -502,7 +502,7 @@ + struct tm *time_now; + + +- strcpy(out_s, header);@# ++ strcpy(out_s, headerstring);@# + + secs_now = time(NULL); /* system date and time */ + time_now = localtime(&secs_now); diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.1 new file mode 100644 index 00000000000..a9e83901cf0 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.1 @@ -0,0 +1,110 @@ +.\" man page for bg5conv +.\" Copyright (C) 1994-2015 Werner Lemberg +.\" +.\" 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 18-Apr-2015 "CJK Version 4.8.4" +. +.\" ==== +.\" ==== 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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.c b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.c new file mode 100644 index 00000000000..b745e6a97f5 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.c @@ -0,0 +1,33 @@ +#define banner \ +"bg5conv (CJK ver. 4.8.4)" \ + +/*2:*/ +#line 94 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/Bg5conv/bg5conv.w" + +#include +#include + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.w b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.w new file mode 100644 index 00000000000..13165032d66 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5conv.w @@ -0,0 +1,121 @@ +% This is the cweb file bg5conv.w of the CJK Package Ver. 4.8.4 18-Apr-2015 + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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.4)} + +\def\topofcontents{ + \null\vfill + \centerline{\titlefont The {\ttitlefont bg5conv} program} + \vskip 20pt + \centerline{(CJK Version 4.8.4)} + \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.4)" + +@c +#include +#include @# + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex new file mode 100755 index 00000000000..2540f9524d8 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex.bat b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex.bat new file mode 100644 index 00000000000..91e7dfd8575 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex.cmd new file mode 100644 index 00000000000..facf871970c --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5latex.cmd @@ -0,0 +1,44 @@ +/*----------------------------------------------------------------------*\ + bg5latex.cmd + + This file is part of the CJK macro package for LaTeX2e ver. 4.8.4 + + Copyright (C) 1994-2015 Wonkoo Kim + + 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/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5pdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5pdflatex new file mode 100755 index 00000000000..9adacad3a68 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/Bg5conv/bg5pdflatex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.1 new file mode 100644 index 00000000000..d04c5271029 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.1 @@ -0,0 +1,127 @@ +.\" man page for cef5conv +.\" Copyright (C) 1994-2015 Werner Lemberg +.\" +.\" 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 18-Apr-2015 "CJK Version 4.8.4" +. +.\" ==== +.\" ==== 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 +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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.c b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.c new file mode 100644 index 00000000000..46228a1f5de --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.c @@ -0,0 +1,135 @@ +#define banner \ +"cef5conv (CJK ver. 4.8.4)" \ + +/*2:*/ +#line 108 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/CEFconv/cef5conv.w" + +#include +#include +#include + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.w b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.w new file mode 100644 index 00000000000..575ba253aea --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5conv.w @@ -0,0 +1,237 @@ +% This is the cweb file cef5conv.w of the CJK Package Ver. 4.8.4 18-Apr-2015 + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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.4)} + +\def\topofcontents{ + \null\vfill + \centerline{\titlefont The {\ttitlefont cef5conv} program} + \vskip 20pt + \centerline{(CJK Version 4.8.4)} + \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.4)" + +@c +#include +#include +#include @# + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5latex b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5latex new file mode 100755 index 00000000000..1b51a711d1b --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5latex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5ltx.bat b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5ltx.bat new file mode 100644 index 00000000000..187485301f9 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5ltx.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5ltx.cmd new file mode 100644 index 00000000000..f089e831c62 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5ltx.cmd @@ -0,0 +1,46 @@ +/*----------------------------------------------------------------------*\ + cef5ltx.cmd + + This file is part of the CJK macro package for LaTeX2e ver. 4.8.4 + + This file is part of the CJK macro package for LaTeX2e ver. 4.8.4 + + Copyright (C) 1994-2015 Wonkoo Kim + + 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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5pdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5pdflatex new file mode 100755 index 00000000000..1ae7b5953ef --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cef5pdflatex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.1 new file mode 100644 index 00000000000..7be7fae6ba8 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.1 @@ -0,0 +1,117 @@ +.\" man page for cefconv +.\" Copyright (C) 1994-2015 Werner Lemberg +.\" +.\" 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 18-Apr-2015 "CJK Version 4.8.4" +. +.\" ==== +.\" ==== 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 +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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.c b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.c new file mode 100644 index 00000000000..967672e7938 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.c @@ -0,0 +1,127 @@ +#define banner \ +"cefconv (CJK ver. 4.8.4)" \ + +/*2:*/ +#line 100 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/CEFconv/cefconv.w" + +#include +#include +#include + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.w b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.w new file mode 100644 index 00000000000..142a5d862be --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefconv.w @@ -0,0 +1,221 @@ +% This is the cweb file cefconv.w of the CJK Package Ver. 4.8.4 18-Apr-2015 + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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.4)} + +\def\topofcontents{ + \null\vfill + \centerline{\titlefont The {\ttitlefont cefconv} program} + \vskip 20pt + \centerline{(CJK Version 4.8.4)} + \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.4)" + +@c +#include +#include +#include @# + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex new file mode 100755 index 00000000000..79bcd8abe36 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex.bat b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex.bat new file mode 100644 index 00000000000..ba5925a6df3 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex.cmd new file mode 100644 index 00000000000..dcc3183431e --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/ceflatex.cmd @@ -0,0 +1,46 @@ +/*----------------------------------------------------------------------*\ + ceflatex.cmd + + This file is part of the CJK macro package for LaTeX2e ver. 4.8.4 + + This file is part of the CJK macro package for LaTeX2e ver. 4.8.4 + + Copyright (C) 1994-2015 Wonkoo Kim + + 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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefpdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefpdflatex new file mode 100755 index 00000000000..c1b776cffdf --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefpdflatex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.1 new file mode 100644 index 00000000000..4c38133298e --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.1 @@ -0,0 +1,127 @@ +.\" man page for cefsconv +.\" Copyright (C) 1994-2015 Werner Lemberg +.\" +.\" 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 18-Apr-2015 "CJK Version 4.8.4" +. +.\" ==== +.\" ==== 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 +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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.c b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.c new file mode 100644 index 00000000000..bd4a701ffc5 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.c @@ -0,0 +1,135 @@ +#define banner \ +"cefsconv (CJK ver. 4.8.4)" \ + +/*2:*/ +#line 111 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/CEFconv/cefsconv.w" + +#include +#include +#include + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.w b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.w new file mode 100644 index 00000000000..7e033f34ea4 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsconv.w @@ -0,0 +1,240 @@ +% This is the cweb file cefsconv.w of the CJK Package Ver. 4.8.4 18-Apr-2015 + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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.4)} + +\def\topofcontents{ + \null\vfill + \centerline{\titlefont The {\ttitlefont cefsconv} program} + \vskip 20pt + \centerline{(CJK Version 4.8.4)} + \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.4)" + +@c +#include +#include +#include @# + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefslatex b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefslatex new file mode 100755 index 00000000000..3d3daa175b1 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefslatex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsltx.bat b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsltx.bat new file mode 100644 index 00000000000..662ef9e3af4 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsltx.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsltx.cmd new file mode 100644 index 00000000000..7150e8aad1b --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefsltx.cmd @@ -0,0 +1,46 @@ +/*----------------------------------------------------------------------*\ + cefsltx.cmd + + This file is part of the CJK macro package for LaTeX2e ver. 4.8.4 + + This file is part of the CJK macro package for LaTeX2e ver. 4.8.4 + + Copyright (C) 1994-2015 Wonkoo Kim + + 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/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefspdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefspdflatex new file mode 100755 index 00000000000..ed981d4dfb2 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/CEFconv/cefspdflatex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/ChangeLog b/Build/source/texk/cjkutils/cjkutils-4.8.4/ChangeLog new file mode 100644 index 00000000000..f943ead7ea7 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/ChangeLog @@ -0,0 +1,2486 @@ +2015-04-18 Werner LEMBERG + + 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 + + [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 + + [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, ): Ditto. + +2014-08-31 Peter Breitenlohner + + * utils/hbf2gf/hbf2hf.w (path_open): Drop unused variable. + +2014-06-28 Leo Liu + + [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 + + * 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 + + * texinput/CJK.sty (\Unicode): Fix conditional to allow line breaks. + + Problem reported by Jinsong Zhao ; it seems that + this bug has been there since from the beginning. + +2012-06-21 Werner LEMBERG + + Make some commands robust. + + * texinput/CJK.sty (\CJKtilde, \standardtilde, \CJKspace, + \CJKnospace): Use \DeclareRobustCommand. + +2012-05-20 Peter Breitenlohner + + [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 + + * texlive/cjk.pl: Add missing file. + +2012-05-07 Werner LEMBERG + + 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 + + * 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 + + [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 + + [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 + + 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 + + [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 + + * texinput/Bg5/Bg5.cpx, texinput/JIS/JIS.cpx: Fix typos. + +2012-04-20 Werner LEMBERG + + * texinput/UTF8/zh-Hans.cpx: Synchronize. + +2012-04-20 Jiangsheng Yu + + * texinput/GB/GB.cap, texinput/GB/GB.cpx: Improve. + +2011-12-16 Hin-Tak Leung + + [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 + + * examples/thai.tex: Improve prologue comments. + +2011-10-04 Werner LEMBERG + + [CEFconv, SJISconv] Document missing range 0xF0-0xFC. + + * utils/CEFconv/cefsconv.w, utils/SJISconv/sjisconv.w: Do it. + +2011-10-04 Peter Breitenlohner + + [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 + + [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 + + [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 + + [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 + + [hbf2gf] Update manpage. + + * utils/hbf2gf/hbf2gf.1, doc/hbf2gf.txt: Remove information on + ancient kpathsea versions. + +2011-09-03 Peter Breitenlohner + + [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 + + [hbf2gf] Decorate with `const'. + + * utils/hbf2gf/hbf2gf.w, utils/hbf2gf/hbf.c: Do it. + +2011-09-03 Peter Breitenlohner + + 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 + + * doc/CJK.txt: Document possible problems in `tabular' environment. + Problem reported by LI Ruo-Meng <15003990378@163.com>. + +2010-01-04 Werner LEMBERG + + * doc/CJK.txt: Document Babel bug related to ^^xx notation. + Problem reported by Peter Grzybek . + +2009-11-07 Werner LEMBERG + + 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 + + * examples/CJKfntef.tex: Updated. + +2009-08-25 Wenchang Sun + + 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 + + * texinput/CJKfntef.sty: Replace \global with \CJKf@global. + +2009-01-19 Werner LEMBERG + + * texlive/cjk-build.pl: Remove unused stuff. + From Karl Berry. + +2009-01-05 Werner LEMBERG + + * doc/CJK.txt: Document usage of CJKutf8.sty with beamer class. + +2008-12-29 Werner LEMBERG + + 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 + + * 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 + + * 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 + + * doc/history.txt: Updated. + + * doc/CJKnumb.txt: New file. + + * MANIFEST: Updated. + +2008-12-28 Werner LEMBERG + + 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 + + * contrib/wadalab/DNP.txt: Renamed to... + * contrib/wadalab/wadalab.txt: This. + * MANIFEST: Updated. + +2008-12-28 Werner LEMBERG + + 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 + + * 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 + + * texinput/CJK.sty (\Unicode): Use vertical glyph representation + forms. + +2008-11-25 Werner LEMBERG + + * texinput/CJKnumb.sty (\CJKdigits*): New command to use traditional + form of glyph zero. + + * doc/history.txt: Updated. + +2008-10-01 Werner LEMBERG + + * *.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 + + * utils/subfonts/subfonts.pe: Fix error message for too-old + FontForge versions. + +2008-08-21 Werner LEMBERG + + * utils/subfonts/subfonts.pe: Handle CID-keyed fonts. + +2008-08-10 Werner LEMBERG + + 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 + + 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 + + Make macros in pinyin.sty robust. + + Problem reported by Denis Roegel . + + * 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 + + 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 + + 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 + + * Makefile (DISTDIRS): We are now using git, not CVS. + +2008-05-18 Werner LEMBERG + + * doc/history.txt: Mention xCJK.sty. + +2008-05-17 Werner LEMBERG + + * 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 + + * utils/hbf2gf/hbf2gf.1: Replace some `-' with `\-'. + +2008-03-10 Werner LEMBERG + + * utils/hbf2gf/hbf2gf.1: s|-|\-| where appropriate. + +2008-03-09 Werner LEMBERG + + * Makefile (XELATEX): Call xelatex twice. + (manpages): Increase font size to 11pt for DVI and PDF output. + +2008-03-09 Werner LEMBERG + + 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 + + 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 + + * texinput/CJKutf8.sty, texinput/xCJK.sty, + texinput/mule/MULEenc.sty: Use \ProvidesPackage, not \ProvidesFile. + +2008-03-03 Werner LEMBERG + + 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 + + * doc/xCJK.txt: New file. + * MANIFEST: Updated. + +2008-02-11 Werner LEMBERG + + * doc/fonts.txt: Document installation of cyberbit.ttf. + +2008-02-05 Werner LEMBERG + + 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 + + * 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 + + * utils/subfonts/vertical.pe, utils/subfonts/vertref.pe: Abort if no + vertical glyph representation forms are available. + +2006-12-05 Werner LEMBERG + + 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 + + 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 + + * texinput/CJK.enc: Add punctuation tables for GBK encoding. + +2007-11-06 Werner LEMBERG + + * 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 + + * texinput/CJKfntef.sty (\CJK@preUnderdot): Use \cdot (in math mode). + (\CJKxout): Use `/' in math mode. + (\CJKunderdotbasesep, \CJKunderdotsep): Adjusted. + +2007-10-26 Werner LEMBERG + + * 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 + + 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 + + * 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 + + * utils/subfonts/vertical.pe, utils.subfonts/vertref.pe: Adapt to + FontForge version 2007-Sep-10 and newer. + +2007-07-26 Gernot Hassenpflug + + * 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 + + * texinput/pinyin.sty (\ding): Rename to... + (\py@ding): This to make \ding work actually. + +2007-05-04 Werner LEMBERG + + * texinput/CJKvert.sty (\CJKsymbol): Honour \CJKhdef{offset}{...}. + * doc/fdxfiles.txt, doc/history.txt: Document it. + +2007-04-08 Werner LEMBERG + + * 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 + + * texinput/pinyin.sty (\py@macron, \py@@@v): Support T5 encoding. + * doc/history.txt: Document it. + +2006-10-31 Werner LEMBERG + + * doc/CJK.txt, doc/CJKutf8.txt: Mention Byte Order Mark in UTF-8. + +2006-10-19 Werner LEMBERG + + * 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 + + 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 + + * 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 + + * doc/CJKutf8.txt, doc/history.txt: Minor additions. + * MANIFEST: Sorted and updated. + +2006-10-05 Werner LEMBERG + + * 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 + + * 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 + + 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 + + * 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 + + * 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 + + 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 + + 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 + + * 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 + + * 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 + + * texinput/*: Add various replacement files for TeXLive. + +2006-08-17 Werner LEMBERG + + * doc/CJK.txt: Mention problem with fourier.sty. + +2006-08-01 Werner LEMBERG + + * doc/cjk-enc.txt: Mention problems with UTF-8. + +2006-07-30 Werner LEMBERG + + * contrib/wadalab/DNP.txt: Fix patch for wftodm.c. + +2006-04-25 Danai SAE-HAN + + * : Add GPL. + * MANIFEST: New file. + +2006-03-25 Werner LEMBERG + + * texinput/CJKutf8.sty (\pdfstringdefPreHook): Don't overwrite but + prepend to this macro. + +2006-03-23 Werner LEMBERG + + * 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 + + * texinput/KS/HLaTeX/c63sh.fd, texinput/KS/HLaTeX/c64sh.fd, + texinput/KS/HLaTeX/c65sh.fd: Fix font declaration. Bug reported by + Danai SAE-HAN . + +2006-02-20 Werner LEMBERG + + * texinput/UTF8/UTF8.bdg: Bugfix: Handle 0x80 also. + + * doc/history.txt: Mention it. + +2006-02-09 Werner LEMBERG + + 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 + + * 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 + + 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 + + * doc/CJK.txt: Mention usage of Bg5+ for HKSCS-2001/HKSCS-2004. + +2006-01-04 Werner LEMBERG + + * 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 + + * utils/hbf2gf/cfg/csso12.cfg: Fix typo. + +2005-10-31 Danai SAE-HAN + + * utils/subfonts/makefdx.pl: Provide header for output. + Add \CJKvlet lines. + +2005-08-19 Werner LEMBERG + + * doc/TeXLive.txt: New file, describing the relationship between + CJK files and TeXLive packages. + +2005-08-18 Werner LEMBERG + + * 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 + + 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 + + * 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 + + * COPYING: Updated to new FSF address. + +2005-08-05 Werner LEMBERG + + 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 + + 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 + + * 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 + + * 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 + + 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 + + * utils/subfont/uni2sfd.pl (read_tfmfile): Fix reading CHARWD, + CHARHT, and CHARDP. + +2005-07-31 Werner LEMBERG + + * utils/subfont/sfd2uni.pl: New script to produce Unicode virtual + subfonts from encoding specific subfonts. + +2005-07-29 Werner LEMBERG + + * 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 + + * 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 + + * utils/subfonts/makefdx.pl: New script to create FDX entries. + +2005-07-17 Werner LEMBERG + + * 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 + + * 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 + + * doc/history.txt: Updated. + +2005-07-05 Werner LEMBERG + + * utils/thaifont/tools/c90.etx: Fix some typos. + +2005-07-04 Werner LEMBERG + + 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 + + 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 + + * 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 + + * 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 + + * doc/CJK.doc: Improve documentation of `encapsulated' option. + Suggested by Brian Murphy. + +2005-04-26 Werner LEMBERG + + * 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 + + * 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 + + * texinput/CJK.sty (\CJKspace): Don't use \relax but \@empty. + +2005-03-02 Werner LEMBERG + + * doc/CJK.doc: Mention `CJKbookmarks' option of hyperref package. + +2005-02-23 Werner LEMBERG + + * README: Updated. No public CVS access possible currently. + +2004-07-26 Werner LEMBERG + + * 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 + + * 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 + + * doc/reftex.doc: New file. + * doc/history.txt: Updated. + +2004-06-07 Werner LEMBERG + + * 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 + + * 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 + + * contrib/wadalab/DNP.doc: Improve patch for wftodm.c. + +2004-04-29 Werner LEMBERG + + 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 + + * 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 + + Bug fix: Umlaut u with diacritic appears bold. + + * texinput/pinyin.sty (\py@@@v): Apply kerning at correct place. + +2004-02-07 Werner LEMBERG + + 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 + + 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 + + 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 + + * doc/pdf/*: New directory tree documenting usage of CJK for + improved PDF output. + * doc/history.txt: Document it. + +2004-01-29 Wenchang Sun + + * 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 + + 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 + + * texinput/mule/MULEenc.sty: Fix positions of \texordfeminine and + \textordmasculine. + +2003-09-20 Werner LEMBERG + + With the help of Paul Eggert and Edward G.J. + Lee , 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 + + * 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 + + * 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 + + * 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 + + Version 4.5.2 released + ====================== + + Update version numbers and time stamps in all non-binary files. + +2003-03-19 Werner LEMBERG + + Add improved support for pseudo-vertical typesetting. Based on + ideas by Robert Fendt . + + * 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 + + \///// + + This macro is then called if it exists, instead of calling + \CJKsymbol. For halfwidth katakana, the macro is called + + \//// + + For HLaTeX, the macro is called + + \///// + + For UTF8, only characters in the range 0x800-0xFFFF get the new + code. + + , , and 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 + + * texinput/pinyin.sty (\rua): New syllable. While only dialect, it + actually is used... + +2003-03-12 Werner LEMBERG + + * texinput/pinyin.sty (\den, \chua): Add missing syllables (found by + Jean-Luc Koning ). + +2003-03-07 Werner LEMBERG + + * texinput/pinyin.sty (\py@hy): Assure horizontal mode. + +2003-02-10 Werner LEMBERG + + * 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 + + 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 + + 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 + + * texinput/CNS/EUC-TW.chr (\CJK@shiftchar): Pass correct parameters + to \CJKchar. + +2002-06-19 Werner LEMBERG + + Version 4.5.1 released + ====================== + + Update version numbers and time stamps in all non-binary files. + +2002-06-17 Werner LEMBERG + + 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 + + * 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 + + * texinput/Bg5/c00bsmi.fd, texinput/Bg5/c00bsmir.fd: Fix typo. + +2002-06-13 Werner LEMBERG + + * 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 + + * texinput/JISdnp.enc (\CJK@JISdnpEncoding): Fix position of closing + brace. + +2002-06-07 Werner LEMBERG + + * texinput/thai/c90enc.def: New file, contributed by Dominique + Unruh . + * texinput/thai/thaicjk.ldf: Use it. + * doc/history.txt: Updated. + +2002-05-16 Werner LEMBERG + + * 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 + + * 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 + + * texinput/CJKnumb.sty (\CJK@traditionalNumbers, + \CJK@simplifiedNumbers): New macros. + Use them for GB, GBK, Bg5, Bg5+ hooks. + +2002-05-01 Werner LEMBERG + + * 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 + + * 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 + + * texinput/CJK.sty (\pickup@font): Add comment character. + +2002-04-28 Werner LEMBERG + + Preparation of release 4.5.0. + + * README: Updated. + +2002-04-27 Werner LEMBERG + + * texinput/CJK.sty (\CJKsymbol, \CJKsymbols): Simplified. + (\Unicode, \CJKenc): Fix error text. + +2001-10-08 Mike Fabian + + * contrib/wadalab/c42goth.fd: Use `dgj' for normal series and add + `\CJKbold' for bold series. + +2001-07-31 Werner LEMBERG + + * doc/CJK.doc: Note use of \cleardoublepage if problems occur with + two-column printing. + +2001-07-27 Fabrice Popineau + + * utils/cjklatex/cjklatex.c: New file. + +2001-06-27 Werner LEMBERG + + * 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 + + * texinput/CJK.enc (\CJK@disableMakeUppercase): Define it as \relax + if in preprocessed mode. + +2001-06-14 HANDA Ken'ichi + + * 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 + + 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 + + * texinputs/CJK.sty: Restore EOL character before loading `CJK.cfg'. + +2001-05-18 Werner LEMBERG + + * contrib/wadalab/DNP.doc: Document installation for pdfTeX. + * contrib/wadalab/makefont: Updated to normalize font matrix of + PS fonts. + +2001-04-24 Werner LEMBERG + + * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub: Updated to + latest version from gnu.org. + +2001-04-21 Werner LEMBERG + + * 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 + + * 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 + + * utils/lisp/emacs-20.3/cjk-enc.el: Fix documentation to follow + Elisp documentation conventions. + +2001-04-01 Werner LEMBERG + + Make UTF8 encoding work in TOC. + + * texinput/CJK.sty (\CJK@namedef): New macro. + * texinput/UTF8/UTF8.bdg: Use it. + +2001-03-28 Werner LEMBERG + + * texinput/mule/MULEenc.sty: Use \textnumero instead of \CYRNo + (found by Vladimir Volovich). + +2001-03-18 Werner LEMBERG + + * utils/lisp/cjkspace.el, INSTALL: Fix documentation. + +2001-03-15 Werner LEMBERG + + 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 + + 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 + + * doc/INSTALL: Minor improvements. + +2001-02-13 Werner LEMBERG + + * utils/hbf2gf/config.{guess,sub}: Updated (from ftp.gnu.org). + +2000-12-17 Werner LEMBERG + + * 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 + + * utils/hbf2gf/configure.in: Fix kpathsea checking message. + * utils/hbf2gf/configure: Updated. + +2000-12-02 Werner LEMBERG + + * 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 + + * doc/INSTALL: Fix documentation of --with-kpathsea-include. + * doc/cjk-enc.doc: Fix typo. + +2000-09-21 Werner LEMBERG + + * texinput/{CJK.sty, CJKulem.sty, pinyin.sty, ruby.sty}: Replacing + some \ifdim with \ifnum. + +2000-09-20 Werner LEMBERG + + * texinput/CJKulem.sty: Fixed two nasty bugs (spotted by Sim Ing + ): No underlining for \CJKglue and no \CJKglue + before and after \uline. + +2000-08-28 Werner LEMBERG + + * utils/thaifont/texmf/dvips/config/config.{norasi,dbtt}: New files. + * doc/thaifont.doc: Added info about PS font configuration. + +2000-08-24 Werner LEMBERG + + * utils/lisp/emacs-20.3/thai-word.el (thai-update-word-table): Add + documentation string. + +2000-08-24 HANDA Ken'ichi + + * 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 + + * texinput/thai/thaicjk.ldf: Remove warning about nonexistent + hyphenation patterns. + +2000-08-20 Werner LEMBERG + + 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 + + * examples/thai.tex: New file. + * doc/history.txt: Updated. + + * examples/CJKbabel.tex: Doc fixes. + +2000-08-17 Werner LEMBERG + + * doc/cjk-enc.el, doc/thaifont.doc: Give better URL for thailatex + package. + +2000-08-15 Werner LEMBERG + + 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 + + * 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 + + 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 . + Will now run under XEmacs also (with help of Martin Buchholz + ). 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 + + * texinput/CJKulem.sty: New file which provides CJK support for + ulem.sty. + * doc/history.txt, doc/CJK.doc: Updated. + +2000-08-09 Werner LEMBERG + + * 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 + + * utils/hbf2gf/config.guess, utils/hbf2gf/config.sub: Updated to + latest version from ftp.gnu.org. + +2000-07-27 Werner LEMBERG + + * utils/thaiconv/thaiconv.c: Improve comment. + + * *.fd: Set \hyphenchar to -1 for all CJK fonts. + +2000-06-23 Werner LEMBERG + + * 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 + + * 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 + + * texinput/*/*.cpx: Replace incorrect 0xFF with 0x7F. + +2000-04-18 Werner LEMBERG + + * 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 + + 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 + + * 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 + + * 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 + + * texinput/CJK.sty: Fixing definition of ^^7f to do nothing if + written to the TOC file. + +2000-03-12 Werner LEMBERG + + * 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 + + * 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 it is impossible to provide + hyphenation patterns for transcribed Japanese without semantic + analysis. + +2000-03-02 Werner LEMBERG + + * README, doc/INSTALL: Slight improvements. + + * utils/hbf2gf/Makefile.in, utils/hbf2gf/configure.in: Fix incorrect + test for NO_STRDUP. Thanks to . + +2000-02-06 Werner LEMBERG + + * 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 + for finding this bug). + +2000-01-26 Werner LEMBERG + + * 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 + + * 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@ + definitions. + +2000-01-14 Werner LEMBERG + + * doc/cjk-enc.doc: Added info about file variables to specify + document encoding. + +2000-01-03 Ching-Mo CHANG + + * 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 + + * utils/hbf2gf/configure.in: Removed `-pedantic' flag which causes + problems with newer gcc versions. + +1999-11-19 Werner LEMBERG + + * examples/muletest.tex, examples/CJKbabel.tex: Fixing a typo. + +1999-11-07 Werner LEMBERG + + * doc/CEF.doc: Minor fixes. + + * doc/CJK.doc: Updated; minor fixes. + +1999-11-06 Werner LEMBERG + + * doc/cjk-enc.doc, doc/commands.doc, doc/fonts.doc: Minor fixes. + + * doc/vertical.doc, doc/history.txt: Updated. + +1999-11-05 Werner LEMBERG + + * texinput/mule/MULEenc.sty: Added \CJKinclude{} and + \CJKbibliography{}. These functions act identically to + \include resp. \bibliography but load .cjk + resp. -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 + + * doc/cjk-enc.doc: Small improvement in explanation of usage with + AUC TeX. + +1999-10-24 Werner LEMBERG + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * doc/history.txt: Updated. + +1999-09-21 Werner LEMBERG + + * texinput/pinyin.sty: Adding hyphenation points at the end of all + syllables. + +1999-09-18 Werner LEMBERG + + * 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 + + * 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 + + * utils/thaiconv/thaiconv.c (adj): Fixed invalid array index in + case of marks without base characters. + +1999-07-07 Werner LEMBERG + + * texinput/Bg5/Bg5.chr, + texinput/extended.chr: Fixed a typo \CJK@temp->\CJK@gtemp + +1999-06-30 Werner LEMBERG + + * 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 + + * doc/TDS.doc: Completely revised. + +1999-06-10 Werner LEMBERG + + * 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 + + * 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 + + * *.fd files: minor documentation addition regarding font + encoding. + + * all files: Changed date/version to 4.3.0. + +1999-06-02 Werner LEMBERG + + * README: Added info about http and ftp home sites and how to + access the CVS repository. + +1999-06-01 Werner LEMBERG + + * README: Added info about CVS mailing list. + +1999-05-29 Werner LEMBERG + + * README: Added mailing list. + + * doc/INSTALL: Small correction. + + * README: Small additions. + +;; Local Variables: +;; coding: utf-8 +;; End: + + Copyright (C) 1999, 2001-2012 + Werner Lemberg + + 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/Build/source/texk/cjkutils/cjkutils-4.8.4/README b/Build/source/texk/cjkutils/cjkutils-4.8.4/README new file mode 100644 index 00000000000..cf33f17eb75 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/README @@ -0,0 +1,36 @@ +Welcome to CJK version 4.8.4 (18-Apr-2015), a LaTeX2e macro package which +enables the use of CJK scripts (Chinese/Japanese/Korean) in various +encodings, written by Werner Lemberg . + +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://cjk.ffii.org + +Additionally, the latest non-development version can be found on all CTAN +hosts and its mirrors in the directory /language/chinese. + + +The package comes in two parts: + + cjk-4.8.4.tar.gz: The source files. Needed for all platforms. + cjk-4.8.4-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/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.1 new file mode 100644 index 00000000000..c385eb616d4 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.1 @@ -0,0 +1,110 @@ +.\" man page for sjisconv +.\" Copyright (C) 1994-2015 Werner Lemberg +.\" +.\" 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 18-Apr-2015 "CJK Version 4.8.4" +. +.\" ==== +.\" ==== 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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.c b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.c new file mode 100644 index 00000000000..af121e555d3 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.c @@ -0,0 +1,33 @@ +#define banner \ +"sjisconv (CJK ver. 4.8.4)" \ + +/*2:*/ +#line 96 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/SJISconv/sjisconv.w" + +#include +#include + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.w b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.w new file mode 100644 index 00000000000..c1044cf36d9 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisconv.w @@ -0,0 +1,123 @@ +% This is the cweb file sjisconv.w of the CJK Package Ver. 4.8.4 18-Apr-2015 + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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.4)} + +\def\topofcontents{ + \null\vfill + \centerline{\titlefont The {\ttitlefont sjisconv} program} + \vskip 20pt + \centerline{(CJK Version 4.8.4)} + \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.4)" + +@c +#include +#include @# + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjislatex b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjislatex new file mode 100755 index 00000000000..b1086cba768 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjislatex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisltx.bat b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisltx.bat new file mode 100644 index 00000000000..5702c113bdf --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisltx.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisltx.cmd new file mode 100644 index 00000000000..2ff4e03e54d --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjisltx.cmd @@ -0,0 +1,44 @@ +/*----------------------------------------------------------------------*\ + sjisltx.cmd + + This file is part of the CJK macro package for LaTeX2e ver. 4.8.4 + + Copyright (C) 1994-2015 Wonkoo Kim + + 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/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjispdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjispdflatex new file mode 100755 index 00000000000..651570da7f2 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/SJISconv/sjispdflatex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/cjklatex/cjklatex.c b/Build/source/texk/cjkutils/cjkutils-4.8.4/cjklatex/cjklatex.c new file mode 100644 index 00000000000..678c1dd3a89 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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 + Date : <29/06/2001> +*/ + +#ifndef LATEX +#define LATEX "latex" +#endif + +/* + Copyright (C) 2001-2015 F. Popineau + + 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 +#include + +#include +#include +#include + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5+latex b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5+latex new file mode 100755 index 00000000000..82e706a44f7 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5+latex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5+pdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5+pdflatex new file mode 100755 index 00000000000..16377e9dc17 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5+pdflatex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5pltx.bat b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5pltx.bat new file mode 100644 index 00000000000..ccc6c76acd5 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5pltx.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5pltx.cmd new file mode 100644 index 00000000000..69a94952089 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/bg5pltx.cmd @@ -0,0 +1,44 @@ +/*----------------------------------------------------------------------*\ + bg5pltx.cmd + + This file is part of the CJK macro package for LaTeX2e ver. 4.8.4 + + Copyright (C) 1994-2015 Wonkoo Kim + + 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/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.1 b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.1 new file mode 100644 index 00000000000..1ef4b011d84 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.1 @@ -0,0 +1,111 @@ +.\" man page for bg5conv +.\" +.\" Copyright (C) 1994-2015 Werner Lemberg +.\" +.\" 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 18-Apr-2015 "CJK Version 4.8.4" +. +.\" ==== +.\" ==== 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 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.c b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.c new file mode 100644 index 00000000000..fdba62551c4 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.c @@ -0,0 +1,34 @@ +#define banner \ +"extconv (CJK ver. 4.8.4)" \ + +/*2:*/ +#line 94 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/extconv/extconv.w" + +#include +#include + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.w b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.w new file mode 100644 index 00000000000..019976889b9 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/extconv.w @@ -0,0 +1,122 @@ +% This is the cweb file extconv.w of the CJK Package Ver. 4.8.4 18-Apr-2015 + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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.4)} + +\def\topofcontents{ + \null\vfill + \centerline{\titlefont The {\ttitlefont extconv} program} + \vskip 20pt + \centerline{(CJK Version 4.8.4)} + \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.4)" + +@c +#include +#include @# + + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex new file mode 100755 index 00000000000..82e706a44f7 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex.bat b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex.bat new file mode 100644 index 00000000000..ccc6c76acd5 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex.cmd b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex.cmd new file mode 100644 index 00000000000..9bd1237934a --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbklatex.cmd @@ -0,0 +1,44 @@ +/*----------------------------------------------------------------------*\ + gbklatex.cmd + + This file is part of the CJK macro package for LaTeX2e ver. 4.8.4 + + Copyright (C) 1994-2015 Wonkoo Kim + + 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/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbkpdflatex b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbkpdflatex new file mode 100755 index 00000000000..16377e9dc17 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/extconv/gbkpdflatex @@ -0,0 +1,43 @@ +#! /bin/sh + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/Makefile.gnu b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/Makefile.gnu new file mode 100644 index 00000000000..1248c4f508a --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/Makefile.gnu @@ -0,0 +1,127 @@ +# This file is part of the CJK package Version 4.8.4 (18-Apr-2015) + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/Makefile.in b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/Makefile.in new file mode 100644 index 00000000000..937d5d6f818 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/Makefile.in @@ -0,0 +1,127 @@ +# Makefile for hbf2gf -- wl@gnu.org + +# Copyright (C) 1994-2015 Werner Lemberg +# +# 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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/README b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/README new file mode 100644 index 00000000000..a7de0ec1402 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/README b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/README new file mode 100644 index 00000000000..689d59e7397 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5ka12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5ka12.cfg new file mode 100644 index 00000000000..f5c142f0235 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5kr12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5kr12.cfg new file mode 100644 index 00000000000..9d9da2c1a2f --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/b5so12.cfg new file mode 100644 index 00000000000..dc0bcd9fbf0 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c1so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c1so12.cfg new file mode 100644 index 00000000000..de5b32b3efc --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c2so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c2so12.cfg new file mode 100644 index 00000000000..969af8fae14 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c3so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c3so12.cfg new file mode 100644 index 00000000000..0e65768ee5e --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c4so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c4so12.cfg new file mode 100644 index 00000000000..8ea3a8b270c --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c5so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c5so12.cfg new file mode 100644 index 00000000000..1b81c90a0d3 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c6so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c6so12.cfg new file mode 100644 index 00000000000..5b9c912ce53 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c7so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/c7so12.cfg new file mode 100644 index 00000000000..051b2601426 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/csso12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/csso12.cfg new file mode 100644 index 00000000000..9ad91b0c574 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/gsfs14.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/gsfs14.cfg new file mode 100644 index 00000000000..4b397aca464 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/j2so12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/j2so12.cfg new file mode 100644 index 00000000000..7e0d70b5c0f --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/jsso12.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/jsso12.cfg new file mode 100644 index 00000000000..9bdfc7b1e8a --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/ksso17.cfg b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/cfg/ksso17.cfg new file mode 100644 index 00000000000..c82f7e7eee4 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/configure.ac b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/configure.ac new file mode 100644 index 00000000000..4c28719516c --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/configure.ac @@ -0,0 +1,131 @@ +dnl This file is part of the CJK package ver. 4.8.4 + +dnl Copyright (C) 1994-2015 Werner Lemberg + +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 + + +dnl Checks for header files. +AC_HEADER_STDC + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/dvidrv.btm b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/dvidrv.btm new file mode 100644 index 00000000000..4ec03d0bf20 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/dvidrv.btm @@ -0,0 +1,352 @@ +setdos /y1 +:: +:: Copyright (C) 1994-2015 Werner Lemberg +:: +:: 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 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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emdir.c b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emdir.c new file mode 100644 index 00000000000..4e759c83eb2 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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 +#include + +#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 +#include + +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 + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emdir.h b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emdir.h new file mode 100644 index 00000000000..0606d476ab1 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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 +#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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emtexdir.c b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emtexdir.c new file mode 100644 index 00000000000..9a35570adb3 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emtexdir.c @@ -0,0 +1,405 @@ +/* emtexdir.c -- written by Eberhard Mattes, donated to the public domain */ + +#if defined (__EMX__) +#include +#else +#include "emdir.h" +#endif +#if defined(DJGPP) || defined(GO32) +#include +#endif +#include +#include +#include +#include +#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 + +int main (int argc, char *argv[]) +{ + struct emtex_dir ed; + int i; + unsigned flags1, flags2; + char path[260]; + + if (argc != 6) + { + puts ("Usage: emtexdir "); + 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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emtexdir.h b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/emtexdir.h new file mode 100644 index 00000000000..a9a986db05b --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf.c b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf.c new file mode 100644 index 00000000000..dedb9650b21 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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 + * 17 October 1995 + * + * The following people have supplied bug fixes: + * + * Simon Chow + * Fung Fung Lee + * Man-Chi Pong + * Steven Simpson + * Charles Wang + * Werner Lemberg + * + * Ross no longer maintains this code. Please send bug reports to + * Werner Lemberg . + * + */ + +/* + * 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 +#include +#include +#include +#include +#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 + +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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf.h b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf.h new file mode 100644 index 00000000000..34f5940a71b --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/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 no longer maintains this code. Please send bug reports to + * Werner Lemberg . + * + */ +#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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.1 b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.1 new file mode 100644 index 00000000000..144e7e68930 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.1 @@ -0,0 +1,718 @@ +.\" man page for hbf2gf +.\" +.\" Copyright (C) 1994-2015 Werner Lemberg +.\" +.\" 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 18-Apr-2015 "CJK Version 4.8.4" +.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 +.br +Ross Paterson (the HBF API) +.C diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.c b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.c new file mode 100644 index 00000000000..1e250496a64 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.c @@ -0,0 +1,2250 @@ +#define banner \ +"hbf2gf (CJK ver. 4.8.4)" \ + \ + +#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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +/*10:*/ +#line 408 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#ifdef TM_IN_SYS_TIME +#include +#endif +#include "hbf.h" + + + +/*:10*//*69:*/ +#line 2473 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +/*11:*/ +#line 429 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void write_file(void); + + +/*:11*//*13:*/ +#line 491 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void write_pre(void); + + +/*:13*//*16:*/ +#line 579 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void write_data(void); + + +/*:16*//*20:*/ +#line 690 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void write_post(void); + + +/*:20*//*25:*/ +#line 834 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void fputl(long,FILE*); + + +/*:25*//*29:*/ +#line 994 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void make_pixel_array(void); + + +/*:29*//*36:*/ +#line 1222 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static +#ifdef __GNUC__ +__inline__ +#endif +void read_row(unsigned char*); + + +/*:36*//*39:*/ +#line 1274 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static +#ifdef __GNUC__ +__inline__ +#endif +void write_row(unsigned char*); + + +/*:39*//*41:*/ +#line 1329 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void write_coding(void); + + +/*:41*//*45:*/ +#line 1490 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void write_pl(void); + + +/*:45*//*47:*/ +#line 1587 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void write_ovp(void); + + +/*:47*//*50:*/ +#line 1732 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void write_job(void); + + +/*:50*//*54:*/ +#line 1981 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void read_config(void); + + +/*:54*//*64:*/ +#line 2312 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static int fsearch(const char*); + + +/*:64*//*67:*/ +#line 2451 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static void config_error(const char*); + + +/*:67*//*71:*/ +#line 2494 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static const char*TeX_search_version(void); + + +/*:71*//*74:*/ +#line 2529 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +static char*TeX_search_cfg_file(char*); +static char*TeX_search_hbf_file(char*); + + +/*:79*/ +#line 193 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +/*2:*/ +#line 127 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +int threshold= 128; + + +/*:38*//*49:*/ +#line 1721 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +char Buffer[STRING_LENGTH+1]; + + +/*:53*//*58:*/ +#line 2094 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +int offset_x; +int offset_y; + +HBF_CHAR user_min_char; +int have_min_char= FALSE; + +/*:58*//*60:*/ +#line 2251 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +HBF_CHAR min_char,max_char; + + +/*:60*//*62:*/ +#line 2278 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +#ifdef HAVE_EMTEXDIR +struct emtex_dir cfg_path,hbf_path; +#endif + + +/*:73*//*76:*/ +#line 2569 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +#ifdef HAVE_EMTEXDIR +char name_buffer[FILE_NAME_LENGTH+1]; +#endif + + +/*:76*/ +#line 194 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + + + +int main(int argc,char*argv[]) +{char*p; + +/*78:*/ +#line 2594 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + + +/*7:*/ +#line 307 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +if(argc==2) +{if(strcmp(argv[1],"--help")==0) +/*6:*/ +#line 288 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +{printf(USAGE); +exit(0); +} + + +/*:6*/ +#line 310 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +else if(strcmp(argv[1],"--version")==0) +/*5:*/ +#line 261 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +{printf("\n"); +printf(banner); +printf(" (%s)\n",TeX_search_version()); +printf(VERSION); +exit(0); +} + + +/*:5*/ +#line 312 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + + +/*28:*/ +#line 903 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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=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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + + +/*9:*/ +#line 387 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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>24,f); +fputc(num>>16,f); +fputc(num>>8,f); +fputc(num,f); +} + + +/*:26*//*30:*/ +#line 999 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +} + + +/*:32*/ +#line 1064 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +/*34:*/ +#line 1140 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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=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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +} + + +/*:34*/ +#line 1066 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +} +} + + +/*:31*/ +#line 1035 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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>bitshift)&1)==1?PIXEL_MAXVAL:0; +bP+= offset; +} +curr_row--; +} +else +{bitshift= -1; +for(col= 0,xP= pixelrow;col>bitshift)&1)==1?PIXEL_MAXVAL:0; +--bitshift; +} +} +} + + +/*:37*//*40:*/ +#line 1283 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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=threshold)?1:0; + +} + + +/*:40*//*42:*/ +#line 1337 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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>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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +start: +/*44:*/ +#line 1429 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +while(x>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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +y++; +} +} + + +/*:42*//*46:*/ +#line 1495 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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++))<=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++))<>8),j= 0;j>8),j= 0;jhbf_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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +/*59:*/ +#line 2102 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + + +/*61:*/ +#line 2256 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +/*63:*/ +#line 2285 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + + +fclose(config); +} + + +/*:55*//*65:*/ +#line 2317 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w" + +else +*Buffer= '\0'; + +return(*Buffer)?1:0; +} + + +/*:65*//*68:*/ +#line 2456 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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 "/usr/local/home/wl/git/cjk/cjk-4.8.4/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/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.def b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.def new file mode 100644 index 00000000000..583767e897d --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.def @@ -0,0 +1,3 @@ +NAME HBF2GF WINDOWCOMPAT +DESCRIPTION 'hbf2gf (CJK Ver. 4.8.4)' +STACKSIZE 0x80000 diff --git a/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.w b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.w new file mode 100644 index 00000000000..2a6c5b552d1 --- /dev/null +++ b/Build/source/texk/cjkutils/cjkutils-4.8.4/hbf2gf/hbf2gf.w @@ -0,0 +1,2816 @@ +% This is the cweb file hbf2gf.w of the CJK package ver. 4.8.4 18-Apr-2015 + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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.4)} + +\def\topofcontents{ + \null\vfill + \centerline{\titlefont The {\ttitlefont hbf2gf} program} + \vskip 20pt + \centerline{(CJK Version 4.8.4)} + \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.4)" + + +@ +\.{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 */@# + +@= +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 +@@; +@@; +@@;@# + + +int main(int argc, char *argv[]) + {char *p; + + @@;@# + + @@;@# + + 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) + @@;@# + + @@;@# + + @@;@# + + 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" + +@= + {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" + +@= + {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. + +@= + if(argc == 2) + {if(strcmp(argv[1], "--help") == 0) + @@; + else if(strcmp(argv[1], "--version") == 0) + @@; + }@# + + 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. + +@= + {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|. + +@= + {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 */ + } + + +@ +@= +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#ifdef TM_IN_SYS_TIME +#include +#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. + +@= +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 headerstring " hbf2gf output " + +@= +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, headerstring);@# + + 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. + +@= +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 */ + + +@ +@= +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++) + @@; + } + + +@ +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 + +@= + {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}$ */ + +@= +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. + +@= +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}$ */@# + + @@; + @@; + @@; + } + + +@ +\.{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_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_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 + +@= + 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. + +@= +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 + +@= +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. + +@= + {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. + + +@= +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 + @@; + } + } + 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; + } + } + + +@ +@= + {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) + {@@; + @@; + } + } + + +@ +@= + 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; + }@# + + @@; + } + + +@ +Now |frac_row_left >= frac_row_to_fill|, so we can produce a 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. + +@= + 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; + } + }@# + + @@; + } + + +@ +@= + 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). + +@= +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. + +@= +int threshold = 128; + + +@ +@= +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 */ + +@= +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) + {@@; +start: + @@; + y++; + } + }@# + + +@ +@= + 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; + } + + +@ +@= + 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. + +@= +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. + +@= +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" + +@= +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; + + +@ +@= +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 + +@= +char Buffer[STRING_LENGTH + 1]; + + +@ +@= +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; + + + @@;@# + + 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); + } + + @@; + @@;@# + + @@; + @@;@# + + fclose(config); + } + + +@ +Here we check whether we have to add an 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"); + } + + +@ +@= + {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); + } + + +@ +@= +int offset_x; +int offset_y;@# + +HBF_CHAR user_min_char; +int have_min_char = FALSE; + +@ +@= + {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. + +@= +HBF_CHAR min_char, max_char; + + +@ +@= + {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 + +@= +char b2_codes[256]; +unsigned char min_2_byte, max_2_byte; +int nmb_2_bytes = 0; + + +@ +@= + {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. + +@= +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) + @@; + 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. + +@= + {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. + +@= +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. + +@= +#if defined(HAVE_LIBKPATHSEA) +#include "kpathsea/kpathsea.h" + +#elif defined(HAVE_EMTEXDIR) +#include "emtexdir.h" + +#elif defined(HAVE_MIKTEX) +#include "miktex.h" +#endif + +@ +@= +#if defined(HAVE_EMTEXDIR) +char emtex_version_string[] = "emTeXdir"; +#elif !defined(HAVE_MIKTEX) +char no_version_string[] = "no search library"; +#endif + + +@ +@= +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 + +@= +#ifdef HAVE_EMTEXDIR +struct emtex_dir cfg_path, hbf_path; +#endif + + +@ +@= +#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 + + +@ +@= +#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. + +@= +#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. + +@= +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/Build/source/texk/cjkutils/configure b/Build/source/texk/cjkutils/configure index 8abcb21351f..8f707db2cbf 100755 --- a/Build/source/texk/cjkutils/configure +++ b/Build/source/texk/cjkutils/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for CJK utils (TeX Live) 4.8.3. +# Generated by GNU Autoconf 2.69 for CJK utils (TeX Live) 4.8.4. # # Report bugs to . # @@ -590,12 +590,12 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='CJK utils (TeX Live)' PACKAGE_TARNAME='cjk-utils--tex-live-' -PACKAGE_VERSION='4.8.3' -PACKAGE_STRING='CJK utils (TeX Live) 4.8.3' +PACKAGE_VERSION='4.8.4' +PACKAGE_STRING='CJK utils (TeX Live) 4.8.4' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' -ac_unique_file="cjkutils-4.8.3/hbf2gf/hbf.h" +ac_unique_file="cjkutils-4.8.4/hbf2gf/hbf.h" # Factoring default headers for most tests. ac_includes_default="\ #include @@ -1337,7 +1337,7 @@ 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 CJK utils (TeX Live) 4.8.3 to adapt to many kinds of systems. +\`configure' configures CJK utils (TeX Live) 4.8.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1408,7 +1408,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of CJK utils (TeX Live) 4.8.3:";; + short | recursive ) echo "Configuration of CJK utils (TeX Live) 4.8.4:";; esac cat <<\_ACEOF @@ -1527,7 +1527,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -CJK utils (TeX Live) configure 4.8.3 +CJK utils (TeX Live) configure 4.8.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2137,7 +2137,7 @@ 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 CJK utils (TeX Live) $as_me 4.8.3, which was +It was created by CJK utils (TeX Live) $as_me 4.8.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -7822,7 +7822,7 @@ fi # Define the identity of the package. PACKAGE='cjk-utils--tex-live-' - VERSION='4.8.3' + VERSION='4.8.4' # Some tools Automake needs. @@ -13886,7 +13886,7 @@ Usage: $0 [OPTIONS] Report bugs to ." lt_cl_version="\ -CJK utils (TeX Live) config.lt 4.8.3 +CJK utils (TeX Live) config.lt 4.8.4 configured by $0, generated by GNU Autoconf 2.69. Copyright (C) 2011 Free Software Foundation, Inc. @@ -15156,7 +15156,7 @@ fi -CJKUTILS_TREE=cjkutils-4.8.3 +CJKUTILS_TREE=cjkutils-4.8.4 ac_config_files="$ac_config_files Makefile" @@ -15704,7 +15704,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by CJK utils (TeX Live) $as_me 4.8.3, which was +This file was extended by CJK utils (TeX Live) $as_me 4.8.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15770,7 +15770,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -CJK utils (TeX Live) config.status 4.8.3 +CJK utils (TeX Live) config.status 4.8.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/texk/cjkutils/extconv.c b/Build/source/texk/cjkutils/extconv.c index 035678586bc..78f13d14c02 100644 --- a/Build/source/texk/cjkutils/extconv.c +++ b/Build/source/texk/cjkutils/extconv.c @@ -1,8 +1,8 @@ #define banner \ -"extconv (CJK ver. 4.8.3)" \ +"extconv (CJK ver. 4.8.4)" \ /*2:*/ -#line 94 "./cjkutils-4.8.3/extconv/extconv.w" +#line 94 "./cjkutils-4.8.4/extconv/extconv.w" #include #include diff --git a/Build/source/texk/cjkutils/hbf2gf.c b/Build/source/texk/cjkutils/hbf2gf.c index 14d296f6767..90620308edd 100644 --- a/Build/source/texk/cjkutils/hbf2gf.c +++ b/Build/source/texk/cjkutils/hbf2gf.c @@ -1,5 +1,5 @@ #define banner \ -"hbf2gf (CJK ver. 4.8.3)" \ +"hbf2gf (CJK ver. 4.8.4)" \ \ #define TRUE 1 @@ -100,10 +100,10 @@ #define VALID_SUBCODE 1 \ /*4:*/ -#line 191 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 191 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" /*10:*/ -#line 408 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 408 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" #ifdef HAVE_CONFIG_H #include @@ -121,7 +121,7 @@ /*:10*//*69:*/ -#line 2473 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2473 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" #if defined(HAVE_LIBKPATHSEA) #include "kpathsea/kpathsea.h" @@ -134,46 +134,46 @@ #endif /*:69*/ -#line 192 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 192 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" /*11:*/ -#line 429 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 429 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_file(void); /*:11*//*13:*/ -#line 491 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 491 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_pre(void); /*:13*//*16:*/ -#line 579 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 579 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_data(void); /*:16*//*20:*/ -#line 690 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 690 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_post(void); /*:20*//*25:*/ -#line 834 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 834 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void fputl(long,FILE*); /*:25*//*29:*/ -#line 994 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 994 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void make_pixel_array(void); /*:29*//*36:*/ -#line 1222 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1222 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static #ifdef __GNUC__ @@ -183,7 +183,7 @@ void read_row(unsigned char*); /*:36*//*39:*/ -#line 1274 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1274 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static #ifdef __GNUC__ @@ -193,55 +193,55 @@ void write_row(unsigned char*); /*:39*//*41:*/ -#line 1329 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1329 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_coding(void); /*:41*//*45:*/ -#line 1490 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1490 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_pl(void); /*:45*//*47:*/ -#line 1587 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1587 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_ovp(void); /*:47*//*50:*/ -#line 1732 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1732 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_job(void); /*:50*//*54:*/ -#line 1981 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1981 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void read_config(void); /*:54*//*64:*/ -#line 2312 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2312 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static int fsearch(const char*); /*:64*//*67:*/ -#line 2451 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2451 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void config_error(const char*); /*:67*//*71:*/ -#line 2494 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2494 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static const char*TeX_search_version(void); /*:71*//*74:*/ -#line 2529 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2529 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" #ifdef HAVE_EMTEXDIR extern int setup_list(struct emtex_dir*,char*,const char*,unsigned); @@ -251,17 +251,17 @@ static char*file_find(char*,struct emtex_dir*); /*:74*//*79:*/ -#line 2621 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2621 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static char*TeX_search_cfg_file(char*); static char*TeX_search_hbf_file(char*); /*:79*/ -#line 193 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 193 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" /*2:*/ -#line 127 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 127 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" int nmb_files= -1; int unicode= FALSE; @@ -302,7 +302,7 @@ int end_of_file= FALSE; /*:2*//*15:*/ -#line 538 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 538 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" long char_adr[256]; long*char_adr_p; @@ -344,7 +344,7 @@ int dot_count; /*:15*//*19:*/ -#line 667 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 667 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" char coding[STRING_LENGTH+1]; char comment[STRING_LENGTH+1]; @@ -363,7 +363,7 @@ double ppp_y; /*:19*//*27:*/ -#line 871 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 871 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" HBF_CHAR code; const unsigned char*bitmap; @@ -386,13 +386,13 @@ long s_mag_x,s_mag_y,s_slant; /*:27*//*38:*/ -#line 1269 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1269 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" int threshold= 128; /*:38*//*49:*/ -#line 1721 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1721 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" char job_extension[EXTENSION_LENGTH+1]; char rm_command[STRING_LENGTH+1]; @@ -404,13 +404,13 @@ int ofm_file= FALSE; /*:49*//*53:*/ -#line 1976 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1976 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" char Buffer[STRING_LENGTH+1]; /*:53*//*58:*/ -#line 2094 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2094 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" int offset_x; int offset_y; @@ -419,13 +419,13 @@ HBF_CHAR user_min_char; int have_min_char= FALSE; /*:58*//*60:*/ -#line 2251 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2251 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" HBF_CHAR min_char,max_char; /*:60*//*62:*/ -#line 2278 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2278 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" char b2_codes[256]; unsigned char min_2_byte,max_2_byte; @@ -433,7 +433,7 @@ int nmb_2_bytes= 0; /*:62*//*70:*/ -#line 2485 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2485 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" #if defined(HAVE_EMTEXDIR) char emtex_version_string[]= "emTeXdir"; @@ -443,7 +443,7 @@ char no_version_string[]= "no search library"; /*:70*//*73:*/ -#line 2522 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2522 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" #ifdef HAVE_EMTEXDIR struct emtex_dir cfg_path,hbf_path; @@ -451,7 +451,7 @@ struct emtex_dir cfg_path,hbf_path; /*:73*//*76:*/ -#line 2569 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2569 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" #ifdef HAVE_EMTEXDIR char name_buffer[FILE_NAME_LENGTH+1]; @@ -459,7 +459,7 @@ char name_buffer[FILE_NAME_LENGTH+1]; /*:76*/ -#line 194 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 194 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" @@ -467,7 +467,7 @@ int main(int argc,char*argv[]) {char*p; /*78:*/ -#line 2594 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 2594 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" #if defined(HAVE_LIBKPATHSEA) kpse_set_program_name(argv[0],"hbf2gf"); @@ -488,16 +488,16 @@ exit(1); /*:78*/ -#line 200 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 200 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" /*7:*/ -#line 307 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 307 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" if(argc==2) {if(strcmp(argv[1],"--help")==0) /*6:*/ -#line 288 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 288 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" {printf(USAGE); exit(0); @@ -505,11 +505,11 @@ exit(0); /*:6*/ -#line 310 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 310 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" else if(strcmp(argv[1],"--version")==0) /*5:*/ -#line 261 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 261 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" {printf("\n"); printf(banner); @@ -520,7 +520,7 @@ exit(0); /*:5*/ -#line 312 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 312 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" } @@ -558,7 +558,7 @@ exit(1); /*:7*/ -#line 202 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 202 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" if(!quiet) @@ -587,7 +587,7 @@ read_config(); if(mf_like) /*8:*/ -#line 352 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 352 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" {if(unicode) file_number= (int)strtol(&argv[1][strlen(argv[1])-2], @@ -615,11 +615,11 @@ y_scale= (double)x_resolution/y_scale; /*:8*/ -#line 229 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 229 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" /*28:*/ -#line 903 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 903 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" {int col,offset; @@ -702,11 +702,11 @@ s_slant= slant*SCALE; /*:28*/ -#line 231 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 231 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" /*9:*/ -#line 387 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 387 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" {int j,max_numb; @@ -728,7 +728,7 @@ nmb_files= j; /*:9*/ -#line 233 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 233 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" if(tfm_files) @@ -746,7 +746,7 @@ return 0; /*:4*//*12:*/ -#line 437 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 437 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_file(void) {char output_file[FILE_NAME_LENGTH+1]; @@ -790,7 +790,7 @@ write_data(); /*:12*//*14:*/ -#line 498 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 498 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_pre(void) {char out_s[40],s[20]; @@ -813,7 +813,7 @@ fputs(out_s,out); /*:14*//*17:*/ -#line 584 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 584 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_data(void) {dot_count= 0; @@ -821,7 +821,7 @@ char_adr_p= char_adr; for(last_char= 0;(last_char<256)&&!end_of_file;last_char++) /*18:*/ -#line 609 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 609 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" {if(dot_count++%10==0) if(pk_files&&!quiet) @@ -865,13 +865,13 @@ fputc(EOC,out); /*:18*/ -#line 590 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 590 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" } /*:17*//*21:*/ -#line 695 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 695 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void write_post(void) {long special_adr; @@ -899,7 +899,7 @@ tfm_width= (tfm_output_size_x+2*tfm_offset_x)*_2_20; /*22:*/ -#line 741 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 741 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" special_adr= ftell(out); @@ -917,10 +917,10 @@ fputs(comment,out); /*:22*/ -#line 721 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 721 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" /*23:*/ -#line 770 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 770 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" post_adr= ftell(out); fputc(POST,out); @@ -959,10 +959,10 @@ fputl(*char_adr_p++,out); /*:23*/ -#line 722 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 722 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" /*24:*/ -#line 821 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 821 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" fputc(POSTPOST,out); fputl(post_adr,out); @@ -974,13 +974,13 @@ fputc(POSTPOST_ID,out); /*:24*/ -#line 723 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 723 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" } /*:21*//*26:*/ -#line 839 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 839 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void fputl(long num,FILE*f) {fputc(num>>24,f); @@ -991,7 +991,7 @@ fputc(num,f); /*:26*//*30:*/ -#line 999 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 999 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static void make_pixel_array(void) {unsigned char*prP; @@ -1029,7 +1029,7 @@ if(!bitmap) empty_char= TRUE; else /*31:*/ -#line 1058 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1058 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" {if(pk_output_size_y==input_size_y) temp_prP= prP; @@ -1037,7 +1037,7 @@ temp_prP= prP; curr_row= input_size_y-1; for(row= 0;row 0) {--xP; @@ -1175,20 +1175,20 @@ write_row(new_prP); /*:35*/ -#line 1193 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1193 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" } /*:34*/ -#line 1066 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1066 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" } } /*:31*/ -#line 1035 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1035 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" } } @@ -1212,7 +1212,7 @@ goto again; /*:30*//*37:*/ -#line 1231 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1231 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static #ifdef __GNUC__ @@ -1248,7 +1248,7 @@ bitshift= 7; /*:37*//*40:*/ -#line 1283 "./cjkutils-4.8.3/hbf2gf/hbf2gf.w" +#line 1283 "./cjkutils-4.8.4/hbf2gf/hbf2gf.w" static #ifdef __GNUC__ @@ -1265,7 +1265,7 @@ for(col= 0,xP= pixelrow;col +% Copyright (C) 1994-2015 Werner Lemberg % % 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 @@ -31,13 +31,13 @@ \def\mf{{\meta META}\-{\meta FONT}} \def\Om{\char "0A} % Omega symbol -\def\title{hbf2gf (CJK Version 4.8.3)} +\def\title{hbf2gf (CJK Version 4.8.4)} \def\topofcontents{ \null\vfill \centerline{\titlefont The {\ttitlefont hbf2gf} program} \vskip 20pt - \centerline{(CJK Version 4.8.3)} + \centerline{(CJK Version 4.8.4)} \vfill} \def\botofcontents{ @@ -78,7 +78,7 @@ The ``banner line'' defined here should be changed whenever \.{hbf2gf} is modified. \Y\B\4\D$\\{banner}$ \5 -\.{"hbf2gf\ (CJK\ ver.\ 4.}\)\.{8.3)"}\par +\.{"hbf2gf\ (CJK\ ver.\ 4.}\)\.{8.4)"}\par \fi \M{2} diff --git a/Build/source/texk/cjkutils/sjisconv.c b/Build/source/texk/cjkutils/sjisconv.c index 3678fc706be..b49fabc257d 100644 --- a/Build/source/texk/cjkutils/sjisconv.c +++ b/Build/source/texk/cjkutils/sjisconv.c @@ -1,8 +1,8 @@ #define banner \ -"sjisconv (CJK ver. 4.8.3)" \ +"sjisconv (CJK ver. 4.8.4)" \ /*2:*/ -#line 96 "./cjkutils-4.8.3/SJISconv/sjisconv.w" +#line 96 "./cjkutils-4.8.4/SJISconv/sjisconv.w" #include #include diff --git a/Build/source/texk/cjkutils/tests/bg5conv.cjk b/Build/source/texk/cjkutils/tests/bg5conv.cjk index b064105095a..c500740ebae 100644 --- a/Build/source/texk/cjkutils/tests/bg5conv.cjk +++ b/Build/source/texk/cjkutils/tests/bg5conv.cjk @@ -1,4 +1,4 @@ -\def\CJKpreproc{bg5conv (CJK ver. 4.8.3)} +\def\CJKpreproc{bg5conv (CJK ver. 4.8.4)} 0x81 0x41:A 0xa0 0x5a:Z 0xa1 0x7b:123 diff --git a/Build/source/texk/cjkutils/tests/cef5conv.cjk b/Build/source/texk/cjkutils/tests/cef5conv.cjk index b0639ca2142..797276c94c6 100644 --- a/Build/source/texk/cjkutils/tests/cef5conv.cjk +++ b/Build/source/texk/cjkutils/tests/cef5conv.cjk @@ -1,4 +1,4 @@ -\def\CNSpreproc{cef5conv (CJK ver. 4.8.3)} +\def\CNSpreproc{cef5conv (CJK ver. 4.8.4)} 0x81 0x41:A 0xa0 0x5a:Z 0xa1 0x7b:123 diff --git a/Build/source/texk/cjkutils/tests/cefconv.cjk b/Build/source/texk/cjkutils/tests/cefconv.cjk index 97817fedfc7..16ebebc11bf 100644 --- a/Build/source/texk/cjkutils/tests/cefconv.cjk +++ b/Build/source/texk/cjkutils/tests/cefconv.cjk @@ -1,4 +1,4 @@ -\def\CNSpreproc{cefconv (CJK ver. 4.8.3)} +\def\CNSpreproc{cefconv (CJK ver. 4.8.4)} AC0-0f0f; 72Bg5"00F"00F AC1-0F0F; 72CNS1"00F"00F AC7-f0f0; 72CNS7"0F0"0F0 diff --git a/Build/source/texk/cjkutils/tests/cefsconv.cjk b/Build/source/texk/cjkutils/tests/cefsconv.cjk index 00842b5e9e8..f6b2deb8c9c 100644 --- a/Build/source/texk/cjkutils/tests/cefsconv.cjk +++ b/Build/source/texk/cjkutils/tests/cefsconv.cjk @@ -1,4 +1,4 @@ -\def\CNSpreproc{cefsconv (CJK ver. 4.8.3)} +\def\CNSpreproc{cefsconv (CJK ver. 4.8.4)} 0x81 0x7b:123 0x9f 0x5c:92 0xe0 0x7d:125 diff --git a/Build/source/texk/cjkutils/tests/extconv.cjk b/Build/source/texk/cjkutils/tests/extconv.cjk index 3ff038156d6..4b5c92a6b2d 100644 --- a/Build/source/texk/cjkutils/tests/extconv.cjk +++ b/Build/source/texk/cjkutils/tests/extconv.cjk @@ -1,4 +1,4 @@ -\def\CJKpreproc{extconv (CJK ver. 4.8.3)} +\def\CJKpreproc{extconv (CJK ver. 4.8.4)} 0x81 0x7b:123 0xfe 0x5c:92 0xc3 0x7d:125 diff --git a/Build/source/texk/cjkutils/tests/sjisconv.cjk b/Build/source/texk/cjkutils/tests/sjisconv.cjk index d9a22a3a34d..4fad18fa2d5 100644 --- a/Build/source/texk/cjkutils/tests/sjisconv.cjk +++ b/Build/source/texk/cjkutils/tests/sjisconv.cjk @@ -1,4 +1,4 @@ -\def\CJKpreproc{sjisconv (CJK ver. 4.8.3)} +\def\CJKpreproc{sjisconv (CJK ver. 4.8.4)} 0x81 0x7b:123 0x9f 0x5c:92 0xe0 0x7d:125 diff --git a/Build/source/texk/cjkutils/version.ac b/Build/source/texk/cjkutils/version.ac index 79961e184d8..e698a5d180a 100644 --- a/Build/source/texk/cjkutils/version.ac +++ b/Build/source/texk/cjkutils/version.ac @@ -1,5 +1,5 @@ dnl -dnl Copyright (C) 2012 Peter Breitenlohner +dnl Copyright (C) 2012-2015 Peter Breitenlohner dnl dnl This file is free software; the copyright holder dnl gives unlimited permission to copy and/or distribute it, @@ -7,5 +7,5 @@ dnl with or without modifications, as long as this notice is preserved. dnl dnl -------------------------------------------------------- dnl -dnl m4-include this file to define the current xpdf version -m4_define([cjk_version], [4.8.3]) +dnl m4-include this file to define the current cjk version +m4_define([cjk_version], [4.8.4]) -- cgit v1.2.3