summaryrefslogtreecommitdiff
path: root/fonts/utilities/cjk-gs-integrate
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/utilities/cjk-gs-integrate
Initial commit
Diffstat (limited to 'fonts/utilities/cjk-gs-integrate')
-rw-r--r--fonts/utilities/cjk-gs-integrate/ChangeLog1468
-rw-r--r--fonts/utilities/cjk-gs-integrate/Makefile20
-rw-r--r--fonts/utilities/cjk-gs-integrate/README.md226
-rwxr-xr-xfonts/utilities/cjk-gs-integrate/cjk-gs-integrate.pl2675
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-adobe.dat58
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-apple.dat119
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-arphic.dat46
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-bizud.dat60
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-cjkuni.dat66
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-dynacomware.dat148
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-fandol.dat39
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-fontworks.dat69
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-founder.dat112
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-hancom.dat26
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-heisei.dat54
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-hiragino.dat160
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-ipa.dat103
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-kozuka.dat302
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-macos-removeonly.dat582
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-microsoft.dat256
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-mogamobo.dat200
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-monotype.dat30
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-morisawa.dat705
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-nanum.dat78
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-notosans.dat182
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-notoserif.dat141
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-ryokana.dat141
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-sazanami.dat12
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-sinotype.dat194
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-solaris.dat33
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehansans.dat182
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehanserif.dat142
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-toppan.dat69
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-typebank.dat33
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-ume.dat106
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-unfonts.dat112
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-wenquanyi.dat56
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-yu-osx.dat79
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-yu-win.dat119
39 files changed, 9203 insertions, 0 deletions
diff --git a/fonts/utilities/cjk-gs-integrate/ChangeLog b/fonts/utilities/cjk-gs-integrate/ChangeLog
new file mode 100644
index 0000000000..cd697a8e08
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/ChangeLog
@@ -0,0 +1,1468 @@
+2019-08-16 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Release 20190816.0 (HEAD -> master) [089a440]
+
+2019-08-16 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * gs-9.27 doesn't like snippets for TTF/TTC it seems gs-9.25 and gs-9.26 does not require snippets for TTF/TTC so it will be safe enough (origin/master, origin/HEAD) [22bc208]
+
+2019-05-22 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * mention requirement of kpsewhich in help message [fd6f3d2]
+
+2019-05-19 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * make sure CR is stripped [2120e9f]
+
+2019-05-19 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * \/dev\/null -> $nul (origin/check-kpse) [1145435]
+
+2019-05-19 Norbert Preining <norbert@preining.info>
+
+ * test for kpsewhich (Issue: #33) [68ae7ce]
+
+2019-04-06 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add info for latest BIZ-UD fonts [ce8d802]
+
+2019-03-03 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Release 20190303.0 (tag: 20190303.0) [131b0f4]
+
+2019-03-03 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * copyright year [0732219]
+
+2019-03-03 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * cjk-gs-integrate-macos.pl: warning for macOS newer than known version [dd747ad]
+
+2018-11-10 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * cjk-gs-integrate,pl: make sure CR is stripped [510c7a5]
+
+2018-11-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * database/cjkgs-{noto,sourcehan}*.dat: priority [276565c]
+
+2018-11-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * database/cjkgs-{noto,sourcehan}*.dat [18dcc41]
+
+2018-10-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * forgotten removeonly database [d037c14]
+
+2018-10-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate more database [106a2f5]
+
+2018-09-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * cjk-gs-integrate-macos.pl: support 10.14 Mojave (mostly safe) [4aa6618]
+
+2018-09-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate cjkuni database [d285e93]
+
+2018-09-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate fandol database [2bc5564]
+
+2018-09-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate arphic database, more [adf6ae2]
+
+2018-09-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate arphic database [30fcfed]
+
+2018-09-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate monotype database [2a38d6d]
+
+2018-09-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate dynacomware taiwan [d279791]
+
+2018-09-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * tools/fontlist_mac.sh: Font5 [dac2a0b]
+
+2018-08-15 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * more debug code [4d6c622]
+
+2018-08-15 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * add bizud database [1958d12]
+
+2018-08-02 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Adobe-Japan1-7 [a5bc97b]
+
+2018-08-02 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * hidden option --strict-psname for me debugging [2f10f6c]
+
+2018-08-01 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * execute 'mktexlsr' when --link-texmf is enabled [2d20f05]
+
+2018-08-01 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * cleanup code [c28d11d]
+
+2018-08-01 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * cjkgs-morisawa-extra is not ready [9ff11f7]
+
+2018-05-20 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * add heisei database (more) [7e0eeba]
+
+2018-05-20 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * add heisei database [2b3a5e4]
+
+2018-05-19 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate apple database [876176d]
+
+2018-05-19 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * information for apple database [1fcc897]
+
+2018-05-06 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate apple database [7f9f0b8]
+
+2018-03-31 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * sort keys for $bntofn without this, link target differs from time to time. e.g. Office for Mac 2016 have the same font files for Excel, Word and PowerPoint. [796fd66]
+
+2018-03-06 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Release 20180306.0 (tag: 20180306.0) [409e696]
+
+2018-03-06 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * release.sh [4205a94]
+
+2018-03-06 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * release.sh [0ee14c4]
+
+2018-02-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * database helper scripts [5cae691]
+
+2018-02-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Makefile, release.sh: adjustment [ba488b3]
+
+2018-02-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * move database files to database/ [63f9b4e]
+
+2018-02-15 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * don't discard when otfinfo exits with non-zero [9e630e3]
+
+2018-02-15 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * forgotten initialization of casefold flag [9abf580]
+
+2018-02-15 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Guard against unavailable 'otfinfo' command, skip OTC/TTC [bab740e]
+
+2018-02-15 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Use 'otfinfo' command for casefolding search safety (WIP) [fccf54a]
+
+2018-01-13 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * cjk-gs-integrate-macos.pl: typo [ca1bba1]
+
+2018-01-13 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add a wrapper cjk-gs-integrate-macos.pl [f820eec]
+
+2018-01-13 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add typebank database (based on Win10 Fall Creators Update) [e5a9733]
+
+2017-12-21 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * removeonly database should be read only in cleanup mode [cbb0b84]
+
+2017-12-21 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate ume database [b1a2269]
+
+2017-12-11 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate mogamobo database [cb36720]
+
+2017-12-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * regenerate README.md [3eca807]
+
+2017-12-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * tools/release.sh: adjusted [789b6c7]
+
+2017-12-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * built-in database does not support >=10.8 [59f0912]
+
+2017-12-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * forgotten entry for removeonly database [6e03baf]
+
+2017-12-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * add removeonly database [2e16cdc]
+
+2017-12-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * tweaked database for sierra/highsierra [3281f12]
+
+2017-12-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * implement 'RMVname' entry for removing-only database [6e49733]
+
+2017-12-03 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * CRLF -> LF [a5db0ee]
+
+2017-12-02 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate founder database [afe9fc5]
+
+2017-12-02 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate adobe database [983cc3b]
+
+2017-12-02 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate solaris database [d27777a]
+
+2017-12-02 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add '/Library/Application Support/Apple/Fonts//' to search path [b3caba8]
+
+2017-11-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * checked latest CMap resources [9c274fb]
+
+2017-11-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * add simli.ttf and simyou.ttf [44e62dd]
+
+2017-11-25 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate toppan database [125a2a3]
+
+2017-11-25 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * cjkgs-morisawa.dat: non-existent ShinMGoPr5-* [7609991]
+
+2017-11-25 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate fontworks database [c1c9735]
+
+2017-11-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * special case for native CID fonts in ancient days [b1b0d5f]
+
+2017-11-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * fix a mistake in previous commit [6c131a8]
+
+2017-11-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * handle tlgs.win32 pre-shipped cidfmap [5458fba]
+
+2017-11-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate microsoft database [2f22f8d]
+
+2017-11-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * support more aliases [9c81832]
+
+2017-11-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * update help message [56f97aa]
+
+2017-11-12 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * allow partial comment [c4119ff]
+
+2017-11-12 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate dynacomware database [005f5c2]
+
+2017-11-11 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate macOS-specific sinotype database [918d868]
+
+2017-11-11 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * update sinotype database (WIP) [48de9e3]
+
+2017-11-10 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * rename cjkgs-morisawa-standard.dat -> cjkgs-morisawa.dat (aminophen/master) [3afc59a]
+
+2017-11-10 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * update sinotype database [e1e781c]
+
+2017-11-09 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * database comment (more) [16446f9]
+
+2017-11-09 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * database comment (more) [27de76e]
+
+2017-11-09 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * database comment [b2b8c70]
+
+2017-11-09 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * update sinotype database (WIP) [e35f7bf]
+
+2017-11-09 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate sinotype database (WIP) [2e41fae]
+
+2017-11-09 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * database order [2d749fd]
+
+2017-10-29 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Update README-macos.md [c53e9be]
+
+2017-10-29 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * tweaked datbase [cec6e62]
+
+2017-10-29 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate yu-osx/win database [9bbf637]
+
+2017-10-29 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * perl syntax [3711113]
+
+2017-10-29 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Support 'INCLUDE' syntax in database [a884634]
+
+2017-10-29 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Rename: cjkgs-adobe.dat -> cjkgs-ryokana.dat [b4cee4e]
+
+2017-10-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Update help message, regenerate README.md [363cda0]
+
+2017-10-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate hiragino database [07bd9c2]
+
+2017-10-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate kozuka database [a56a8e3]
+
+2017-10-22 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Shorten .dat namespace (macos), separate morisawa standard [a49e730]
+
+2017-10-22 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Removed non-existent A-OTF-Jun101Pr6N-Light.otf entry [d675ad6]
+
+2017-10-21 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add cjk-gs-integrate-adobe.dat (ryokana) [994fb3e]
+
+2017-10-14 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * dump PSName only when required [94021d0]
+
+2017-10-01 Norbert Preining <norbert@preining.info>
+
+ * fix format [0053b99]
+
+2017-10-01 Norbert Preining <norbert@preining.info>
+
+ * work on the README-macos [6d2e22b]
+
+2017-10-01 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add GitHub repository URL [88fed5d]
+
+2017-10-01 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * README-macos.md: more information [4db2895]
+
+2017-10-01 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add draft README-macos.md, adjust tools/release.sh [9f6464f]
+
+2017-10-01 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add Makefile [2ad0d1b]
+
+2017-10-01 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * revised debug level (0:none -- 3:most verbose) [5fe9d00]
+
+2017-10-01 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * --fontdef-add can be given multiple times [70b5042]
+
+2017-09-30 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * database overwrite warning too noisy, switching to debug [e0fad54]
+
+2017-09-30 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * ignore cjk-gs-integrate-data.dat this is the default of --dump-data [cdeaed6]
+
+2017-09-30 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * search external database using kpsewhich -format=miscfont [3987272]
+
+2017-09-30 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Warning on Mac OS 10.11 or later without --fontdef-add [05599ae]
+
+2017-09-30 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * separate hiragino chinese [6c012e3]
+
+2017-09-30 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Clean up macOS database [d516eab]
+
+2017-09-28 doraTeX <taylorkgb@gmail.com>
+
+ * Separate macOS fonts [9c48c51]
+
+2017-09-27 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * implement --fontdef-add option this works as an addition (not a substitution) to the already-available database. it would be useful for OS-specific additional database [2562926]
+
+2017-09-23 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * SubfontID is unnecessary for TTF, omit it [0c5187e]
+
+2017-09-23 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * re-implement --dump-data option Now usable for dumping effective database only [d3e2154]
+
+2017-09-23 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * --dump-data option is unsupported temporarily I'll re-implement this option as a dumper of only effective database, not a merely copying the built-in database [f56585f]
+
+2017-09-23 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * fix typo in database [faafa60]
+
+2017-09-23 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * start code refactoring I'd like to implement --fontdef-add option, to allow multiple database input. First in this commit, separate database catching and database reading. [c06d27d]
+
+2017-09-23 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * tweaked [bcfc0b1]
+
+2017-07-01 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add lowercase link name for simsun.ttf [42e61f0]
+
+2017-06-24 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * more likely to find gswin32c Resource [1a873db]
+
+2017-06-24 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * strict check for exclusive options [ca86015]
+
+2017-06-24 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Release 20170624.0 (tag: 20170624.0) [962f02b]
+
+2017-06-24 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Better comments, update README.md from source [b204205]
+
+2017-06-24 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Re-add MS-UIGothic (reverts 9a724ad), add YuGothic-UI These are supported by cidfmap.TeXLive by tlgs.win32, so we should restore it [ef00a77]
+
+2017-06-24 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add more database (based on WPS Office for Linux) [3dcdd5f]
+
+2017-06-23 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * TTC preferred to TTF for Yu-win, OTC warnings to debug (aminophen/cleanup) [35065fe]
+
+2017-06-21 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * more cp932 for win32 console (list-aliases, list-fonts) [d8518a4]
+
+2017-06-20 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * NTFS symlink on win32 has file size = 0, we can distinguish it [ab9b543]
+
+2017-06-20 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * More cleanup operation (#5) [7e03a4a]
+
+2017-06-20 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Implement a general cleanup operation (trial) (#5) [bfb8138]
+
+2017-06-19 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * tidy up the order of sub functions [47e08a1]
+
+2017-06-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * add more comments [4a432a0]
+
+2017-06-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * check --list-fonts and --list-all-aliases conflict [62eb267]
+
+2017-06-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * fix uninitialized types for --list-all-aliases this bug was introduced when OTC is excluded from aliases [5d7167b]
+
+2017-06-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * tidy up (more) [b61e550]
+
+2017-06-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * support --winbatch=[FILE] and --dump-data=[FILE], tidy up [ed28a2b]
+
+2017-06-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * --markdown assumes --help too [97e262b]
+
+2017-06-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Update README.md from source [2e46b62]
+
+2017-06-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add --dump-data option, for easily editing built-in database [de30570]
+
+2017-06-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Move info_list_aliases to sub [bb5f7b4]
+
+2017-06-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * the issue has been settled in 0d03be7 [786b870]
+
+2017-06-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * sort keys to output lines in the same order for each run [06567da]
+
+2017-06-16 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Fix danglink links for NTFS on win32, kpsewhich -all [0d03be7]
+
+2017-05-13 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Remove MS-UIGothic database [9a724ad]
+
+2017-05-13 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add HiraMin{Pro,ProN}-W2 database [194bfd2]
+
+2017-05-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Release 20170505.0 (tag: 20170505.0) [1f040e5]
+
+2017-05-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * snippets: %% -> %, %%%% -> %% seems enough [ba0b225]
+
+2017-05-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * help message: search paths all if available [727f51c]
+
+2017-05-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * update README.md from source [61ca8ec]
+
+2017-05-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Merge branch 'win32-support' [a8528dc]
+
+2017-05-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * fix a mistake, adjust help message for search path (aminophen/win32-support) [8fd2c88]
+
+2017-05-02 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * more TODO for win32 [b2d0cf5]
+
+2017-05-02 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * the order of option declaration [584c0d5]
+
+2017-05-02 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * throw an error for machine-readable alone [bbbd319]
+
+2017-04-29 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * file check [0cf210f]
+
+2017-04-27 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * fix a mistake in previous commit [e73ca96]
+
+2017-04-27 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * ensure new line when adding .runlibfile line [d12f6bb]
+
+2017-04-27 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * more chinese/korean database from debian packages [cf306ed]
+
+2017-04-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * comment [78cd68b]
+
+2017-04-26 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * default to symlink for win32, add --hardlink option [bd87af7]
+
+2017-04-25 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * change output to lib/ for tlgs, winbatch instruction [aebfd74]
+
+2017-04-25 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * tweaked [f487ab8]
+
+2017-04-24 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * symplify code for Encode::decode -> Encode::encode chain [ca81c6f]
+
+2017-04-22 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * simplify code [b2c9c77]
+
+2017-04-22 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * database sync [6ebc456]
+
+2017-04-22 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Determine tlgs or native-gs (work in progress) [2eb249a]
+
+2017-04-15 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * better aliases [362084c]
+
+2017-03-22 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * typo in previous commit [092b662]
+
+2017-03-22 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add --winbatch option [cea39ee]
+
+2017-03-17 Norbert Preining <norbert@preining.info>
+
+ * add a TODO concerning symlink generation on Windows [ab4a6ca]
+
+2017-03-17 Norbert Preining <norbert@preining.info>
+
+ * simplify code [c755d0f]
+
+2017-03-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add more database for Mac [3254356]
+
+2017-03-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Forgotten fonts for Mac OS X 10.7.5 (Lion) [f8de6fa]
+
+2017-03-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add more database for Office for Mac 2016 [0b9f826]
+
+2017-03-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Support for Office for Mac 2016 search path (typo) [8460b62]
+
+2017-03-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Support for Office for Mac 2016 search path [4db0f57]
+
+2017-03-17 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add database for Office for Mac 2016, MSOffice 2010 [86fce22]
+
+2017-03-09 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * More database for win32 [901274f]
+
+2017-03-09 Norbert Preining <norbert@preining.info>
+
+ * Release 20170309.0 (tag: 20170309.0) [8ce526f]
+
+2017-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Update wrt. master [6503d0e]
+
+2017-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * comment [efcd6ec]
+
+2017-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Fix for Hiragino aliases (#23) [b1fb331]
+
+2017-03-03 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Hiragino aliases (gs9.20 without OTC support) [1c494b6]
+
+2017-03-03 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * bug fix for morisawa aliases [bcbce0c]
+
+2017-02-24 Norbert Preining <norbert@preining.info>
+
+ * update release script for CTAN location [f2ae343]
+
+2017-02-20 Norbert Preining <norbert@preining.info>
+
+ * Release 20170220.0 (tag: 20170220.0) [4997503]
+
+2017-02-20 Norbert Preining <norbert@preining.info>
+
+ * update copyright [a865618]
+
+2017-02-20 Norbert Preining <norbert@preining.info>
+
+ * update README.md from source [a22f890]
+
+2017-02-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * alias priority: New priority for Simplified/Traditional Chinese [4f02658]
+
+2017-02-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * alias priority: Kozuka before Yu, Adobe before Solaris [4b3e12c]
+
+2017-02-08 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Fix for priority numbers (#12) [97b0c63]
+
+2017-01-18 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Support for ptex-fontmaps 20170114.0 (ume, yu etc.) [cd91c2f]
+
+2017-01-14 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Win32 support: symlink/unlink consistency, quote [0445c18]
+
+2017-01-14 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Win32 support: encode/decode (cp932 <=> utf8) [6e51c3d]
+
+2017-01-14 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Reduce file open/close (again) [5c7e946]
+
+2017-01-13 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Add data for psnames-for-otf also for aliases [5142e98]
+
+2017-01-12 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * better code [d439cac]
+
+2017-01-12 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Reduce file open/close for winbatch and otfps [6cff16a]
+
+2016-12-29 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Add fandol database (typo) [7c15bdf]
+
+2016-12-29 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Add fandol database [1de88ed]
+
+2016-12-24 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Generate psnames-for-otf only when --otfps is given [a1fbdb3]
+
+2016-12-23 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Experiment for supporting win32 (again) [ba45bee]
+
+2016-12-23 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Experiment for supporting win32 [2846489]
+
+2016-12-14 Norbert Preining <norbert@preining.info>
+
+ * fix indentation, add better explanation for case-insensitve problem [b73e45b]
+
+2016-12-14 Norbert Preining <norbert@preining.info>
+
+ * update README.md with the changes included recently [0330718]
+
+2016-12-14 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Add moga-mobo database [de56b28]
+
+2016-12-14 Norbert Preining <preining@logic.at>
+
+ * Merge pull request #20 from aminophen/ttc-ttf-otc [72cc9f1]
+
+2016-12-13 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Fix for Name entry different from PSName (aminophen/ttc-ttf-otc) [fcd2515]
+
+2016-12-13 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Complete TTC/OTC database (thanks to @doraTeX) [67a90e3]
+
+2016-12-12 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Parse 'Filename:' entry for backward compatibility [ce22753]
+
+2016-12-12 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Show subfont number only when TTC/OTC (even zero) [4ea9cab]
+
+2016-12-12 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Fix typo in d3ad4b4 [515e303]
+
+2016-12-12 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Do not use OTC font as aliases [780f3b2]
+
+2016-12-12 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Forgotten initialization [ebb6326]
+
+2016-12-12 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Separate OTC/TTC/TTF (experiment) [d3ad4b4]
+
+2016-12-10 Yusuke Terada <taylorkgb@gmail.com>
+
+ * Merge pull request #19 from doraTeX/master [3db9b75]
+
+2016-12-10 doraTeX <taylorkgb@gmail.com>
+
+ * Revert unintended Unicode normalization [83267e7]
+
+2016-12-10 Yusuke Terada <taylorkgb@gmail.com>
+
+ * Merge pull request #18 from doraTeX/master [2666a1d]
+
+2016-12-10 Yusuke Terada <taylorkgb@gmail.com>
+
+ * cjk-gs-integrate.pl: Fix regex for /bin/gs [2e5d027]
+
+2016-12-10 doraTeX <taylorkgb@gmail.com>
+
+ * cjk-gs-integrate.pl: Fix regex for /bin/gs [a41ddd0]
+
+2016-12-09 aminophen <h.y.acetaminophen@gmail.com>
+
+ * cjk-gs-integrate.pl: change ttfname -> ttname [9bdfd20]
+
+2016-12-06 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Fix a mistake in previous commit [daf1c07]
+
+2016-12-06 aminophen <h.y.acetaminophen@gmail.com>
+
+ * cjk-gs-integrate.pl: more database (CJK-Unifonts) [513d8b1]
+
+2016-12-05 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Merge branch 'master' of https://github.com/texjporg/cjk-gs-support [ceb9542]
+
+2016-12-05 aminophen <h.y.acetaminophen@gmail.com>
+
+ * cjk-gs-integrate.pl: more database (arphic) [33b19ff]
+
+2016-12-05 Norbert Preining <norbert@preining.info>
+
+ * adjust header for copyright and url [4da74ae]
+
+2016-12-03 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Fix for texjporg/jfontmaps#6 (second attempt) [2374e0c]
+
+2016-12-03 aminophen <h.y.acetaminophen@gmail.com>
+
+ * More .gitignore [e3f323e]
+
+2016-12-02 aminophen <h.y.acetaminophen@gmail.com>
+
+ * cjk-gs-integrate.pl: Fix for database [ec61fef]
+
+2016-10-26 Norbert Preining <norbert@preining.info>
+
+ * Release 20161026.0 (tag: 20161026.0) [af37d2e]
+
+2016-10-26 Norbert Preining <preining@logic.at>
+
+ * Merge pull request #16 from aminophen/master [480b932]
+
+2016-10-26 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Finished macOS Sierra CJK font database. [7763ba6]
+
+2016-10-07 Norbert Preining <preining@logic.at>
+
+ * Merge pull request #15 from aminophen/master [5c852da]
+
+2016-10-05 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Small fix for comments (thanks to @doraTeX) [40017a9]
+
+2016-10-05 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Add CK font list (partial) [90fae6c]
+
+2016-10-04 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Add macOS Sierra fonts (Japan) [003e010]
+
+2016-10-02 Norbert Preining <norbert@preining.info>
+
+ * add Yamashita-san to help and README [9fb17a2]
+
+2016-10-02 Norbert Preining <preining@logic.at>
+
+ * Merge pull request #14 from aminophen/master [8c8e81e]
+
+2016-10-02 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Add more korean fonts, priority settings [9de8aca]
+
+2016-10-02 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Add more korean fonts, priority settings [db77c33]
+
+2016-10-02 aminophen <h.y.acetaminophen@gmail.com>
+
+ * small fixups [dfaf936]
+
+2016-10-02 aminophen <h.y.acetaminophen@gmail.com>
+
+ * small fixups [206ffec]
+
+2016-10-02 aminophen <h.y.acetaminophen@gmail.com>
+
+ * restore previous code [ed5c381]
+
+2016-10-01 Norbert Preining <norbert@preining.info>
+
+ * small fixups [38a2059]
+
+2016-10-01 Norbert Preining <preining@logic.at>
+
+ * Merge pull request #13 from aminophen/gsres [9f702b2]
+
+2016-10-01 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Directory check [4845c37]
+
+2016-10-01 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Assume relative path of gs-resource [8e54dc3]
+
+2016-09-29 Norbert Preining <norbert@preining.info>
+
+ * update copyright year [df1fd69]
+
+2016-09-29 Norbert Preining <preining@logic.at>
+
+ * Merge pull request #11 from aminophen/master [5993098]
+
+2016-09-29 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Add baekmuk (korean) -- now the lowest priority [e6edb62]
+
+2016-09-29 Norbert Preining <preining@logic.at>
+
+ * Merge pull request #10 from aminophen/master [0171ef8]
+
+2016-09-28 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Use 'sep' instead of ':' [f87a35b]
+
+2016-09-27 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Workaround (not setting OPENTYPEFONTS/TTFONTS explicitly) [7d0f926]
+
+2016-09-27 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Fix a mistake [10e8fd0]
+
+2016-09-27 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Special name (IPAMincho.ttf etc) not needed [ffd8e79]
+
+2016-09-27 Norbert Preining <preining@logic.at>
+
+ * Merge pull request #8 from aminophen/master [2619378]
+
+2016-09-26 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Prevent ttc -> ttf symlink (Songti/STSong, Kaiti/STKaiti) [043feee]
+
+2016-09-25 aminophen <h.y.acetaminophen@gmail.com>
+
+ * TODO: comment about wrong symlink [3009288]
+
+2016-09-24 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Fix for STHeiti family [91455e9]
+
+2016-09-24 aminophen <h.y.acetaminophen@gmail.com>
+
+ * cleanup [7b0d0e3]
+
+2016-09-24 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Add ipa-proportional database [548fa68]
+
+2016-09-24 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Add yuwin10 fonts to yu-win database [e7acb2c]
+
+2016-09-24 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Fix for hiragino database [805e1b1]
+
+2016-09-24 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Fix morisawa database [68f500d]
+
+2016-09-23 aminophen <h.y.acetaminophen@gmail.com>
+
+ * typo [5d116a1]
+
+2016-09-23 aminophen <h.y.acetaminophen@gmail.com>
+
+ * Add /System/Library/Assets, /usr/share/fonts, recursive search [5b96e5a]
+
+2016-01-15 Norbert Preining <norbert@preining.info>
+
+ * Release 20160115.0 (tag: 20160115.0) [bfb2c76]
+
+2016-01-15 Norbert Preining <norbert@preining.info>
+
+ * ship README.md as is, supported by CTAN now [ad27d2b]
+
+2016-01-15 Norbert Preining <norbert@preining.info>
+
+ * remove unrelated file [5f10f56]
+
+2016-01-15 Norbert Preining <norbert@preining.info>
+
+ * Release 20160115.0 [5a42230]
+
+2016-01-14 Norbert Preining <norbert@preining.info>
+
+ * if --link-texmf is passed without argument use TEXMFLOCAL again [a4a8228]
+
+2015-10-21 Norbert Preining <norbert@preining.info>
+
+ * remove cleanup_link and bruteforce [1f9649d]
+
+2015-10-21 Norbert Preining <norbert@preining.info>
+
+ * fix TTFONT env name [2eee0ce]
+
+2015-10-20 Norbert Preining <norbert@preining.info>
+
+ * resolve symlinks to make sure we don't catch the wrong files [9f68007]
+
+2015-10-20 Norbert Preining <norbert@preining.info>
+
+ * put OSFONTDIR before OPENTYPEFONTS and TTFFONTS [c28684d]
+
+2015-10-19 Norbert Preining <norbert@preining.info>
+
+ * fix problems with links pointing to itself [76e5f82]
+
+2015-10-19 Norbert Preining <norbert@preining.info>
+
+ * fix name of otf font links in texmf dir [0fc6e58]
+
+2015-10-11 Norbert Preining <norbert@preining.info>
+
+ * rework link_font to warn only if necessary [c2b986d]
+
+2015-10-11 Norbert Preining <norbert@preining.info>
+
+ * remove end-of-lines of gs output [157a150]
+
+2015-10-10 Norbert Preining <norbert@preining.info>
+
+ * better extraction of gs resource (Issue: #6) [c01d79e]
+
+2015-10-10 Norbert Preining <norbert@preining.info>
+
+ * list other candidates for --list-fonts and --info [bb03240]
+
+2015-10-02 Norbert Preining <norbert@preining.info>
+
+ * Release 20151002.0 (tag: 20151002.0) [0cab259]
+
+2015-10-02 Norbert Preining <norbert@preining.info>
+
+ * update documentation [403383d]
+
+2015-09-28 Norbert Preining <norbert@preining.info>
+
+ * update README.md for current status [789f124]
+
+2015-09-28 Norbert Preining <norbert@preining.info>
+
+ * add --remove option [fea9b13]
+
+2015-09-28 Norbert Preining <norbert@preining.info>
+
+ * use only --link-texmf with optional argument [d2ff6f8]
+
+2015-09-25 Norbert Preining <norbert@preining.info>
+
+ * add HIraginoSans-W2 [10ca035]
+
+2015-09-24 Norbert Preining <norbert@preining.info>
+
+ * use ttfname also for CIDFSubst link and cidfmap entry, add texmfout option [6acc38a]
+
+2015-09-24 Norbert Preining <norbert@preining.info>
+
+ * ttf link name support [970dcf0]
+
+2015-09-24 Norbert Preining <norbert@preining.info>
+
+ * auto-determine type of fontfile, and make type file specific [f8b7032]
+
+2015-09-22 Norbert Preining <preining@logic.at>
+
+ * Merge pull request #4 from doraTeX/master [fed6b30]
+
+2015-09-22 doraTeX <taylorkgb@gmail.com>
+
+ * Update font definitions for the latest El Capitan [86d28d1]
+
+2015-07-24 Norbert Preining <preining@logic.at>
+
+ * Merge pull request #1 from munepi/master [98e37ef]
+
+2015-07-24 Munehiro Yamamoto <munepixyz@gmail.com>
+
+ * cjk-gs-integrate.pl (encode_list): added 2004-{H,V} for Japan [51f4ffd]
+
+2015-07-24 Norbert Preining <norbert@preining.info>
+
+ * add ISX 10.11 El Capitan fonts [dbe04b4]
+
+2015-05-07 Norbert Preining <norbert@preining.info>
+
+ * fix line endings [81f0a82]
+
+2015-05-07 Norbert Preining <norbert@preining.info>
+
+ * remove x bit from prn-variants.tex [202fc80]
+
+2015-05-07 Norbert Preining <norbert@preining.info>
+
+ * rename README.md to README on release [25dcf6d]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * Release 20150506.1 (tag: 20150506.1) [daf2e89]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * reactivate aliases for MSung-Light and STFangsong-Light [bf0d437]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * remove debug statement [cf81cb7]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * Release 20150506.0 (tag: 20150506.0) [24db8e7]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * add a release script [593eb64]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * genrated md and help output from the same source [32c57ed]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * add /Library/Fonts/Microsoft to search path, add --link-texmflocal option [fc80300]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * provide family like aliases [32a827a]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * remove provides for two imaginary fonts ;-) [f55f662]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * add more Kozuka fonts (not used in jfontmaps) [32d46e9]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * make gulim provide HyGoThic-Medium in case Dotum is not available [b41adbb]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * STKaiti-Adobe-CNS1 update from Bruno [40ad49f]
+
+2015-05-06 Norbert Preining <norbert@preining.info>
+
+ * add MidashiGo(Pro) provides, fix FutoMin provides for IPA [a173ce6]
+
+2015-04-24 Norbert Preining <norbert@preining.info>
+
+ * make link checking more resilient to errors [fa083ce]
+
+2015-04-24 Norbert Preining <norbert@preining.info>
+
+ * terminate immediately on windows, add some TODOs [8a12b5a]
+
+2015-04-24 Norbert Preining <norbert@preining.info>
+
+ * adjust prefs, add warning when provide priorities agree [c1fffb1]
+
+2015-04-24 Norbert Preining <norbert@preining.info>
+
+ * add more fonts from Microsoft 2015 for Apple [d9348d4]
+
+2015-04-24 Norbert Preining <norbert@preining.info>
+
+ * add --list-all-aliases command [c040122]
+
+2015-04-23 Norbert Preining <norbert@preining.info>
+
+ * add --force option [e4d9ce5]
+
+2015-04-21 Norbert Preining <norbert@preining.info>
+
+ * add decomposed form filenames for HFS [28c79ea]
+
+2015-04-21 Norbert Preining <norbert@preining.info>
+
+ * add support for reading files from file list, fix some fonts [a6a4c34]
+
+2015-04-21 Norbert Preining <norbert@preining.info>
+
+ * update README.md [3d5090f]
+
+2015-04-21 Norbert Preining <norbert@preining.info>
+
+ * lots of changes, automated testing [8c73fa0]
+
+2015-04-21 Norbert Preining <norbert@preining.info>
+
+ * order alias output [66bbe4a]
+
+2015-04-21 Norbert Preining <norbert@preining.info>
+
+ * really fix Morisawa fonts [21be97b]
+
+2015-04-21 Norbert Preining <norbert@preining.info>
+
+ * make morisawa fonts work [9462210]
+
+2015-04-21 Norbert Preining <norbert@preining.info>
+
+ * add Gulim fonts for HYRGoThic-Medium [1acf5f3]
+
+2015-04-20 Norbert Preining <norbert@preining.info>
+
+ * remove the strange alias with extra - at the end [5105987]
+
+2015-04-20 Norbert Preining <norbert@preining.info>
+
+ * add ~/Library/Fonts and /Network/Library/Fonts on unix/mac add alas for HYRGoThic-Medium [7c8f87f]
+
+2015-04-20 Norbert Preining <norbert@preining.info>
+
+ * link ttf fonts *not* into Font dir, but into CIDFSubst [513adae]
+
+2015-04-20 Norbert Preining <norbert@preining.info>
+
+ * first step in Morisawa support, add PSName to font database [ef59d24]
+
+2015-04-20 Norbert Preining <norbert@preining.info>
+
+ * provide more Foobar- font names for GhostScript [7288e8c]
+
+2015-04-20 Norbert Preining <norbert@preining.info>
+
+ * sort alias names, remove last Std alias [2d47a81]
+
+2015-04-20 Norbert Preining <norbert@preining.info>
+
+ * rank Adobe CK fonts higher, fix list aliases ouput [0d4b693]
+
+2015-04-20 Norbert Preining <norbert@preining.info>
+
+ * add priority to output of aliases [cb5b296]
+
+2015-04-19 Norbert Preining <norbert@preining.info>
+
+ * list aliases separated in categories [751a7ee]
+
+2015-04-19 Norbert Preining <norbert@preining.info>
+
+ * add entries for Adobe's CK fonts [8c9fb77]
+
+2015-04-19 Norbert Preining <norbert@preining.info>
+
+ * add more strange provides ... [6567c15]
+
+2015-04-19 Norbert Preining <norbert@preining.info>
+
+ * add more aliases after dicsussion with Bruno [e1d089c]
+
+2015-04-16 Norbert Preining <norbert@preining.info>
+
+ * formatting [2f07c70]
+
+2015-04-16 Norbert Preining <norbert@preining.info>
+
+ * README.md and help output editing [ffd1988]
+
+2015-04-16 Norbert Preining <norbert@preining.info>
+
+ * update README.md [b6667d5]
+
+2015-04-16 Norbert Preining <norbert@preining.info>
+
+ * lots of updates, in particular ttf linking and user aliases [060376a]
+
+2015-04-14 Norbert Preining <norbert@preining.info>
+
+ * priorities for file names, unify priority writing [1d2727f]
+
+2015-04-13 Norbert Preining <norbert@preining.info>
+
+ * remove font-definitions.txt, always outdated [b532745]
+
+2015-04-13 Norbert Preining <norbert@preining.info>
+
+ * add more alias for Korean [c610bb8]
+
+2015-04-13 Norbert Preining <norbert@preining.info>
+
+ * add TODO, gitingore, and some tests [8f4de68]
+
+2015-04-13 Norbert Preining <norbert@preining.info>
+
+ * fixes for Korean [287b64d]
+
+2015-04-11 Norbert Preining <norbert@preining.info>
+
+ * fix subfonts in ttcs, add more fonts for Korea (not working) [243b61e]
+
+2015-04-08 Norbert Preining <norbert@preining.info>
+
+ * more name fixes from Bruno [33fb493]
+
+2015-04-08 Norbert Preining <norbert@preining.info>
+
+ * update font-definitions file [fb1135a]
+
+2015-04-08 Norbert Preining <norbert@preining.info>
+
+ * Korean support (hopefully), fix some name errors [1bb8aed]
+
+2015-04-08 Norbert Preining <norbert@preining.info>
+
+ * add some provides for TC SC and Korean, and fixes, thanks Bruno [5b754be]
+
+2015-04-08 Norbert Preining <norbert@preining.info>
+
+ * fix spaces in file names [d7b1ab8]
+
+2015-04-08 Norbert Preining <norbert@preining.info>
+
+ * fix Dumper usage [05e5789]
+
+2015-04-08 Norbert Preining <norbert@preining.info>
+
+ * load Data::Dumper only when debugging [a839074]
+
+2015-04-08 Norbert Preining <norbert@preining.info>
+
+ * add font-definitions for ease of access, but not really used [35302c0]
+
+2015-04-08 Norbert Preining <norbert@preining.info>
+
+ * fully working script including aliases [283d64a]
+
+2015-04-07 Norbert Preining <norbert@preining.info>
+
+ * more or less fully functional [88a478b]
+
+2015-04-07 Norbert Preining <norbert@preining.info>
+
+ * fix typo in cjk-font-definitons [eed0614]
+
+2015-04-07 Norbert Preining <norbert@preining.info>
+
+ * bummer [d111a8d]
+
+2015-04-07 Norbert Preining <norbert@preining.info>
+
+ * fix warning for missing font defs [4130ced]
+
+2015-04-07 Norbert Preining <norbert@preining.info>
+
+ * don't bail out if gs is not found, for now [b625240]
+
+2015-04-07 Norbert Preining <norbert@preining.info>
+
+ * more work [5b4489d]
+
+2015-04-07 Norbert Preining <norbert@preining.info>
+
+ * first commit [8011270]
+
diff --git a/fonts/utilities/cjk-gs-integrate/Makefile b/fonts/utilities/cjk-gs-integrate/Makefile
new file mode 100644
index 0000000000..21f16209ff
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/Makefile
@@ -0,0 +1,20 @@
+PROJECT=cjk-gs-integrate
+TEXMF = $(shell kpsewhich -var-value=TEXMFHOME)
+
+.PHONY: default install release
+default: README.md
+
+
+README.md: cjk-gs-integrate.pl
+ perl cjk-gs-integrate.pl --markdown > README.md
+
+install: README.md
+ mkdir -p ${TEXMF}/doc/fonts/$(PROJECT)
+ cp *.md ${TEXMF}/doc/fonts/$(PROJECT)/
+ mkdir -p ${TEXMF}/scripts/$(PROJECT)
+ cp *.pl ${TEXMF}/scripts/$(PROJECT)/
+ mkdir -p ${TEXMF}/fonts/misc/$(PROJECT)
+ cp database/*.dat ${TEXMF}/fonts/misc/$(PROJECT)/
+
+release: README.md
+ sh tools/release.sh
diff --git a/fonts/utilities/cjk-gs-integrate/README.md b/fonts/utilities/cjk-gs-integrate/README.md
new file mode 100644
index 0000000000..9f948f7b24
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/README.md
@@ -0,0 +1,226 @@
+Configuring Ghostscript for CJK CID/TTF fonts
+=============================================
+
+This script searches a list of directories for CJK fonts, and makes
+them available to an installed Ghostscript. In the simplest case with
+sufficient privileges, a run without arguments should effect in a
+complete setup of Ghostscript.
+Search is done using the kpathsea library, in particular `kpsewhich`
+program. To run this script, you will need some TeX distribution in
+your system.
+
+Usage
+-----
+
+`````
+[perl] cjk-gs-integrate[.pl] [OPTIONS]
+`````
+
+#### Options ####
+
+`````
+ -o, --output DIR specifies the base output dir, if not provided,
+ the Resource directory of an installed Ghostscript
+ is searched and used.
+ -f, --fontdef FILE specify alternate set of font definitions, if not
+ given, the built-in set is used
+ --fontdef-add FILE specify additional set of font definitions, to
+ overwrite subset of built-in definitions;
+ can be given multiple times
+ -a, --alias LL=RR defines an alias, or overrides a given alias;
+ illegal if LL is provided by a real font, or
+ RR is neither available as real font or alias;
+ can be given multiple times
+ --filelist FILE read list of available font files from FILE
+ instead of searching with kpathsea
+ --link-texmf [DIR] link fonts into
+ DIR/fonts/opentype/cjk-gs-integrate
+ and
+ DIR/fonts/truetype/cjk-gs-integrate
+ where DIR defaults to TEXMFLOCAL
+ --otfps [DIR] generate configuration file (psnames-for-otf) into
+ DIR/dvips/ps2otfps
+ which is used by ps2otfps (developed by Akira Kakuto),
+ instead of generating snippets
+ --force do not bail out if linked fonts already exist
+ --remove try to remove instead of create
+ --cleanup try to clean up all possible links/snippets and
+ cidfmap.local/cidfmap.aliases, which could have been
+ generated in the previous runs
+ -n, --dry-run do not actually output anything
+ -q, --quiet be less verbose
+ -d, --debug output debug information, can be given multiple times
+ -v, --version outputs only the version information
+ -h, --help this help
+`````
+
+#### Windows only options ####
+
+`````
+ --hardlink create hardlinks instead of symlinks
+ --winbatch [FILE] prepare a batch file for link generation, instead of
+ generating links right away
+ the batch file name defaults to makefontlinks.bat
+`````
+
+#### Command like options ####
+
+`````
+ --dump-data [FILE] dump the set of font definitions which is currently
+ effective, where FILE (the dump output) defaults to
+ cjk-gs-integrate-data.dat; you can easily modify it,
+ and tell me with -f (or --fontdef) option
+ --only-aliases regenerate only cidfmap.aliases file, instead of all
+ --list-aliases lists the available aliases and their options, with the
+ selected option on top
+ --list-all-aliases list all possible aliases without searching for
+ actually present files
+ --list-fonts lists the fonts found on the system
+ --info combines the information of --list-aliases and
+ --list-fonts
+ --machine-readable output of --list-aliases is machine readable
+`````
+
+Operation
+---------
+
+For each found TrueType (TTF) font it creates a cidfmap entry in
+
+ <Resource>/Init/cidfmap.local
+ -- if you are using tlgs win32, tlpkg/tlgs/lib/cidfmap.local instead
+
+and links the font to
+
+ <Resource>/CIDFSubst/
+
+For each CID font it creates a snippet in
+
+ <Resource>/Font/
+
+and links the font to
+
+ <Resource>/CIDFont/
+
+The `<Resource>` dir is either given by `-o`/`--output`, or otherwise searched
+from an installed Ghostscript (binary name is assumed to be 'gs' on unix,
+'gswin32c' on win32).
+
+Aliases are added to
+
+ <Resource>/Init/cidfmap.aliases
+ -- if you are using tlgs win32, tlpkg/tlgs/lib/cidfmap.aliases instead
+
+Finally, it tries to add runlib calls to
+
+ <Resource>/Init/cidfmap
+ -- if you are using tlgs win32, tlpkg/tlgs/lib/cidfmap
+
+to load the cidfmap.local and cidfmap.aliases.
+
+How and which directories are searched
+--------------------------------------
+
+Search is done using the kpathsea library, in particular using kpsewhich
+program. By default the following directories are searched:
+ - all TEXMF trees
+ - `/Library/Fonts`, `/Library/Fonts/Microsoft`, `/System/Library/Fonts`,
+ `/System/Library/Assets`, `/Network/Library/Fonts`,
+ `~/Library/Fonts` and `/usr/share/fonts` (all if available)
+ - `/Applications/Microsoft Word.app/Contents/Resources/{Fonts,DFonts}`,
+ `/Applications/Microsoft Excel.app/Contents/Resources/{Fonts,DFonts}`,
+ `/Applications/Microsoft PowerPoint.app/Contents/Resources/{Fonts,DFonts}`
+ (all if available, meant for Office for Mac 2016)
+ - `c:/windows/fonts` (on Windows)
+ - the directories in `OSFONTDIR` environment variable
+
+In case you want to add some directories to the search path, adapt the
+`OSFONTDIR` environment variable accordingly: Example:
+
+`````
+ OSFONTDIR="/usr/local/share/fonts/truetype//:/usr/local/share/fonts/opentype//" $prg
+`````
+
+will result in fonts found in the above two given directories to be
+searched in addition.
+
+Output files
+------------
+
+If no output option is given, the program searches for a Ghostscript
+interpreter 'gs' and determines its Resource directory. This might
+fail, in which case one need to pass the output directory manually.
+
+Since the program adds files and link to this directory, sufficient
+permissions are necessary.
+
+Aliases
+-------
+
+Aliases are managed via the Provides values in the font database.
+At the moment entries for the basic font names for CJK fonts
+are added:
+
+Japanese:
+
+ Ryumin-Light GothicBBB-Medium FutoMinA101-Bold FutoGoB101-Bold
+ MidashiMin-MA31 MidashiGo-MB31 Jun101-Light
+
+Korean:
+
+ HYSMyeongJo-Medium HYGoThic-Medium HYRGoThic-Medium
+
+Simplified Chinese:
+
+ STSong-Light STSong-Regular STHeiti-Regular STHeiti-Light
+ STKaiti-Regular STFangsong-Light STFangsong-Regular
+
+Traditional Chinese:
+
+ MSung-Light MSung-Medium MHei-Medium MKai-Medium
+
+In addition, we also include provide entries for the OTF Morisawa names:
+
+ RyuminPro-Light GothicBBBPro-Medium
+ FutoMinA101Pro-Bold FutoGoB101Pro-Bold
+ MidashiMinPro-MA31 MidashiGoPro-MB31 Jun101Pro-Light
+
+The order is determined by the `Provides` setting in the font database.
+That is, the first font found in this order will be used to provide the
+alias if necessary.
+
+For the Japanese fonts:
+ Morisawa Pr6N, Morisawa, Hiragino ProN, Hiragino,
+ Kozuka Pr6N, Kozuka ProVI, Kozuka Pro, Kozuka Std,
+ Yu OS X, Yu Win, MS,
+ Moga-Mobo-ex, Moga-Mobo, IPAex, IPA, Ume
+
+For the Korean fonts:
+ (Hanyang,) Adobe, Solaris, MS, Unfonts, Baekmuk
+
+For the Simplified Chinese:
+ Adobe, Fandol, Hiragino, Founder, MS, CJKUnifonts, Arphic, CJKUnifonts-ttf
+
+For the Traditional Chinese:
+ Adobe, MS, CJKUnifonts, Arphic, CJKUnifonts-ttf
+
+#### Overriding aliases ####
+
+Using the command line option `--alias LL=RR` one can add arbitrary aliases,
+or override ones selected by the program. For this to work the following
+requirements of `LL` and `RR` must be fulfilled:
+ * `LL` is not provided by a real font
+ * `RR` is available either as real font, or as alias (indirect alias)
+
+Authors, Contributors, and Copyright
+------------------------------------
+
+The script and its documentation was written by Norbert Preining, based
+on research and work by Yusuke Kuroki, Yusuke Terada, Bruno Voisin,
+Hironobu Yamashita, Munehiro Yamamoto and the TeX Q&A wiki page.
+
+Maintained by Japanese TeX Development Community. For development, see
+ https://github.com/texjporg/cjk-gs-support
+
+The script is licensed under GNU General Public License Version 3 or later.
+The contained font data is not copyrightable.
+
diff --git a/fonts/utilities/cjk-gs-integrate/cjk-gs-integrate.pl b/fonts/utilities/cjk-gs-integrate/cjk-gs-integrate.pl
new file mode 100755
index 0000000000..6fce593611
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/cjk-gs-integrate.pl
@@ -0,0 +1,2675 @@
+#!/usr/bin/env perl
+#
+# cjk-gs-integrate - setup Ghostscript for CID/TTF CJK fonts
+#
+# Copyright 2015-2019 by Norbert Preining
+# Copyright 2016-2019 by Japanese TeX Development Community
+#
+# This work is based on research and work by (in alphabetical order)
+# Yusuke Kuroki
+# Yusuke Terada
+# Bruno Voisin
+# Munehiro Yamamoto
+# Hironobu Yamashita
+# and the Japanese TeX Q&A wiki page
+#
+# This file is licensed under GPL version 3 or any later version.
+# For copyright statements see end of file.
+#
+# For development see
+# https://github.com/texjporg/cjk-gs-support
+#
+# LIMITATIONS:
+# - Running the script (with default mode = actual setup/removing operations)
+# always overwrites "cidfmap.local" and "cidfmap.aliases" without asking,
+# whose file names might be common enough. If you choose to run the script,
+# leave these files untouched. (Do NOT edit these files by yourself!)
+# (This note also applies to MacTeX pre-shipped configuration files.)
+#
+# TODO:
+# - interoperability with kanji-config-updmap
+#
+# Note that symlink names should be consistent with ptex-fontmaps!
+
+$^W = 1;
+use Getopt::Long qw(:config no_autoabbrev ignore_case_always);
+use File::Basename;
+use File::Path qw(make_path);
+use Cwd 'abs_path';
+use strict;
+
+(my $prg = basename($0)) =~ s/\.pl$//;
+my $version = '20190816.0';
+
+if (win32()) {
+ # conversion between internal (utf-8) and console (cp932):
+ # multibyte characters should be encoded in cp932 at least during
+ # * kpathsea file search
+ # * abs_path existence test
+ # * input/output on console
+ # * batch file output
+ # routines. make sure all of these should be restricted to win32 mode!
+ # TODO: what to do with $opt_fontdef, @opt_aliases and $opt_filelist,
+ # with regard to encodings?
+ use utf8;
+ use Encode;
+ # some perl functions (symlink, -l test) does not work
+ print_warning("Sorry, we have only partial support for Windows!\n");
+}
+
+# The followings are installed by ptex-fontmaps (texjporg):
+# * 2004-H
+# * 2004-V
+# The followings are created by Adobe but not considered official
+# (see https://forums.adobe.com/thread/537415)
+# * GB-RKSJ-H
+# * GBT-RKSJ-H
+# * KSC-RKSJ-H
+# All others are provided in the latest Adobe CMap Resources:
+# https://github.com/adobe-type-tools/cmap-resources
+my %encode_list = (
+ Japan => [ qw/
+ 2004-H
+ 2004-V
+ 78-EUC-H
+ 78-EUC-V
+ 78-H
+ 78-RKSJ-H
+ 78-RKSJ-V
+ 78-V
+ 78ms-RKSJ-H
+ 78ms-RKSJ-V
+ 83pv-RKSJ-H
+ 90ms-RKSJ-H
+ 90ms-RKSJ-V
+ 90msp-RKSJ-H
+ 90msp-RKSJ-V
+ 90pv-RKSJ-H
+ 90pv-RKSJ-V
+ Add-H
+ Add-RKSJ-H
+ Add-RKSJ-V
+ Add-V
+ Adobe-Japan1-0
+ Adobe-Japan1-1
+ Adobe-Japan1-2
+ Adobe-Japan1-3
+ Adobe-Japan1-4
+ Adobe-Japan1-5
+ Adobe-Japan1-6
+ Adobe-Japan1-7
+ EUC-H
+ EUC-V
+ Ext-H
+ Ext-RKSJ-H
+ Ext-RKSJ-V
+ Ext-V
+ H
+ Hankaku
+ Hiragana
+ Identity-H
+ Identity-V
+ Katakana
+ NWP-H
+ NWP-V
+ RKSJ-H
+ RKSJ-V
+ Roman
+ UniJIS-UCS2-H
+ UniJIS-UCS2-HW-H
+ UniJIS-UCS2-HW-V
+ UniJIS-UCS2-V
+ UniJIS-UTF16-H
+ UniJIS-UTF16-V
+ UniJIS-UTF32-H
+ UniJIS-UTF32-V
+ UniJIS-UTF8-H
+ UniJIS-UTF8-V
+ UniJIS2004-UTF16-H
+ UniJIS2004-UTF16-V
+ UniJIS2004-UTF32-H
+ UniJIS2004-UTF32-V
+ UniJIS2004-UTF8-H
+ UniJIS2004-UTF8-V
+ UniJISPro-UCS2-HW-V
+ UniJISPro-UCS2-V
+ UniJISPro-UTF8-V
+ UniJISX0213-UTF32-H
+ UniJISX0213-UTF32-V
+ UniJISX02132004-UTF32-H
+ UniJISX02132004-UTF32-V
+ V
+ WP-Symbol
+ / ],
+ GB => [ qw/
+ Adobe-GB1-0
+ Adobe-GB1-1
+ Adobe-GB1-2
+ Adobe-GB1-3
+ Adobe-GB1-4
+ Adobe-GB1-5
+ GB-EUC-H
+ GB-EUC-V
+ GB-H
+ GB-RKSJ-H
+ GB-V
+ GBK-EUC-H
+ GBK-EUC-V
+ GBK2K-H
+ GBK2K-V
+ GBKp-EUC-H
+ GBKp-EUC-V
+ GBT-EUC-H
+ GBT-EUC-V
+ GBT-H
+ GBT-RKSJ-H
+ GBT-V
+ GBTpc-EUC-H
+ GBTpc-EUC-V
+ GBpc-EUC-H
+ GBpc-EUC-V
+ Identity-H
+ Identity-V
+ UniGB-UCS2-H
+ UniGB-UCS2-V
+ UniGB-UTF16-H
+ UniGB-UTF16-V
+ UniGB-UTF32-H
+ UniGB-UTF32-V
+ UniGB-UTF8-H
+ UniGB-UTF8-V
+ / ],
+ CNS => [ qw/
+ Adobe-CNS1-0
+ Adobe-CNS1-1
+ Adobe-CNS1-2
+ Adobe-CNS1-3
+ Adobe-CNS1-4
+ Adobe-CNS1-5
+ Adobe-CNS1-6
+ Adobe-CNS1-7
+ B5-H
+ B5-V
+ B5pc-H
+ B5pc-V
+ CNS-EUC-H
+ CNS-EUC-V
+ CNS1-H
+ CNS1-V
+ CNS2-H
+ CNS2-V
+ ETHK-B5-H
+ ETHK-B5-V
+ ETen-B5-H
+ ETen-B5-V
+ ETenms-B5-H
+ ETenms-B5-V
+ HKdla-B5-H
+ HKdla-B5-V
+ HKdlb-B5-H
+ HKdlb-B5-V
+ HKgccs-B5-H
+ HKgccs-B5-V
+ HKm314-B5-H
+ HKm314-B5-V
+ HKm471-B5-H
+ HKm471-B5-V
+ HKscs-B5-H
+ HKscs-B5-V
+ Identity-H
+ Identity-V
+ UniCNS-UCS2-H
+ UniCNS-UCS2-V
+ UniCNS-UTF16-H
+ UniCNS-UTF16-V
+ UniCNS-UTF32-H
+ UniCNS-UTF32-V
+ UniCNS-UTF8-H
+ UniCNS-UTF8-V
+ / ],
+ Korea => [ qw/
+ Adobe-Korea1-0
+ Adobe-Korea1-1
+ Adobe-Korea1-2
+ Identity-H
+ Identity-V
+ KSC-EUC-H
+ KSC-EUC-V
+ KSC-H
+ KSC-Johab-H
+ KSC-Johab-V
+ KSC-RKSJ-H
+ KSC-V
+ KSCms-UHC-H
+ KSCms-UHC-HW-H
+ KSCms-UHC-HW-V
+ KSCms-UHC-V
+ KSCpc-EUC-H
+ KSCpc-EUC-V
+ UniKS-UCS2-H
+ UniKS-UCS2-V
+ UniKS-UTF16-H
+ UniKS-UTF16-V
+ UniKS-UTF32-H
+ UniKS-UTF32-V
+ UniKS-UTF8-H
+ UniKS-UTF8-V
+ / ] );
+
+#
+# location where links to fonts in texmf are created, relative to TEXMF
+my $otf_pathpart = "fonts/opentype/cjk-gs-integrate";
+my $ttf_pathpart = "fonts/truetype/cjk-gs-integrate";
+
+# location where cidfmap, cidfmap.local and cidfmap.aliases are placed
+# when found gs is tlgs (win32), then files will be placed in lib/ instead of Resource/Init/
+my $cidfmap_pathpart = "Init/cidfmap";
+my $cidfmap_local_pathpart = "Init/cidfmap.local";
+my $cidfmap_aliases_pathpart = "Init/cidfmap.aliases";
+
+# support for ps2otfps by Akira Kakuto
+my $akotfps_pathpart = "dvips/ps2otfps";
+my $akotfps_datafilename = "psnames-for-otf";
+my $akotfps_datacontent = '';
+
+# if windows, we might create batch file for links
+my $winbatch = "makefontlinks.bat";
+my $winbatch_content = '';
+
+# dump output for data file (for easy editing for users)
+my $dump_datafile = "$prg-data.dat";
+
+my $opt_output;
+my $opt_fontdef;
+my @opt_fontdef_add;
+my @opt_aliases;
+my $opt_filelist;
+my $opt_texmflink;
+my $opt_akotfps;
+my $opt_force = 0;
+my $opt_remove = 0;
+my $opt_cleanup = 0;
+my $opt_hardlink = 0;
+my $opt_winbatch;
+my $opt_dump_data;
+my $opt_only_aliases = 0;
+my $opt_listaliases = 0;
+my $opt_listallaliases = 0;
+my $opt_listfonts = 0;
+my $opt_info = 0;
+my $opt_machine = 0;
+my $opt_strictpsname = 0;
+my $dry_run = 0;
+my $opt_quiet = 0;
+my $opt_debug = 0;
+my $opt_help = 0;
+my $opt_markdown = 0;
+
+if (! GetOptions(
+ "o|output=s" => \$opt_output,
+ "f|fontdef=s" => \$opt_fontdef,
+ "fontdef-add=s" => \@opt_fontdef_add,
+ "a|alias=s" => \@opt_aliases,
+ "filelist=s" => \$opt_filelist,
+ "link-texmf:s" => \$opt_texmflink,
+ "otfps:s" => \$opt_akotfps,
+ "force" => \$opt_force,
+ "remove" => \$opt_remove,
+ "cleanup" => \$opt_cleanup,
+ "hardlink" => \$opt_hardlink,
+ "winbatch:s" => \$opt_winbatch,
+ "dump-data:s" => \$opt_dump_data,
+ "only-aliases" => \$opt_only_aliases,
+ "list-aliases" => \$opt_listaliases,
+ "list-all-aliases" => \$opt_listallaliases,
+ "list-fonts" => \$opt_listfonts,
+ "info" => \$opt_info,
+ "machine-readable" => \$opt_machine,
+ "strict-psname" => \$opt_strictpsname, # hidden option for debugging
+ "n|dry-run" => \$dry_run,
+ "q|quiet" => \$opt_quiet,
+ "d|debug+" => \$opt_debug,
+ "h|help" => \$opt_help,
+ "markdown" => \$opt_markdown,
+ "v|version" => sub { print &version(); exit(0); }, ) ) {
+ die "Try \"$0 --help\" for more information.\n";
+}
+
+sub win32 { return ($^O=~/^MSWin(32|64)$/i); }
+sub macosx { return ($^O=~/^darwin$/i); }
+my $nul = (win32() ? 'nul' : '/dev/null') ;
+my $sep = (win32() ? ';' : ':');
+my %fontdb;
+my %aliases;
+my %user_aliases;
+
+if ($opt_help || $opt_markdown) {
+ Usage();
+ exit(0);
+}
+
+# check for the existence of kpsewhich, otherwise we cannot do anything
+if (system("kpsewhich --version >$nul 2>&1 <$nul" ) != 0) {
+ print_error("We need `kpsewhich' being installed! Exiting.\n");
+ exit(1);
+}
+
+if ($opt_debug >= 2) {
+ require Data::Dumper;
+ $Data::Dumper::Indent = 1;
+}
+
+my $otfinfo_available;
+chomp(my $otfinfo_help = `otfinfo --help 2>$nul`);
+if ($?) {
+ # to tell the truth, we want to show below as a warning
+ # but BasicTeX (scheme-small) does not have 'otfinfo' (lcdf-typetools);
+ # show info only for debugging
+ print_debug("The program 'otfinfo' not found in PATH.\n");
+ print_debug("Sorry, we can't be safe enough to distinguish\n");
+ print_debug("uppercase / lowercase file names.\n");
+ # but the below should be an error!
+ if ($opt_strictpsname) {
+ print_error("'otfinfo' not found, cannot proceed!\n");
+ exit(1);
+ }
+ $otfinfo_available = 0;
+} else {
+ $otfinfo_available = 1;
+}
+
+if (macosx()) {
+ # due to frequent incompatible changes in font file names by Apple,
+ # our built-in database doesn't support OS X 10.11 El Capitan or
+ # later versions
+ my $macos_ver = `sw_vers -productVersion`;
+ my $macos_ver_major = $macos_ver;
+ $macos_ver_major =~ s/^(\d+)\.(\d+).*/$1/;
+ my $macos_ver_minor = $macos_ver;
+ $macos_ver_minor =~ s/^(\d+)\.(\d+).*/$2/;
+ if ($macos_ver_major==10 && $macos_ver_minor>=8) {
+ if (!$opt_cleanup && !$opt_fontdef && !@opt_fontdef_add) { # if built-in only
+ print_warning("Our built-in database does not support recent\n");
+ print_warning("versions of Mac OS (10.8 Mountain Lion or later)!\n");
+ print_warning("If you want to use Hiragino fonts bundled with\n");
+ print_warning("your OS, obtain external database file and\n");
+ print_warning("specify it with --fontdef-add option!\n");
+ print_warning("I'll continue with my built-in database ...\n");
+ }
+ }
+}
+
+if (defined($opt_texmflink)) {
+ my $foo;
+ if ($opt_texmflink eq '') {
+ # option was passed but didn't receive a value
+ # -> use TEXMFLOCAL
+ chomp($foo = `kpsewhich -var-value=TEXMFLOCAL`);
+ } else {
+ # option was passed with an argument
+ # -> use it
+ $foo = $opt_texmflink;
+ }
+ $opt_texmflink = $foo;
+}
+
+if (defined($opt_akotfps)) {
+ my $foo;
+ if ($opt_akotfps eq '') {
+ if (defined($opt_texmflink)) {
+ $foo = $opt_texmflink;
+ } else {
+ chomp($foo = `kpsewhich -var-value=TEXMFLOCAL`);
+ }
+ } else {
+ $foo = $opt_akotfps;
+ }
+ $opt_akotfps = $foo;
+}
+
+if (defined($opt_winbatch)) {
+ if ($opt_winbatch ne '') {
+ $winbatch = $opt_winbatch;
+ }
+ if (win32()) {
+ $opt_winbatch = 1;
+ unlink $winbatch if (-f $winbatch);
+ } else {
+ print_warning("ignoring --winbatch option due to non-Windows\n");
+ $opt_winbatch = 0;
+ }
+} else {
+ $opt_winbatch = 0;
+}
+if ($opt_hardlink) {
+ if (win32()) {
+ $opt_hardlink = 1;
+ } else {
+ print_warning("ignoring --hardlink option due to non-Windows\n");
+ $opt_hardlink = 0;
+ }
+}
+
+if (defined($opt_dump_data)) {
+ if ($opt_dump_data ne '') {
+ $dump_datafile = $opt_dump_data;
+ }
+ $opt_dump_data = 1;
+ unlink $dump_datafile if (-f $dump_datafile);
+} else {
+ $opt_dump_data = 0;
+}
+
+if ($opt_cleanup) {
+ $opt_remove = 1;
+}
+
+if ($opt_info) {
+ $opt_listfonts = 1;
+ $opt_listaliases = 1;
+}
+
+# check exclusive options; unsafe due to make_all_available()
+if ($opt_listallaliases && $opt_listaliases) {
+ print_error("Both --list-all-aliases and --list-aliases!? I'm confused!\n");
+ exit(1);
+}
+if ($opt_listallaliases && $opt_listfonts) {
+ print_error("Options --list-all-aliases and --list-fonts cannot be used at the same time!\n");
+ exit(1);
+}
+if ($opt_cleanup && $opt_listfonts) {
+ print_error("Options --cleanup and --list-fonts cannot be used at the same time!\n");
+ exit(1);
+}
+if ($opt_cleanup && $opt_listaliases) {
+ print_error("Options --cleanup and --list-aliases cannot be used at the same time!\n");
+ exit(1);
+}
+
+main(@ARGV);
+
+#
+# only sub definitions from here on
+#
+sub main {
+ # first, read font database to obtain %fontdb
+ print_info("reading font database ...\n");
+ read_font_database();
+ if ($opt_dump_data) {
+ # with --dump-data, dump only effective database and exit
+ dump_font_database();
+ if (-f $dump_datafile) {
+ print_info("*** Data dumped to $dump_datafile ***\n");
+ exit(0);
+ } else {
+ print_error("Failed to dump data to $dump_datafile!\n");
+ exit(1);
+ }
+ }
+ # second, determine non-otf link name
+ # this is actually required only by info_found_fonts() and do_nonotf_fonts()
+ # operations, but it does no harm for other cases too
+ determine_nonotf_link_name(); # see comments there
+
+ # set 'available' flags and 'type' by kpsewhich search
+ # if $opt_cleanup or $opt_listallaliases is given, treat all files
+ # in the database as if they were actually available as OTF
+ if (!$opt_cleanup && !$opt_listallaliases) {
+ print_info("checking for files ...\n");
+ check_for_files();
+ } else {
+ make_all_available();
+ }
+ # obtain %aliases and %user_aliases
+ compute_aliases();
+
+ # informative operations
+ if ($opt_listfonts) {
+ info_found_fonts();
+ }
+ if ($opt_listaliases || $opt_listallaliases) {
+ info_list_aliases();
+ }
+ exit(0) if ($opt_listfonts || $opt_listaliases || $opt_listallaliases);
+ # if $opt_machine is still alive after the above exit(0), it's useless
+ if ($opt_machine) {
+ print_error("Option --machine-readable should be used with at least one of the followings:\n");
+ print_error(" --list-aliases, --list-all-aliases, --list-fonts, --info\n");
+ print_error("terminating.\n");
+ exit(1);
+ }
+
+ # do actual setup/removing operations
+ if (!$opt_output) {
+ print_info("searching for Ghostscript resource\n");
+ my $gsres = find_gs_resource();
+ if (!$gsres) {
+ print_error("Cannot find Ghostscript, terminating!\n");
+ exit(1);
+ } else {
+ $opt_output = $gsres;
+ }
+ }
+ if (! -d $opt_output) {
+ $dry_run || mkdir($opt_output) ||
+ die("Cannot create directory $opt_output: $!");
+ }
+ if ($opt_cleanup) {
+ print_info("going to clean up $opt_output\n");
+ } else {
+ print_info("output is going to $opt_output\n");
+ }
+ if (!$opt_only_aliases) {
+ if ($opt_cleanup) {
+ # all font types are handled at the same time
+ print_info("cleaning up all links, snippets and cidfmap.local ...\n");
+ do_all_fonts();
+ } else {
+ # OTF and TTF/TTC/OTC must be handled separately, depending on the found files
+ print_info(($opt_remove ? "removing" : "generating") . " links and snippets for CID fonts ...\n");
+ do_otf_fonts();
+ print_info(($opt_remove ? "removing" : "generating") . " links, snippets and cidfmap.local for non-CID fonts ...\n");
+ do_nonotf_fonts();
+ }
+ write_winbatch() if $opt_winbatch;
+ }
+ print_info(($opt_remove ? "removing" : "generating") . " snippets and cidfmap.aliases for font aliases ...\n");
+ do_aliases();
+ write_akotfps_datafile() if $opt_akotfps;
+ if ($opt_texmflink && !$dry_run) {
+ print_info("running mktexlsr ...\n");
+ system("mktexlsr");
+ }
+ print_info("finished\n");
+ if ($opt_winbatch) {
+ if (-f $winbatch) {
+ print_info("*** Batch file $winbatch created ***\n");
+ print_info("*** to complete, run it as administrator privilege.***\n");
+ } else {
+ print_error("Failed to create $winbatch!\n");
+ exit(1);
+ }
+ }
+}
+
+sub do_all_fonts {
+ # try to clean up all possible links/snippets/cidfmap which could have been
+ # generated in the previous runs
+ # previous versions of cjk-gs-integrate included following bugs:
+ # * the database sometimes identified GB/CNS classes wrongly
+ # * symlink names were sometimes invalid (some of which contained
+ # white-spaces, due to the absence of proper database entry) or
+ # inconsistent with ptex-fontmaps (Name <-> PSName or redundant Filename)
+ # * confused symlinks between TTF/TTC/OTC (including ttf <-> ttc links)
+ # also, current version generates OTC links into $otf_pathpart instead of
+ # $ttf_pathpart, which was not true in the older versions
+ # we'd like to clean up all such files
+ my $fontdest = "$opt_output/Font";
+ my $ciddest = "$opt_output/CIDFont";
+ my $cidfsubst = "$opt_output/CIDFSubst";
+ for my $k (sort keys %fontdb) {
+ #
+ # remove snippets: note that $class = $fontdb{$k}{'class'} is not enough
+ # due to previous bugs
+ for my $class (%encode_list) {
+ for my $enc (@{$encode_list{$class}}) {
+ unlink "$fontdest/$k-$enc" if (-f "$fontdest/$k-$enc");
+ }
+ }
+ #
+ # remove links; borrow link_font operation here for convenience
+ # since we don't need target in cleanup mode, initialize with stub "none"
+ #
+ # for OTF/TTF fonts, first remove both $k[.otf,ttf] and $fontdb{$k}{'origname'}[.otf]
+ # the links $k.otf and $fontdb{$k}{'origname'} are coming from previous bugs,
+ # and the links $k.ttf are (sometimes) coming from inconsistency
+ if ($fontdb{$k}{'origname'}) { # this test skips alias-only fonts (e.g. Ryumin-Light)
+ link_font("none", $ciddest, $k);
+ link_font("none", $cidfsubst, "$k.ttf");
+ link_font("none", "$opt_texmflink/$otf_pathpart", "$k.otf")
+ if $opt_texmflink;
+ link_font("none", "$opt_texmflink/$ttf_pathpart", "$k.ttf")
+ if $opt_texmflink;
+ link_font("none", $ciddest, $fontdb{$k}{'origname'});
+ link_font("none", "$opt_texmflink/$otf_pathpart", "$fontdb{$k}{'origname'}.otf")
+ if $opt_texmflink;
+ }
+ # for OTF/TTF/TTC/OTC fonts, loop through all file candidates
+ for my $f (keys %{$fontdb{$k}{'files'}}) {
+ # check for subfont extension
+ my $foo = $f;
+ $foo =~ s/^(.*)\(\d*\)$/$1/;
+ link_font("none", $cidfsubst, "$foo");
+ link_font("none", "$opt_texmflink/$otf_pathpart", "$foo") if $opt_texmflink;
+ link_font("none", "$opt_texmflink/$ttf_pathpart", "$foo") if $opt_texmflink;
+ }
+ }
+ update_master_cidfmap('cidfmap.local');
+ # we are in cleanup mode, also remove cidfmap.local itself
+ if (-f "$opt_output/$cidfmap_local_pathpart") {
+ unlink "$opt_output/$cidfmap_local_pathpart";
+ }
+}
+
+sub do_otf_fonts {
+ my $fontdest = "$opt_output/Font";
+ my $ciddest = "$opt_output/CIDFont";
+ make_dir($fontdest, "cannot create CID snippets there!");
+ make_dir($ciddest, "cannot link CID fonts there!");
+ make_dir("$opt_texmflink/$otf_pathpart",
+ "cannot link fonts to it!")
+ if $opt_texmflink;
+ for my $k (sort keys %fontdb) {
+ if ($fontdb{$k}{'available'} && $fontdb{$k}{'type'} eq 'OTF') {
+ generate_font_snippet($fontdest,
+ $k, $fontdb{$k}{'class'}, $fontdb{$k}{'target'});
+ link_font($fontdb{$k}{'target'}, $ciddest, $k);
+ link_font($fontdb{$k}{'target'}, "$opt_texmflink/$otf_pathpart", "$fontdb{$k}{'origname'}.otf")
+ if $opt_texmflink;
+ }
+ }
+}
+
+sub do_nonotf_fonts {
+ my $fontdest = "$opt_output/Font";
+ my $cidfsubst = "$opt_output/CIDFSubst";
+ my $outp = '';
+ make_dir($fontdest, "cannot create CID snippets there!");
+ make_dir($cidfsubst, "cannot link TTF fonts there!");
+ make_dir("$opt_texmflink/$ttf_pathpart",
+ "cannot link fonts to it!")
+ if $opt_texmflink;
+ for my $k (sort keys %fontdb) {
+ if ($fontdb{$k}{'available'} && $fontdb{$k}{'type'} eq 'TTF') {
+ # generate_font_snippet($fontdest,
+ # $k, $fontdb{$k}{'class'}, $fontdb{$k}{'target'});
+ $outp .= generate_cidfmap_entry($k, $fontdb{$k}{'class'}, $fontdb{$k}{'ttfname'}, -1);
+ link_font($fontdb{$k}{'target'}, $cidfsubst, $fontdb{$k}{'ttfname'});
+ link_font($fontdb{$k}{'target'}, "$opt_texmflink/$ttf_pathpart", $fontdb{$k}{'ttfname'})
+ if $opt_texmflink;
+ } elsif ($fontdb{$k}{'available'} && $fontdb{$k}{'type'} eq 'TTC') {
+ # generate_font_snippet($fontdest,
+ # $k, $fontdb{$k}{'class'}, $fontdb{$k}{'target'});
+ $outp .= generate_cidfmap_entry($k, $fontdb{$k}{'class'}, $fontdb{$k}{'ttcname'}, $fontdb{$k}{'subfont'});
+ link_font($fontdb{$k}{'target'}, $cidfsubst, $fontdb{$k}{'ttcname'});
+ link_font($fontdb{$k}{'target'}, "$opt_texmflink/$ttf_pathpart", $fontdb{$k}{'ttcname'})
+ if $opt_texmflink;
+ } elsif ($fontdb{$k}{'available'} && $fontdb{$k}{'type'} eq 'OTC') {
+ # currently Ghostscript does not have OTC support; not creating gs resource
+ print_debug("gs does not support OTC, not creating gs resource for $k\n");
+ # generate_font_snippet($fontdest,
+ # $k, $fontdb{$k}{'class'}, $fontdb{$k}{'target'});
+ # $outp .= generate_cidfmap_entry($k, $fontdb{$k}{'class'}, $fontdb{$k}{'otcname'}, $fontdb{$k}{'subfont'});
+ # link_font($fontdb{$k}{'target'}, $cidfsubst, $fontdb{$k}{'otcname'});
+ link_font($fontdb{$k}{'target'}, "$opt_texmflink/$otf_pathpart", $fontdb{$k}{'otcname'})
+ if $opt_texmflink;
+ }
+ }
+ return if $dry_run;
+ if ($outp) {
+ if (! -d "$opt_output/Init") {
+ mkdir("$opt_output/Init") ||
+ die("Cannot create directory $opt_output/Init: $!");
+ }
+ open(FOO, ">$opt_output/$cidfmap_local_pathpart") ||
+ die("Cannot open $opt_output/$cidfmap_local_pathpart: $!");
+ print FOO $outp;
+ close(FOO);
+ }
+ update_master_cidfmap('cidfmap.local');
+}
+
+sub do_aliases {
+ my $fontdest = "$opt_output/Font";
+ my $ciddest = "$opt_output/CIDFont"; # required for Heisei* check only
+ my $cidfsubst = "$opt_output/CIDFSubst";
+ my $outp = '';
+ #
+ # alias handling
+ # we use two levels of aliases
+ # * one is for the default generic names (these are not actual fonts)
+ # Ryumin-Light, GothicBBB-Medium, ... etc.
+ # * the second level of aliases is for Morisawa OTF font names
+ # RyuminPro-Light, GothicBBBPro-Medium, ... etc.
+ # the order of fonts selected is
+ # defined in the Provides(Priority): Name in the font definiton
+ #
+ $outp .= "\n\n% Aliases\n";
+ #
+ my (@jal, @kal, @tal, @sal);
+ #
+ for my $al (sort keys %aliases) {
+ my $target;
+ my $class;
+ if ($user_aliases{$al}) {
+ $target = $user_aliases{$al};
+ # determine class
+ if ($fontdb{$target}{'available'}) {
+ $class = $fontdb{$target}{'class'};
+ } else {
+ # must be an aliases, we checked this when initializing %user_aliases
+ # reset the $al value
+ # and since $class is still undefined we will use the next code below
+ $al = $target;
+ }
+ }
+ if (!$class) {
+ if (!%{$aliases{$al}}) {
+ print_warning("Alias candidate for $al is empty, skipping!\n");
+ next;
+ }
+ # search lowest number
+ my @ks = keys(%{$aliases{$al}});
+ my $first = (sort { $a <=> $b} @ks)[0];
+ $target = $aliases{$al}{$first};
+ $class = $fontdb{$target}{'class'};
+ }
+ # we also need to create font snippets in Font (or add configuration)
+ # for the aliases!
+ generate_font_snippet($fontdest, $al, $class, $target);
+ if ($class eq 'Japan') {
+ push @jal, "/$al /$target ;";
+ } elsif ($class eq 'Korea') {
+ push @kal, "/$al /$target ;";
+ } elsif ($class eq 'GB') {
+ push @sal, "/$al /$target ;";
+ } elsif ($class eq 'CNS') {
+ push @tal, "/$al /$target ;";
+ } else {
+ print STDERR "unknown class $class for $al\n";
+ }
+ }
+ # special case for native CID fonts in ancient days
+ # if not readable, add aliases for substitution
+ push @jal, "/HeiseiMin-W3 /Ryumin-Light ;" if (! -r "$ciddest/HeiseiMin-W3");
+ push @jal, "/HeiseiKakuGo-W5 /GothicBBB-Medium ;" if (! -r "$ciddest/HeiseiKakuGo-W5");
+ #
+ $outp .= "\n% Japanese fonts\n" . join("\n", @jal) . "\n" if @jal;
+ $outp .= "\n% Korean fonts\n" . join("\n", @kal) . "\n" if @kal;
+ $outp .= "\n% Traditional Chinese fonts\n" . join("\n", @tal) . "\n" if @tal;
+ $outp .= "\n% Simplified Chinese fonts\n" . join("\n", @sal) . "\n" if @sal;
+ #
+ return if $dry_run;
+ if ($outp && !$opt_remove) {
+ if (! -d "$opt_output/Init") {
+ mkdir("$opt_output/Init") ||
+ die("Cannot create directory $opt_output/Init: $!");
+ }
+ open(FOO, ">$opt_output/$cidfmap_aliases_pathpart") ||
+ die("Cannot open $opt_output/$cidfmap_aliases_pathpart: $!");
+ print FOO $outp;
+ close(FOO);
+ }
+ update_master_cidfmap('cidfmap.aliases');
+ # if we are in cleanup mode, also remove cidfmap.aliases itself
+ if (-f "$opt_output/$cidfmap_aliases_pathpart") {
+ unlink "$opt_output/$cidfmap_aliases_pathpart" if $opt_cleanup;
+ }
+}
+
+sub update_master_cidfmap {
+ # what we have to do is:
+ # in add mode:
+ # * add an entry for the given argument
+ # * for tlgs.win32 pre-shipped cidfmap, prepend '%' to override
+ # the default of "(cidfmap.TeXLive) .runlibfile",
+ # in remove mode:
+ # * remove an entry for the given argument
+ # * for tlgs.win32 pre-shipped cidfmap, remove '%' to restore the default
+ my $add = shift;
+ my $cidfmap_master = "$opt_output/$cidfmap_pathpart";
+ print_info(sprintf("%s $add %s cidfmap file ...\n",
+ ($opt_remove ? "removing" : "adding"), ($opt_remove ? "from" : "to")));
+ if (-r $cidfmap_master) {
+ open(FOO, "<", $cidfmap_master) ||
+ die("Cannot open $cidfmap_master for reading: $!");
+ my $found = 0;
+ my $found_tl = 0;
+ my $newmaster = "";
+ # in add mode: just search for the entry and set $found
+ # in remove mode: collect all lines that do not match
+ # also, we handle "cidfmap.TeXLive" now
+ while(<FOO>) {
+ if (m/^\s*\(\Q$add\E\)\s\s*\.runlibfile\s*$/) {
+ $found = 1;
+ } elsif (m/^\s*\(cidfmap\.TeXLive\)\s\s*\.runlibfile\s*$/) {
+ # if found, it has to be disabled in add mode in a way in which it can
+ # be detected in the (future) remove mode
+ next if $found_tl; # skip it as duplicate (though unlikely to happen)
+ $found_tl = 1;
+ $newmaster .= "\%" if (!$opt_remove); # in add mode, disable it
+ $newmaster .= $_; # pass it as-is
+ } elsif (m/^\s*\%\%*\s*\(cidfmap\.TeXLive\)\s\s*\.runlibfile\s*$/) {
+ # if found, it should be the one disabled by myself in the previous run;
+ # restore it in remove mode
+ next if $found_tl; # skip it as duplicate (though unlikely to happen)
+ $found_tl = 1;
+ $_ =~ s/\%//g if $opt_remove; # in remove mode, enable it
+ $newmaster .= $_; # pass it
+ } else {
+ $newmaster .= $_;
+ }
+ }
+ close(FOO);
+ # if the original master cidfmap has a new line at end of file,
+ # then $newmaster should end with "\n".
+ # otherwise we add a new line, since there is a possibility of %EOF comment
+ # without trailing new line (e.g. TL before r44039)
+ $newmaster =~ s/\n$//;
+ $newmaster =~ s/$/\n/;
+ if ($opt_remove) {
+ if ($found || $found_tl) {
+ return if $dry_run;
+ open(FOO, ">", $cidfmap_master) ||
+ die("Cannot clean up $cidfmap_master: $!");
+ print FOO $newmaster;
+ close FOO;
+ }
+ } else {
+ if ($found && !$found_tl) {
+ print_info("$add already loaded in $cidfmap_master, no changes\n");
+ } else {
+ return if $dry_run;
+ open(FOO, ">", $cidfmap_master) ||
+ die("Cannot open $cidfmap_master for appending: $!");
+ print FOO $newmaster;
+ print FOO "($add) .runlibfile\n";
+ close(FOO);
+ }
+ }
+ } else {
+ return if $dry_run;
+ return if $opt_remove;
+ open(FOO, ">", $cidfmap_master) ||
+ die("Cannot open $cidfmap_master for writing: $!");
+ print FOO "($add) .runlibfile\n";
+ close(FOO);
+ }
+}
+
+sub generate_cidfmap_entry {
+ my ($n, $c, $f, $sf) = @_;
+ return "" if $opt_remove;
+ # $f is already the link target name 'ttfname' (or 'ttcname' or 'otcname')
+ # as determined by minimal priority number
+ # extract subfont
+ my $s = "/$n << /FileType /TrueType
+ /Path pssystemparams /GenericResourceDir get
+ (CIDFSubst/$f) concatstrings\n";
+ if ($sf >= 0) { # in this script, $sf < 0 represents TTF
+ $s .= " /SubfontID $sf\n";
+ }
+ $s .= " /CSI [($c";
+ if ($c eq "Japan") {
+ $s .= "1) 6]";
+ } elsif ($c eq "GB") {
+ $s .= "1) 5]";
+ } elsif ($c eq "CNS") {
+ $s .= "1) 5]";
+ } elsif ($c eq "Korea") {
+ $s .= "1) 2]";
+ } else {
+ print_warning("unknown class $c for $n, skipping.\n");
+ return '';
+ }
+ $s .= " >> ;\n";
+ return $s;
+}
+
+sub generate_font_snippet {
+ my ($fd, $n, $c, $f) = @_;
+ return if $dry_run;
+ if ($opt_akotfps) {
+ add_akotfps_data($n);
+ return;
+ }
+ for my $enc (@{$encode_list{$c}}) {
+ if ($opt_remove) {
+ unlink "$fd/$n-$enc" if (-f "$fd/$n-$enc");
+ next;
+ }
+ open(FOO, ">$fd/$n-$enc") ||
+ die("cannot open $fd/$n-$enc for writing: $!");
+ print FOO "%!PS-Adobe-3.0 Resource-Font
+%%DocumentNeededResources: $enc (CMap)
+%%IncludeResource: $enc (CMap)
+%%BeginResource: Font ($n-$enc)
+($n-$enc)
+($enc) /CMap findresource
+[($n) /CIDFont findresource]
+composefont
+pop
+%%EndResource
+%%EOF
+";
+ close(FOO);
+ }
+}
+
+sub add_akotfps_data {
+ my ($fn) = @_;
+ return if $dry_run;
+ if (!$opt_remove) {
+ $akotfps_datacontent .= "$fn\n";
+ }
+}
+
+#
+# link_font operation
+# $opt_force is *not* treated first to warn only
+# at really critical cases
+# case 1:
+# exists, is link, link targets agree
+# $opt_force is ignored
+# remove or remove+add according to $opt_remove
+# case 2:
+# exists, is link, dangling symlink
+# $opt_force is ignored
+# remove or remove+add according to $opt_remove
+# case 3:
+# exists, is link, link target different
+# if $opt_force
+# warn, remove or remove+add according to $opt_remove
+# else
+# error message
+# case 4:
+# exists, not a link
+# if $opt_force
+# warn, remove or remove+add according to $opt_remove
+# else
+# error message
+# case 5:
+# not exists
+# $opt_force is ignored
+# do nothing or add according to $opt_remove
+#
+sub link_font {
+ my ($f, $cd, $n) = @_;
+ return if $dry_run;
+ if (!$n) {
+ $n = basename($f);
+ }
+ my $target = "$cd/$n";
+ my $do_unlink = 0;
+ if (-l $target) {
+ if ($opt_cleanup) {
+ $do_unlink = 1;
+ } else {
+ my $linkt = readlink($target);
+ if ($linkt) {
+ if ($linkt eq $f) {
+ # case 1: exists, link, targets agree
+ $do_unlink = 1;
+ } elsif (-r $linkt) {
+ # case 3: exists, link, targets different
+ if ($opt_force) {
+ print_info("Removing link $target due to --force!\n");
+ $do_unlink = 1;
+ } else {
+ print_error("Link $target already existing, but target different from $f, exiting!\n");
+ exit(1);
+ }
+ } else {
+ # case 2: dangling symlink or link-to-link
+ print_warning("Removing dangling symlink $target to $linkt\n");
+ $do_unlink = 1;
+ }
+ } else {
+ print_error("This should not happen, we have a link but cannot read the target?\n");
+ exit(1);
+ }
+ }
+ } elsif (-r $target) {
+ # case 4: exists, but not link (NTFS hardlink on win32 falls into this)
+ if (-s $target) {
+ if ($opt_force) {
+ print_info("Removing $target due to --force!\n");
+ $do_unlink = 1;
+ } else {
+ print_error("$target already existing, exiting!\n");
+ exit(1);
+ }
+ } else {
+ # NTFS symlink on win32 has file size 0, we're safe to remove it
+ $do_unlink = 1;
+ }
+ } # case 5: otherwise it is not existing!
+
+ # if we are still here and $do_unlink is set, remove it
+ maybe_unlink($target) if $do_unlink;
+ # recreate link if we are not in the remove case
+ if (!$opt_remove) {
+ maybe_symlink($f, $target) || die("Cannot link font $f to $target: $!");
+ }
+}
+
+sub make_dir {
+ my ($d, $w) = @_;
+ if (-r $d) {
+ if (! -d $d) {
+ print_error("$d is not a directory, $w\n");
+ exit(1);
+ }
+ } else {
+ $dry_run || make_path($d);
+ }
+}
+
+# perl symlink function does not work on windows, so leave it to
+# cmd.exe mklink function (or write to batch file).
+# if target already exists, do not try to override it. otherwise
+# "mklink error: Cannot create a file when that file already exists"
+# is thrown many times
+sub maybe_symlink {
+ my ($realname, $targetname) = @_;
+ if (win32()) {
+ # hardlink vs. symlink -- HY 2017/04/26
+ # * readablitiy: hardlink is easier, but it seems that current gs can read
+ # symlink properly, so it doesn't matter
+ # * permission: hardlink creation does not require administrator privilege,
+ # but is likely to fail for c:/windows/fonts/* system files
+ # due to "Access denied"
+ # symlink creation requires administrator privilege, but
+ # it can link to all files in c:/windows/fonts/
+ # * versatility: symlink can point to a file on a different/remote volume
+ # for these reasons, we try to create symlink by default.
+ # if --hardlink option is given, we create hardlink instead.
+ # also, if --winbatch option is given, we prepare batch file for link generation,
+ # instead of creating links right away.
+ $realname =~ s!/!\\!g;
+ $targetname =~ s!/!\\!g;
+ if ($opt_winbatch) {
+ # re-encoding of $winbatch_content is done by write_winbatch()
+ $winbatch_content .= "if not exist \"$targetname\" mklink ";
+ $winbatch_content .= "/h " if $opt_hardlink;
+ $winbatch_content .= "\"$targetname\" \"$realname\"\n";
+ } else {
+ # should be encoded in cp932 for win32 console
+ $realname = encode_utftocp($realname);
+ $targetname = encode_utftocp($targetname);
+ my $cmdl = "cmd.exe /c if not exist \"$targetname\" mklink ";
+ $cmdl .= "/h " if $opt_hardlink;
+ $cmdl .= "\"$targetname\" \"$realname\"";
+ my @ret = `$cmdl`;
+ # sometimes hard link creation may fail due to "Access denied"
+ # (especially when $realname is located in c:/windows/fonts).
+ # TODO: what should we do to ensure resources, which might be
+ # different from $realname? -- HY (2017/03/21)
+ # -- one possibility:
+ # if (@ret) {
+ # @ret ="done";
+ # } else {
+ # print_info("Hard link creation for $realname failed. I will copy this file instead.\n");
+ # $cmdl = "cmd.exe /c if not exist \"$targetname\" copy \"$realname\" \"$targetname\"";
+ # @ret = `$cmdl`;
+ # }
+ # -- however, both tlgs (TeX Live) and standalone gswin32/64 (built
+ # by Akira Kakuto) can search in c:/windows/fonts by default.
+ # Thus, copying such files is waste of memory
+ }
+ } else {
+ symlink ($realname, $targetname);
+ }
+}
+
+# unlink function actually works also on windows, however,
+# leave it to batch file for consistency. otherwise
+# option $opt_force may not work as expected
+sub maybe_unlink {
+ my ($targetname) = @_;
+ if (win32()) {
+ $targetname =~ s!/!\\!g;
+ if ($opt_winbatch) {
+ # re-encoding of $winbatch_content is done by write_winbatch()
+ $winbatch_content .= "if exist \"$targetname\" del \"$targetname\"\n";
+ } else {
+ # should be encoded in cp932 for win32 console
+ $targetname = encode_utftocp($targetname);
+ my $cmdl = "cmd.exe /c if exist \"$targetname\" del \"$targetname\"";
+ my @ret = `$cmdl`;
+ }
+ } else {
+ unlink ($targetname);
+ }
+}
+
+# write batch file (windows only)
+sub write_winbatch {
+ return if $dry_run;
+ open(FOO, ">$winbatch") ||
+ die("cannot open $winbatch for writing: $!");
+ # $winbatch_content may contain multibyte characters, and they
+ # should be encoded in cp932 in batch file
+ $winbatch_content = encode_utftocp($winbatch_content);
+ print FOO "\@echo off\n",
+ "$winbatch_content",
+ "\@echo symlink ", ($opt_remove ? "removed\n" : "generated\n"),
+ "\@pause 1\n";
+ close(FOO);
+}
+
+# write to psnames-for-otfps
+sub write_akotfps_datafile {
+ return if $dry_run;
+ make_dir("$opt_akotfps/$akotfps_pathpart",
+ "cannot create $akotfps_datafilename in it!");
+ open(FOO, ">$opt_akotfps/$akotfps_pathpart/$akotfps_datafilename") ||
+ die("cannot open $opt_akotfps/$akotfps_pathpart/$akotfps_datafilename for writing: $!");
+ print FOO "% psnames-for-otf
+%
+% PostSctipt names for OpenType fonts
+%
+% This file is used by a program ps2otfps
+% in order to add needed information to a ps file
+% created by the dvips
+%
+$akotfps_datacontent";
+ close(FOO);
+}
+
+#
+# dump found files
+sub info_found_fonts {
+ print "List of found fonts:\n\n";
+ for my $k (sort keys %fontdb) {
+ my @foundfiles;
+ if ($fontdb{$k}{'available'}) {
+ print "Font: $k\n";
+ print "Type: $fontdb{$k}{'type'}\n";
+ print "Class: $fontdb{$k}{'class'}\n";
+ my $fn = $fontdb{$k}{'target'};
+ # cp932 for win32 console
+ if (win32()) {
+ $fn = encode_utftocp($fn);
+ }
+ if ($fontdb{$k}{'type'} eq 'TTC' || $fontdb{$k}{'type'} eq 'OTC') {
+ $fn .= "($fontdb{$k}{'subfont'})";
+ }
+ print "File: $fn\n";
+ if ($fontdb{$k}{'type'} eq 'TTF') {
+ print "Link: $fontdb{$k}{'ttfname'}\n";
+ } elsif ($fontdb{$k}{'type'} eq 'TTC') {
+ print "Link: $fontdb{$k}{'ttcname'}\n";
+ } elsif ($fontdb{$k}{'type'} eq 'OTC') {
+ print "Link: $fontdb{$k}{'otcname'}\n";
+ }
+ my @ks = sort { $fontdb{$k}{'files'}{$a}{'priority'}
+ <=>
+ $fontdb{$k}{'files'}{$b}{'priority'} }
+ keys %{$fontdb{$k}{'files'}};
+ # remove the top element which is the winner and shown above
+ shift @ks;
+ if (@ks) {
+ print "Other candidates in decreasing order:\n";
+ for my $f (@ks) {
+ print " ", $fontdb{$k}{'files'}{$f}{'target'}, "\n";
+ }
+ }
+ print "\n";
+ }
+ }
+}
+
+#
+# dump aliases
+sub info_list_aliases {
+ print "List of ", ($opt_listallaliases ? "all" : "available"), " aliases and their options (in decreasing priority):\n" unless $opt_machine;
+ my (@jal, @kal, @tal, @sal);
+ for my $al (sort keys %aliases) {
+ my $cl;
+ my @ks = sort { $a <=> $b} keys(%{$aliases{$al}});
+ my $foo = '';
+ $foo = "$al:\n" unless $opt_machine;
+ for my $p (@ks) {
+ my $t = $aliases{$al}{$p};
+ my $fn = ($opt_listallaliases ? "-" : $fontdb{$t}{'target'} );
+ # cp932 for win32 console
+ if (win32()) {
+ $fn = encode_utftocp($fn);
+ }
+ # should always be the same ;-)
+ $cl = $fontdb{$t}{'class'};
+ if (!$opt_listallaliases && ($fontdb{$t}{'type'} eq 'TTC' || $fontdb{$t}{'type'} eq 'OTC')) {
+ $fn .= "($fontdb{$t}{'subfont'})";
+ }
+ if ($opt_machine) {
+ $foo .= "$al:$p:$aliases{$al}{$p}:$fn\n";
+ } else {
+ $foo .= "\t($p) $aliases{$al}{$p} ($fn)\n";
+ }
+ }
+ if ($cl eq 'Japan') {
+ push @jal, $foo;
+ } elsif ($cl eq 'Korea') {
+ push @kal, $foo;
+ } elsif ($cl eq 'GB') {
+ push @sal, $foo;
+ } elsif ($cl eq 'CNS') {
+ push @tal, $foo;
+ } else {
+ print STDERR "unknown class $cl for $al\n";
+ }
+ }
+ if ($opt_machine) {
+ print @jal if @jal;
+ print @kal if @kal;
+ print @sal if @sal;
+ print @tal if @tal;
+ } else {
+ print "Aliases for Japanese fonts:\n", @jal, "\n" if @jal;
+ print "Aliases for Korean fonts:\n", @kal, "\n" if @kal;
+ print "Aliases for Simplified Chinese fonts:\n", @sal, "\n" if @sal;
+ print "Aliases for Traditional Chinese fonts:\n", @tal, "\n" if @tal;
+ }
+}
+
+#
+# make all fonts available for listing all aliases
+sub make_all_available {
+ for my $k (keys %fontdb) {
+ $fontdb{$k}{'available'} = 1;
+ $fontdb{$k}{'type'} = 'OTF';
+ delete $fontdb{$k}{'files'} if (!$opt_cleanup);
+ }
+}
+
+#
+# checks all file names listed in %fontdb
+# and sets
+sub check_for_files {
+ my @foundfiles;
+ if ($opt_filelist) {
+ open(FOO, "<", $opt_filelist) || die("Cannot open $opt_filelist: $!");
+ @foundfiles = <FOO>;
+ close(FOO) || warn "Cannot close $opt_filelist: $!";
+ } else {
+ # first collect all files:
+ my @fn;
+ for my $k (keys %fontdb) {
+ for my $f (keys %{$fontdb{$k}{'files'}}) {
+ # check for subfont extension
+ if ($f =~ m/^(.*)\(\d*\)$/) {
+ push @fn, $1;
+ } else {
+ push @fn, $f;
+ }
+ }
+ }
+ #
+ # collect extra directories for search
+ my @extradirs;
+ if (win32()) {
+ push @extradirs, "c:/windows/fonts//";
+ } else {
+ # other dirs to check, for normal unix?
+ for my $d (qw!/Library/Fonts /System/Library/Fonts /System/Library/Assets
+ /Network/Library/Fonts /usr/share/fonts!) {
+ push @extradirs, "$d//" if (-d $d); # recursive search
+ }
+ # the path contains white space, so hack required
+ for my $d (qw!/Library/Application__Support/Apple/Fonts!) {
+ my $sd = $d;
+ $sd =~ s/__/ /;
+ push @extradirs, "$sd//" if (-d "$sd"); # recursive search
+ }
+ # office for mac 2016
+ for my $d (qw!/Applications/Microsoft__Word.app
+ /Applications/Microsoft__Excel.app
+ /Applications/Microsoft__PowerPoint.app!) {
+ my $sd = $d;
+ $sd =~ s/__/ /;
+ push @extradirs, "$sd/Contents/Resources/Fonts/" if (-d "$sd/Contents/Resources/Fonts");
+ push @extradirs, "$sd/Contents/Resources/DFonts/" if (-d "$sd/Contents/Resources/DFonts");
+ }
+ my $home = $ENV{'HOME'};
+ push @extradirs, "$home/Library/Fonts//" if (-d "$home/Library/Fonts");
+ }
+ #
+ if (@extradirs) {
+ # TODO: we want that files in OSFONTDIR are found first, before
+ # links that we have created in TEXMFLOCAL
+ # Thus, instead of setting OSFONTDIR which is at the *END* of
+ # the kpsewhich variables OPENTYPEFONTS and TTFONTS, we'd like to
+ # put all these fonts at the front of them
+ #
+ # There are problems with case-insensitive file systems like HFS
+ # on MacOS, as we might catch different names (batang/Batang)
+ # and identify them wrongly.
+ # https://github.com/texjporg/cjk-gs-support/issues/9
+ # For now until we have dealt with that, do not set the
+ # two variables (HY 2016/09/27) and think about a different approach.
+ push @extradirs, $ENV{'OSFONTDIR'} if $ENV{'OSFONTDIR'};
+ if (@extradirs) {
+ # comment out -- HY (2016/09/27)
+ # my $newotf = join($sep, @extradirs) . $sep;
+ # my $newttf = $newotf;
+ # $newotf .= $ENV{'OPENTYPEFONTS'} if $ENV{'OPENTYPEFONTS'};
+ # $newttf .= $ENV{'TTFONTS'} if $ENV{'TTFONTS'};
+ # $ENV{'OPENTYPEFONTS'} = $newotf;
+ # $ENV{'TTFONTS'} = $newttf;
+ # new code for uppercase/lowercase workaround -- HY (2016/09/27)
+ my $extrafontdir = join($sep, @extradirs) . $sep;
+ $ENV{'OSFONTDIR'} = $extrafontdir;
+ }
+ }
+ # prepare for kpsewhich call, we need to do quoting
+ # we need as much candidate files as possible, so -all is needed
+ my $cmdl = 'kpsewhich -all ';
+ for my $f (@fn) {
+ $cmdl .= " \"$f\" ";
+ }
+ # shoot up kpsewhich
+ # this call (derived from the database) contains multibyte characters,
+ # and they should be encoded in cp932 for win32 console
+ if (win32()) {
+ $cmdl = encode_utftocp($cmdl);
+ }
+ print_ddebug("checking for $cmdl\n");
+ @foundfiles = `$cmdl`;
+ }
+ # at this point, on windows, @foundfiles is encoded in cp932
+ # which is suitable for the next few lines
+ chomp(@foundfiles);
+ print_ddebug("Found files @foundfiles\n");
+ # map basenames to filenames
+ my %bntofn;
+ for my $f (@foundfiles) {
+ $f =~ s/[\r\n]+\z//; # perl's chomp() on git-bash cannot strip CR of CRLF ??
+ my $realf = abs_path($f);
+ if (!$realf) {
+ print_warning("dead link or strange file found: $f - ignored!\n");
+ next;
+ }
+ if (win32()) {
+ # abs_path cannot read NTFS symlink/hardlink, and it serves as
+ # identity transformation.
+ # this might lead to dangling links for multiple runs of cjk-gs-integrate,
+ # when $opt_texmflink (in the previous run) is contained in the (current)
+ # kpsewhich search path.
+ # to avoid this, ignore targets which contain $otf_pathpart or $ttf_pathpart
+ my $temp_realfdir = "$realf";
+ $temp_realfdir =~ s!^(.*)/(.*)$!$1!;
+ next if ($temp_realfdir =~ $otf_pathpart || $temp_realfdir =~ $ttf_pathpart);
+ }
+ # decode now on windows! (cp932 -> internal utf-8)
+ if (win32()) {
+ $f = encode_cptoutf($f);
+ $realf = encode_cptoutf($realf);
+ }
+ my $bn = basename($f);
+ # kpsewhich -all might return multiple files with the same basename;
+ # collect all of them
+ $bntofn{$bn}{$realf} = 1;
+ }
+
+ # show the %fontdb before file check
+ if ($opt_debug >= 2) {
+ print_ddebug("dumping font database before file check:\n");
+ print_ddebug(Data::Dumper::Dumper(\%fontdb));
+ }
+ if ($opt_debug >= 3) {
+ print_dddebug("dumping basename to filename list:\n");
+ print_dddebug(Data::Dumper::Dumper(\%bntofn));
+ }
+
+ # update the %fontdb with the found files
+ for my $k (keys %fontdb) {
+ $fontdb{$k}{'available'} = 0;
+ for my $f (keys %{$fontdb{$k}{'files'}}) {
+ # check for subfont extension
+ my $realfile = $f;
+ $realfile =~ s/^(.*)\(\d*\)$/$1/;
+ # check for casefolding
+ # we might catch different names (batang/Batang) and identify them wrongly on
+ # * case-insensitive file systems (like HFS on MacOS)
+ # * kpathsea 6.3.0 or later, with casefolding fallback search (TL2018)
+ # check the actual psname using otfinfo utility, only when we "know"
+ # both uppercase/lowercase font files are possible and they are different
+ my $actualpsname;
+ my $bname;
+ for my $b (sort keys %{$bntofn{$realfile}}) {
+ $fontdb{$k}{'casefold'} = "debug" if $opt_strictpsname;
+ if ($fontdb{$k}{'casefold'} && $otfinfo_available &&
+ ($fontdb{$k}{'files'}{$f}{'type'} eq 'OTF' || $fontdb{$k}{'files'}{$f}{'type'} eq 'TTF')) {
+ print_debug("We need to test whether\n");
+ print_debug(" $b\n");
+ print_debug("is the correct one. Invoking otfinfo ...\n");
+ chomp($actualpsname = `otfinfo -p "$b"`);
+ if ($?) {
+ # something is wrong with the font file, or otfinfo does not support it;
+ # still there is a chance that Ghostscript supports, so don't discard it
+ print_debug("... command exited with $?!\n");
+ print_debug("OK, I'll take this, but it may not work properly.\n");
+ print_warning("otfinfo check failed for $b\n") if $opt_strictpsname;
+ $bname = $b;
+ last;
+ }
+ $actualpsname =~ s/[\r\n]+\z//; # perl's chomp() on git-bash cannot strip CR of CRLF ??
+ if ($actualpsname ne $k) {
+ print_debug("... PSName returned by otfinfo ($actualpsname) is\n");
+ print_debug("different from our database ($k), discarding!\n");
+ print_warning("otfinfo check failed for $b\n") if $opt_strictpsname;
+ } else {
+ print_debug("... test passed.\n");
+ $bname = $b;
+ last;
+ }
+ } else {
+ $bname = $b;
+ last;
+ }
+ }
+ if ($bname) {
+ # we found a representative, make it available
+ $fontdb{$k}{'files'}{$f}{'target'} = $bname;
+ $fontdb{$k}{'available'} = 1;
+ } else {
+ # delete the entry for convenience
+ delete $fontdb{$k}{'files'}{$f};
+ }
+ }
+ }
+ # second round to determine the winner in case of more targets
+ for my $k (keys %fontdb) {
+ if ($fontdb{$k}{'available'}) {
+ my $mp = 1000000; my $mf;
+ for my $f (keys %{$fontdb{$k}{'files'}}) {
+ if ($fontdb{$k}{'files'}{$f}{'priority'} < $mp) {
+ $mp = $fontdb{$k}{'files'}{$f}{'priority'};
+ $mf = $f;
+ }
+ }
+ # extract subfont if necessary
+ my $sf = 0;
+ if ($mf =~ m/^(.*)\((\d*)\)$/) { $sf = $2; }
+ $fontdb{$k}{'target'} = $fontdb{$k}{'files'}{$mf}{'target'};
+ $fontdb{$k}{'type'} = $fontdb{$k}{'files'}{$mf}{'type'};
+ $fontdb{$k}{'subfont'} = $sf if ($fontdb{$k}{'type'} eq 'TTC' || $fontdb{$k}{'type'} eq 'OTC');
+ }
+ # not needed anymore
+ # delete $fontdb{$k}{'files'};
+ }
+ if ($opt_debug >= 2) {
+ print_ddebug("dumping font database:\n");
+ print_ddebug(Data::Dumper::Dumper(\%fontdb));
+ }
+}
+
+sub compute_aliases {
+ # go through fontdb to check for provides
+ # accumulate all provided fonts in @provides
+ for my $k (keys %fontdb) {
+ if ($fontdb{$k}{'available'}) {
+ for my $p (keys %{$fontdb{$k}{'provides'}}) {
+ # do not check alias if the real font is available in OTF/TTF/TTC format
+ if ($fontdb{$p}{'available'}) {
+ next if ($fontdb{$p}{'type'} ne 'OTC');
+ }
+ # use the priority as key
+ # if priorities are double, this will pick one at chance
+ if ($aliases{$p}{$fontdb{$k}{'provides'}{$p}}) {
+ print_warning("duplicate provide levels:\n");
+ print_warning(" current $p $fontdb{$k}{'provides'}{$p} $aliases{$p}{$fontdb{$k}{'provides'}{$p}}\n");
+ print_warning(" ignored $p $fontdb{$k}{'provides'}{$p} $k\n");
+ } else {
+ # if OTC font is caught, then skip it as Ghostscript doesn't support it (2016/12/12)
+ if ($fontdb{$k}{'type'} eq 'OTC') {
+ print_debug("Currently Ghostscript does not support OTC font,\n");
+ print_debug("not adding $fontdb{$k}{'otcname'} to alias candidates\n");
+ } else {
+ $aliases{$p}{$fontdb{$k}{'provides'}{$p}} = $k;
+ }
+ }
+ }
+ }
+ }
+ # check for user supplied aliases
+ for my $a (@opt_aliases) {
+ if ($a =~ m/^(.*)=(.*)$/) {
+ my $ll = $1;
+ my $rr = $2;
+ # check for consistency of user provided aliases:
+ # - ll must not be available
+ # - rr needs to be available as font or alias
+ # check whether $rr is available, either as real font or as alias
+ if ($fontdb{$ll}{'available'}) {
+ print_error("left side of alias spec is provided by a real font: $a\n");
+ print_error("stopping here\n");
+ exit(1);
+ }
+ if (!($fontdb{$rr}{'available'} || $aliases{$rr})) {
+ print_error("right side of alias spec is not available as real font or alias: $a\n");
+ print_error("stopping here\n");
+ exit(1);
+ }
+ $user_aliases{$ll} = $rr;
+ }
+ }
+ if ($opt_debug >= 2) {
+ print_ddebug("dumping aliases:\n");
+ print_ddebug(Data::Dumper::Dumper(\%aliases));
+ }
+}
+
+# While the OTF link target is determined by the filename itself
+# for TTF we can have ttc with several fonts.
+# The following routine determines the link target by selecting
+# the file name of the ttf candidates with the lowest priority
+# as the link target name for TTF
+sub determine_nonotf_link_name {
+ for my $k (keys %fontdb) {
+ my $ttfname = "";
+ my $ttcname = "";
+ my $otcname = "";
+ my $mpttf = 10000000;
+ my $mpttc = 10000000;
+ my $mpotc = 10000000;
+ for my $f (keys %{$fontdb{$k}{'files'}}) {
+ if ($fontdb{$k}{'files'}{$f}{'type'} eq 'TTF') {
+ my $p = $fontdb{$k}{'files'}{$f}{'priority'};
+ if ($p < $mpttf) {
+ $ttfname = $f;
+ $ttfname =~ s/^(.*)\(\d*\)$/$1/;
+ $mpttf = $p;
+ }
+ } elsif ($fontdb{$k}{'files'}{$f}{'type'} eq 'TTC') {
+ my $p = $fontdb{$k}{'files'}{$f}{'priority'};
+ if ($p < $mpttc) {
+ $ttcname = $f;
+ $ttcname =~ s/^(.*)\(\d*\)$/$1/;
+ $mpttc = $p;
+ }
+ } elsif ($fontdb{$k}{'files'}{$f}{'type'} eq 'OTC') {
+ my $p = $fontdb{$k}{'files'}{$f}{'priority'};
+ if ($p < $mpotc) {
+ $otcname = $f;
+ $otcname =~ s/^(.*)\(\d*\)$/$1/;
+ $mpotc = $p;
+ }
+ }
+ }
+ if ($ttfname) {
+ $fontdb{$k}{'ttfname'} = $ttfname;
+ }
+ if ($ttcname) {
+ $fontdb{$k}{'ttcname'} = $ttcname;
+ }
+ if ($otcname) {
+ $fontdb{$k}{'otcname'} = $otcname;
+ }
+ }
+}
+
+sub read_font_database {
+ my @dbl;
+ # if --fontdef=foo is given, disregard built-in database and
+ # use "foo" as a substitute; otherwise, use built-in database
+ if ($opt_fontdef) {
+ my $foo = kpse_miscfont($opt_fontdef);
+ open(FDB, "<$foo") ||
+ die("Cannot find $opt_fontdef: $!");
+ @dbl = <FDB>;
+ close(FDB);
+ print_debug("New database file: $opt_fontdef...\n");
+ } else {
+ @dbl = <DATA>;
+ }
+ read_each_font_database(@dbl);
+ # if --fontdef-add=bar is given, use "bar" as an addition
+ # to the current database; if the same Name entry appears,
+ # overwrite existing one (that is, the addition wins)
+ for (@opt_fontdef_add) {
+ my $foo = kpse_miscfont($_);
+ open(FDB, "<$foo") ||
+ die("Cannot find $_: $!");
+ @dbl = <FDB>;
+ close(FDB);
+ print_debug("Additional database file: $_...\n");
+ read_each_font_database(@dbl);
+ }
+}
+
+sub read_each_font_database {
+ my (@curdbl) = @_;
+ my $fontname = "";
+ my $fontclass = "";
+ my %fontprovides = ();
+ my $fontcasefold = "";
+ my %fontfiles;
+ my $psname = "";
+ my $lineno = 0;
+ chomp(@curdbl);
+ push @curdbl, ""; # add a "final empty line" to easy parsing
+ for my $l (@curdbl) {
+ $lineno++;
+ next if ($l =~ m/^\s*#/); # skip comment line
+ $l =~ s/\s*#.*$//; # skip comment after '#'
+ if ($l =~ m/^\s*$/) { # empty line is a separator between entries
+ if ($fontname || $fontclass || keys(%fontfiles)) {
+ if ($fontname && $fontclass && keys(%fontfiles)) {
+ my $realfontname = ($psname ? $psname : $fontname);
+ if ($fontdb{$realfontname}{'origname'}) {
+ # needed for --fontdef-add, which allows overwriting with external database given by user
+ print_debug("$fontdb{$realfontname}{'origname'} is already registered in database,\n");
+ print_debug("overwriting with the new one ...\n");
+ }
+ $fontdb{$realfontname}{'origname'} = $fontname;
+ $fontdb{$realfontname}{'class'} = $fontclass;
+ $fontdb{$realfontname}{'casefold'} = $fontcasefold;
+ $fontdb{$realfontname}{'files'} = { %fontfiles };
+ $fontdb{$realfontname}{'provides'} = { %fontprovides };
+ if ($opt_debug >= 3) {
+ print_dddebug("Dumping fontfiles for $realfontname: " . Data::Dumper::Dumper(\%fontfiles));
+ }
+ # reset to start
+ $fontname = $fontclass = $psname = "";
+ $fontcasefold = "";
+ %fontfiles = ();
+ %fontprovides = ();
+ } else {
+ print_warning("incomplete entry above line $lineno for $fontname/$fontclass, skipping!\n");
+ # reset to start
+ $fontname = $fontclass = $psname = "";
+ $fontcasefold = "";
+ %fontfiles = ();
+ %fontprovides = ();
+ }
+ } else {
+ # no term is set, so nothing to warn about
+ }
+ next;
+ }
+ if ($l =~ m/^!INCLUDE\s*(.*)$/) { # for remove-only database
+ next if (!$opt_cleanup);
+ my @dbl;
+ my $foo = kpse_miscfont($1);
+ if (!open(FDB, "<$foo")) {
+ print_warning("Cannot find $1, skipping!\n");
+ next;
+ }
+ @dbl = <FDB>;
+ close(FDB);
+ print_debug("Reading database file $1...\n");
+ read_each_font_database(@dbl);
+ next;
+ }
+ if ($l =~ m/^INCLUDE\s*(.*)$/) {
+ my @dbl;
+ my $foo = kpse_miscfont($1);
+ if (!open(FDB, "<$foo")) {
+ print_warning("Cannot find $1, skipping!\n");
+ next;
+ }
+ @dbl = <FDB>;
+ close(FDB);
+ print_debug("Reading database file $1...\n");
+ read_each_font_database(@dbl);
+ next;
+ }
+ if ($l =~ m/^Name:\s*(.*)$/) { $fontname = $1; next; }
+ if ($l =~ m/^PSName:\s*(.*)$/) { $psname = $1; next; }
+ if ($l =~ m/^Class:\s*(.*)$/) { $fontclass = $1 ; next ; }
+ if ($l =~ m/^Provides\((\d+)\):\s*(.*)$/) { $fontprovides{$2} = $1; next; }
+ if ($l =~ m/^Casefold:\s*(.*)$/) { $fontcasefold = $1 ; next ; }
+ # new code: distinguish 4 types (otf, otc, ttf, ttc)
+ if ($l =~ m/^OTFname(\((\d+)\))?:\s*(.*)$/) {
+ my $fn = $3;
+ $fontfiles{$fn}{'priority'} = ($2 ? $2 : 10);
+ # cp932 for win32 console
+ my $encoded_fn;
+ if (win32()) {
+ $encoded_fn = encode_utftocp($fn);
+ }
+ print_dddebug("filename: ", ($encoded_fn ? "$encoded_fn" : "$fn"), "\n");
+ print_dddebug("type: otf\n");
+ $fontfiles{$fn}{'type'} = 'OTF';
+ next;
+ }
+ if ($l =~ m/^OTCname(\((\d+)\))?:\s*(.*)$/) {
+ my $fn = $3;
+ $fontfiles{$fn}{'priority'} = ($2 ? $2 : 10);
+ # cp932 for win32 console
+ my $encoded_fn;
+ if (win32()) {
+ $encoded_fn = encode_utftocp($fn);
+ }
+ print_dddebug("filename: ", ($encoded_fn ? "$encoded_fn" : "$fn"), "\n");
+ print_dddebug("type: otc\n");
+ $fontfiles{$fn}{'type'} = 'OTC';
+ next;
+ }
+ if ($l =~ m/^TTFname(\((\d+)\))?:\s*(.*)$/) {
+ my $fn = $3;
+ $fontfiles{$fn}{'priority'} = ($2 ? $2 : 10);
+ # cp932 for win32 console
+ my $encoded_fn;
+ if (win32()) {
+ $encoded_fn = encode_utftocp($fn);
+ }
+ print_dddebug("filename: ", ($encoded_fn ? "$encoded_fn" : "$fn"), "\n");
+ print_dddebug("type: ttf\n");
+ $fontfiles{$fn}{'type'} = 'TTF';
+ next;
+ }
+ if ($l =~ m/^TTCname(\((\d+)\))?:\s*(.*)$/) {
+ my $fn = $3;
+ $fontfiles{$fn}{'priority'} = ($2 ? $2 : 10);
+ # cp932 for win32 console
+ my $encoded_fn;
+ if (win32()) {
+ $encoded_fn = encode_utftocp($fn);
+ }
+ print_dddebug("filename: ", ($encoded_fn ? "$encoded_fn" : "$fn"), "\n");
+ print_dddebug("type: ttc\n");
+ $fontfiles{$fn}{'type'} = 'TTC';
+ next;
+ }
+ # only for backward compatibility; guess type from the file extension
+ if ($l =~ m/^Filename(\((\d+)\))?:\s*(.*)$/) {
+ my $fn = $3;
+ $fontfiles{$fn}{'priority'} = ($2 ? $2 : 10);
+ # cp932 for win32 console
+ my $encoded_fn;
+ if (win32()) {
+ $encoded_fn = encode_utftocp($fn);
+ }
+ print_dddebug("filename: ", ($encoded_fn ? "$encoded_fn" : "$fn"), "\n");
+ if ($fn =~ m/\.otf$/i) {
+ print_dddebug("type: otf\n");
+ $fontfiles{$fn}{'type'} = 'OTF';
+ } elsif ($fn =~ m/\.otc(\(\d+\))?$/i) {
+ print_dddebug("type: otc\n");
+ $fontfiles{$fn}{'type'} = 'OTC';
+ } elsif ($fn =~ m/\.ttf$/i) {
+ print_dddebug("type: ttf\n");
+ $fontfiles{$fn}{'type'} = 'TTF';
+ } elsif ($fn =~ m/\.ttc(\(\d+\))?$/i) {
+ print_dddebug("type: ttc\n");
+ $fontfiles{$fn}{'type'} = 'TTC';
+ } else {
+ print_warning("cannot determine font type of $fn at line $lineno, skipping!\n");
+ delete $fontfiles{$fn};
+ }
+ next;
+ }
+ # only for removing
+ if ($l =~ m/^RMVname(\((\d+)\))?:\s*(.*)$/) {
+ my $fn = $3;
+ $fontfiles{$fn}{'priority'} = ($2 ? $2 : 10);
+ # cp932 for win32 console
+ my $encoded_fn;
+ if (win32()) {
+ $encoded_fn = encode_utftocp($fn);
+ }
+ print_dddebug("filename: ", ($encoded_fn ? "$encoded_fn" : "$fn"), "\n");
+ print_dddebug("type: remove\n");
+ $fontfiles{$fn}{'type'} = 'RMV';
+ next;
+ }
+ # we are still here??
+ print_error("Cannot parse this file at line $lineno, exiting.
+ Strange line: >>>$l<<<\n");
+ exit(1);
+ }
+}
+
+sub dump_font_database {
+ open(FOO, ">$dump_datafile") ||
+ die("cannot open $dump_datafile for writing: $!");
+ for my $k (sort keys %fontdb) {
+ print FOO "Name: $fontdb{$k}{'origname'}\n";
+ print FOO "PSName: $k\n" if ($fontdb{$k}{'origname'} ne $k);
+ print FOO "Class: $fontdb{$k}{'class'}\n";
+ for my $p (sort keys %{$fontdb{$k}{'provides'}}) {
+ print FOO "Provides($fontdb{$k}{'provides'}{$p}): $p\n";
+ }
+ print FOO "Casefold: $fontdb{$k}{'casefold'}\n" if ($fontdb{$k}{'casefold'});
+ for my $f (sort { $fontdb{$k}{'files'}{$a}{'priority'}
+ <=>
+ $fontdb{$k}{'files'}{$b}{'priority'} }
+ keys %{$fontdb{$k}{'files'}}) {
+ print FOO "$fontdb{$k}{'files'}{$f}{'type'}name($fontdb{$k}{'files'}{$f}{'priority'}): $f\n";
+ }
+ print FOO "\n"; # empty line is a separator between entries
+ }
+ close(FOO);
+}
+
+sub find_gs_resource {
+ my $foundres = '';
+ if (win32()) {
+ # determine tlgs or native gs
+ chomp(my $foo = `kpsewhich -var-value=SELFAUTOPARENT`);
+ if ( -d "$foo/tlpkg/tlgs" ) {
+ # should be texlive with tlgs
+ print_debug("Assuming tlgs win32 ...\n");
+ $foundres = "$foo/tlpkg/tlgs/Resource";
+ # for TL2016, tlgs binary has built-in Resource,
+ # so we cannot set up CJK fonts correctly.
+ # the following test forces to exit in such case
+ if ( ! -d $foundres ) {
+ print_error("No Resource directory available for tlgs,\n");
+ print_error("we cannot support such gs, sorry.\n");
+ $foundres = '';
+ }
+ # change output location
+ $cidfmap_pathpart = "../lib/cidfmap";
+ $cidfmap_local_pathpart = "../lib/cidfmap.local";
+ $cidfmap_aliases_pathpart = "../lib/cidfmap.aliases";
+ } else {
+ # we assume gswin32c is in the path
+ # TODO: what should we do for gswin64c?
+ chomp($foundres = `where gswin32c 2>$nul`); # assume 'where' is available
+ if ($?) {
+ print_error("Cannot run where gswin32c ...\n");
+ } else {
+ # trial 1: assume the relative path
+ # when C:\path\to\bin\gswin32c.exe is found, then there should be
+ # C:\path\to\Resource (note that 'where' returns backslash-ed path)
+ print_debug("Finding gs resource by assuming relative path ...\n");
+ $foundres = encode_cptoutf($foundres); # 99.99% unnecessary
+ $foundres =~ s!\\!/!g;
+ $foundres =~ s!/bin/gswin32c\.exe$!/Resource!;
+ if ( ! -d $foundres ) {
+ $foundres = '';
+ }
+ if (!$foundres) {
+ print_debug("Found gs but no resource, try another routine ...\n");
+ }
+ }
+ if (!$foundres) {
+ chomp(my $gsver = `gswin32c --version 2>$nul`);
+ if ($?) {
+ print_error("Cannot run gswin32c --version ...\n");
+ } else {
+ # trial 2: assume the fixed path, c:/gs/gs$gsver/Resource
+ print_debug("Finding gs resource by assuming fixed path ...\n");
+ $foundres = "c:/gs/gs$gsver/Resource";
+ if ( ! -d $foundres ) {
+ $foundres = '';
+ }
+ if (!$foundres) {
+ print_error("Found gs but no resource???\n");
+ }
+ }
+ }
+ }
+ } else {
+ # we assume that gs is in the path
+ chomp(my $gsver = `gs --version 2>$nul`);
+ if ($?) {
+ print_error("Cannot run gs --version ...\n");
+ } else {
+ # trial 1: assume the relative path
+ # when /path/to/bin/gs is found, then there should be
+ # /path/to/share/ghostscript/$(gs --version)/Resource
+ print_debug("Finding gs resource by assuming relative path ...\n");
+ chomp($foundres = `which gs`);
+ $foundres =~ s!/bin/gs$!/share/ghostscript/$gsver/Resource!;
+ if ( ! -d $foundres ) {
+ $foundres = '';
+ }
+ if (!$foundres) {
+ print_debug("Found gs but no resource, try another routine ...\n");
+ }
+ }
+ if (!$foundres) {
+ chomp(my @ret = `gs --help 2>$nul`);
+ if ($?) {
+ print_error("Cannot run gs --help ...\n");
+ } else {
+ # trial 2: parse gs help message
+ print_debug("Finding gs resource by parsing help message ...\n");
+ $foundres = '';
+ # try to find resource line
+ for (@ret) {
+ if (m!Resource/Font!) {
+ $foundres = $_;
+ # extract the first substring of non-space chars
+ # up to Resource/Font and drop the /Font part
+ $foundres =~ s!^.*\s(\S*Resource)/Font.*$!$1!;
+ last;
+ }
+ }
+ if (!$foundres) {
+ print_error("Found gs but no resource???\n");
+ }
+ }
+ }
+ }
+ return $foundres;
+}
+
+sub kpse_miscfont {
+ my ($file) = @_;
+ chomp(my $foo = `kpsewhich -format=miscfont $file`);
+ # for GitHub repository diretory structure
+ if ($foo eq "") {
+ $foo = "database/$file" if (-f "database/$file");
+ }
+ return $foo;
+}
+
+sub encode_utftocp {
+ my ($foo) = @_;
+ $foo = Encode::decode('utf-8', $foo);
+ $foo = Encode::encode('cp932', $foo);
+ return $foo;
+}
+
+sub encode_cptoutf {
+ my ($foo) = @_;
+ $foo = Encode::decode('cp932', $foo);
+ $foo = Encode::encode('utf-8', $foo);
+ return $foo;
+}
+
+sub version {
+ my $ret = sprintf "%s version %s\n", $prg, $version;
+ return $ret;
+}
+
+sub Usage {
+ my $headline = "Configuring Ghostscript for CJK CID/TTF fonts";
+ my $usage = "[perl] $prg\[.pl\] [OPTIONS]";
+ my $options = "
+-o, --output DIR specifies the base output dir, if not provided,
+ the Resource directory of an installed Ghostscript
+ is searched and used.
+-f, --fontdef FILE specify alternate set of font definitions, if not
+ given, the built-in set is used
+--fontdef-add FILE specify additional set of font definitions, to
+ overwrite subset of built-in definitions;
+ can be given multiple times
+-a, --alias LL=RR defines an alias, or overrides a given alias;
+ illegal if LL is provided by a real font, or
+ RR is neither available as real font or alias;
+ can be given multiple times
+--filelist FILE read list of available font files from FILE
+ instead of searching with kpathsea
+--link-texmf [DIR] link fonts into
+ DIR/$otf_pathpart
+ and
+ DIR/$ttf_pathpart
+ where DIR defaults to TEXMFLOCAL
+--otfps [DIR] generate configuration file (psnames-for-otf) into
+ DIR/$akotfps_pathpart
+ which is used by ps2otfps (developed by Akira Kakuto),
+ instead of generating snippets
+--force do not bail out if linked fonts already exist
+--remove try to remove instead of create
+--cleanup try to clean up all possible links/snippets and
+ cidfmap.local/cidfmap.aliases, which could have been
+ generated in the previous runs
+-n, --dry-run do not actually output anything
+-q, --quiet be less verbose
+-d, --debug output debug information, can be given multiple times
+-v, --version outputs only the version information
+-h, --help this help
+";
+
+ my $winonlyoptions = "
+--hardlink create hardlinks instead of symlinks
+--winbatch [FILE] prepare a batch file for link generation, instead of
+ generating links right away
+ the batch file name defaults to $winbatch
+";
+
+ my $commandoptions = "
+--dump-data [FILE] dump the set of font definitions which is currently
+ effective, where FILE (the dump output) defaults to
+ $dump_datafile; you can easily modify it,
+ and tell me with -f (or --fontdef) option
+--only-aliases regenerate only cidfmap.aliases file, instead of all
+--list-aliases lists the available aliases and their options, with the
+ selected option on top
+--list-all-aliases list all possible aliases without searching for
+ actually present files
+--list-fonts lists the fonts found on the system
+--info combines the information of --list-aliases and
+ --list-fonts
+--machine-readable output of --list-aliases is machine readable
+";
+
+ my $shortdesc = "
+This script searches a list of directories for CJK fonts, and makes
+them available to an installed Ghostscript. In the simplest case with
+sufficient privileges, a run without arguments should effect in a
+complete setup of Ghostscript.
+Search is done using the kpathsea library, in particular `kpsewhich`
+program. To run this script, you will need some TeX distribution in
+your system.
+";
+
+my $operation = "
+For each found TrueType (TTF) font it creates a cidfmap entry in
+
+ <Resource>/Init/cidfmap.local
+ -- if you are using tlgs win32, tlpkg/tlgs/lib/cidfmap.local instead
+
+and links the font to
+
+ <Resource>/CIDFSubst/
+
+For each CID font it creates a snippet in
+
+ <Resource>/Font/
+
+and links the font to
+
+ <Resource>/CIDFont/
+
+The `<Resource>` dir is either given by `-o`/`--output`, or otherwise searched
+from an installed Ghostscript (binary name is assumed to be 'gs' on unix,
+'gswin32c' on win32).
+
+Aliases are added to
+
+ <Resource>/Init/cidfmap.aliases
+ -- if you are using tlgs win32, tlpkg/tlgs/lib/cidfmap.aliases instead
+
+Finally, it tries to add runlib calls to
+
+ <Resource>/Init/cidfmap
+ -- if you are using tlgs win32, tlpkg/tlgs/lib/cidfmap
+
+to load the cidfmap.local and cidfmap.aliases.
+";
+
+ my $dirsearch = '
+Search is done using the kpathsea library, in particular using kpsewhich
+program. By default the following directories are searched:
+ - all TEXMF trees
+ - `/Library/Fonts`, `/Library/Fonts/Microsoft`, `/System/Library/Fonts`,
+ `/System/Library/Assets`, `/Network/Library/Fonts`,
+ `~/Library/Fonts` and `/usr/share/fonts` (all if available)
+ - `/Applications/Microsoft Word.app/Contents/Resources/{Fonts,DFonts}`,
+ `/Applications/Microsoft Excel.app/Contents/Resources/{Fonts,DFonts}`,
+ `/Applications/Microsoft PowerPoint.app/Contents/Resources/{Fonts,DFonts}`
+ (all if available, meant for Office for Mac 2016)
+ - `c:/windows/fonts` (on Windows)
+ - the directories in `OSFONTDIR` environment variable
+
+In case you want to add some directories to the search path, adapt the
+`OSFONTDIR` environment variable accordingly: Example:
+
+`````
+ OSFONTDIR="/usr/local/share/fonts/truetype//:/usr/local/share/fonts/opentype//" $prg
+`````
+
+will result in fonts found in the above two given directories to be
+searched in addition.
+';
+
+ my $outputfile = "
+If no output option is given, the program searches for a Ghostscript
+interpreter 'gs' and determines its Resource directory. This might
+fail, in which case one need to pass the output directory manually.
+
+Since the program adds files and link to this directory, sufficient
+permissions are necessary.
+";
+
+ my $aliases = "
+Aliases are managed via the Provides values in the font database.
+At the moment entries for the basic font names for CJK fonts
+are added:
+
+Japanese:
+
+ Ryumin-Light GothicBBB-Medium FutoMinA101-Bold FutoGoB101-Bold
+ MidashiMin-MA31 MidashiGo-MB31 Jun101-Light
+
+Korean:
+
+ HYSMyeongJo-Medium HYGoThic-Medium HYRGoThic-Medium
+
+Simplified Chinese:
+
+ STSong-Light STSong-Regular STHeiti-Regular STHeiti-Light
+ STKaiti-Regular STFangsong-Light STFangsong-Regular
+
+Traditional Chinese:
+
+ MSung-Light MSung-Medium MHei-Medium MKai-Medium
+
+In addition, we also include provide entries for the OTF Morisawa names:
+
+ RyuminPro-Light GothicBBBPro-Medium
+ FutoMinA101Pro-Bold FutoGoB101Pro-Bold
+ MidashiMinPro-MA31 MidashiGoPro-MB31 Jun101Pro-Light
+
+The order is determined by the `Provides` setting in the font database.
+That is, the first font found in this order will be used to provide the
+alias if necessary.
+
+For the Japanese fonts:
+ Morisawa Pr6N, Morisawa, Hiragino ProN, Hiragino,
+ Kozuka Pr6N, Kozuka ProVI, Kozuka Pro, Kozuka Std,
+ Yu OS X, Yu Win, MS,
+ Moga-Mobo-ex, Moga-Mobo, IPAex, IPA, Ume
+
+For the Korean fonts:
+ (Hanyang,) Adobe, Solaris, MS, Unfonts, Baekmuk
+
+For the Simplified Chinese:
+ Adobe, Fandol, Hiragino, Founder, MS, CJKUnifonts, Arphic, CJKUnifonts-ttf
+
+For the Traditional Chinese:
+ Adobe, MS, CJKUnifonts, Arphic, CJKUnifonts-ttf
+
+#### Overriding aliases ####
+
+Using the command line option `--alias LL=RR` one can add arbitrary aliases,
+or override ones selected by the program. For this to work the following
+requirements of `LL` and `RR` must be fulfilled:
+ * `LL` is not provided by a real font
+ * `RR` is available either as real font, or as alias (indirect alias)
+";
+
+ my $authors = "
+The script and its documentation was written by Norbert Preining, based
+on research and work by Yusuke Kuroki, Yusuke Terada, Bruno Voisin,
+Hironobu Yamashita, Munehiro Yamamoto and the TeX Q&A wiki page.
+
+Maintained by Japanese TeX Development Community. For development, see
+ https://github.com/texjporg/cjk-gs-support
+
+The script is licensed under GNU General Public License Version 3 or later.
+The contained font data is not copyrightable.
+";
+
+
+ if ($opt_markdown) {
+ print "$headline\n";
+ print ("=" x length($headline));
+ print "\n$shortdesc\nUsage\n-----\n\n`````\n$usage\n`````\n\n";
+ print "#### Options ####\n\n`````";
+ print_for_out($options, " ");
+ print "`````\n\n#### Windows only options ####\n\n`````";
+ print_for_out($winonlyoptions, " ");
+ print "`````\n\n#### Command like options ####\n\n`````";
+ print_for_out($commandoptions, " ");
+ print "`````\n\nOperation\n---------\n$operation\n";
+ print "How and which directories are searched\n";
+ print "--------------------------------------\n$dirsearch\n";
+ print "Output files\n";
+ print "------------\n$outputfile\n";
+ print "Aliases\n";
+ print "-------\n$aliases\n";
+ print "Authors, Contributors, and Copyright\n";
+ print "------------------------------------\n$authors\n";
+ } else {
+ print "\nUsage: $usage\n\n$headline\n$shortdesc";
+ print "\nOptions:\n";
+ print_for_out($options, " ");
+ if (win32()) {
+ print "\nWindows only options:\n";
+ print_for_out($winonlyoptions, " ");
+ }
+ print "\nCommand like options:\n";
+ print_for_out($commandoptions, " ");
+ print "\nOperation:\n";
+ print_for_out($operation, " ");
+ print "\nHow and which directories are searched:\n";
+ print_for_out($dirsearch, " ");
+ print "\nOutput files:\n";
+ print_for_out($outputfile, " ");
+ print "\nAliases:\n";
+ print_for_out($aliases, " ");
+ print "\nAuthors, Contributors, and Copyright:\n";
+ print_for_out($authors, " ");
+ print "\n";
+ }
+ exit(0);
+}
+
+sub print_for_out {
+ my ($what, $indent) = @_;
+ for (split /\n/, $what) {
+ next if m/`````/;
+ s/\s*####\s*//g;
+ if ($_ eq '') {
+ print "\n";
+ } else {
+ print "$indent$_\n";
+ }
+ }
+}
+
+# info/warning can be suppressed
+# verbose/error cannot be suppressed
+sub print_info {
+ print STDOUT "$prg: ", @_ if (!$opt_quiet);
+}
+sub print_verbose {
+ print STDOUT "$prg: ", @_;
+}
+sub print_warning {
+ print STDERR "$prg [WARNING]: ", @_ if (!$opt_quiet)
+}
+sub print_error {
+ print STDERR "$prg [ERROR]: ", @_;
+}
+sub print_debug {
+ print STDERR "$prg [DEBUG]: ", @_ if ($opt_debug >= 1);
+}
+sub print_ddebug {
+ print STDERR "$prg [DEBUG]: ", @_ if ($opt_debug >= 2);
+}
+sub print_dddebug {
+ print STDERR "$prg [DEBUG]: ", @_ if ($opt_debug >= 3);
+}
+
+
+__DATA__
+#
+# CJK FONT DEFINITIONS
+#
+
+# Noto
+INCLUDE cjkgs-notoserif.dat
+INCLUDE cjkgs-notosans.dat
+
+# SourceHan
+INCLUDE cjkgs-sourcehanserif.dat
+INCLUDE cjkgs-sourcehansans.dat
+
+#
+# JAPANESE FONTS
+#
+
+# Morisawa -- Provides J10(Pr6N), J15(Pr6), J18(Pr5), J20(Pro)
+INCLUDE cjkgs-morisawa.dat
+#INCLUDE cjkgs-morisawa-extra.dat
+
+# Hiragino -- Provides J30(ProN), J40(Pro)
+INCLUDE cjkgs-hiragino.dat
+
+# Kozuka -- Provides J50(Pr6N), J55(ProVI), J60(Pro), J65(Std)
+INCLUDE cjkgs-kozuka.dat
+INCLUDE cjkgs-ryokana.dat
+
+# Yu-fonts MacOS version -- Provides J80
+INCLUDE cjkgs-yu-osx.dat
+
+# Yu-fonts Windows/MSOffice version -- Provides J90
+INCLUDE cjkgs-yu-win.dat
+
+# MS -- Provides J95
+INCLUDE cjkgs-microsoft.dat
+
+# BIZ UD
+INCLUDE cjkgs-bizud.dat
+
+# TypeBank
+INCLUDE cjkgs-typebank.dat
+
+# Fontworks
+INCLUDE cjkgs-fontworks.dat
+
+# Toppan
+INCLUDE cjkgs-toppan.dat
+
+# Heisei
+INCLUDE cjkgs-heisei.dat
+
+# Moga-Mobo from Y.Oz Vox (free) -- Provides J100(Ex), J110(none)
+INCLUDE cjkgs-mogamobo.dat
+
+# IPA (free) -- Provides J120(Ex), J130(none)
+INCLUDE cjkgs-ipa.dat
+
+# Ume-font (free) -- Provides J140
+INCLUDE cjkgs-ume.dat
+
+# Sazanami (free)
+INCLUDE cjkgs-sazanami.dat
+
+# Osaka (Apple)
+
+Name: Osaka
+Class: Japan
+TTFname: Osaka.ttf
+
+Name: Osaka-Mono
+Class: Japan
+TTFname: OsakaMono.ttf
+
+#
+# CHINESE FONTS
+#
+
+# Adobe -- Provides S30, T30
+INCLUDE cjkgs-adobe.dat
+
+# Hiragino -- Provides S50
+# (already included in JAPANESE section)
+
+# Beijing Founder Electronics -- Provides S55
+INCLUDE cjkgs-founder.dat
+
+# Changzhou SinoType -- Provides S??
+INCLUDE cjkgs-sinotype.dat
+
+# DynaComware -- Provides T??
+INCLUDE cjkgs-dynacomware.dat
+
+# Monotype
+INCLUDE cjkgs-monotype.dat
+
+# Apple
+INCLUDE cjkgs-apple.dat
+
+# Shanghai Ikarus Ltd./URW Software & Type GmbH
+
+Name: SIL-Hei-Med-Jian
+Class: GB
+TTFname: Hei.ttf
+
+Name: SIL-Kai-Reg-Jian
+Class: GB
+TTFname: Kai.ttf
+
+# Fandol (free) -- Provides S40
+INCLUDE cjkgs-fandol.dat
+
+# Arphic (free) -- Provides S80, T80
+INCLUDE cjkgs-arphic.dat
+
+# CJK-Unifonts new ttc edition (free) -- Provides T70, S70
+# CJK-Unifonts old ttf edition (free) -- Provides T90, S90
+INCLUDE cjkgs-cjkuni.dat
+
+# WenQuanYi (free)
+INCLUDE cjkgs-wenquanyi.dat
+
+# cwTeX (free)
+
+Name: cwTeXMing
+Class: CNS
+TTFname: cwming.ttf
+
+Name: cwTeXHeiBold
+Class: CNS
+TTFname: cwheib.ttf
+
+Name: cwTeXKai
+Class: CNS
+TTFname: cwkai.ttf
+
+Name: cwTeXYen
+Class: CNS
+TTFname: cwyen.ttf
+
+Name: cwTeXFangSong
+Class: CNS
+TTFname: cwfs.ttf
+
+#
+# KOREAN FONTS
+#
+
+# Adobe -- Provides K30/80
+# (already included in CHINESE section)
+
+# Solaris -- Provides K40
+INCLUDE cjkgs-solaris.dat
+
+# Baekmuk (free)
+# This is a special case, because "batang.ttf" in baekmuk and
+# "Batang.ttf" in Microsoft Mac Office font share the same filename;
+# symlink name should be "Baekmuk-Batang.ttf"
+# similar for "Gulim.ttf" -- HY (2016/09/29)
+
+Name: Baekmuk-Batang
+Class: Korea
+Provides(70): HYSMyeongJo-Medium
+Casefold: true
+TTFname(20): batang.ttf
+TTFname(10): Baekmuk-Batang.ttf
+
+Name: Baekmuk-Dotum
+Class: Korea
+Provides(70): HYGoThic-Medium
+TTFname(20): dotum.ttf
+TTFname(10): Baekmuk-Dotum.ttf
+
+Name: Baekmuk-Gulim
+Class: Korea
+Provides(70): HYRGoThic-Medium
+Casefold: true
+TTFname(20): gulim.ttf
+TTFname(10): Baekmuk-Gulim.ttf
+
+Name: Baekmuk-Headline
+Class: Korea
+TTFname(20): hline.ttf
+TTFname(10): Baekmuk-Headline.ttf
+
+# Unfonts (free) -- Provides K60
+INCLUDE cjkgs-unfonts.dat
+
+# Nanum (free)
+INCLUDE cjkgs-nanum.dat
+
+# Design font by Ho-Seok Ee, aka. "ALee's font" (free)
+
+Name: Bandal
+Class: Korea
+TTFname: Bandal.ttf
+
+Name: Bangwool
+Class: Korea
+TTFname: Bangwool.ttf
+
+Name: Eunjin
+Class: Korea
+TTFname: Eunjin.ttf
+
+Name: EunjinNakseo
+Class: Korea
+TTFname: EunjinNakseo.ttf
+
+Name: Guseul
+Class: Korea
+TTFname: Guseul.ttf
+
+# Woowa Brothers (free)
+
+Name: BMHANNA
+Class: Korea
+TTFname: BM-HANNA.ttf
+
+# Hancom HCR (free)
+INCLUDE cjkgs-hancom.dat
+
+
+#
+# Microsoft Windows, Windows/Mac Office fonts
+#
+
+# korea
+
+Name: Batang
+Class: Korea
+Casefold: true
+TTFname(50): Batang.ttf
+TTCname(20): batang.ttc(0)
+
+Name: BatangChe
+Class: Korea
+Provides(50): HYSMyeongJo-Medium
+TTCname(20): batang.ttc(1)
+
+Name: Dotum
+Class: Korea
+TTCname(20): gulim.ttc(2)
+
+Name: DotumChe
+Class: Korea
+Provides(50): HYGoThic-Medium
+TTCname(20): gulim.ttc(3)
+
+Name: Gulim
+Class: Korea
+Casefold: true
+TTFname(50): Gulim.ttf
+TTCname(20): gulim.ttc(0)
+
+Name: GulimChe
+Class: Korea
+Provides(50): HYRGoThic-Medium
+Provides(90): HYGoThic-Medium
+TTCname(20): gulim.ttc(1)
+
+Name: Gungsuh
+Class: Korea
+TTCname(20): batang.ttc(2)
+
+Name: GungsuhChe
+Class: Korea
+TTCname(20): batang.ttc(3)
+
+Name: MalgunGothicRegular
+Class: Korea
+TTFname: malgun.ttf
+
+Name: MalgunGothicBold
+Class: Korea
+TTFname: malgunbd.ttf
+
+Name: MalgunGothic-Semilight
+Class: Korea
+TTFname: malgunsl.ttf
+
+# simplified chinese
+
+Name: SimHei
+Class: GB
+Provides(60): STHeiti-Regular
+Provides(60): STHeiti-Light
+TTFname(50): SimHei.ttf
+TTFname(20): simhei.ttf
+
+Name: SimSun
+Class: GB
+Provides(60): STSong-Light
+Provides(60): STSong-Regular
+TTFname(50): SimSun.ttf
+TTFname(21): simsun.ttf
+TTCname(20): simsun.ttc(0)
+
+Name: NSimSun
+Class: GB
+TTCname(20): simsun.ttc(1)
+
+Name: KaiTi
+Class: GB
+Provides(60): STKaiti-Regular
+TTFname(40): Kaiti.ttf
+TTFname(20): simkai.ttf
+
+Name: FangSong
+Class: GB
+Provides(60): STFangsong-Light
+Provides(60): STFangsong-Regular
+TTFname(40): Fangsong.ttf
+TTFname(20): simfang.ttf
+
+Name: LiSu
+Class: GB
+TTCname(20): SIMLI.TTF
+TTCname(19): simli.ttf
+
+Name: YouYuan
+Class: GB
+TTCname(20): SIMYOU.TTF
+TTCname(19): simyou.ttf
+
+Name: MicrosoftYaHei
+Class: GB
+TTFname(20): msyh.ttf
+TTCname(30): msyh.ttc(0)
+
+Name: MicrosoftYaHei-Bold
+Class: GB
+TTFname(20): msyhbd.ttf
+TTCname(30): msyhbd.ttc(0)
+
+Name: MicrosoftYaHeiLight
+Class: GB
+TTFname(20): msyhl.ttf
+TTCname(30): msyhl.ttc(0)
+
+Name: DengXian-Regular
+Class: GB
+TTFname: Deng.ttf
+
+Name: DengXian-Bold
+Class: GB
+TTFname: Dengb.ttf
+
+Name: DengXian-Light
+Class: GB
+TTFname: Dengl.ttf
+
+# traditional chinese
+
+Name: MingLiU
+Class: CNS
+Provides(60): MSung-Medium
+Provides(60): MSung-Light
+TTFname(50): MingLiU.ttf
+TTCname(20): mingliu.ttc(0)
+
+Name: PMingLiU
+Class: CNS
+TTFname(50): PMingLiU.ttf
+TTCname(20): mingliu.ttc(1)
+
+Name: DFKaiShu-SB-Estd-BF
+Class: CNS
+Provides(60): MKai-Medium
+TTFname(50): BiauKai.ttf
+TTFname(20): kaiu.ttf
+
+Name: MicrosoftJhengHeiRegular
+Class: CNS
+Provides(60): MHei-Medium
+TTFname(40): MSJH.ttf
+TTFname(20): msjh.ttf
+TTCname(30): msjh.ttc(0)
+
+Name: MicrosoftJhengHeiBold
+Class: CNS
+TTFname(40): MSJHBD.ttf
+TTFname(20): msjhbd.ttf
+TTCname(30): msjhbd.ttc(0)
+
+Name: MicrosoftJhengHeiLight
+Class: CNS
+TTCname(30): msjhl.ttc(0)
+
+Name: MicrosoftMHei
+Class: CNS
+Provides(65): MHei-Medium
+TTFname(10): MSMHei.ttf
+
+Name: MicrosoftMHei-Bold
+Class: CNS
+TTFname(10): MSMHei-Bold.ttf
+
+# Remove-only database (should begin with !INCLUDE)
+# that is, entries which contain at least one 'RMVname' line
+# note that this line should come at the _end_ of all INCLUDE files
+!INCLUDE cjkgs-macos-removeonly.dat
+
+
+### Local Variables:
+### perl-indent-level: 2
+### tab-width: 2
+### indent-tabs-mode: nil
+### End:
+# vim: set tabstop=2 expandtab autoindent:
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-adobe.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-adobe.dat
new file mode 100644
index 0000000000..0081d845d2
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-adobe.dat
@@ -0,0 +1,58 @@
+# Adobe
+
+### SIMPLIFIED CHINESE ###
+
+Name: AdobeSongStd-Light
+Class: GB
+Provides(30): STSong-Light
+Provides(30): STSong-Regular
+OTFname(10): AdobeSongStd-Light.otf
+
+Name: AdobeHeitiStd-Regular
+Class: GB
+Provides(30): STHeiti-Regular
+Provides(30): STHeiti-Light
+OTFname(20): AdobeHeitiStd-Regular.otf
+
+Name: AdobeKaitiStd-Regular
+Class: GB
+Provides(30): STKaiti-Regular
+OTFname(20): AdobeKaitiStd-Regular.otf
+
+Name: AdobeFangsongStd-Regular
+Class: GB
+Provides(30): STFangsong-Light
+Provides(30): STFangsong-Regular
+OTFname(20): AdobeFangsongStd-Regular.otf
+
+### TRADITIONAL CHINESE ###
+
+Name: AdobeMingStd-Light
+Class: CNS
+Provides(30): MSung-Light
+Provides(30): MSung-Medium
+OTFname(20): AdobeMingStd-Light.otf
+
+Name: AdobeFanHeitiStd-Bold
+Class: CNS
+Provides(30): MHei-Medium
+Provides(30): MKai-Medium
+OTFname(20): AdobeFanHeitiStd-Bold.otf
+
+### KOREAN ###
+
+Name: AdobeMyungjoStd-Medium
+Class: Korea
+Provides(30): HYSMyeongJo-Medium
+OTFname: AdobeMyungjoStd-Medium.otf
+
+Name: AdobeGothicStd-Bold
+Class: Korea
+Provides(30): HYGoThic-Medium
+Provides(80): HYRGoThic-Medium
+OTFname: AdobeGothicStd-Bold.otf
+
+Name: AdobeGothicStd-Light
+Class: Korea
+OTFname: AdobeGothicStd-Light.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-apple.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-apple.dat
new file mode 100644
index 0000000000..95d70a2610
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-apple.dat
@@ -0,0 +1,119 @@
+# Apple
+
+### TRADITIONAL CHINESE ###
+
+# Note about Mac (Mac OS X 10.6 -- macOS 10.13)
+# Apple LiSung Light.ttf
+# Apple LiGothic Medium.ttf
+# are bundled with macOS 10.12.6 Sierra or earlier versions.
+# AppleLiSung-Light.ttf
+# AppleLiGothic-Medium.ttf
+# are bundled with macOS 10.13 High Sierra or later versions.
+
+Name: LiSungLight
+Class: CNS
+TTFname(20): Apple LiSung Light.ttf
+TTFname(19): AppleLiSung-Light.ttf
+TTFname(10): LiSungLight.ttf
+
+Name: LiGothicMed
+Class: CNS
+TTFname(20): Apple LiGothic Medium.ttf
+TTFname(19): AppleLiGothic-Medium.ttf
+TTFname(10): LiGothicMed.ttf
+
+### KOREAN ###
+
+# Note about Mac (Mac OS X 10.6 -- macOS 10.13)
+# AppleMyungjo.ttf
+# AppleGothic.ttf
+# PCmyoungjo.ttf
+# Pilgiche.ttf
+# Gungseouche.ttf
+# HeadlineA.ttf
+# are bundled with all versions.
+# AppleSDGothicNeo-Regular.otf
+# AppleSDGothicNeo-Medium.otf
+# AppleSDGothicNeo-SemiBold.otf
+# AppleSDGothicNeo-Bold.otf
+# AppleSDGothicNeo-Light.otf
+# AppleSDGothicNeo-Thin.otf
+# AppleSDGothicNeo-UltraLight.otf
+# AppleSDGothicNeo-ExtraBold.otf
+# AppleSDGothicNeo-Heavy.otf
+# are bundled with OS X 10.10.5 Yosemite or earlier versions.
+# AppleSDGothicNeo.ttc
+# is bundled with OS X 10.11 El Capitan or later versions.
+
+Name: AppleMyungjo
+Class: Korea
+#Provides(??): HYSMyeongJo-Medium # fails
+TTFname: AppleMyungjo.ttf
+
+Name: AppleGothic
+Class: Korea
+#Provides(??): HYGoThic-Medium # fails
+#Provides(??): HYRGoThic-Medium # fails
+TTFname: AppleGothic.ttf
+
+Name: AppleSDGothicNeo-Regular
+Class: Korea
+OTFname(10): AppleSDGothicNeo-Regular.otf
+OTCname(20): AppleSDGothicNeo.ttc(0)
+
+Name: AppleSDGothicNeo-Medium
+Class: Korea
+OTFname(10): AppleSDGothicNeo-Medium.otf
+OTCname(20): AppleSDGothicNeo.ttc(2)
+
+Name: AppleSDGothicNeo-SemiBold
+Class: Korea
+OTFname(10): AppleSDGothicNeo-SemiBold.otf
+OTCname(20): AppleSDGothicNeo.ttc(4)
+
+Name: AppleSDGothicNeo-Bold
+Class: Korea
+OTFname(10): AppleSDGothicNeo-Bold.otf
+OTCname(20): AppleSDGothicNeo.ttc(6)
+
+Name: AppleSDGothicNeo-Light
+Class: Korea
+OTFname(10): AppleSDGothicNeo-Light.otf
+OTCname(20): AppleSDGothicNeo.ttc(8)
+
+Name: AppleSDGothicNeo-Thin
+Class: Korea
+OTFname(10): AppleSDGothicNeo-Thin.otf
+OTCname(20): AppleSDGothicNeo.ttc(10)
+
+Name: AppleSDGothicNeo-UltraLight
+Class: Korea
+OTFname(10): AppleSDGothicNeo-UltraLight.otf
+OTCname(20): AppleSDGothicNeo.ttc(12)
+
+Name: AppleSDGothicNeo-ExtraBold
+Class: Korea
+OTFname(10): AppleSDGothicNeo-ExtraBold.otf
+OTCname(20): AppleSDGothicNeo.ttc(14)
+
+Name: AppleSDGothicNeo-Heavy
+Class: Korea
+OTFname(10): AppleSDGothicNeo-Heavy.otf
+OTCname(20): AppleSDGothicNeo.ttc(16)
+
+Name: JCsmPC
+Class: Korea
+TTFname: PCmyoungjo.ttf
+
+Name: JCfg
+Class: Korea
+TTFname: Pilgiche.ttf
+
+Name: JCkg
+Class: Korea
+TTFname: Gungseouche.ttf
+
+Name: JCHEadA
+Class: Korea
+TTFname: HeadlineA.ttf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-arphic.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-arphic.dat
new file mode 100644
index 0000000000..80b4b45d00
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-arphic.dat
@@ -0,0 +1,46 @@
+# Arphic Technology
+
+### SIMPLIFIED/TRADITIONAL CHINESE ###
+
+# Note about TeX Live:
+# gbsn00lp.ttf
+# gkai00mp.ttf
+# bsmi00lp.ttf
+# bkai00mp.ttf
+# are available as "arphic" package for free.
+
+# Note about Mac (Mac OS X 10.6 -- macOS 10.13)
+# WeibeiSC-Bold.otf (PSName: Weibei-SC-Bold)
+# WeibeiTC-Bold.otf (PSName: Weibei-TC-Bold)
+# are bundled with macOS 10.12.6 Sierra or earlier versions.
+# WeibeiSC-Bold.otf (PSName: WeibeiSC-Bold)
+# WeibeiTC-Bold.otf (PSName: WeibeiTC-Bold)
+# are bundled with macOS 10.13 High Sierra or later versions.
+
+Name: BousungEG-Light-GB
+Class: GB
+Provides(80): STSong-Light
+Provides(80): STSong-Regular
+Provides(80): STFangsong-Light
+Provides(80): STFangsong-Regular
+TTFname: gbsn00lp.ttf
+
+Name: GBZenKai-Medium
+Class: GB
+Provides(80): STKaiti-Regular
+Provides(80): STHeiti-Regular
+Provides(80): STHeiti-Light
+TTFname: gkai00mp.ttf
+
+Name: ShanHeiSun-Light
+Class: CNS
+Provides(80): MSung-Light
+Provides(80): MSung-Medium
+TTFname: bsmi00lp.ttf
+
+Name: ZenKai-Medium
+Class: CNS
+Provides(80): MKai-Medium
+Provides(80): MHei-Medium
+TTFname: bkai00mp.ttf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-bizud.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-bizud.dat
new file mode 100644
index 0000000000..3ab501673e
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-bizud.dat
@@ -0,0 +1,60 @@
+# BIZ UD (Morisawa)
+
+### JAPANESE ###
+
+# Note:
+# BIZ-UD*.ttc (3 files)
+# are bundled with Windows 10 (October 2018 Update).
+# Also available from https://bizplus.morisawa.co.jp for Win/Mac.
+
+Name: BIZ-UDGothic-Bold
+Class: Japan
+TTCname: BIZ-UDGothicB.ttc(0)
+
+Name: BIZ-UDPGothic-Bold
+Class: Japan
+TTCname: BIZ-UDGothicB.ttc(1)
+
+Name: BIZ-UDGothic
+Class: Japan
+TTCname: BIZ-UDGothicR.ttc(0)
+
+Name: BIZ-UDPGothic
+Class: Japan
+TTCname: BIZ-UDGothicR.ttc(1)
+
+Name: BIZ-UDMincho-Medium
+Class: Japan
+TTCname: BIZ-UDMinchoM.ttc(0)
+
+Name: BIZ-UDPMincho-Medium
+Class: Japan
+TTCname: BIZ-UDMinchoM.ttc(1)
+
+# Version 2018-10-23 or earlier (before official October 2018 Update)
+# had different filename and PSName
+
+Name: BIZ-UDGothic-B
+Class: Japan
+TTCname: BIZ-UDGothic-B.ttc(0)
+
+Name: BIZ-UDPGothic-B
+Class: Japan
+TTCname: BIZ-UDGothic-B.ttc(1)
+
+Name: BIZ-UDGothic-R
+Class: Japan
+TTCname: BIZ-UDGothic-R.ttc(0)
+
+Name: BIZ-UDPGothic-R
+Class: Japan
+TTCname: BIZ-UDGothic-R.ttc(1)
+
+Name: BIZ-UDMincho-M
+Class: Japan
+TTCname: BIZ-UDMincho-M.ttc(0)
+
+Name: BIZ-UDPMincho-M
+Class: Japan
+TTCname: BIZ-UDMincho-M.ttc(1)
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-cjkuni.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-cjkuni.dat
new file mode 100644
index 0000000000..9e63d805e2
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-cjkuni.dat
@@ -0,0 +1,66 @@
+# CJK-Unifonts new ttc edition (free)
+
+### SIMPLIFIED/TRADITIONAL CHINESE ###
+
+Name: UMingCN
+Class: GB
+Provides(70): STSong-Light
+Provides(70): STSong-Regular
+Provides(70): STFangsong-Light
+Provides(70): STFangsong-Regular
+TTCname: uming.ttc(0)
+
+Name: UMingTW
+Class: CNS
+Provides(70): MSung-Light
+Provides(70): MSung-Medium
+TTCname: uming.ttc(2)
+
+Name: UKaiCN
+Class: GB
+Provides(70): STKaiti-Regular
+Provides(70): STHeiti-Regular
+Provides(70): STHeiti-Light
+TTCname: ukai.ttc(0)
+
+Name: UKaiTW
+Class: CNS
+Provides(70): MKai-Medium
+Provides(70): MHei-Medium
+TTCname: ukai.ttc(2)
+
+# CJK-Unifonts old ttf edition (free)
+
+### SIMPLIFIED/TRADITIONAL CHINESE ###
+
+# CNS
+Name: ShanHeiSun-Uni
+Class: CNS
+Provides(90): MSung-Light
+Provides(90): MSung-Medium
+TTFname: uming.ttf
+
+# GB
+Name: ShanHeiSun-Uni-Adobe-GB1
+Class: GB
+Provides(90): STSong-Light
+Provides(90): STSong-Regular
+Provides(90): STFangsong-Light
+Provides(90): STFangsong-Regular
+TTFname: uming.ttf
+
+# CNS
+Name: ZenKai-Uni
+Class: CNS
+Provides(90): MKai-Medium
+Provides(90): MHei-Medium
+TTFname: ukai.ttf
+
+# GB
+Name: ZenKai-Uni-Adobe-GB1
+Class: GB
+Provides(90): STKaiti-Regular
+Provides(90): STHeiti-Regular
+Provides(90): STHeiti-Light
+TTFname: ukai.ttf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-dynacomware.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-dynacomware.dat
new file mode 100644
index 0000000000..8fef04f139
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-dynacomware.dat
@@ -0,0 +1,148 @@
+# DynaComware, Dynacomware Taiwan
+
+### SIMPLIFIED/TRADITIONAL CHINESE ###
+
+# Note about Mac (Mac OS X 10.6 -- macOS 10.13)
+# 儷黑 Pro.ttf
+# 儷宋 Pro.ttf
+# are bundled with macOS 10.12.6 Sierra or earlier versions.
+# LiHeiPro.ttf
+# LiSongPro.ttf
+# are bundled with macOS 10.13 High Sierra or later versions.
+# WawaSC-Regular.otf
+# WawaTC-Regular.otf
+# Hannotate.ttc
+# Hanzipen.ttc
+# are bundled with OS X 10.9 Mavericks or later versions.
+# PingFang.ttc
+# index 0--17: PingFang*
+# index 18--35: .PingFang* (hidden fonts)
+# is bundled with OS X 10.11 El Capitan or later versions.
+
+Name: LiHeiPro
+Class: CNS
+#Provides(??): MHei-Medium # fails
+TTFname(20): 儷黑 Pro.ttf
+TTFname(10): LiHeiPro.ttf
+
+Name: LiSongPro
+Class: CNS
+#Provides(??): MSung-Medium # fails
+#Provides(??): MSung-Light # fails
+TTFname(20): 儷宋 Pro.ttf
+TTFname(10): LiSongPro.ttf
+
+Name: WawaSC-Regular
+PSName: DFWaWaSC-W5
+Class: GB
+OTFname: WawaSC-Regular.otf
+
+Name: WawaTC-Regular
+PSName: DFWaWaTC-W5
+Class: CNS
+OTFname: WawaTC-Regular.otf
+
+Name: HannotateSC-W5
+Class: GB
+OTCname: Hannotate.ttc(0)
+
+Name: HannotateTC-W5
+Class: CNS
+OTCname: Hannotate.ttc(1)
+
+Name: HannotateSC-W7
+Class: GB
+OTCname: Hannotate.ttc(2)
+
+Name: HannotateTC-W7
+Class: CNS
+OTCname: Hannotate.ttc(3)
+
+Name: HanziPenSC-W3
+Class: GB
+OTCname: Hanzipen.ttc(0)
+
+Name: HanziPenTC-W3
+Class: CNS
+OTCname: Hanzipen.ttc(1)
+
+Name: HanziPenSC-W5
+Class: GB
+OTCname: Hanzipen.ttc(2)
+
+Name: HanziPenTC-W5
+Class: CNS
+OTCname: Hanzipen.ttc(3)
+
+Name: PingFangHK-Regular
+Class: CNS # HK
+OTCname: PingFang.ttc(0)
+
+Name: PingFangTC-Regular
+Class: CNS
+OTCname: PingFang.ttc(1)
+
+Name: PingFangSC-Regular
+Class: GB
+OTCname: PingFang.ttc(2)
+
+Name: PingFangHK-Medium
+Class: CNS # HK
+OTCname: PingFang.ttc(3)
+
+Name: PingFangTC-Medium
+Class: CNS
+OTCname: PingFang.ttc(4)
+
+Name: PingFangSC-Medium
+Class: GB
+OTCname: PingFang.ttc(5)
+
+Name: PingFangHK-Semibold
+Class: CNS # HK
+OTCname: PingFang.ttc(6)
+
+Name: PingFangTC-Semibold
+Class: CNS
+OTCname: PingFang.ttc(7)
+
+Name: PingFangSC-Semibold
+Class: GB
+OTCname: PingFang.ttc(8)
+
+Name: PingFangHK-Light
+Class: CNS # HK
+OTCname: PingFang.ttc(9)
+
+Name: PingFangTC-Light
+Class: CNS
+OTCname: PingFang.ttc(10)
+
+Name: PingFangSC-Light
+Class: GB
+OTCname: PingFang.ttc(11)
+
+Name: PingFangHK-Thin
+Class: CNS # HK
+OTCname: PingFang.ttc(12)
+
+Name: PingFangTC-Thin
+Class: CNS
+OTCname: PingFang.ttc(13)
+
+Name: PingFangSC-Thin
+Class: GB
+OTCname: PingFang.ttc(14)
+
+Name: PingFangHK-Ultralight
+Class: CNS # HK
+OTCname: PingFang.ttc(15)
+
+Name: PingFangTC-Ultralight
+Class: CNS
+OTCname: PingFang.ttc(16)
+
+Name: PingFangSC-Ultralight
+Class: GB
+OTCname: PingFang.ttc(17)
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-fandol.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-fandol.dat
new file mode 100644
index 0000000000..c2e10bd2b9
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-fandol.dat
@@ -0,0 +1,39 @@
+# Fandol (free)
+
+### SIMPLIFIED CHINESE ###
+
+# Note about TeX Live:
+# Fandol*.otf (6 files)
+# are available as "fandol" package for free.
+
+Name: FandolSong-Regular
+Class: GB
+Provides(40): STSong-Light
+OTFname(10): FandolSong-Regular.otf
+
+Name: FandolSong-Bold
+Provides(40): STSong-Regular
+Class: GB
+OTFname(10): FandolSong-Bold.otf
+
+Name: FandolKai-Regular
+Class: GB
+Provides(40): STKaiti-Regular
+OTFname(10): FandolKai-Regular.otf
+
+Name: FandolHei-Regular
+Class: GB
+Provides(40): STHeiti-Regular
+Provides(40): STHeiti-Light
+OTFname(10): FandolHei-Regular.otf
+
+Name: FandolHei-Bold
+Class: GB
+OTFname(10): FandolHei-Bold.otf
+
+Name: FandolFang-Regular
+Class: GB
+Provides(40): STFangsong-Light
+Provides(40): STFangsong-Regular
+OTFname(10): FandolFang-Regular.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-fontworks.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-fontworks.dat
new file mode 100644
index 0000000000..0a40e4f5ef
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-fontworks.dat
@@ -0,0 +1,69 @@
+# Fontworks (including Fontworks MacOS version)
+
+### JAPANESE ###
+
+# Note about Mac (Mac OS X 10.6 -- macOS 10.13)
+# Klee.ttc
+# Tsukushi{A,B}MaruGothic.ttc
+# are bundled with OS X 10.11 El Capitan or later versions.
+
+Name: FOT-KleePro-M
+PSName: KleePro-M
+Class: Japan
+OTFname: FOT-KleePro-M.otf
+
+Name: FOT-KleePro-DB
+PSName: KleePro-DB
+Class: Japan
+OTFname: FOT-KleePro-DB.otf
+
+Name: FOT-TsukuARdGothicStd-L
+PSName: TsukuARdGothicStd-L
+Class: Japan
+OTFname: FOT-TsukuARdGothicStd-L.otf
+
+Name: FOT-TsukuARdGothicStd-R
+PSName: TsukuARdGothicStd-R
+Class: Japan
+OTFname: FOT-TsukuARdGothicStd-R.otf
+
+Name: FOT-TsukuARdGothicStd-M
+PSName: TsukuARdGothicStd-M
+Class: Japan
+OTFname: FOT-TsukuARdGothicStd-M.otf
+
+Name: FOT-TsukuARdGothicStd-D
+PSName: TsukuARdGothicStd-D
+Class: Japan
+OTFname: FOT-TsukuARdGothicStd-D.otf
+
+Name: FOT-TsukuARdGothicStd-E
+PSName: TsukuARdGothicStd-E
+Class: Japan
+OTFname: FOT-TsukuARdGothicStd-E.otf
+
+Name: FOT-TsukuBRdGothicStd-L
+PSName: TsukuBRdGothicStd-L
+Class: Japan
+OTFname: FOT-TsukuBRdGothicStd-L.otf
+
+Name: FOT-TsukuBRdGothicStd-R
+PSName: TsukuBRdGothicStd-R
+Class: Japan
+OTFname: FOT-TsukuBRdGothicStd-R.otf
+
+Name: FOT-TsukuBRdGothicStd-M
+PSName: TsukuBRdGothicStd-M
+Class: Japan
+OTFname: FOT-TsukuBRdGothicStd-M.otf
+
+Name: FOT-TsukuBRdGothicStd-D
+PSName: TsukuBRdGothicStd-D
+Class: Japan
+OTFname: FOT-TsukuBRdGothicStd-D.otf
+
+Name: FOT-TsukuBRdGothicStd-E
+PSName: TsukuBRdGothicStd-E
+Class: Japan
+OTFname: FOT-TsukuBRdGothicStd-E.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-founder.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-founder.dat
new file mode 100644
index 0000000000..8951754865
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-founder.dat
@@ -0,0 +1,112 @@
+# Beijing Founder Electronics
+
+### SIMPLIFIED CHINESE ###
+
+# Note:
+# FZ****.TTF (13 files)
+# are bundled with with WPS Office (formerly Kingsoft Office) Linux.
+# Lantinghei.ttc
+# is bundled with OS X 10.9 Mavericks or later versions.
+
+# FZShuSong-Z01
+Name: FZSSK--GBK1-0
+Class: GB
+Provides(55): STSong-Light
+TTFname: FZSSK.TTF
+
+# FZXiaoBiaoSong-B05
+Name: FZXBSK--GBK1-0
+Class: GB
+Provides(55): STSong-Regular
+TTFname: FZXBSK.TTF
+
+# FZXiHeiI-Z08
+Name: FZXH1K--GBK1-0
+Class: GB
+Provides(55): STHeiti-Light
+TTFname: FZXH1K.TTF
+
+# FZHei-B01
+Name: FZHTK--GBK1-0
+Class: GB
+Provides(55): STHeiti-Regular
+TTFname: FZHTK.TTF
+
+# FZKai-Z03
+Name: FZKTK--GBK1-0
+Class: GB
+Provides(55): STKaiti-Regular
+TTFname: FZKTK.TTF
+
+# FZFangSong-Z02
+Name: FZFSK--GBK1-0
+Class: GB
+Provides(55): STFangsong-Light
+Provides(55): STFangsong-Regular
+TTFname: FZFSK.TTF
+
+# FZXingKai-S04
+Name: FZXKK--GBK1-0
+Class: GB
+TTFname: FZXKK.TTF
+
+# FZWeiBei-S03
+Name: FZWBK--GBK1-0
+Class: GB
+TTFname: FZWBK.TTF
+
+# FZChaoCuHei-M10
+Name: FZCCHK--GBK1-0
+Class: GB
+TTFname: FZCCHK.TTF
+
+# FZLiShu-S01
+Name: FZLSK--GBK1-0
+Class: GB
+TTFname: FZLSK.TTF
+
+# FZYaoTi-M06
+Name: FZYTK--GBK1-0
+Class: GB
+TTFname: FZYTK.TTF
+
+# FZSongS-Extended
+Name: FZSONGS--GB1-5
+Class: GB
+TTFname: FZSongS_20100603.TTF
+
+# FZSongS-Extended(SIP)
+Name: FZSONGS_SIP--GB1-5
+Class: GB
+TTFname: FZSongS(SIP)_2010603.TTF
+
+# Lantinghei SC Demibold
+Name: FZLTZHK--GBK1-0
+Class: GB
+TTCname: Lantinghei.ttc(0)
+
+# Lantinghei SC Extralight
+Name: FZLTXHK--GBK1-0
+Class: GB
+TTCname: Lantinghei.ttc(1)
+
+# Lantinghei SC Heavy
+Name: FZLTTHK--GBK1-0
+Class: GB
+TTCname: Lantinghei.ttc(2)
+
+# Lantinghei TC Demibold
+Name: FZLTZHB--B51-0
+Class: CNS
+TTCname: Lantinghei.ttc(3)
+
+# Lantinghei TC Extralight
+Name: FZLTXHB--B51-0
+Class: CNS
+TTCname: Lantinghei.ttc(4)
+
+# Lantinghei TC Heavy
+Name: FZLTTHB--B51-0
+Class: CNS
+TTCname: Lantinghei.ttc(5)
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-hancom.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-hancom.dat
new file mode 100644
index 0000000000..9f1609cde8
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-hancom.dat
@@ -0,0 +1,26 @@
+# Hancom HCR (free)
+
+# Note:
+# HAN*.ttf (4 files)
+# are available from Hancom Office website for free.
+
+### KOREAN ###
+
+# note that all fonts have narrow metrics
+
+Name: HCRBatang
+Class: Korea
+TTFname: HANBatang.ttf
+
+Name: HCRBatang-Bold
+Class: Korea
+TTFname: HANBatangB.ttf
+
+Name: HCRDotum
+Class: Korea
+TTFname: HANDotum.ttf
+
+Name: HCRDotum-Bold
+Class: Korea
+TTFname: HANDotumB.ttf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-heisei.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-heisei.dat
new file mode 100644
index 0000000000..9c092f4c90
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-heisei.dat
@@ -0,0 +1,54 @@
+# Heisei (Adobe)
+
+### JAPANESE ###
+
+Name: HeiseiMinStd-W3
+Class: Japan
+OTFname(20): Heisei Mincho Std W3.otf # ?
+OTFname(10): HeiseiMinStd-W3.otf
+
+Name: HeiseiMinStd-W5
+Class: Japan
+OTFname(20): Heisei Mincho Std W5.otf # ?
+OTFname(10): HeiseiMinStd-W5.otf
+
+Name: HeiseiMinStd-W7
+Class: Japan
+OTFname(20): Heisei Mincho Std W7.otf # ?
+OTFname(10): HeiseiMinStd-W7.otf
+
+Name: HeiseiMinStd-W9
+Class: Japan
+OTFname(20): Heisei Mincho Std W9.otf # ?
+OTFname(10): HeiseiMinStd-W9.otf
+
+Name: HeiseiKakuGoStd-W3
+Class: Japan
+OTFname(20): Heisei Kaku Gothic Std W3.otf # ?
+OTFname(10): HeiseiKakuGoStd-W3.otf
+
+Name: HeiseiKakuGoStd-W5
+Class: Japan
+OTFname(20): Heisei Kaku Gothic Std W5.otf # ?
+OTFname(10): HeiseiKakuGoStd-W5.otf
+
+Name: HeiseiKakuGoStd-W7
+Class: Japan
+OTFname(20): Heisei Kaku Gothic Std W7.otf # ?
+OTFname(10): HeiseiKakuGoStd-W7.otf
+
+Name: HeiseiKakuGoStd-W9
+Class: Japan
+OTFname(20): Heisei Kaku Gothic Std W9.otf # ?
+OTFname(10): HeiseiKakuGoStd-W9.otf
+
+Name: HeiseiMaruGoStd-W4
+Class: Japan
+OTFname(20): Heisei Maru Gothic Std W4.otf # ?
+OTFname(10): HeiseiMaruGoStd-W4.otf
+
+Name: HeiseiMaruGoStd-W8
+Class: Japan
+OTFname(20): Heisei Maru Gothic Std W8.otf # ?
+OTFname(10): HeiseiMaruGoStd-W8.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-hiragino.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-hiragino.dat
new file mode 100644
index 0000000000..94b4a07e69
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-hiragino.dat
@@ -0,0 +1,160 @@
+# Hiragino
+
+### JAPANESE ###
+
+# Note about Mac (Mac OS X 10.6 -- macOS 10.13)
+# ヒラギノ角ゴ {Pro,ProN} {W3,W6}.otf
+# ヒラギノ角ゴ {Std,StdN} W8.otf
+# ヒラギノ丸ゴ {Pro,ProN} W4.otf
+# ヒラギノ明朝 {Pro,ProN} {W3,W6}.otf
+# are bundled with OS X 10.10.5 Yosemite or earlier versions.
+# ヒラギノ角ゴシック {W0,...W9}.ttc
+# ヒラギノ丸ゴ ProN W4.ttc
+# are bundled with OS X 10.11 El Capitan or later versions.
+# ヒラギノ明朝 ProN {W3,W6}.ttc
+# are bundled with OS X 10.11 El Capitan -- macOS 10.12.6 Sierra.
+# ヒラギノ明朝 ProN.ttc
+# is bundled with macOS 10.13 High Sierra or later versions.
+
+Name: HiraMinProN-W3
+Class: Japan
+Provides(30): Ryumin-Light
+Provides(30): RyuminPro-Light
+# the following two are *not* the same
+# one is in decomposed form (for Mac), one is in composed form (for the rest)
+OTFname(20): ヒラギノ明朝 ProN W3.otf
+OTFname(19): ヒラギノ明朝 ProN W3.otf
+OTFname(10): HiraMinProN-W3.otf
+
+Name: HiraMinProN-W6
+Class: Japan
+Provides(30): FutoMinA101-Bold
+Provides(30): FutoMinA101Pro-Bold
+Provides(30): MidashiMin-MA31
+Provides(30): MidashiMinPro-MA31
+OTFname(20): ヒラギノ明朝 ProN W6.otf
+OTFname(19): ヒラギノ明朝 ProN W6.otf
+OTFname(10): HiraMinProN-W6.otf
+
+Name: HiraKakuProN-W3
+Class: Japan
+Provides(30): GothicBBB-Medium
+Provides(30): GothicBBBPro-Medium
+OTFname(20): ヒラギノ角ゴ ProN W3.otf
+OTFname(19): ヒラギノ角ゴ ProN W3.otf
+OTFname(10): HiraKakuProN-W3.otf
+
+Name: HiraKakuProN-W6
+Class: Japan
+Provides(30): FutoGoB101-Bold
+Provides(30): FutoGoB101Pro-Bold
+OTFname(20): ヒラギノ角ゴ ProN W6.otf
+OTFname(19): ヒラギノ角ゴ ProN W6.otf
+OTFname(10): HiraKakuProN-W6.otf
+
+Name: HiraKakuStdN-W8
+Class: Japan
+Provides(30): MidashiGo-MB31
+Provides(30): MidashiGoPro-MB31
+OTFname(20): ヒラギノ角ゴ StdN W8.otf
+OTFname(19): ヒラギノ角ゴ StdN W8.otf
+OTFname(10): HiraKakuStdN-W8.otf
+
+Name: HiraMaruProN-W4
+Class: Japan
+Provides(30): Jun101-Light
+Provides(30): Jun101Pro-Light
+OTFname(20): ヒラギノ丸ゴ ProN W4.otf
+OTFname(19): ヒラギノ丸ゴ ProN W4.otf
+OTFname(10): HiraMaruProN-W4.otf
+
+Name: HiraMinPro-W3
+Class: Japan
+Provides(40): Ryumin-Light
+Provides(40): RyuminPro-Light
+OTFname(20): ヒラギノ明朝 Pro W3.otf
+OTFname(19): ヒラギノ明朝 Pro W3.otf
+OTFname(10): HiraMinPro-W3.otf
+
+Name: HiraMinPro-W6
+Class: Japan
+Provides(40): FutoMinA101-Bold
+Provides(40): FutoMinA101Pro-Bold
+Provides(40): MidashiMin-MA31
+Provides(40): MidashiMinPro-MA31
+OTFname(20): ヒラギノ明朝 Pro W6.otf
+OTFname(19): ヒラギノ明朝 Pro W6.otf
+OTFname(10): HiraMinPro-W6.otf
+
+Name: HiraKakuPro-W3
+Class: Japan
+Provides(40): GothicBBB-Medium
+Provides(40): GothicBBBPro-Medium
+OTFname(20): ヒラギノ角ゴ Pro W3.otf
+OTFname(19): ヒラギノ角ゴ Pro W3.otf
+OTFname(10): HiraKakuPro-W3.otf
+
+Name: HiraKakuPro-W6
+Class: Japan
+Provides(40): FutoGoB101-Bold
+Provides(40): FutoGoB101Pro-Bold
+OTFname(20): ヒラギノ角ゴ Pro W6.otf
+OTFname(19): ヒラギノ角ゴ Pro W6.otf
+OTFname(10): HiraKakuPro-W6.otf
+
+Name: HiraKakuStd-W8
+Class: Japan
+Provides(40): MidashiGo-MB31
+Provides(40): MidashiGoPro-MB31
+OTFname(20): ヒラギノ角ゴ Std W8.otf
+OTFname(19): ヒラギノ角ゴ Std W8.otf
+OTFname(10): HiraKakuStd-W8.otf
+
+Name: HiraMaruPro-W4
+Class: Japan
+Provides(40): Jun101-Light
+Provides(40): Jun101Pro-Light
+OTFname(20): ヒラギノ丸ゴ Pro W4.otf
+OTFname(19): ヒラギノ丸ゴ Pro W4.otf
+OTFname(10): HiraMaruPro-W4.otf
+
+# Following Hiragino fonts are not bundled with OS X,
+# but used in ptex-fontmaps
+
+Name: HiraMinProN-W2
+Class: Japan
+OTFname(20): ヒラギノ明朝 ProN W2.otf
+OTFname(19): ヒラギノ明朝 ProN W2.otf
+OTFname(10): HiraMinProN-W2.otf
+
+Name: HiraMinPro-W2
+Class: Japan
+OTFname(20): ヒラギノ明朝 Pro W2.otf
+OTFname(19): ヒラギノ明朝 Pro W2.otf
+OTFname(10): HiraMinPro-W2.otf
+
+### SIMPLIFIED/TRADITIONAL CHINESE ###
+
+# Note about Mac OS X:
+# Hiragino Sans GB {W3,W6}.otf
+# are bundled with OS X 10.10.5 Yosemite or earlier versions.
+# Hiragino Sans GB {W3,W6}.ttc
+# are bundled with OS X 10.11 El Capitan -- macOS 10.12.6 Sierra.
+# Hiragino Sans CNS.ttc
+# is bundled with macOS 10.12 Sierra -- macOS 10.12.6 Sierra.
+# Hiragino Sans GB.ttc
+# Hiragino_Sans_CNS.ttc
+# are bundled with macOS 10.13 High Sierra or later versions.
+
+Name: HiraginoSansGB-W3
+Class: GB
+Provides(50): STHeiti-Light
+OTFname(20): Hiragino Sans GB W3.otf
+OTFname(10): HiraginoSansGB-W3.otf
+
+Name: HiraginoSansGB-W6
+Class: GB
+Provides(50): STHeiti-Regular
+OTFname(20): Hiragino Sans GB W6.otf
+OTFname(10): HiraginoSansGB-W6.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-ipa.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-ipa.dat
new file mode 100644
index 0000000000..132fe33c7f
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-ipa.dat
@@ -0,0 +1,103 @@
+# IPA (free)
+
+### JAPANESE ###
+
+# Note about TeX Live:
+# ipam.ttf
+# ipag.ttf
+# ipaexm.ttf
+# ipaexg.ttf
+# ipapm.ttf
+# ipapg.ttf
+# are available as "ipaex" package for free.
+
+Name: IPAMincho
+Class: Japan
+Provides(130): Ryumin-Light
+Provides(130): RyuminPro-Light
+Provides(130): HiraMinProN-W3
+Provides(130): HiraMinPro-W3
+Provides(130): FutoMinA101-Bold
+Provides(130): FutoMinA101Pro-Bold
+Provides(130): HiraMinProN-W6
+Provides(130): HiraMinPro-W6
+Provides(130): MidashiMin-MA31
+Provides(130): MidashiMinPro-MA31
+TTFname(20): ipam.ttf
+#TTFname(21): IPAMincho.ttf
+
+Name: IPAGothic
+Class: Japan
+Provides(130): GothicBBB-Medium
+Provides(130): GothicBBBPro-Medium
+Provides(130): HiraKakuProN-W3
+Provides(130): HiraKakuPro-W3
+Provides(130): FutoGoB101-Bold
+Provides(130): FutoGoB101Pro-Bold
+Provides(130): HiraKakuProN-W6
+Provides(130): HiraKakuPro-W6
+Provides(130): MidashiGo-MB31
+Provides(130): MidashiGoPro-MB31
+Provides(130): HiraKakuStdN-W8
+Provides(130): HiraKakuStd-W8
+Provides(130): Jun101-Light
+Provides(130): Jun101Pro-Light
+Provides(130): HiraMaruProN-W4
+Provides(130): HiraMaruPro-W4
+TTFname(20): ipag.ttf
+#TTFname(21): IPAGothic.ttf
+
+Name: IPAexMincho
+Class: Japan
+Provides(120): Ryumin-Light
+Provides(120): RyuminPro-Light
+Provides(120): HiraMinProN-W3
+Provides(120): HiraMinPro-W3
+Provides(120): FutoMinA101-Bold
+Provides(120): FutoMinA101Pro-Bold
+Provides(120): HiraMinProN-W6
+Provides(120): HiraMinPro-W6
+Provides(120): MidashiMin-MA31
+Provides(120): MidashiMinPro-MA31
+TTFname(20): ipaexm.ttf
+#TTFname(21): IPAexMincho.ttf
+
+Name: IPAexGothic
+Class: Japan
+Provides(120): GothicBBB-Medium
+Provides(120): GothicBBBPro-Medium
+Provides(120): HiraKakuProN-W3
+Provides(120): HiraKakuPro-W3
+Provides(120): FutoGoB101-Bold
+Provides(120): FutoGoB101Pro-Bold
+Provides(120): HiraKakuProN-W6
+Provides(120): HiraKakuPro-W6
+Provides(120): MidashiGo-MB31
+Provides(120): MidashiGoPro-MB31
+Provides(120): HiraKakuStdN-W8
+Provides(120): HiraKakuStd-W8
+Provides(120): Jun101-Light
+Provides(120): Jun101Pro-Light
+Provides(120): HiraMaruProN-W4
+Provides(120): HiraMaruPro-W4
+TTFname(20): ipaexg.ttf
+#TTFname(21): IPAexGothic.ttf
+
+# IPA proportional (free)
+
+Name: IPAPMincho
+Class: Japan
+TTFname(20): ipamp.ttf
+#TTFname(21): IPAPMincho.ttf
+
+Name: IPAPGothic
+Class: Japan
+TTFname(20): ipagp.ttf
+#TTFname(21): IPAPGothic.ttf
+
+# IPA MJ (free)
+
+Name: IPAmjMincho
+Class: Japan
+TTFname: ipamjm.ttf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-kozuka.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-kozuka.dat
new file mode 100644
index 0000000000..f9fb1a44dd
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-kozuka.dat
@@ -0,0 +1,302 @@
+# Kozuka (Adobe)
+
+### JAPANESE ###
+
+# Some of the {Pr6N,ProVI,Pro} variants are used in ptex-fontmaps.
+
+Name: KozMinPr6N-ExtraLight
+Class: Japan
+OTFname: KozMinPr6N-ExtraLight.otf
+
+Name: KozMinPr6N-Light
+Class: Japan
+OTFname: KozMinPr6N-Light.otf
+
+Name: KozMinPr6N-Regular
+Class: Japan
+Provides(50): Ryumin-Light
+Provides(50): RyuminPro-Light
+Provides(50): HiraMinProN-W3
+Provides(50): HiraMinPro-W3
+OTFname: KozMinPr6N-Regular.otf
+
+Name: KozMinPr6N-Medium
+Class: Japan
+OTFname: KozMinPr6N-Medium.otf
+
+Name: KozMinPr6N-Bold
+Class: Japan
+Provides(50): FutoMinA101-Bold
+Provides(50): FutoMinA101Pro-Bold
+Provides(50): HiraMinProN-W6
+Provides(50): HiraMinPro-W6
+OTFname: KozMinPr6N-Bold.otf
+
+Name: KozMinPr6N-Heavy
+Class: Japan
+Provides(50): MidashiMin-MA31
+Provides(50): MidashiMinPro-MA31
+OTFname: KozMinPr6N-Heavy.otf
+
+Name: KozMinProVI-ExtraLight
+Class: Japan
+OTFname: KozMinProVI-ExtraLight.otf
+
+Name: KozMinProVI-Light
+Class: Japan
+OTFname: KozMinProVI-Light.otf
+
+Name: KozMinProVI-Regular
+Class: Japan
+Provides(55): Ryumin-Light
+Provides(55): RyuminPro-Light
+Provides(55): HiraMinProN-W3
+Provides(55): HiraMinPro-W3
+OTFname: KozMinProVI-Regular.otf
+
+Name: KozMinProVI-Medium
+Class: Japan
+OTFname: KozMinProVI-Medium.otf
+
+Name: KozMinProVI-Bold
+Class: Japan
+Provides(55): FutoMinA101-Bold
+Provides(55): FutoMinA101Pro-Bold
+Provides(55): HiraMinProN-W6
+Provides(55): HiraMinPro-W6
+OTFname: KozMinProVI-Bold.otf
+
+Name: KozMinProVI-Heavy
+Class: Japan
+Provides(55): MidashiMin-MA31
+Provides(55): MidashiMinPro-MA31
+OTFname: KozMinProVI-Heavy.otf
+
+Name: KozMinPro-ExtraLight
+Class: Japan
+OTFname: KozMinPro-ExtraLight.otf
+
+Name: KozMinPro-Light
+Class: Japan
+OTFname: KozMinPro-Light.otf
+
+Name: KozMinPro-Regular
+Class: Japan
+Provides(60): Ryumin-Light
+Provides(60): RyuminPro-Light
+Provides(60): HiraMinProN-W3
+Provides(60): HiraMinPro-W3
+OTFname: KozMinPro-Regular.otf
+
+Name: KozMinPro-Medium
+Class: Japan
+OTFname: KozMinPro-Medium.otf
+
+Name: KozMinPro-Bold
+Class: Japan
+Provides(60): FutoMinA101-Bold
+Provides(60): FutoMinA101Pro-Bold
+Provides(60): HiraMinProN-W6
+Provides(60): HiraMinPro-W6
+OTFname: KozMinPro-Bold.otf
+
+Name: KozMinPro-Heavy
+Class: Japan
+Provides(60): MidashiMin-MA31
+Provides(60): MidashiMinPro-MA31
+OTFname: KozMinPro-Heavy.otf
+
+Name: KozMinStd-ExtraLight
+Class: Japan
+OTFname: KozMinStd-ExtraLight.otf
+
+Name: KozMinStd-Light
+Class: Japan
+OTFname: KozMinStd-Light.otf
+
+Name: KozMinStd-Regular
+Class: Japan
+Provides(65): Ryumin-Light
+Provides(65): RyuminPro-Light
+Provides(65): HiraMinProN-W3
+Provides(65): HiraMinPro-W3
+OTFname: KozMinStd-Regular.otf
+
+Name: KozMinStd-Medium
+Class: Japan
+OTFname: KozMinStd-Medium.otf
+
+Name: KozMinStd-Bold
+Class: Japan
+Provides(65): FutoMinA101-Bold
+Provides(65): FutoMinA101Pro-Bold
+Provides(65): HiraMinProN-W6
+Provides(65): HiraMinPro-W6
+OTFname: KozMinStd-Bold.otf
+
+Name: KozMinStd-Heavy
+Class: Japan
+Provides(65): MidashiMin-MA31
+Provides(65): MidashiMinPro-MA31
+OTFname: KozMinStd-Heavy.otf
+
+Name: KozGoPr6N-ExtraLight
+Class: Japan
+OTFname: KozGoPr6N-ExtraLight.otf
+
+Name: KozGoPr6N-Light
+Class: Japan
+OTFname: KozGoPr6N-Light.otf
+
+Name: KozGoPr6N-Regular
+Class: Japan
+OTFname: KozGoPr6N-Regular.otf
+
+Name: KozGoPr6N-Medium
+Class: Japan
+Provides(50): GothicBBB-Medium
+Provides(50): GothicBBBPro-Medium
+Provides(50): HiraKakuProN-W3
+Provides(50): HiraKakuPro-W3
+OTFname: KozGoPr6N-Medium.otf
+
+Name: KozGoPr6N-Bold
+Class: Japan
+Provides(50): FutoGoB101-Bold
+Provides(50): FutoGoB101Pro-Bold
+Provides(50): HiraKakuProN-W6
+Provides(50): HiraKakuPro-W6
+OTFname: KozGoPr6N-Bold.otf
+
+Name: KozGoPr6N-Heavy
+Class: Japan
+Provides(50): MidashiGo-MB31
+Provides(50): MidashiGoPro-MB31
+Provides(50): HiraKakuStdN-W8
+Provides(50): HiraKakuStd-W8
+Provides(50): Jun101-Light
+Provides(50): Jun101Pro-Light
+Provides(50): HiraMaruProN-W4
+Provides(50): HiraMaruPro-W4
+OTFname: KozGoPr6N-Heavy.otf
+
+Name: KozGoProVI-ExtraLight
+Class: Japan
+OTFname: KozGoProVI-ExtraLight.otf
+
+Name: KozGoProVI-Light
+Class: Japan
+OTFname: KozGoProVI-Light.otf
+
+Name: KozGoProVI-Regular
+Class: Japan
+OTFname: KozGoProVI-Regular.otf
+
+Name: KozGoProVI-Medium
+Class: Japan
+Provides(55): GothicBBB-Medium
+Provides(55): GothicBBBPro-Medium
+Provides(55): HiraKakuProN-W3
+Provides(55): HiraKakuPro-W3
+OTFname: KozGoProVI-Medium.otf
+
+Name: KozGoProVI-Bold
+Class: Japan
+Provides(55): FutoGoB101-Bold
+Provides(55): FutoGoB101Pro-Bold
+Provides(55): HiraKakuProN-W6
+Provides(55): HiraKakuPro-W6
+OTFname: KozGoProVI-Bold.otf
+
+Name: KozGoProVI-Heavy
+Class: Japan
+Provides(55): MidashiGo-MB31
+Provides(55): MidashiGoPro-MB31
+Provides(55): HiraKakuStdN-W8
+Provides(55): HiraKakuStd-W8
+Provides(55): Jun101-Light
+Provides(55): Jun101Pro-Light
+Provides(55): HiraMaruProN-W4
+Provides(55): HiraMaruPro-W4
+OTFname: KozGoProVI-Heavy.otf
+
+Name: KozGoPro-ExtraLight
+Class: Japan
+OTFname: KozGoPro-ExtraLight.otf
+
+Name: KozGoPro-Light
+Class: Japan
+OTFname: KozGoPro-Light.otf
+
+Name: KozGoPro-Regular
+Class: Japan
+OTFname: KozGoPro-Regular.otf
+
+Name: KozGoPro-Medium
+Class: Japan
+Provides(60): GothicBBB-Medium
+Provides(60): GothicBBBPro-Medium
+Provides(60): HiraKakuProN-W3
+Provides(60): HiraKakuPro-W3
+OTFname: KozGoPro-Medium.otf
+
+Name: KozGoPro-Bold
+Class: Japan
+Provides(60): FutoGoB101-Bold
+Provides(60): FutoGoB101Pro-Bold
+Provides(60): HiraKakuProN-W6
+Provides(60): HiraKakuPro-W6
+OTFname: KozGoPro-Bold.otf
+
+Name: KozGoPro-Heavy
+Class: Japan
+Provides(60): MidashiGo-MB31
+Provides(60): MidashiGoPro-MB31
+Provides(60): HiraKakuStdN-W8
+Provides(60): HiraKakuStd-W8
+Provides(60): Jun101-Light
+Provides(60): Jun101Pro-Light
+Provides(60): HiraMaruProN-W4
+Provides(60): HiraMaruPro-W4
+OTFname: KozGoPro-Heavy.otf
+
+Name: KozGoStd-ExtraLight
+Class: Japan
+OTFname: KozGoStd-ExtraLight.otf
+
+Name: KozGoStd-Light
+Class: Japan
+OTFname: KozGoStd-Light.otf
+
+Name: KozGoStd-Regular
+Class: Japan
+OTFname: KozGoStd-Regular.otf
+
+Name: KozGoStd-Medium
+Class: Japan
+Provides(65): GothicBBB-Medium
+Provides(65): GothicBBBPro-Medium
+Provides(65): HiraKakuProN-W3
+Provides(65): HiraKakuPro-W3
+OTFname: KozGoStd-Medium.otf
+
+Name: KozGoStd-Bold
+Class: Japan
+Provides(65): FutoGoB101-Bold
+Provides(65): FutoGoB101Pro-Bold
+Provides(65): HiraKakuProN-W6
+Provides(65): HiraKakuPro-W6
+OTFname: KozGoStd-Bold.otf
+
+Name: KozGoStd-Heavy
+Class: Japan
+Provides(65): MidashiGo-MB31
+Provides(65): MidashiGoPro-MB31
+Provides(65): HiraKakuStdN-W8
+Provides(65): HiraKakuStd-W8
+Provides(65): Jun101-Light
+Provides(65): Jun101Pro-Light
+Provides(65): HiraMaruProN-W4
+Provides(65): HiraMaruPro-W4
+OTFname: KozGoStd-Heavy.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-macos-removeonly.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-macos-removeonly.dat
new file mode 100644
index 0000000000..ce9ff48eb2
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-macos-removeonly.dat
@@ -0,0 +1,582 @@
+# Remove-only database for Mac OS
+
+### JAPANESE ###
+
+# Hiragino
+
+Name: HiraMinProN-W3
+Class: Japan
+Provides(30): Ryumin-Light
+Provides(30): RyuminPro-Light
+OTFname(20): ヒラギノ明朝 ProN W3.otf
+OTFname(19): ヒラギノ明朝 ProN W3.otf
+OTFname(10): HiraMinProN-W3.otf
+RMVname(30): ヒラギノ明朝 ProN W3.ttc(0)
+RMVname(29): ヒラギノ明朝 ProN W3.ttc(0)
+RMVname(28): HiraginoSerif-W3.ttc(0)
+RMVname(40): ヒラギノ明朝 ProN.ttc(0)
+RMVname(39): ヒラギノ明朝 ProN.ttc(0)
+RMVname(38): HiraginoSerif.ttc(0)
+
+Name: HiraMinProN-W6
+Class: Japan
+Provides(30): FutoMinA101-Bold
+Provides(30): FutoMinA101Pro-Bold
+Provides(30): MidashiMin-MA31
+Provides(30): MidashiMinPro-MA31
+OTFname(20): ヒラギノ明朝 ProN W6.otf
+OTFname(19): ヒラギノ明朝 ProN W6.otf
+OTFname(10): HiraMinProN-W6.otf
+RMVname(30): ヒラギノ明朝 ProN W6.ttc(0)
+RMVname(29): ヒラギノ明朝 ProN W6.ttc(0)
+RMVname(28): HiraginoSerif-W6.ttc(0)
+RMVname(40): ヒラギノ明朝 ProN.ttc(2)
+RMVname(39): ヒラギノ明朝 ProN.ttc(2)
+RMVname(38): HiraginoSerif.ttc(2)
+
+Name: HiraKakuProN-W3
+Class: Japan
+Provides(30): GothicBBB-Medium
+Provides(30): GothicBBBPro-Medium
+OTFname(20): ヒラギノ角ゴ ProN W3.otf
+OTFname(19): ヒラギノ角ゴ ProN W3.otf
+OTFname(10): HiraKakuProN-W3.otf
+RMVname(30): ヒラギノ角ゴシック W3.ttc(2)
+RMVname(29): ヒラギノ角ゴシック W3.ttc(2)
+RMVname(28): HiraginoSans-W3.ttc(2)
+
+Name: HiraKakuProN-W6
+Class: Japan
+Provides(30): FutoGoB101-Bold
+Provides(30): FutoGoB101Pro-Bold
+OTFname(20): ヒラギノ角ゴ ProN W6.otf
+OTFname(19): ヒラギノ角ゴ ProN W6.otf
+OTFname(10): HiraKakuProN-W6.otf
+RMVname(30): ヒラギノ角ゴシック W6.ttc(2)
+RMVname(29): ヒラギノ角ゴシック W6.ttc(2)
+RMVname(28): HiraginoSans-W6.ttc(2)
+
+Name: HiraKakuStdN-W8
+Class: Japan
+Provides(30): MidashiGo-MB31
+Provides(30): MidashiGoPro-MB31
+OTFname(20): ヒラギノ角ゴ StdN W8.otf
+OTFname(19): ヒラギノ角ゴ StdN W8.otf
+OTFname(10): HiraKakuStdN-W8.otf
+RMVname(30): ヒラギノ角ゴシック W8.ttc(3)
+RMVname(29): ヒラギノ角ゴシック W8.ttc(3)
+RMVname(28): HiraginoSans-W8.ttc(3)
+
+Name: HiraMaruProN-W4
+Class: Japan
+Provides(30): Jun101-Light
+Provides(30): Jun101Pro-Light
+OTFname(20): ヒラギノ丸ゴ ProN W4.otf
+OTFname(19): ヒラギノ丸ゴ ProN W4.otf
+OTFname(10): HiraMaruProN-W4.otf
+RMVname(30): ヒラギノ丸ゴ ProN W4.ttc(1)
+RMVname(29): ヒラギノ丸ゴ ProN W4.ttc(1)
+RMVname(28): HiraginoSansR-W4.ttc(1)
+
+Name: HiraMinPro-W3
+Class: Japan
+Provides(40): Ryumin-Light
+Provides(40): RyuminPro-Light
+OTFname(20): ヒラギノ明朝 Pro W3.otf
+OTFname(19): ヒラギノ明朝 Pro W3.otf
+OTFname(10): HiraMinPro-W3.otf
+RMVname(30): ヒラギノ明朝 ProN W3.ttc(1)
+RMVname(29): ヒラギノ明朝 ProN W3.ttc(1)
+RMVname(28): HiraginoSerif-W3.ttc(1)
+RMVname(40): ヒラギノ明朝 ProN.ttc(1)
+RMVname(39): ヒラギノ明朝 ProN.ttc(1)
+RMVname(38): HiraginoSerif.ttc(1)
+
+Name: HiraMinPro-W6
+Class: Japan
+Provides(40): FutoMinA101-Bold
+Provides(40): FutoMinA101Pro-Bold
+Provides(40): MidashiMin-MA31
+Provides(40): MidashiMinPro-MA31
+OTFname(20): ヒラギノ明朝 Pro W6.otf
+OTFname(19): ヒラギノ明朝 Pro W6.otf
+OTFname(10): HiraMinPro-W6.otf
+RMVname(30): ヒラギノ明朝 ProN W6.ttc(1)
+RMVname(29): ヒラギノ明朝 ProN W6.ttc(1)
+RMVname(28): HiraginoSerif-W6.ttc(1)
+RMVname(40): ヒラギノ明朝 ProN.ttc(3)
+RMVname(39): ヒラギノ明朝 ProN.ttc(3)
+RMVname(38): HiraginoSerif.ttc(3)
+
+Name: HiraKakuPro-W3
+Class: Japan
+Provides(40): GothicBBB-Medium
+Provides(40): GothicBBBPro-Medium
+OTFname(20): ヒラギノ角ゴ Pro W3.otf
+OTFname(19): ヒラギノ角ゴ Pro W3.otf
+OTFname(10): HiraKakuPro-W3.otf
+RMVname(30): ヒラギノ角ゴシック W3.ttc(3)
+RMVname(29): ヒラギノ角ゴシック W3.ttc(3)
+RMVname(28): HiraginoSans-W3.ttc(3)
+
+Name: HiraKakuPro-W6
+Class: Japan
+Provides(40): FutoGoB101-Bold
+Provides(40): FutoGoB101Pro-Bold
+OTFname(20): ヒラギノ角ゴ Pro W6.otf
+OTFname(19): ヒラギノ角ゴ Pro W6.otf
+OTFname(10): HiraKakuPro-W6.otf
+RMVname(30): ヒラギノ角ゴシック W6.ttc(3)
+RMVname(29): ヒラギノ角ゴシック W6.ttc(3)
+RMVname(28): HiraginoSans-W6.ttc(3)
+
+Name: HiraKakuStd-W8
+Class: Japan
+Provides(40): MidashiGo-MB31
+Provides(40): MidashiGoPro-MB31
+OTFname(20): ヒラギノ角ゴ Std W8.otf
+OTFname(19): ヒラギノ角ゴ Std W8.otf
+OTFname(10): HiraKakuStd-W8.otf
+RMVname(30): ヒラギノ角ゴシック W8.ttc(2)
+RMVname(29): ヒラギノ角ゴシック W8.ttc(2)
+RMVname(28): HiraginoSans-W8.ttc(2)
+
+Name: HiraMaruPro-W4
+Class: Japan
+Provides(40): Jun101-Light
+Provides(40): Jun101Pro-Light
+OTFname(20): ヒラギノ丸ゴ Pro W4.otf
+OTFname(19): ヒラギノ丸ゴ Pro W4.otf
+OTFname(10): HiraMaruPro-W4.otf
+RMVname(30): ヒラギノ丸ゴ ProN W4.ttc(0)
+RMVname(29): ヒラギノ丸ゴ ProN W4.ttc(0)
+RMVname(28): HiraginoSansR-W4.ttc(0)
+
+Name: HiraginoSans-W0
+Class: Japan
+RMVname(30): ヒラギノ角ゴシック W0.ttc(0)
+RMVname(29): ヒラギノ角ゴシック W0.ttc(0)
+RMVname(28): HiraginoSans-W0.ttc(0)
+
+Name: HiraginoSans-W1
+Class: Japan
+RMVname(30): ヒラギノ角ゴシック W1.ttc(0)
+RMVname(29): ヒラギノ角ゴシック W1.ttc(0)
+RMVname(28): HiraginoSans-W1.ttc(0)
+
+Name: HiraginoSans-W2
+Class: Japan
+RMVname(30): ヒラギノ角ゴシック W2.ttc(0)
+RMVname(29): ヒラギノ角ゴシック W2.ttc(0)
+RMVname(28): HiraginoSans-W2.ttc(0)
+
+Name: HiraginoSans-W3
+Class: Japan
+RMVname(30): ヒラギノ角ゴシック W3.ttc(0)
+RMVname(29): ヒラギノ角ゴシック W3.ttc(0)
+RMVname(28): HiraginoSans-W3.ttc(0)
+
+Name: HiraginoSans-W4
+Class: Japan
+RMVname(30): ヒラギノ角ゴシック W4.ttc(0)
+RMVname(29): ヒラギノ角ゴシック W4.ttc(0)
+RMVname(28): HiraginoSans-W4.ttc(0)
+
+Name: HiraginoSans-W5
+Class: Japan
+RMVname(30): ヒラギノ角ゴシック W5.ttc(0)
+RMVname(29): ヒラギノ角ゴシック W5.ttc(0)
+RMVname(28): HiraginoSans-W5.ttc(0)
+
+Name: HiraginoSans-W6
+Class: Japan
+RMVname(30): ヒラギノ角ゴシック W6.ttc(0)
+RMVname(29): ヒラギノ角ゴシック W6.ttc(0)
+RMVname(28): HiraginoSans-W6.ttc(0)
+
+Name: HiraginoSans-W7
+Class: Japan
+RMVname(30): ヒラギノ角ゴシック W7.ttc(0)
+RMVname(29): ヒラギノ角ゴシック W7.ttc(0)
+RMVname(28): HiraginoSans-W7.ttc(0)
+
+Name: HiraginoSans-W8
+Class: Japan
+RMVname(30): ヒラギノ角ゴシック W8.ttc(0)
+RMVname(29): ヒラギノ角ゴシック W8.ttc(0)
+RMVname(28): HiraginoSans-W8.ttc(0)
+
+Name: HiraginoSans-W9
+Class: Japan
+RMVname(30): ヒラギノ角ゴシック W9.ttc(0)
+RMVname(29): ヒラギノ角ゴシック W9.ttc(0)
+RMVname(28): HiraginoSans-W9.ttc(0)
+
+# Yu-fonts MacOS version
+
+Name: YuMin-Medium
+Class: Japan
+Provides(80): Ryumin-Light
+Provides(80): RyuminPro-Light
+Provides(80): HiraMinProN-W3
+Provides(80): HiraMinPro-W3
+OTFname(20): Yu Mincho Medium.otf
+OTFname(10): YuMin-Medium.otf
+RMVname(30): YuMincho.ttc(0)
+
+Name: YuMin-Demibold
+Class: Japan
+Provides(80): FutoMinA101-Bold
+Provides(80): FutoMinA101Pro-Bold
+Provides(80): HiraMinProN-W6
+Provides(80): HiraMinPro-W6
+Provides(80): MidashiMin-MA31
+Provides(80): MidashiMinPro-MA31
+OTFname(20): Yu Mincho Demibold.otf
+OTFname(10): YuMin-Demibold.otf
+RMVname(30): YuMincho.ttc(1)
+
+Name: YuMin-Extrabold
+Class: Japan
+RMVname(30): YuMincho.ttc(2)
+
+Name: YuMin_36pKn-Medium
+Class: Japan
+RMVname(30): YuMincho.ttc(3)
+
+Name: YuMin_36pKn-Demibold
+Class: Japan
+RMVname(30): YuMincho.ttc(4)
+
+Name: YuMin_36pKn-Extrabold
+Class: Japan
+RMVname(30): YuMincho.ttc(5)
+
+Name: YuKyo_Yoko-Medium
+Class: Japan
+RMVname: Kyokasho.ttc(0)
+
+Name: YuKyo_Yoko-Bold
+Class: Japan
+RMVname: Kyokasho.ttc(1)
+
+Name: YuKyo-Medium
+Class: Japan
+RMVname: Kyokasho.ttc(2)
+
+Name: YuKyo-Bold
+Class: Japan
+RMVname: Kyokasho.ttc(3)
+
+# Fontworks MacOS version
+
+Name: Klee-Medium
+Class: Japan
+RMVname: Klee.ttc(1)
+
+Name: Klee-Demibold
+Class: Japan
+RMVname: Klee.ttc(0)
+
+Name: TsukuARdGothic-Regular
+Class: Japan
+RMVname: TsukushiAMaruGothic.ttc(0)
+
+Name: TsukuARdGothic-Bold
+Class: Japan
+RMVname: TsukushiAMaruGothic.ttc(1)
+
+Name: TsukuBRdGothic-Regular
+Class: Japan
+RMVname: TsukushiBMaruGothic.ttc(0)
+
+Name: TsukuBRdGothic-Bold
+Class: Japan
+RMVname: TsukushiBMaruGothic.ttc(1)
+
+# Toppan MacOS version
+
+Name: ToppanBunkyuMincho-Regular
+PSName: ToppanBunkyuMinchoPr6N-Regular
+Class: Japan
+RMVname(20): ToppanBunkyuMincho-Regular.otf
+
+#Name: ToppanBunkyuMinchoPr6N-Regular
+#Class: Japan
+#RMVname(10): ToppanBunkyuMinchoPr6N-Regular.otf
+
+Name: ToppanBunkyuGothicPr6N-DB
+Class: Japan
+RMVname(20): ToppanBunkyuGothic.ttc(0)
+RMVname(10): ToppanBunkyuGothicPr6N.ttc(0)
+
+Name: ToppanBunkyuGothicPr6N-Regular
+Class: Japan
+RMVname(20): ToppanBunkyuGothic.ttc(1)
+RMVname(10): ToppanBunkyuGothicPr6N.ttc(1)
+
+Name: ToppanBunkyuMidashiMincho-ExtraBold
+PSName: ToppanBunkyuMidashiMinchoStdN-ExtraBold
+Class: Japan
+RMVname(20): ToppanBunkyuMidashiMincho-ExtraBold.otf
+
+#Name: ToppanBunkyuMidashiMinchoStdN-ExtraBold
+#Class: Japan
+#RMVname(10): ToppanBunkyuMidashiMinchoStdN-ExtraBold.otf
+
+Name: ToppanBunkyuMidashiGothic-ExtraBold
+PSName: ToppanBunkyuMidashiGothicStdN-ExtraBold
+Class: Japan
+RMVname(20): ToppanBunkyuMidashiGothic-ExtraBold.otf
+
+#Name: ToppanBunkyuMidashiGothicStdN-ExtraBold
+#Class: Japan
+#RMVname(10): ToppanBunkyuMidashiGothicStdN-ExtraBold.otf
+
+### SIMPLIFIED/TRADITIONAL CHINESE ###
+
+# Hiragino chinese
+
+Name: HiraginoSansGB-W3
+Class: GB
+Provides(50): STHeiti-Light
+OTFname(20): Hiragino Sans GB W3.otf
+OTFname(10): HiraginoSansGB-W3.otf
+RMVname(30): Hiragino Sans GB W3.ttc(0)
+RMVname(28): HiraginoSansGB-W3.ttc(0)
+RMVname(40): Hiragino Sans GB.ttc(0)
+RMVname(38): HiraginoSansGB.ttc(0)
+
+Name: HiraginoSansGB-W6
+Class: GB
+Provides(50): STHeiti-Regular
+OTFname(20): Hiragino Sans GB W6.otf
+OTFname(10): HiraginoSansGB-W6.otf
+RMVname(30): Hiragino Sans GB W6.ttc(0)
+RMVname(28): HiraginoSansGB-W6.ttc(0)
+RMVname(40): Hiragino Sans GB.ttc(2)
+RMVname(38): HiraginoSansGB.ttc(2)
+
+Name: HiraginoSansCNS-W3
+Class: CNS
+RMVname(30): Hiragino Sans CNS.ttc(0)
+RMVname(29): Hiragino_Sans_CNS.ttc(0)
+RMVname(28): HiraginoSansCNS.ttc(0)
+
+Name: HiraginoSansCNS-W6
+Class: CNS
+RMVname(30): Hiragino Sans CNS.ttc(1)
+RMVname(29): Hiragino_Sans_CNS.ttc(1)
+RMVname(28): HiraginoSansCNS.ttc(1)
+
+# Changzhou SinoType
+
+Name: STSong
+Class: GB
+#Provides(??): STSong-Light # fails
+#Provides(??): STSong-Regular # fails
+TTFname(10): STSong.ttf
+TTFname(11): STSONG.TTF
+TTFname(20): 华文宋体.ttf
+RMVname(30): Songti.ttc(4)
+RMVname(39): Songti-mountainlion.ttc(3)
+RMVname(40): 宋体.ttc(3)
+
+Name: STKaiti
+Class: GB
+#Provides(??): STKaiti-Regular # fails
+TTFname(10): STKaiti.ttf
+TTFname(11): STKAITI.TTF
+TTFname(20): 华文楷体.ttf
+RMVname(30): Kaiti.ttc(1)
+RMVname(39): Kaiti-mountainlion.ttc(3)
+RMVname(40): 楷体.ttc(3)
+
+Name: STKaiti-Adobe-CNS1
+Class: CNS
+#Provides(??): MKai-Medium # fails
+TTFname(10): STKaiti.ttf
+TTFname(11): STKAITI.TTF
+TTFname(20): 华文楷体.ttf
+RMVname(30): Kaiti.ttc(1)
+RMVname(39): Kaiti-mountainlion.ttc(3)
+RMVname(40): 楷体.ttc(3)
+
+Name: STSongti-SC-Black
+Class: GB
+RMVname(30): Songti.ttc(0)
+RMVname(39): Songti-mountainlion.ttc(0)
+RMVname(40): 宋体.ttc(0)
+
+Name: STSongti-SC-Bold
+Class: GB
+RMVname(30): Songti.ttc(1)
+RMVname(39): Songti-mountainlion.ttc(1)
+RMVname(40): 宋体.ttc(1)
+
+Name: STSongti-TC-Bold
+Class: CNS
+RMVname(30): Songti.ttc(2)
+
+Name: STSongti-SC-Light
+Class: GB
+RMVname(30): Songti.ttc(3)
+RMVname(39): Songti-mountainlion.ttc(2)
+RMVname(40): 宋体.ttc(2)
+
+Name: STSongti-TC-Light
+Class: CNS
+RMVname(30): Songti.ttc(5)
+
+Name: STSongti-SC-Regular
+Class: GB
+RMVname(30): Songti.ttc(6)
+RMVname(39): Songti-mountainlion.ttc(4)
+RMVname(40): 宋体.ttc(4)
+
+Name: STSongti-TC-Regular
+Class: CNS
+RMVname(30): Songti.ttc(7)
+
+Name: STKaitiSC-Regular
+Class: GB
+RMVname(30): Kaiti.ttc(0)
+
+Name: STKaitiTC-Regular
+Class: CNS
+RMVname(30): Kaiti.ttc(2)
+
+Name: STKaitiSC-Bold
+Class: GB
+RMVname(30): Kaiti.ttc(3)
+
+Name: STKaitiTC-Bold
+Class: CNS
+RMVname(30): Kaiti.ttc(4)
+
+Name: STKaitiSC-Black
+Class: GB
+RMVname(30): Kaiti.ttc(5)
+
+Name: STKaitiTC-Black
+Class: CNS
+RMVname(30): Kaiti.ttc(6)
+
+Name: STKaiti-SC-Black
+Class: GB
+RMVname(30): Kaiti.ttc(0)
+RMVname(39): Kaiti-mountainlion.ttc(0)
+RMVname(40): 楷体.ttc(0)
+
+Name: STKaiti-SC-Bold
+Class: GB
+RMVname(30): Kaiti.ttc(1)
+RMVname(39): Kaiti-mountainlion.ttc(1)
+RMVname(40): 楷体.ttc(1)
+
+Name: STKaiTi-TC-Bold
+Class: CNS
+RMVname(30): Kaiti.ttc(2)
+
+Name: STKaiti-SC-Regular
+Class: GB
+RMVname(30): Kaiti.ttc(3)
+RMVname(39): Kaiti-mountainlion.ttc(2)
+RMVname(40): 楷体.ttc(2)
+
+Name: STKaiTi-TC-Regular
+Class: CNS
+RMVname(30): Kaiti.ttc(5)
+
+Name: STBaoliSC-Regular
+Class: GB
+RMVname(30): Baoli.ttc(0)
+
+Name: STBaoliTC-Regular
+Class: CNS
+RMVname(30): Baoli.ttc(1)
+
+Name: STBaoli-SC-Regular
+Class: GB
+RMVname(30): Baoli.ttc(0)
+
+Name: STLibianSC-Regular
+Class: GB
+RMVname(30): Libian.ttc(0)
+
+Name: STLibianTC-Regular
+Class: CNS
+RMVname(30): Libian.ttc(1)
+
+Name: STLibian-SC-Regular
+Class: GB
+RMVname(30): Libian.ttc(0)
+
+Name: STXingkaiSC-Bold
+Class: GB
+RMVname(30): Xingkai.ttc(0)
+
+Name: STXingkaiTC-Bold
+Class: CNS
+RMVname(30): Xingkai.ttc(1)
+
+Name: STXingkaiSC-Light
+Class: GB
+RMVname(30): Xingkai.ttc(2)
+
+Name: STXingkaiTC-Light
+Class: CNS
+RMVname(30): Xingkai.ttc(3)
+
+Name: STXingkai-SC-Bold
+Class: GB
+RMVname(30): Xingkai.ttc(0)
+
+Name: STXingkai-SC-Light
+Class: GB
+RMVname(30): Xingkai.ttc(1)
+
+Name: STYuanti-SC-Bold
+Class: GB
+RMVname(30): Yuanti.ttc(0)
+
+Name: STYuanti-TC-Bold
+Class: CNS
+RMVname(30): Yuanti.ttc(1)
+
+Name: STYuanti-SC-Light
+Class: GB
+RMVname(30): Yuanti.ttc(2)
+
+Name: STYuanti-TC-Light
+Class: CNS
+RMVname(30): Yuanti.ttc(3)
+
+Name: STYuanti-SC-Regular
+Class: GB
+RMVname(30): Yuanti.ttc(4)
+
+Name: STYuanti-TC-Regular
+Class: CNS
+RMVname(30): Yuanti.ttc(5)
+
+# Arphic Technology
+
+Name: WeibeiSC-Bold
+PSName: Weibei-SC-Bold
+Class: GB
+OTFname: WeibeiSC-Bold.otf
+
+#Name: WeibeiSC-Bold
+#Class: GB
+#OTFname: WeibeiSC-Bold.otf
+
+Name: WeibeiTC-Bold
+PSName: Weibei-TC-Bold
+Class: CNS
+OTFname: WeibeiTC-Bold.otf
+
+#Name: WeibeiTC-Bold
+#Class: CNS
+#OTFname: WeibeiTC-Bold.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-microsoft.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-microsoft.dat
new file mode 100644
index 0000000000..19e70596ec
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-microsoft.dat
@@ -0,0 +1,256 @@
+# Microsoft Windows, Windows/Mac Office fonts
+
+### JAPANESE ###
+
+# Note about Windows:
+# MSMINCHO.TTC
+# MSGOTHIC.TTC
+# are bundled with Windows XP.
+# msmincho.ttc
+# msgothic.ttc
+# are bundled with Windows Vista or later versions.
+# meiryo.ttc
+# meiryob.ttc
+# are bundled with Windows Vista or later versions,
+# and "Japanese ClearType fonts for Windows XP".
+
+# Note about MSOffice:
+# MS Mincho.ttf
+# MS Gothic.ttf
+# Meiryo.ttf
+# Meiryo Bold.ttf
+# Meiryo Bold Italic.ttf
+# Meiryo Italic.ttf
+# are bundled with Office for Mac 2011.
+# msmincho.ttc
+# msgothic.ttc
+# Meiryo.ttf
+# MeiryoBold.ttf
+# MeiryoBoldItalic.ttf
+# MeiryoItalic.ttf
+# are bundled with Office for Mac 2016.
+
+# [TODO] Check about HG* fonts, and move Chinese/Korean fonts
+
+Name: MS-Mincho
+Class: Japan
+Provides(95): Ryumin-Light
+Provides(95): RyuminPro-Light
+Provides(95): HiraMinProN-W3
+Provides(95): HiraMinPro-W3
+Provides(95): FutoMinA101-Bold
+Provides(95): FutoMinA101Pro-Bold
+Provides(95): HiraMinProN-W6
+Provides(95): HiraMinPro-W6
+Provides(95): MidashiMin-MA31
+Provides(95): MidashiMinPro-MA31
+TTFname(50): MS Mincho.ttf
+TTFname(30): MS-Mincho.ttf
+TTCname(20): msmincho.ttc(0)
+
+Name: MS-Gothic
+Class: Japan
+Provides(95): GothicBBB-Medium
+Provides(95): GothicBBBPro-Medium
+Provides(95): HiraKakuProN-W3
+Provides(95): HiraKakuPro-W3
+Provides(95): FutoGoB101-Bold
+Provides(95): FutoGoB101Pro-Bold
+Provides(95): HiraKakuProN-W6
+Provides(95): HiraKakuPro-W6
+Provides(95): MidashiGo-MB31
+Provides(95): MidashiGoPro-MB31
+Provides(95): HiraKakuStdN-W8
+Provides(95): HiraKakuStd-W8
+Provides(95): Jun101-Light
+Provides(95): Jun101Pro-Light
+Provides(95): HiraMaruProN-W4
+Provides(95): HiraMaruPro-W4
+TTFname(50): MS Gothic.ttf
+TTFname(30): MS-Gothic.ttf
+TTCname(20): msgothic.ttc(0)
+
+Name: MS-PMincho
+Class: Japan
+TTFname(50): MS PMincho.ttf
+TTFname(30): MS-PMincho.ttf
+TTCname(20): msmincho.ttc(1)
+
+Name: MS-PGothic
+Class: Japan
+TTFname(50): MS PGothic.ttf
+TTFname(30): MS-PGothic.ttf
+TTCname(20): msgothic.ttc(1)
+
+Name: MS-UIGothic
+Class: Japan
+TTCname(20): msgothic.ttc(2)
+
+Name: Meiryo
+Class: Japan
+TTFname(50): Meiryo.ttf
+TTCname(20): meiryo.ttc(0)
+
+Name: Meiryo-Bold
+Class: Japan
+TTFname(50): Meiryo Bold.ttf
+TTFname(40): MeiryoBold.ttf
+TTFname(30): Meiryo-Bold.ttf
+TTCname(20): meiryob.ttc(0)
+
+Name: Meiryo-BoldItalic
+Class: Japan
+TTFname(50): Meiryo Bold Italic.ttf
+TTFname(40): MeiryoBoldItalic.ttf
+TTFname(30): Meiryo-BoldItalic.ttf
+TTCname(20): meiryob.ttc(1)
+
+Name: Meiryo-Italic
+Class: Japan
+TTFname(50): Meiryo Italic.ttf
+TTFname(40): MeiryoItalic.ttf
+TTFname(30): Meiryo-Italic.ttf
+TTCname(20): meiryo.ttc(1)
+
+Name: MeiryoUI
+Class: Japan
+TTCname(20): meiryo.ttc(2)
+
+Name: MeiryoUI-Bold
+Class: Japan
+TTCname(20): meiryob.ttc(2)
+
+Name: MeiryoUI-BoldItalic
+Class: Japan
+TTCname(20): meiryob.ttc(3)
+
+Name: MeiryoUI-Italic
+Class: Japan
+TTCname(20): meiryo.ttc(3)
+
+Name: HGGothicE
+Class: Japan
+TTCname(50): HGRGE.ttc(0)
+TTCname(20): HGRGE.TTC(0)
+
+Name: HGPGothicE
+Class: Japan
+TTCname(50): HGRGE.ttc(1)
+TTCname(20): HGRGE.TTC(1)
+
+Name: HGSGothicE
+Class: Japan
+TTCname(50): HGRGE.ttc(2)
+TTCname(20): HGRGE.TTC(2)
+
+Name: HGGothicM
+Class: Japan
+TTCname(20): HGRGM.TTC(0)
+
+Name: HGPGothicM
+Class: Japan
+TTCname(20): HGRGM.TTC(1)
+
+Name: HGSGothicM
+Class: Japan
+TTCname(20): HGRGM.TTC(2)
+
+Name: HGMinchoE
+Class: Japan
+TTCname(50): HGRME.ttc(0)
+TTCname(20): HGRME.TTC(0)
+
+Name: HGPMinchoE
+Class: Japan
+TTCname(50): HGRME.ttc(1)
+TTCname(20): HGRME.TTC(2)
+
+Name: HGSMinchoE
+Class: Japan
+TTCname(50): HGRME.ttc(2)
+TTCname(20): HGRME.TTC(2)
+
+Name: HGMinchoB
+Class: Japan
+TTCname(20): HGRMB.TTC(0)
+
+Name: HGPMinchoB
+Class: Japan
+TTCname(20): HGRMB.TTC(1)
+
+Name: HGSMinchoB
+Class: Japan
+TTCname(20): HGRMB.TTC(2)
+
+Name: HGSoeiKakugothicUB
+Class: Japan
+TTCname(50): HGRSGU.ttc(0)
+TTCname(20): HGRSGU.TTC(0)
+
+Name: HGPSoeiKakugothicUB
+Class: Japan
+TTCname(50): HGRSGU.ttc(1)
+TTCname(20): HGRSGU.TTC(1)
+
+Name: HGSSoeiKakugothicUB
+Class: Japan
+TTCname(50): HGRSGU.ttc(2)
+TTCname(20): HGRSGU.TTC(2)
+
+Name: HGSoeiKakupoptai
+Class: Japan
+TTCname(20): HGRPP1.TTC(0)
+
+Name: HGPSoeiKakupoptai
+Class: Japan
+TTCname(20): HGRPP1.TTC(1)
+
+Name: HGSSoeiKakupoptai
+Class: Japan
+TTCname(20): HGRPP1.TTC(2)
+
+Name: HGSoeiPresenceEB
+Class: Japan
+TTCname(20): HGRPRE.TTC(0)
+
+Name: HGPSoeiPresenceEB
+Class: Japan
+TTCname(20): HGRPRE.TTC(1)
+
+Name: HGSSoeiPresenceEB
+Class: Japan
+TTCname(20): HGRPRE.TTC(2)
+
+Name: HGKyokashotai
+Class: Japan
+TTCname(20): HGRKK.TTC(0)
+
+Name: HGPKyokashotai
+Class: Japan
+TTCname(20): HGRKK.TTC(1)
+
+Name: HGSKyokashotai
+Class: Japan
+TTCname(20): HGRKK.TTC(2)
+
+Name: HGGyoshotai
+Class: Japan
+TTCname(20): HGRGY.TTC(0)
+
+Name: HGPGyoshotai
+Class: Japan
+TTCname(20): HGRGY.TTC(1)
+
+Name: HGSGyoshotai
+Class: Japan
+TTCname(20): HGRGY.TTC(2)
+
+Name: HGMaruGothicMPRO
+Class: Japan
+TTFname(40): HGRSMP.ttf
+TTFname(20): HGRSMP.TTF
+
+Name: HGSeikaishotaiPRO
+Class: Japan
+TTFname(20): HGRSKP.TTF
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-mogamobo.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-mogamobo.dat
new file mode 100644
index 0000000000..bddebd45e1
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-mogamobo.dat
@@ -0,0 +1,200 @@
+# Moga-Mobo from Y.Oz Vox (free)
+
+### JAPANESE ###
+
+Name: MogaMincho-Regular
+Class: Japan
+Provides(110): Ryumin-Light
+Provides(110): RyuminPro-Light
+Provides(110): HiraMinProN-W3
+Provides(110): HiraMinPro-W3
+TTCname: mogam.ttc(0)
+
+Name: MogaExMincho-Regular
+Class: Japan
+Provides(100): Ryumin-Light
+Provides(100): RyuminPro-Light
+Provides(100): HiraMinProN-W3
+Provides(100): HiraMinPro-W3
+TTCname: mogam.ttc(1)
+
+Name: MogaExMincho-Italic
+Class: Japan
+TTCname: mogam.ttc(2)
+
+Name: Moga90Mincho-Regular
+Class: Japan
+TTCname: mogam.ttc(3)
+
+Name: MogaEx90Mincho-Regular
+Class: Japan
+TTCname: mogam.ttc(4)
+
+Name: MogaEx90Mincho-Italic
+Class: Japan
+TTCname: mogam.ttc(5)
+
+Name: MogaMincho-Bold
+Class: Japan
+Provides(110): FutoMinA101-Bold
+Provides(110): FutoMinA101Pro-Bold
+Provides(110): HiraMinProN-W6
+Provides(110): HiraMinPro-W6
+Provides(110): MidashiMin-MA31
+Provides(110): MidashiMinPro-MA31
+TTCname: mogamb.ttc(0)
+
+Name: MogaExMincho-Bold
+Class: Japan
+Provides(100): FutoMinA101-Bold
+Provides(100): FutoMinA101Pro-Bold
+Provides(100): HiraMinProN-W6
+Provides(100): HiraMinPro-W6
+Provides(100): MidashiMin-MA31
+Provides(100): MidashiMinPro-MA31
+TTCname: mogamb.ttc(1)
+
+Name: Moga90Mincho-Bold
+Class: Japan
+TTCname: mogamb.ttc(2)
+
+Name: MogaEx90Mincho-Bold
+Class: Japan
+TTCname: mogamb.ttc(3)
+
+Name: MogaHMincho-Regular
+Class: Japan
+TTCname: mogahm.ttc(0)
+
+Name: MogaExHMincho-Regular
+Class: Japan
+TTCname: mogahm.ttc(1)
+
+Name: MogaExHMincho-Italic
+Class: Japan
+TTCname: mogahm.ttc(2)
+
+Name: Moga90HMincho-Regular
+Class: Japan
+TTCname: mogahm.ttc(3)
+
+Name: MogaEx90HMincho-Regular
+Class: Japan
+TTCname: mogahm.ttc(4)
+
+Name: MogaEx90HMincho-Italic
+Class: Japan
+TTCname: mogahm.ttc(5)
+
+Name: MogaHMincho-Bold
+Class: Japan
+TTCname: mogahmb.ttc(0)
+
+Name: MogaExHMincho-Bold
+Class: Japan
+TTCname: mogahmb.ttc(1)
+
+Name: Moga90HMincho-Bold
+Class: Japan
+TTCname: mogahmb.ttc(2)
+
+Name: MogaEx90HMincho-Bold
+Class: Japan
+TTCname: mogahmb.ttc(3)
+
+Name: MogaGothic-Regular
+Class: Japan
+Provides(110): GothicBBB-Medium
+Provides(110): GothicBBBPro-Medium
+Provides(110): HiraKakuProN-W3
+Provides(110): HiraKakuPro-W3
+TTCname: mogag.ttc(0)
+
+Name: MogaExGothic-Regular
+Class: Japan
+Provides(100): GothicBBB-Medium
+Provides(100): GothicBBBPro-Medium
+Provides(100): HiraKakuProN-W3
+Provides(100): HiraKakuPro-W3
+TTCname: mogag.ttc(1)
+
+Name: Moga90Gothic-Regular
+Class: Japan
+TTCname: mogag.ttc(2)
+
+Name: MogaEx90Gothic-Regular
+Class: Japan
+TTCname: mogag.ttc(3)
+
+Name: MogaGothic-Bold
+Class: Japan
+Provides(110): FutoGoB101-Bold
+Provides(110): FutoGoB101Pro-Bold
+Provides(110): HiraKakuProN-W6
+Provides(110): HiraKakuPro-W6
+Provides(110): MidashiGo-MB31
+Provides(110): MidashiGoPro-MB31
+Provides(110): HiraKakuStdN-W8
+Provides(110): HiraKakuStd-W8
+TTCname: mogagb.ttc(0)
+
+Name: MogaExGothic-Bold
+Class: Japan
+Provides(100): FutoGoB101-Bold
+Provides(100): FutoGoB101Pro-Bold
+Provides(100): HiraKakuProN-W6
+Provides(100): HiraKakuPro-W6
+Provides(100): MidashiGo-MB31
+Provides(100): MidashiGoPro-MB31
+Provides(100): HiraKakuStdN-W8
+Provides(100): HiraKakuStd-W8
+TTCname: mogagb.ttc(1)
+
+Name: Moga90Gothic-Bold
+Class: Japan
+TTCname: mogagb.ttc(2)
+
+Name: MogaEx90Gothic-Bold
+Class: Japan
+TTCname: mogagb.ttc(3)
+
+Name: MoboGothic-Regular
+Class: Japan
+Provides(110): Jun101-Light
+Provides(110): Jun101Pro-Light
+Provides(110): HiraMaruProN-W4
+Provides(110): HiraMaruPro-W4
+TTCname: mobog.ttc(0)
+
+Name: MoboExGothic-Regular
+Class: Japan
+Provides(100): Jun101-Light
+Provides(100): Jun101Pro-Light
+Provides(100): HiraMaruProN-W4
+Provides(100): HiraMaruPro-W4
+TTCname: mobog.ttc(1)
+
+Name: Mobo90Gothic-Regular
+Class: Japan
+TTCname: mobog.ttc(2)
+
+Name: MoboEx90Gothic-Regular
+Class: Japan
+TTCname: mobog.ttc(3)
+
+Name: MoboGothic-Bold
+Class: Japan
+TTCname: mobogb.ttc(0)
+
+Name: MoboExGothic-Bold
+Class: Japan
+TTCname: mobogb.ttc(1)
+
+Name: Mobo90Gothic-Bold
+Class: Japan
+TTCname: mobogb.ttc(2)
+
+Name: MoboEx90Gothic-Bold
+Class: Japan
+TTCname: mobogb.ttc(3)
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-monotype.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-monotype.dat
new file mode 100644
index 0000000000..caeeb14e7a
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-monotype.dat
@@ -0,0 +1,30 @@
+# Monotype Imaging, Monotype Hong Kong
+
+### SIMPLIFIED/TRADITIONAL CHINESE ###
+
+# Note about Mac (Mac OS X 10.6 -- macOS 10.13)
+# YuppySC-Regular.otf
+# YuppyTC-Regular.otf
+# are bundled with OS X 10.9 Mavericks or later versions.
+# LingWaiSC-Medium.otf
+# LingWaiTC-Medium.otf
+# are bundled with macOS 10.12 Sierra or later versions.
+
+Name: YuppySC-Regular
+Class: GB
+OTFname: YuppySC-Regular.otf
+
+Name: YuppyTC-Regular
+Class: CNS
+OTFname: YuppyTC-Regular.otf
+
+Name: LingWaiSC-Medium
+PSName: MLingWaiMedium-SC
+Class: GB
+OTFname: LingWaiSC-Medium.otf
+
+Name: LingWaiTC-Medium
+PSName: MLingWaiMedium-TC
+Class: CNS
+OTFname: LingWaiTC-Medium.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-morisawa.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-morisawa.dat
new file mode 100644
index 0000000000..740c7b683c
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-morisawa.dat
@@ -0,0 +1,705 @@
+# Morisawa standard sets
+
+### JAPANESE ###
+
+# Some of the {Pr6N,Pro} variants are used in morisawa (ptex-fontmaps)
+# or in moriprop (S. Saito).
+
+# Note:
+# A-OTF-Jun101Pr6N-Light appeared in otf-(up-)morisawa-pr6n.map
+# which is older than jfontmaps 20140301.0
+# however, such a Pr6N variant never existed, so removed
+# https://www.tug.org/pipermail/tex-live/2014-February/034855.html
+
+Name: A-OTF-RyuminPr6N-Light
+PSName: RyuminPr6N-Light
+Class: Japan
+Provides(10): Ryumin-Light
+Provides(10): RyuminPro-Light
+Provides(10): HiraMinProN-W3
+Provides(10): HiraMinPro-W3
+OTFname: A-OTF-RyuminPr6N-Light.otf
+
+Name: A-OTF-RyuminPr6N-Regular
+PSName: RyuminPr6N-Regular
+Class: Japan
+Provides(10): Ryumin-Regular
+OTFname: A-OTF-RyuminPr6N-Regular.otf
+
+Name: A-OTF-RyuminPr6N-Medium
+PSName: RyuminPr6N-Medium
+Class: Japan
+Provides(10): Ryumin-Medium
+OTFname: A-OTF-RyuminPr6N-Medium.otf
+
+Name: A-OTF-RyuminPr6N-Bold
+PSName: RyuminPr6N-Bold
+Class: Japan
+Provides(10): Ryumin-Bold
+OTFname: A-OTF-RyuminPr6N-Bold.otf
+
+Name: A-OTF-RyuminPr6N-ExBold
+PSName: RyuminPr6N-ExBold
+Class: Japan
+Provides(10): Ryumin-ExBold
+OTFname: A-OTF-RyuminPr6N-ExBold.otf
+
+Name: A-OTF-RyuminPr6N-Heavy
+PSName: RyuminPr6N-Heavy
+Class: Japan
+Provides(10): Ryumin-Heavy
+OTFname: A-OTF-RyuminPr6N-Heavy.otf
+
+Name: A-OTF-RyuminPr6N-ExHeavy
+PSName: RyuminPr6N-ExHeavy
+Class: Japan
+Provides(10): Ryumin-ExHeavy
+OTFname: A-OTF-RyuminPr6N-ExHeavy.otf
+
+Name: A-OTF-RyuminPr6N-Ultra
+PSName: RyuminPr6N-Ultra
+Class: Japan
+Provides(10): Ryumin-Ultra
+OTFname: A-OTF-RyuminPr6N-Ultra.otf
+
+Name: A-OTF-RyuminPr6-Light
+PSName: RyuminPr6-Light
+Class: Japan
+Provides(15): Ryumin-Light
+Provides(15): HiraMinPro-W3
+OTFname: A-OTF-RyuminPr6-Light.otf
+
+Name: A-OTF-RyuminPr6-Regular
+PSName: RyuminPr6-Regular
+Class: Japan
+Provides(15): Ryumin-Regular
+OTFname: A-OTF-RyuminPr6-Regular.otf
+
+Name: A-OTF-RyuminPr6-Medium
+PSName: RyuminPr6-Medium
+Class: Japan
+Provides(15): Ryumin-Medium
+OTFname: A-OTF-RyuminPr6-Medium.otf
+
+Name: A-OTF-RyuminPr6-Bold
+PSName: RyuminPr6-Bold
+Class: Japan
+Provides(15): Ryumin-Bold
+OTFname: A-OTF-RyuminPr6-Bold.otf
+
+Name: A-OTF-RyuminPr6-ExBold
+PSName: RyuminPr6-ExBold
+Class: Japan
+Provides(15): Ryumin-ExBold
+OTFname: A-OTF-RyuminPr6-ExBold.otf
+
+Name: A-OTF-RyuminPr6-Heavy
+PSName: RyuminPr6-Heavy
+Class: Japan
+Provides(15): Ryumin-Heavy
+OTFname: A-OTF-RyuminPr6-Heavy.otf
+
+Name: A-OTF-RyuminPr6-ExHeavy
+PSName: RyuminPr6-ExHeavy
+Class: Japan
+Provides(15): Ryumin-ExHeavy
+OTFname: A-OTF-RyuminPr6-ExHeavy.otf
+
+Name: A-OTF-RyuminPr6-Ultra
+PSName: RyuminPr6-Ultra
+Class: Japan
+Provides(15): Ryumin-Ultra
+OTFname: A-OTF-RyuminPr6-Ultra.otf
+
+Name: A-OTF-RyuminPr5-Light
+PSName: RyuminPr5-Light
+Class: Japan
+Provides(18): Ryumin-Light
+Provides(18): HiraMinPro-W3
+OTFname: A-OTF-RyuminPr5-Light.otf
+
+Name: A-OTF-RyuminPr5-Regular
+PSName: RyuminPr5-Regular
+Class: Japan
+Provides(18): Ryumin-Regular
+OTFname: A-OTF-RyuminPr5-Regular.otf
+
+Name: A-OTF-RyuminPr5-Medium
+PSName: RyuminPr5-Medium
+Class: Japan
+Provides(18): Ryumin-Medium
+OTFname: A-OTF-RyuminPr5-Medium.otf
+
+Name: A-OTF-RyuminPr5-Bold
+PSName: RyuminPr5-Bold
+Class: Japan
+Provides(18): Ryumin-Bold
+OTFname: A-OTF-RyuminPr5-Bold.otf
+
+Name: A-OTF-RyuminPr5-ExBold
+PSName: RyuminPr5-ExBold
+Class: Japan
+Provides(18): Ryumin-ExBold
+OTFname: A-OTF-RyuminPr5-ExBold.otf
+
+Name: A-OTF-RyuminPr5-Heavy
+PSName: RyuminPr5-Heavy
+Class: Japan
+Provides(18): Ryumin-Heavy
+OTFname: A-OTF-RyuminPr5-Heavy.otf
+
+Name: A-OTF-RyuminPr5-ExHeavy
+PSName: RyuminPr5-ExHeavy
+Class: Japan
+Provides(18): Ryumin-ExHeavy
+OTFname: A-OTF-RyuminPr5-ExHeavy.otf
+
+Name: A-OTF-RyuminPr5-Ultra
+PSName: RyuminPr5-Ultra
+Class: Japan
+Provides(18): Ryumin-Ultra
+OTFname: A-OTF-RyuminPr5-Ultra.otf
+
+Name: A-OTF-RyuminPro-Light
+PSName: RyuminPro-Light
+Class: Japan
+Provides(20): Ryumin-Light
+Provides(20): HiraMinPro-W3
+OTFname: A-OTF-RyuminPro-Light.otf
+
+Name: A-OTF-RyuminPro-Regular
+PSName: RyuminPro-Regular
+Class: Japan
+Provides(20): Ryumin-Regular
+OTFname: A-OTF-RyuminPro-Regular.otf
+
+Name: A-OTF-RyuminPro-Medium
+PSName: RyuminPro-Medium
+Class: Japan
+Provides(20): Ryumin-Medium
+OTFname: A-OTF-RyuminPro-Medium.otf
+
+Name: A-OTF-RyuminPro-Bold
+PSName: RyuminPro-Bold
+Class: Japan
+Provides(20): Ryumin-Bold
+OTFname: A-OTF-RyuminPro-Bold.otf
+
+Name: A-OTF-RyuminPro-ExBold
+PSName: RyuminPro-ExBold
+Class: Japan
+Provides(20): Ryumin-ExBold
+OTFname: A-OTF-RyuminPro-ExBold.otf
+
+Name: A-OTF-RyuminPro-Heavy
+PSName: RyuminPro-Heavy
+Class: Japan
+Provides(20): Ryumin-Heavy
+OTFname: A-OTF-RyuminPro-Heavy.otf
+
+Name: A-OTF-RyuminPro-ExHeavy
+PSName: RyuminPro-ExHeavy
+Class: Japan
+Provides(20): Ryumin-ExHeavy
+OTFname: A-OTF-RyuminPro-ExHeavy.otf
+
+Name: A-OTF-RyuminPro-Ultra
+PSName: RyuminPro-Ultra
+Class: Japan
+Provides(20): Ryumin-Ultra
+OTFname: A-OTF-RyuminPro-Ultra.otf
+
+Name: A-OTF-FutoMinA101Pr6N-Bold
+PSName: FutoMinA101Pr6N-Bold
+Class: Japan
+Provides(10): FutoMinA101-Bold
+Provides(10): FutoMinA101Pro-Bold
+Provides(10): HiraMinProN-W6
+Provides(10): HiraMinPro-W6
+OTFname: A-OTF-FutoMinA101Pr6N-Bold.otf
+
+Name: A-OTF-FutoMinA101Pr6-Bold
+PSName: FutoMinA101Pr6-Bold
+Class: Japan
+Provides(15): FutoMinA101-Bold
+Provides(15): HiraMinPro-W6
+OTFname: A-OTF-FutoMinA101Pr6-Bold.otf
+
+Name: A-OTF-FutoMinA101Pr5-Bold
+PSName: FutoMinA101Pr5-Bold
+Class: Japan
+Provides(18): FutoMinA101-Bold
+Provides(18): HiraMinPro-W6
+OTFname: A-OTF-FutoMinA101Pr5-Bold.otf
+
+Name: A-OTF-FutoMinA101Pro-Bold
+PSName: FutoMinA101Pro-Bold
+Class: Japan
+Provides(20): FutoMinA101-Bold
+Provides(20): HiraMinPro-W6
+OTFname: A-OTF-FutoMinA101Pro-Bold.otf
+
+Name: A-OTF-GothicBBBPr6N-Medium
+PSName: GothicBBBPr6N-Medium
+Class: Japan
+Provides(10): GothicBBB-Medium
+Provides(10): GothicBBBPro-Medium
+Provides(10): HiraKakuProN-W3
+Provides(10): HiraKakuPro-W3
+OTFname: A-OTF-GothicBBBPr6N-Medium.otf
+
+Name: A-OTF-GothicBBBPr6-Medium
+PSName: GothicBBBPr6-Medium
+Class: Japan
+Provides(15): GothicBBB-Medium
+Provides(15): HiraKakuPro-W3
+OTFname: A-OTF-GothicBBBPr6-Medium.otf
+
+Name: A-OTF-GothicBBBPr5-Medium
+PSName: GothicBBBPr5-Medium
+Class: Japan
+Provides(18): GothicBBB-Medium
+Provides(18): HiraKakuPro-W3
+OTFname: A-OTF-GothicBBBPr5-Medium.otf
+
+Name: A-OTF-GothicBBBPro-Medium
+PSName: GothicBBBPro-Medium
+Class: Japan
+Provides(20): GothicBBB-Medium
+Provides(20): HiraKakuPro-W3
+OTFname: A-OTF-GothicBBBPro-Medium.otf
+
+Name: A-OTF-FutoGoB101Pr6N-Bold
+PSName: FutoGoB101Pr6N-Bold
+Class: Japan
+Provides(10): FutoGoB101-Bold
+Provides(10): FutoGoB101Pro-Bold
+Provides(10): HiraKakuProN-W6
+Provides(10): HiraKakuPro-W6
+OTFname: A-OTF-FutoGoB101Pr6N-Bold.otf
+
+Name: A-OTF-FutoGoB101Pr6-Bold
+PSName: FutoGoB101Pr6-Bold
+Class: Japan
+Provides(15): FutoGoB101-Bold
+Provides(15): HiraKakuPro-W6
+OTFname: A-OTF-FutoGoB101Pr6-Bold.otf
+
+Name: A-OTF-FutoGoB101Pr5-Bold
+PSName: FutoGoB101Pr5-Bold
+Class: Japan
+Provides(18): FutoGoB101-Bold
+Provides(18): HiraKakuPro-W6
+OTFname: A-OTF-FutoGoB101Pr5-Bold.otf
+
+Name: A-OTF-FutoGoB101Pro-Bold
+PSName: FutoGoB101Pro-Bold
+Class: Japan
+Provides(20): FutoGoB101-Bold
+Provides(20): HiraKakuPro-W6
+OTFname: A-OTF-FutoGoB101Pro-Bold.otf
+
+Name: A-OTF-MidashiGoPr6N-MB31
+PSName: MidashiGoPr6N-MB31
+Class: Japan
+Provides(10): MidashiGo-MB31
+Provides(10): MidashiGoPro-MB31
+Provides(10): HiraKakuStdN-W8
+Provides(10): HiraKakuStd-W8
+OTFname: A-OTF-MidashiGoPr6N-MB31.otf
+
+Name: A-OTF-MidashiGoPr6-MB31
+PSName: MidashiGoPr6-MB31
+Class: Japan
+Provides(15): MidashiGo-MB31
+Provides(15): HiraKakuStd-W8
+OTFname: A-OTF-MidashiGoPr6-MB31.otf
+
+Name: A-OTF-MidashiGoPr5-MB31
+PSName: MidashiGoPr5-MB31
+Class: Japan
+Provides(18): MidashiGo-MB31
+Provides(18): HiraKakuStd-W8
+OTFname: A-OTF-MidashiGoPr5-MB31.otf
+
+Name: A-OTF-MidashiGoPro-MB31
+PSName: MidashiGoPro-MB31
+Class: Japan
+Provides(20): MidashiGo-MB31
+Provides(20): HiraKakuStd-W8
+OTFname: A-OTF-MidashiGoPro-MB31.otf
+
+Name: A-OTF-Jun101Pro-Light
+PSName: Jun101Pro-Light
+Class: Japan
+Provides(20): Jun101-Light
+Provides(20): HiraMaruPro-W4
+OTFname: A-OTF-Jun101Pro-Light.otf
+
+Name: A-OTF-Jun201Pro-Regular
+PSName: Jun201Pro-Regular
+Class: Japan
+Provides(20): Jun201-Regular
+OTFname: A-OTF-Jun201Pro-Regular.otf
+
+Name: A-OTF-Jun34Pro-Medium
+PSName: Jun34Pro-Medium
+Class: Japan
+Provides(20): Jun34-Medium
+OTFname: A-OTF-Jun34Pro-Medium.otf
+
+Name: A-OTF-Jun501Pro-Bold
+PSName: Jun501Pro-Bold
+Class: Japan
+Provides(20): Jun501-Bold
+OTFname: A-OTF-Jun501Pro-Bold.otf
+
+Name: A-OTF-ShinGoPr6N-ExLight
+PSName: ShinGoPr6N-ExLight
+Class: Japan
+Provides(10): ShinGo-ExLight
+OTFname: A-OTF-ShinGoPr6N-ExLight.otf
+
+Name: A-OTF-ShinGoPr6N-Light
+PSName: ShinGoPr6N-Light
+Class: Japan
+Provides(10): ShinGo-Light
+OTFname: A-OTF-ShinGoPr6N-Light.otf
+
+Name: A-OTF-ShinGoPr6N-Regular
+PSName: ShinGoPr6N-Regular
+Class: Japan
+Provides(10): ShinGo-Regular
+OTFname: A-OTF-ShinGoPr6N-Regular.otf
+
+Name: A-OTF-ShinGoPr6N-Medium
+PSName: ShinGoPr6N-Medium
+Class: Japan
+Provides(10): ShinGo-Medium
+OTFname: A-OTF-ShinGoPr6N-Medium.otf
+
+Name: A-OTF-ShinGoPr6N-DeBold
+PSName: ShinGoPr6N-DeBold
+Class: Japan
+Provides(10): ShinGo-DeBold
+OTFname: A-OTF-ShinGoPr6N-DeBold.otf
+
+Name: A-OTF-ShinGoPr6N-Bold
+PSName: ShinGoPr6N-Bold
+Class: Japan
+Provides(10): ShinGo-Bold
+OTFname: A-OTF-ShinGoPr6N-Bold.otf
+
+Name: A-OTF-ShinGoPr6N-Heavy
+PSName: ShinGoPr6N-Heavy
+Class: Japan
+Provides(10): ShinGo-Heavy
+OTFname: A-OTF-ShinGoPr6N-Heavy.otf
+
+Name: A-OTF-ShinGoPr6N-Ultra
+PSName: ShinGoPr6N-Ultra
+Class: Japan
+Provides(10): ShinGo-Ultra
+OTFname: A-OTF-ShinGoPr6N-Ultra.otf
+
+Name: A-OTF-ShinGoPr6-ExLight
+PSName: ShinGoPr6-ExLight
+Class: Japan
+Provides(15): ShinGo-ExLight
+OTFname: A-OTF-ShinGoPr6-ExLight.otf
+
+Name: A-OTF-ShinGoPr6-Light
+PSName: ShinGoPr6-Light
+Class: Japan
+Provides(15): ShinGo-Light
+OTFname: A-OTF-ShinGoPr6-Light.otf
+
+Name: A-OTF-ShinGoPr6-Regular
+PSName: ShinGoPr6-Regular
+Class: Japan
+Provides(15): ShinGo-Regular
+OTFname: A-OTF-ShinGoPr6-Regular.otf
+
+Name: A-OTF-ShinGoPr6-Medium
+PSName: ShinGoPr6-Medium
+Class: Japan
+Provides(15): ShinGo-Medium
+OTFname: A-OTF-ShinGoPr6-Medium.otf
+
+Name: A-OTF-ShinGoPr6-DeBold
+PSName: ShinGoPr6-DeBold
+Class: Japan
+Provides(15): ShinGo-DeBold
+OTFname: A-OTF-ShinGoPr6-DeBold.otf
+
+Name: A-OTF-ShinGoPr6-Bold
+PSName: ShinGoPr6-Bold
+Class: Japan
+Provides(15): ShinGo-Bold
+OTFname: A-OTF-ShinGoPr6-Bold.otf
+
+Name: A-OTF-ShinGoPr6-Heavy
+PSName: ShinGoPr6-Heavy
+Class: Japan
+Provides(15): ShinGo-Heavy
+OTFname: A-OTF-ShinGoPr6-Heavy.otf
+
+Name: A-OTF-ShinGoPr6-Ultra
+PSName: ShinGoPr6-Ultra
+Class: Japan
+Provides(15): ShinGo-Ultra
+OTFname: A-OTF-ShinGoPr6-Ultra.otf
+
+Name: A-OTF-ShinGoPr5-ExLight
+PSName: ShinGoPr5-ExLight
+Class: Japan
+Provides(18): ShinGo-ExLight
+OTFname: A-OTF-ShinGoPr5-ExLight.otf
+
+Name: A-OTF-ShinGoPr5-Light
+PSName: ShinGoPr5-Light
+Class: Japan
+Provides(18): ShinGo-Light
+OTFname: A-OTF-ShinGoPr5-Light.otf
+
+Name: A-OTF-ShinGoPr5-Regular
+PSName: ShinGoPr5-Regular
+Class: Japan
+Provides(18): ShinGo-Regular
+OTFname: A-OTF-ShinGoPr5-Regular.otf
+
+Name: A-OTF-ShinGoPr5-Medium
+PSName: ShinGoPr5-Medium
+Class: Japan
+Provides(18): ShinGo-Medium
+OTFname: A-OTF-ShinGoPr5-Medium.otf
+
+Name: A-OTF-ShinGoPr5-DeBold
+PSName: ShinGoPr5-DeBold
+Class: Japan
+Provides(18): ShinGo-DeBold
+OTFname: A-OTF-ShinGoPr5-DeBold.otf
+
+Name: A-OTF-ShinGoPr5-Bold
+PSName: ShinGoPr5-Bold
+Class: Japan
+Provides(18): ShinGo-Bold
+OTFname: A-OTF-ShinGoPr5-Bold.otf
+
+Name: A-OTF-ShinGoPr5-Heavy
+PSName: ShinGoPr5-Heavy
+Class: Japan
+Provides(18): ShinGo-Heavy
+OTFname: A-OTF-ShinGoPr5-Heavy.otf
+
+Name: A-OTF-ShinGoPr5-Ultra
+PSName: ShinGoPr5-Ultra
+Class: Japan
+Provides(18): ShinGo-Ultra
+OTFname: A-OTF-ShinGoPr5-Ultra.otf
+
+Name: A-OTF-ShinGoPro-ExLight
+PSName: ShinGoPro-ExLight
+Class: Japan
+Provides(20): ShinGo-ExLight
+OTFname: A-OTF-ShinGoPro-ExLight.otf
+
+Name: A-OTF-ShinGoPro-Light
+PSName: ShinGoPro-Light
+Class: Japan
+Provides(20): ShinGo-Light
+OTFname: A-OTF-ShinGoPro-Light.otf
+
+Name: A-OTF-ShinGoPro-Regular
+PSName: ShinGoPro-Regular
+Class: Japan
+Provides(20): ShinGo-Regular
+OTFname: A-OTF-ShinGoPro-Regular.otf
+
+Name: A-OTF-ShinGoPro-Medium
+PSName: ShinGoPro-Medium
+Class: Japan
+Provides(20): ShinGo-Medium
+OTFname: A-OTF-ShinGoPro-Medium.otf
+
+Name: A-OTF-ShinGoPro-DeBold
+PSName: ShinGoPro-DeBold
+Class: Japan
+Provides(20): ShinGo-DeBold
+OTFname: A-OTF-ShinGoPro-DeBold.otf
+
+Name: A-OTF-ShinGoPro-Bold
+PSName: ShinGoPro-Bold
+Class: Japan
+Provides(20): ShinGo-Bold
+OTFname: A-OTF-ShinGoPro-Bold.otf
+
+Name: A-OTF-ShinGoPro-Heavy
+PSName: ShinGoPro-Heavy
+Class: Japan
+Provides(20): ShinGo-Heavy
+OTFname: A-OTF-ShinGoPro-Heavy.otf
+
+Name: A-OTF-ShinGoPro-Ultra
+PSName: ShinGoPro-Ultra
+Class: Japan
+Provides(20): ShinGo-Ultra
+OTFname: A-OTF-ShinGoPro-Ultra.otf
+
+Name: A-OTF-ShinMGoPr6N-Light
+PSName: ShinMGoPr6N-Light
+Class: Japan
+Provides(10): Jun101-Light
+Provides(10): Jun101Pro-Light
+Provides(10): HiraMaruProN-W4
+Provides(10): HiraMaruPro-W4
+Provides(10): ShinMGo-Light
+OTFname: A-OTF-ShinMGoPr6N-Light.otf
+
+Name: A-OTF-ShinMGoPr6N-Regular
+PSName: ShinMGoPr6N-Regular
+Class: Japan
+Provides(10): ShinMGo-Regular
+OTFname: A-OTF-ShinMGoPr6N-Regular.otf
+
+Name: A-OTF-ShinMGoPr6N-Medium
+PSName: ShinMGoPr6N-Medium
+Class: Japan
+Provides(10): ShinMGo-Medium
+OTFname: A-OTF-ShinMGoPr6N-Medium.otf
+
+Name: A-OTF-ShinMGoPr6N-DeBold
+PSName: ShinMGoPr6N-DeBold
+Class: Japan
+Provides(10): ShinMGo-DeBold
+OTFname: A-OTF-ShinMGoPr6N-DeBold.otf
+
+Name: A-OTF-ShinMGoPr6N-Bold
+PSName: ShinMGoPr6N-Bold
+Class: Japan
+Provides(10): ShinMGo-Bold
+OTFname: A-OTF-ShinMGoPr6N-Bold.otf
+
+Name: A-OTF-ShinMGoPr6N-Heavy
+PSName: ShinMGoPr6N-Heavy
+Class: Japan
+Provides(10): ShinMGo-Heavy
+OTFname: A-OTF-ShinMGoPr6N-Heavy.otf
+
+Name: A-OTF-ShinMGoPr6N-Ultra
+PSName: ShinMGoPr6N-Ultra
+Class: Japan
+Provides(10): ShinMGo-Ultra
+OTFname: A-OTF-ShinMGoPr6N-Ultra.otf
+
+Name: A-OTF-ShinMGoPr6-Light
+PSName: ShinMGoPr6-Light
+Class: Japan
+Provides(15): Jun101-Light
+Provides(15): HiraMaruPro-W4
+Provides(15): ShinMGo-Light
+OTFname: A-OTF-ShinMGoPr6-Light.otf
+
+Name: A-OTF-ShinMGoPr6-Regular
+PSName: ShinMGoPr6-Regular
+Class: Japan
+Provides(15): ShinMGo-Regular
+OTFname: A-OTF-ShinMGoPr6-Regular.otf
+
+Name: A-OTF-ShinMGoPr6-Medium
+PSName: ShinMGoPr6-Medium
+Class: Japan
+Provides(15): ShinMGo-Medium
+OTFname: A-OTF-ShinMGoPr6-Medium.otf
+
+Name: A-OTF-ShinMGoPr6-DeBold
+PSName: ShinMGoPr6-DeBold
+Class: Japan
+Provides(15): ShinMGo-DeBold
+OTFname: A-OTF-ShinMGoPr6-DeBold.otf
+
+Name: A-OTF-ShinMGoPr6-Bold
+PSName: ShinMGoPr6-Bold
+Class: Japan
+Provides(15): ShinMGo-Bold
+OTFname: A-OTF-ShinMGoPr6-Bold.otf
+
+Name: A-OTF-ShinMGoPr6-Heavy
+PSName: ShinMGoPr6-Heavy
+Class: Japan
+Provides(15): ShinMGo-Heavy
+OTFname: A-OTF-ShinMGoPr6-Heavy.otf
+
+Name: A-OTF-ShinMGoPr6-Ultra
+PSName: ShinMGoPr6-Ultra
+Class: Japan
+Provides(15): ShinMGo-Ultra
+OTFname: A-OTF-ShinMGoPr6-Ultra.otf
+
+Name: A-OTF-ShinMGoPro-Light
+PSName: ShinMGoPro-Light
+Class: Japan
+Provides(20): ShinMGo-Light
+OTFname: A-OTF-ShinMGoPro-Light.otf
+
+Name: A-OTF-ShinMGoPro-Regular
+PSName: ShinMGoPro-Regular
+Class: Japan
+Provides(20): ShinMGo-Regular
+OTFname: A-OTF-ShinMGoPro-Regular.otf
+
+Name: A-OTF-ShinMGoPro-Medium
+PSName: ShinMGoPro-Medium
+Class: Japan
+Provides(20): ShinMGo-Medium
+OTFname: A-OTF-ShinMGoPro-Medium.otf
+
+Name: A-OTF-ShinMGoPro-DeBold
+PSName: ShinMGoPro-DeBold
+Class: Japan
+Provides(20): ShinMGo-DeBold
+OTFname: A-OTF-ShinMGoPro-DeBold.otf
+
+Name: A-OTF-ShinMGoPro-Bold
+PSName: ShinMGoPro-Bold
+Class: Japan
+Provides(20): ShinMGo-Bold
+OTFname: A-OTF-ShinMGoPro-Bold.otf
+
+Name: A-OTF-ShinMGoPro-Heavy
+PSName: ShinMGoPro-Heavy
+Class: Japan
+Provides(20): ShinMGo-Heavy
+OTFname: A-OTF-ShinMGoPro-Heavy.otf
+
+Name: A-OTF-ShinMGoPro-Ultra
+PSName: ShinMGoPro-Ultra
+Class: Japan
+Provides(20): ShinMGo-Ultra
+OTFname: A-OTF-ShinMGoPro-Ultra.otf
+
+Name: A-OTF-MidashiMinPr6N-MA31
+PSName: MidashiMinPr6N-MA31
+Class: Japan
+Provides(10): MidashiMin-MA31
+Provides(10): MidashiMinPro-MA31
+OTFname: A-OTF-MidashiMinPr6N-MA31.otf
+
+Name: A-OTF-MidashiMinPr6-MA31
+PSName: MidashiMinPr6-MA31
+Class: Japan
+Provides(15): MidashiMin-MA31
+OTFname: A-OTF-MidashiMinPr6-MA31.otf
+
+Name: A-OTF-MidashiMinPr5-MA31
+PSName: MidashiMinPr5-MA31
+Class: Japan
+Provides(18): MidashiMin-MA31
+OTFname: A-OTF-MidashiMinPr5-MA31.otf
+
+Name: A-OTF-MidashiMinPro-MA31
+PSName: MidashiMinPro-MA31
+Class: Japan
+Provides(20): MidashiMin-MA31
+OTFname: A-OTF-MidashiMinPro-MA31.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-nanum.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-nanum.dat
new file mode 100644
index 0000000000..533a3d9e99
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-nanum.dat
@@ -0,0 +1,78 @@
+# Nanum (free) (including Nanum MacOS version)
+
+# Note about Mac (Mac OS X 10.6 -- macOS 10.13)
+# Nanum*.ttc (3 files)
+# are bundled with ???.
+
+### KOREAN ###
+
+# note that all fonts have narrow metrics
+
+Name: NanumMyeongjo
+Class: Korea
+TTFname(10): NanumMyeongjo.ttf
+TTCname(20): NanumMyeongjo.ttc(0)
+
+Name: NanumMyeongjoBold
+Class: Korea
+TTFname(10): NanumMyeongjoBold.ttf
+TTCname(20): NanumMyeongjo.ttc(1)
+
+Name: NanumMyeongjoExtraBold
+Class: Korea
+TTFname(10): NanumMyeongjoExtraBold.ttf
+TTCname(20): NanumMyeongjo.ttc(2)
+
+Name: NanumGothic
+Class: Korea
+TTFname(10): NanumGothic.ttf
+TTCname(20): NanumGothic.ttc(0)
+
+Name: NanumGothicBold
+Class: Korea
+TTFname(10): NanumGothicBold.ttf
+TTCname(20): NanumGothic.ttc(1)
+
+Name: NanumGothicExtraBold
+Class: Korea
+TTFname(10): NanumGothicExtraBold.ttf
+TTCname(20): NanumGothic.ttc(2)
+
+Name: NanumGothicLight
+Class: Korea
+TTFname(10): NanumGothicLight.ttf
+
+Name: NanumBarunGothic
+Class: Korea
+TTFname(10): NanumBarunGothic.ttf
+
+Name: NanumBarunGothicBold
+Class: Korea
+TTFname(10): NanumBarunGothicBold.ttf
+
+Name: NanumBarunGothicLight
+Class: Korea
+TTFname(10): NanumBarunGothicLight.ttf
+
+Name: NanumBarunGothicUltraLight
+Class: Korea
+TTFname(10): NanumBarunGothicUltraLight.ttf
+
+Name: NanumBarunpen
+Class: Korea
+TTFname(10): NanumBarunpenR.ttf
+
+Name: NanumBarunpen-Bold
+Class: Korea
+TTFname(10): NanumBarunpenB.ttf
+
+Name: NanumBrush
+Class: Korea
+TTFname(10): NanumBrush.ttf
+TTCname(20): NanumScript.ttc(0)
+
+Name: NanumPen
+Class: Korea
+TTFname(10): NanumPen.ttf
+TTCname(20): NanumScript.ttc(1)
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-notosans.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-notosans.dat
new file mode 100644
index 0000000000..d93b43f73f
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-notosans.dat
@@ -0,0 +1,182 @@
+# NotoSans
+
+Name: NotoSansCJKjp-Thin
+Class: Japan
+OTFname(10): NotoSansCJKjp-Thin.otf
+OTCname(20): NotoSansCJK-Thin.ttc(0)
+
+Name: NotoSansCJKjp-Light
+Class: Japan
+OTFname(10): NotoSansCJKjp-Light.otf
+OTCname(20): NotoSansCJK-Light.ttc(0)
+
+Name: NotoSansCJKjp-DemiLight
+Class: Japan
+OTFname(10): NotoSansCJKjp-DemiLight.otf
+OTCname(20): NotoSansCJK-DemiLight.ttc(0)
+
+Name: NotoSansCJKjp-Regular
+Class: Japan
+OTFname(10): NotoSansCJKjp-Regular.otf
+OTCname(20): NotoSansCJK-Regular.ttc(0)
+
+Name: NotoSansCJKjp-Medium
+Class: Japan
+OTFname(10): NotoSansCJKjp-Medium.otf
+OTCname(20): NotoSansCJK-Medium.ttc(0)
+
+Name: NotoSansCJKjp-Bold
+Class: Japan
+OTFname(10): NotoSansCJKjp-Bold.otf
+OTCname(20): NotoSansCJK-Bold.ttc(0)
+
+Name: NotoSansCJKjp-Black
+Class: Japan
+OTFname(10): NotoSansCJKjp-Black.otf
+OTCname(20): NotoSansCJK-Black.ttc(0)
+
+Name: NotoSansCJKkr-Thin
+Class: Korea
+OTFname(10): NotoSansCJKkr-Thin.otf
+OTCname(20): NotoSansCJK-Thin.ttc(1)
+
+Name: NotoSansCJKkr-Light
+Class: Korea
+OTFname(10): NotoSansCJKkr-Light.otf
+OTCname(20): NotoSansCJK-Light.ttc(1)
+
+Name: NotoSansCJKkr-DemiLight
+Class: Korea
+OTFname(10): NotoSansCJKkr-DemiLight.otf
+OTCname(20): NotoSansCJK-DemiLight.ttc(1)
+
+Name: NotoSansCJKkr-Regular
+Class: Korea
+OTFname(10): NotoSansCJKkr-Regular.otf
+OTCname(20): NotoSansCJK-Regular.ttc(1)
+
+Name: NotoSansCJKkr-Medium
+Class: Korea
+OTFname(10): NotoSansCJKkr-Medium.otf
+OTCname(20): NotoSansCJK-Medium.ttc(1)
+
+Name: NotoSansCJKkr-Bold
+Class: Korea
+OTFname(10): NotoSansCJKkr-Bold.otf
+OTCname(20): NotoSansCJK-Bold.ttc(1)
+
+Name: NotoSansCJKkr-Black
+Class: Korea
+OTFname(10): NotoSansCJKkr-Black.otf
+OTCname(20): NotoSansCJK-Black.ttc(1)
+
+Name: NotoSansCJKsc-Thin
+Class: GB
+OTFname(10): NotoSansCJKsc-Thin.otf
+OTCname(20): NotoSansCJK-Thin.ttc(2)
+
+Name: NotoSansCJKsc-Light
+Class: GB
+OTFname(10): NotoSansCJKsc-Light.otf
+OTCname(20): NotoSansCJK-Light.ttc(2)
+
+Name: NotoSansCJKsc-DemiLight
+Class: GB
+OTFname(10): NotoSansCJKsc-DemiLight.otf
+OTCname(20): NotoSansCJK-DemiLight.ttc(2)
+
+Name: NotoSansCJKsc-Regular
+Class: GB
+OTFname(10): NotoSansCJKsc-Regular.otf
+OTCname(20): NotoSansCJK-Regular.ttc(2)
+
+Name: NotoSansCJKsc-Medium
+Class: GB
+OTFname(10): NotoSansCJKsc-Medium.otf
+OTCname(20): NotoSansCJK-Medium.ttc(2)
+
+Name: NotoSansCJKsc-Bold
+Class: GB
+OTFname(10): NotoSansCJKsc-Bold.otf
+OTCname(20): NotoSansCJK-Bold.ttc(2)
+
+Name: NotoSansCJKsc-Black
+Class: GB
+OTFname(10): NotoSansCJKsc-Black.otf
+OTCname(20): NotoSansCJK-Black.ttc(2)
+
+Name: NotoSansCJKtc-Thin
+Class: CNS
+OTFname(10): NotoSansCJKtc-Thin.otf
+OTCname(20): NotoSansCJK-Thin.ttc(3)
+
+Name: NotoSansCJKtc-Light
+Class: CNS
+OTFname(10): NotoSansCJKtc-Light.otf
+OTCname(20): NotoSansCJK-Light.ttc(3)
+
+Name: NotoSansCJKtc-DemiLight
+Class: CNS
+OTFname(10): NotoSansCJKtc-DemiLight.otf
+OTCname(20): NotoSansCJK-DemiLight.ttc(3)
+
+Name: NotoSansCJKtc-Regular
+Class: CNS
+OTFname(10): NotoSansCJKtc-Regular.otf
+OTCname(20): NotoSansCJK-Regular.ttc(3)
+
+Name: NotoSansCJKtc-Medium
+Class: CNS
+OTFname(10): NotoSansCJKtc-Medium.otf
+OTCname(20): NotoSansCJK-Medium.ttc(3)
+
+Name: NotoSansCJKtc-Bold
+Class: CNS
+OTFname(10): NotoSansCJKtc-Bold.otf
+OTCname(20): NotoSansCJK-Bold.ttc(3)
+
+Name: NotoSansCJKtc-Black
+Class: CNS
+OTFname(10): NotoSansCJKtc-Black.otf
+OTCname(20): NotoSansCJK-Black.ttc(3)
+
+Name: NotoSansMonoCJKjp-Regular
+Class: Japan
+OTFname(10): NotoSansMonoCJKjp-Regular.otf
+OTCname(20): NotoSansCJK-Regular.ttc(4)
+
+Name: NotoSansMonoCJKjp-Bold
+Class: Japan
+OTFname(10): NotoSansMonoCJKjp-Bold.otf
+OTCname(20): NotoSansCJK-Bold.ttc(4)
+
+Name: NotoSansMonoCJKkr-Regular
+Class: Korea
+OTFname(10): NotoSansMonoCJKkr-Regular.otf
+OTCname(20): NotoSansCJK-Regular.ttc(5)
+
+Name: NotoSansMonoCJKkr-Bold
+Class: Korea
+OTFname(10): NotoSansMonoCJKkr-Bold.otf
+OTCname(20): NotoSansCJK-Bold.ttc(5)
+
+Name: NotoSansMonoCJKsc-Regular
+Class: GB
+OTFname(10): NotoSansMonoCJKsc-Regular.otf
+OTCname(20): NotoSansCJK-Regular.ttc(6)
+
+Name: NotoSansMonoCJKsc-Bold
+Class: GB
+OTFname(10): NotoSansMonoCJKsc-Bold.otf
+OTCname(20): NotoSansCJK-Bold.ttc(6)
+
+Name: NotoSansMonoCJKtc-Regular
+Class: CNS
+OTFname(10): NotoSansMonoCJKtc-Regular.otf
+OTCname(20): NotoSansCJK-Regular.ttc(7)
+
+Name: NotoSansMonoCJKtc-Bold
+Class: CNS
+OTFname(10): NotoSansMonoCJKtc-Bold.otf
+OTCname(20): NotoSansCJK-Bold.ttc(7)
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-notoserif.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-notoserif.dat
new file mode 100644
index 0000000000..e913166807
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-notoserif.dat
@@ -0,0 +1,141 @@
+# NotoSerif
+
+Name: NotoSerifCJKjp-ExtraLight
+Class: Japan
+OTFname(10): NotoSerifCJKjp-ExtraLight.otf
+OTCname(20): NotoSerifCJK-ExtraLight.ttc(0)
+
+Name: NotoSerifCJKjp-Light
+Class: Japan
+OTFname(10): NotoSerifCJKjp-Light.otf
+OTCname(20): NotoSerifCJK-Light.ttc(0)
+
+Name: NotoSerifCJKjp-Regular
+Class: Japan
+OTFname(10): NotoSerifCJKjp-Regular.otf
+OTCname(20): NotoSerifCJK-Regular.ttc(0)
+
+Name: NotoSerifCJKjp-Medium
+Class: Japan
+OTFname(10): NotoSerifCJKjp-Medium.otf
+OTCname(20): NotoSerifCJK-Medium.ttc(0)
+
+Name: NotoSerifCJKjp-SemiBold
+Class: Japan
+OTFname(10): NotoSerifCJKjp-SemiBold.otf
+OTCname(20): NotoSerifCJK-SemiBold.ttc(0)
+
+Name: NotoSerifCJKjp-Bold
+Class: Japan
+OTFname(10): NotoSerifCJKjp-Bold.otf
+OTCname(20): NotoSerifCJK-Bold.ttc(0)
+
+Name: NotoSerifCJKjp-Black
+Class: Japan
+OTFname(10): NotoSerifCJKjp-Black.otf
+OTCname(20): NotoSerifCJK-Black.ttc(0)
+
+Name: NotoSerifCJKkr-ExtraLight
+Class: Korea
+OTFname(10): NotoSerifCJKkr-ExtraLight.otf
+OTCname(20): NotoSerifCJK-ExtraLight.ttc(1)
+
+Name: NotoSerifCJKkr-Light
+Class: Korea
+OTFname(10): NotoSerifCJKkr-Light.otf
+OTCname(20): NotoSerifCJK-Light.ttc(1)
+
+Name: NotoSerifCJKkr-Regular
+Class: Korea
+OTFname(10): NotoSerifCJKkr-Regular.otf
+OTCname(20): NotoSerifCJK-Regular.ttc(1)
+
+Name: NotoSerifCJKkr-Medium
+Class: Korea
+OTFname(10): NotoSerifCJKkr-Medium.otf
+OTCname(20): NotoSerifCJK-Medium.ttc(1)
+
+Name: NotoSerifCJKkr-SemiBold
+Class: Korea
+OTFname(10): NotoSerifCJKkr-SemiBold.otf
+OTCname(20): NotoSerifCJK-SemiBold.ttc(1)
+
+Name: NotoSerifCJKkr-Bold
+Class: Korea
+OTFname(10): NotoSerifCJKkr-Bold.otf
+OTCname(20): NotoSerifCJK-Bold.ttc(1)
+
+Name: NotoSerifCJKkr-Black
+Class: Korea
+OTFname(10): NotoSerifCJKkr-Black.otf
+OTCname(20): NotoSerifCJK-Black.ttc(1)
+
+Name: NotoSerifCJKsc-ExtraLight
+Class: GB
+OTFname(10): NotoSerifCJKsc-ExtraLight.otf
+OTCname(20): NotoSerifCJK-ExtraLight.ttc(2)
+
+Name: NotoSerifCJKsc-Light
+Class: GB
+OTFname(10): NotoSerifCJKsc-Light.otf
+OTCname(20): NotoSerifCJK-Light.ttc(2)
+
+Name: NotoSerifCJKsc-Regular
+Class: GB
+OTFname(10): NotoSerifCJKsc-Regular.otf
+OTCname(20): NotoSerifCJK-Regular.ttc(2)
+
+Name: NotoSerifCJKsc-Medium
+Class: GB
+OTFname(10): NotoSerifCJKsc-Medium.otf
+OTCname(20): NotoSerifCJK-Medium.ttc(2)
+
+Name: NotoSerifCJKsc-SemiBold
+Class: GB
+OTFname(10): NotoSerifCJKsc-SemiBold.otf
+OTCname(20): NotoSerifCJK-SemiBold.ttc(2)
+
+Name: NotoSerifCJKsc-Bold
+Class: GB
+OTFname(10): NotoSerifCJKsc-Bold.otf
+OTCname(20): NotoSerifCJK-Bold.ttc(2)
+
+Name: NotoSerifCJKsc-Black
+Class: GB
+OTFname(10): NotoSerifCJKsc-Black.otf
+OTCname(20): NotoSerifCJK-Black.ttc(2)
+
+Name: NotoSerifCJKtc-ExtraLight
+Class: CNS
+OTFname(10): NotoSerifCJKtc-ExtraLight.otf
+OTCname(20): NotoSerifCJK-ExtraLight.ttc(3)
+
+Name: NotoSerifCJKtc-Light
+Class: CNS
+OTFname(10): NotoSerifCJKtc-Light.otf
+OTCname(20): NotoSerifCJK-Light.ttc(3)
+
+Name: NotoSerifCJKtc-Regular
+Class: CNS
+OTFname(10): NotoSerifCJKtc-Regular.otf
+OTCname(20): NotoSerifCJK-Regular.ttc(3)
+
+Name: NotoSerifCJKtc-Medium
+Class: CNS
+OTFname(10): NotoSerifCJKtc-Medium.otf
+OTCname(20): NotoSerifCJK-Medium.ttc(3)
+
+Name: NotoSerifCJKtc-SemiBold
+Class: CNS
+OTFname(10): NotoSerifCJKtc-SemiBold.otf
+OTCname(20): NotoSerifCJK-SemiBold.ttc(3)
+
+Name: NotoSerifCJKtc-Bold
+Class: CNS
+OTFname(10): NotoSerifCJKtc-Bold.otf
+OTCname(20): NotoSerifCJK-Bold.ttc(3)
+
+Name: NotoSerifCJKtc-Black
+Class: CNS
+OTFname(10): NotoSerifCJKtc-Black.otf
+OTCname(20): NotoSerifCJK-Black.ttc(3)
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-ryokana.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-ryokana.dat
new file mode 100644
index 0000000000..9364cc55a2
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-ryokana.dat
@@ -0,0 +1,141 @@
+# Ryo PlusN (Kana + Kozuka Std) and Ryo Std (Kana only)
+
+### JAPANESE ###
+
+# Note about Adobe Creative Suite:
+# RyoTextStd: CS1, CS2, CS3
+# RyoTextPlusN: CS4, CS5, CS5.5
+# RyoDispStd: CS1, CS2, CS3, CS4
+# RyoDispPlusN: CS5, CS5.5
+# RyoGothicStd: CS3
+# RyoGothicPlusN: CS4, CS5, CS5.5
+# are bundled in DVD installer/data.
+
+Name: RyoTextPlusN-ExtraLight
+Class: Japan
+OTFname: RyoTextPlusN-ExtraLight.otf
+
+Name: RyoTextPlusN-Light
+Class: Japan
+OTFname: RyoTextPlusN-Light.otf
+
+Name: RyoTextPlusN-Regular
+Class: Japan
+OTFname: RyoTextPlusN-Regular.otf
+
+Name: RyoTextPlusN-Medium
+Class: Japan
+OTFname: RyoTextPlusN-Medium.otf
+
+Name: RyoDispPlusN-Medium
+Class: Japan
+OTFname: RyoDispPlusN-Medium.otf
+
+Name: RyoDispPlusN-SemiBold
+Class: Japan
+OTFname: RyoDispPlusN-SemiBold.otf
+
+Name: RyoDispPlusN-Bold
+Class: Japan
+OTFname: RyoDispPlusN-Bold.otf
+
+Name: RyoDispPlusN-ExtraBold
+Class: Japan
+OTFname: RyoDispPlusN-ExtraBold.otf
+
+Name: RyoDispPlusN-Heavy
+Class: Japan
+OTFname: RyoDispPlusN-Heavy
+
+Name: RyoTextStd-ExtraLight
+Class: Japan
+OTFname: RyoTextStd-ExtraLight.otf
+
+Name: RyoTextStd-Light
+Class: Japan
+OTFname: RyoTextStd-Light.otf
+
+Name: RyoTextStd-Regular
+Class: Japan
+OTFname: RyoTextStd-Regular.otf
+
+Name: RyoTextStd-Medium
+Class: Japan
+OTFname: RyoTextStd-Medium.otf
+
+Name: RyoDispStd-Medium
+Class: Japan
+OTFname: RyoDispStd-Medium.otf
+
+Name: RyoDispStd-SemiBold
+Class: Japan
+OTFname: RyoDispStd-SemiBold.otf
+
+Name: RyoDispStd-Bold
+Class: Japan
+OTFname: RyoDispStd-Bold.otf
+
+Name: RyoDispStd-ExtraBold
+Class: Japan
+OTFname: RyoDispStd-ExtraBold.otf
+
+Name: RyoDispStd-Heavy
+Class: Japan
+OTFname: RyoDispStd-Heavy.otf
+
+Name: RyoGothicPlusN-ExtraLight
+Class: Japan
+OTFname: RyoGothicPlusN-ExtraLight.otf
+
+Name: RyoGothicPlusN-Light
+Class: Japan
+OTFname: RyoGothicPlusN-Light.otf
+
+Name: RyoGothicPlusN-Regular
+Class: Japan
+OTFname: RyoGothicPlusN-Regular.otf
+
+Name: RyoGothicPlusN-Medium
+Class: Japan
+OTFname: RyoGothicPlusN-Medium.otf
+
+Name: RyoGothicPlusN-Bold
+Class: Japan
+OTFname: RyoGothicPlusN-Bold.otf
+
+Name: RyoGothicPlusN-Heavy
+Class: Japan
+OTFname: RyoGothicPlusN-Heavy.otf
+
+Name: RyoGothicPlusN-UltraHeavy
+Class: Japan
+OTFname: RyoGothicPlusN-UltraHeavy.otf
+
+Name: RyoGothicStd-ExtraLight
+Class: Japan
+OTFname: RyoGothicStd-ExtraLight.otf
+
+Name: RyoGothicStd-Light
+Class: Japan
+OTFname: RyoGothicStd-Light.otf
+
+Name: RyoGothicStd-Regular
+Class: Japan
+OTFname: RyoGothicStd-Regular.otf
+
+Name: RyoGothicStd-Medium
+Class: Japan
+OTFname: RyoGothicStd-Medium.otf
+
+Name: RyoGothicStd-Bold
+Class: Japan
+OTFname: RyoGothicStd-Bold.otf
+
+Name: RyoGothicStd-Heavy
+Class: Japan
+OTFname: RyoGothicStd-Heavy.otf
+
+Name: RyoGothicStd-UltraHeavy
+Class: Japan
+OTFname: RyoGothicStd-UltraHeavy.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-sazanami.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sazanami.dat
new file mode 100644
index 0000000000..a8ee6a481e
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sazanami.dat
@@ -0,0 +1,12 @@
+# Sazanami (free)
+
+### JAPANESE ###
+
+Name: Sazanami-Mincho-Regular
+Class: Japan
+TTFname: sazanami-mincho.ttf
+
+Name: Sazanami-Gothic-Regular
+Class: Japan
+TTFname: sazanami-gothic.ttf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-sinotype.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sinotype.dat
new file mode 100644
index 0000000000..37a032391e
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sinotype.dat
@@ -0,0 +1,194 @@
+# Changzhou SinoType
+
+### SIMPLIFIED/TRADITIONAL CHINESE ###
+
+# Note about Mac (Mac OS X 10.6 -- macOS 10.13)
+# STHeiti Light.ttc
+# STHeiti Medium.ttc
+# are bundled with all versions.
+# 华文细黑.ttf
+# 华文黑体.ttf
+# 华文仿宋.ttf
+# are bundled with macOS 10.12.6 Sierra or earlier versions.
+# STXIHEI.ttf
+# STHEITI.ttf
+# STFANGSO.ttf
+# are bundled with macOS 10.13 High Sierra or later versions.
+# 华文宋体.ttf
+# 华文楷体.ttf
+# are bundled with Mac OS X 10.7.5 Lion or earlier versions.
+# 宋体.ttc
+# 楷体.ttc
+# are bundled with OS X 10.8 -- 10.8.5 Mountain Lion.
+# Songti.ttc
+# index 0: STSongti-SC-Black
+# index 1: STSongti-SC-Bold
+# index 2: STSongti-TC-Bold
+# index 3: STSongti-SC-Light
+# index 4: STSong
+# index 5: STSongti-TC-Light
+# index 6: STSongti-SC-Regular
+# index 7: STSongti-TC-Regular
+# is bundled with OS X 10.9 or later versions.
+# Kaiti.ttc
+# index 0: STKaiti-SC-Black
+# index 1: STKaiti-SC-Bold
+# index 2: STKaiTi-TC-Bold
+# index 3: STKaiti-SC-Regular
+# index 4: STKaiti
+# index 5: STKaiTi-TC-Regular
+# is bundled with OS X 10.9 -- 10.11.6 El Capitan.
+# Kaiti.ttc
+# index 0: STKaitiSC-Regular
+# index 1: STKaiti
+# index 2: STKaitiTC-Regular
+# index 3: STKaitiSC-Bold
+# index 4: STKaitiTC-Bold
+# index 5: STKaitiSC-Black
+# index 6: STKaitiTC-Black
+# is bundled with macOS 10.12 Sierra or later versions.
+# Baoli.ttc
+# index 0: STBaoli-SC-Regular
+# Libian.ttc
+# index 0: STLibian-SC-Regular
+# Xingkai.ttc
+# index 0: STXingkai-SC-Bold
+# index 1: STXingkai-SC-Light
+# are bundled with OS X 10.9 Mavericks -- 10.11.6 El Capitan.
+# Baoli.ttc
+# index 0: STBaoliSC-Regular
+# index 1: STBaoliTC-Regular
+# Libian.ttc
+# index 0: STLibianSC-Regular
+# index 1: STLibianTC-Regular
+# Xingkai.ttc
+# index 0: STXingkaiSC-Bold
+# index 1: STXingkaiTC-Bold
+# index 2: STXingkaiSC-Light
+# index 3: STXingkaiTC-Light
+# are bundled with macOS 10.12 Sierra or later versions.
+# Yuanti.ttc
+# index 0: STYuanti-SC-Bold
+# index 1: STYuanti-SC-Light
+# index 2: STYuanti-SC-Regular
+# is bundled with OS X 10.9 Mavericks -- 10.10.5 Yosemite.
+# Yuanti.ttc
+# index 0: STYuanti-SC-Bold
+# index 1: STYuanti-TC-Bold
+# index 2: STYuanti-SC-Light
+# index 3: STYuanti-TC-Light
+# index 4: STYuanti-SC-Regular
+# index 5: STYuanti-TC-Regular
+# is bundled with OS X 10.11 -- 10.11.6 El Capitan.
+# Yuanti.ttc
+# index 0: STYuanti-SC-Regular
+# index 1: STYuanti-TC-Regular
+# index 2: STYuanti-SC-Bold
+# index 3: STYuanti-TC-Bold
+# index 4: STYuanti-SC-Light
+# index 5: STYuanti-TC-Light
+# is bundled with macOS 10.12 Sierra or later versions.
+
+# Note about MSOffice:
+# STZHONGS.ttf
+# STXINWEI.ttf
+# STXINGKA.ttf
+# STLITI.ttf
+# STHUPO.ttf
+# are bundled with Office for Mac 2016.
+
+Name: STSong
+Class: GB
+#Provides(??): STSong-Light # fails
+#Provides(??): STSong-Regular # fails
+TTFname(10): STSong.ttf
+TTFname(11): STSONG.TTF
+TTFname(20): 华文宋体.ttf
+
+Name: STKaiti
+Class: GB
+#Provides(??): STKaiti-Regular # fails
+TTFname(10): STKaiti.ttf
+TTFname(11): STKAITI.TTF
+TTFname(20): 华文楷体.ttf
+
+Name: STKaiti-Adobe-CNS1
+Class: CNS
+#Provides(??): MKai-Medium # fails
+TTFname(10): STKaiti.ttf
+TTFname(11): STKAITI.TTF
+TTFname(20): 华文楷体.ttf
+
+Name: STXihei
+Class: GB
+#Provides(??): STHeiti-Light # fails
+TTFname(10): STXihei.ttf
+TTFname(11): STXIHEI.TTF
+TTFname(19): STXIHEI.ttf
+TTFname(20): 华文细黑.ttf
+
+Name: STHeiti
+Class: GB
+#Provides(??): STHeiti-Regular # fails
+TTFname(10): STHeiti.ttf
+TTFname(19): STHEITI.ttf
+TTFname(20): 华文黑体.ttf
+
+Name: STFangsong
+Class: GB
+#Provides(??): STFangsong-Light # fails
+#Provides(??): STFangsong-Regular # fails
+TTFname(10): STFangsong.ttf
+TTFname(11): STFANGSO.TTF
+TTFname(19): STFANGSO.ttf
+TTFname(20): 华文仿宋.ttf
+
+Name: STZhongsong
+Class: GB
+TTFname(11): STZHONGS.TTF
+TTFname(12): STZHONGS.ttf
+
+Name: STXinwei
+Class: GB
+TTFname(11): STXINWEI.TTF
+TTFname(12): STXINWEI.ttf
+
+Name: STXingkai
+Class: GB
+TTFname(11): STXINGKA.TTF
+TTFname(12): STXINGKA.ttf
+
+Name: STLiti
+Class: GB
+TTFname(11): STLITI.TTF
+TTFname(12): STLITI.ttf
+
+Name: STHupo
+Class: GB
+TTFname(11): STHUPO.TTF
+TTFname(12): STHUPO.ttf
+
+Name: STCaiyun
+Class: GB
+TTFname(11): STCAIYUN.TTF
+
+Name: STHeitiSC-Light
+Class: GB
+TTCname(30): STHeiti-Light.ttc(1)
+TTCname(40): STHeiti Light.ttc(1)
+
+Name: STHeitiTC-Light
+Class: CNS
+TTCname(30): STHeiti-Light.ttc(0)
+TTCname(40): STHeiti Light.ttc(0)
+
+Name: STHeitiSC-Medium
+Class: GB
+TTCname(30): STHeiti-Medium.ttc(1)
+TTCname(40): STHeiti Medium.ttc(1)
+
+Name: STHeitiTC-Medium
+Class: CNS
+TTCname(30): STHeiti-Medium.ttc(0)
+TTCname(40): STHeiti Medium.ttc(0)
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-solaris.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-solaris.dat
new file mode 100644
index 0000000000..157f84327f
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-solaris.dat
@@ -0,0 +1,33 @@
+# Solaris
+
+# All these fonts are bundled with Solaris 10, 11.
+
+### KOREAN ###
+
+Name: Myeongjo
+Class: Korea
+Provides(40): HYSMyeongJo-Medium
+TTFname: h2mjsm.ttf
+
+Name: Gothic
+Class: Korea
+Provides(40): HYGoThic-Medium
+TTFname: h2gtrm.ttf
+
+Name: RoundedGothic
+Class: Korea
+Provides(40): HYRGoThic-Medium
+TTFname: h2drrm.ttf
+
+Name: Haeseo
+Class: Korea
+TTFname: h2hsrm.ttf
+
+Name: SunDotum
+Class: Korea
+TTFname: sundotump.ttf
+
+Name: SunDotumChe
+Class: Korea
+TTFname: sundotumf.ttf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehansans.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehansans.dat
new file mode 100644
index 0000000000..e480b7dc6b
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehansans.dat
@@ -0,0 +1,182 @@
+# SourceHanSans
+
+Name: SourceHanSans-ExtraLight
+Class: Japan
+OTFname(10): SourceHanSans-ExtraLight.otf
+OTCname(20): SourceHanSans-ExtraLight.ttc(0)
+
+Name: SourceHanSans-Light
+Class: Japan
+OTFname(10): SourceHanSans-Light.otf
+OTCname(20): SourceHanSans-Light.ttc(0)
+
+Name: SourceHanSans-Normal
+Class: Japan
+OTFname(10): SourceHanSans-Normal.otf
+OTCname(20): SourceHanSans-Normal.ttc(0)
+
+Name: SourceHanSans-Regular
+Class: Japan
+OTFname(10): SourceHanSans-Regular.otf
+OTCname(20): SourceHanSans-Regular.ttc(0)
+
+Name: SourceHanSans-Medium
+Class: Japan
+OTFname(10): SourceHanSans-Medium.otf
+OTCname(20): SourceHanSans-Medium.ttc(0)
+
+Name: SourceHanSans-Bold
+Class: Japan
+OTFname(10): SourceHanSans-Bold.otf
+OTCname(20): SourceHanSans-Bold.ttc(0)
+
+Name: SourceHanSans-Heavy
+Class: Japan
+OTFname(10): SourceHanSans-Heavy.otf
+OTCname(20): SourceHanSans-Heavy.ttc(0)
+
+Name: SourceHanSansK-ExtraLight
+Class: Korea
+OTFname(10): SourceHanSansK-ExtraLight.otf
+OTCname(20): SourceHanSans-ExtraLight.ttc(1)
+
+Name: SourceHanSansK-Light
+Class: Korea
+OTFname(10): SourceHanSansK-Light.otf
+OTCname(20): SourceHanSans-Light.ttc(1)
+
+Name: SourceHanSansK-Normal
+Class: Korea
+OTFname(10): SourceHanSansK-Normal.otf
+OTCname(20): SourceHanSans-Normal.ttc(1)
+
+Name: SourceHanSansK-Regular
+Class: Korea
+OTFname(10): SourceHanSansK-Regular.otf
+OTCname(20): SourceHanSans-Regular.ttc(1)
+
+Name: SourceHanSansK-Medium
+Class: Korea
+OTFname(10): SourceHanSansK-Medium.otf
+OTCname(20): SourceHanSans-Medium.ttc(1)
+
+Name: SourceHanSansK-Bold
+Class: Korea
+OTFname(10): SourceHanSansK-Bold.otf
+OTCname(20): SourceHanSans-Bold.ttc(1)
+
+Name: SourceHanSansK-Heavy
+Class: Korea
+OTFname(10): SourceHanSansK-Heavy.otf
+OTCname(20): SourceHanSans-Heavy.ttc(1)
+
+Name: SourceHanSansSC-ExtraLight
+Class: GB
+OTFname(10): SourceHanSansSC-ExtraLight.otf
+OTCname(20): SourceHanSans-ExtraLight.ttc(2)
+
+Name: SourceHanSansSC-Light
+Class: GB
+OTFname(10): SourceHanSansSC-Light.otf
+OTCname(20): SourceHanSans-Light.ttc(2)
+
+Name: SourceHanSansSC-Normal
+Class: GB
+OTFname(10): SourceHanSansSC-Normal.otf
+OTCname(20): SourceHanSans-Normal.ttc(2)
+
+Name: SourceHanSansSC-Regular
+Class: GB
+OTFname(10): SourceHanSansSC-Regular.otf
+OTCname(20): SourceHanSans-Regular.ttc(2)
+
+Name: SourceHanSansSC-Medium
+Class: GB
+OTFname(10): SourceHanSansSC-Medium.otf
+OTCname(20): SourceHanSans-Medium.ttc(2)
+
+Name: SourceHanSansSC-Bold
+Class: GB
+OTFname(10): SourceHanSansSC-Bold.otf
+OTCname(20): SourceHanSans-Bold.ttc(2)
+
+Name: SourceHanSansSC-Heavy
+Class: GB
+OTFname(10): SourceHanSansSC-Heavy.otf
+OTCname(20): SourceHanSans-Heavy.ttc(2)
+
+Name: SourceHanSansTC-ExtraLight
+Class: CNS
+OTFname(10): SourceHanSansTC-ExtraLight.otf
+OTCname(20): SourceHanSans-ExtraLight.ttc(3)
+
+Name: SourceHanSansTC-Light
+Class: CNS
+OTFname(10): SourceHanSansTC-Light.otf
+OTCname(20): SourceHanSans-Light.ttc(3)
+
+Name: SourceHanSansTC-Normal
+Class: CNS
+OTFname(10): SourceHanSansTC-Normal.otf
+OTCname(20): SourceHanSans-Normal.ttc(3)
+
+Name: SourceHanSansTC-Regular
+Class: CNS
+OTFname(10): SourceHanSansTC-Regular.otf
+OTCname(20): SourceHanSans-Regular.ttc(3)
+
+Name: SourceHanSansTC-Medium
+Class: CNS
+OTFname(10): SourceHanSansTC-Medium.otf
+OTCname(20): SourceHanSans-Medium.ttc(3)
+
+Name: SourceHanSansTC-Bold
+Class: CNS
+OTFname(10): SourceHanSansTC-Bold.otf
+OTCname(20): SourceHanSans-Bold.ttc(3)
+
+Name: SourceHanSansTC-Heavy
+Class: CNS
+OTFname(10): SourceHanSansTC-Heavy.otf
+OTCname(20): SourceHanSans-Heavy.ttc(3)
+
+Name: SourceHanSansHW-Regular
+Class: Japan
+OTFname(10): SourceHanSansHW-Regular.otf
+OTCname(20): SourceHanSans-Regular.ttc(4)
+
+Name: SourceHanSansHW-Bold
+Class: Japan
+OTFname(10): SourceHanSansHW-Bold.otf
+OTCname(20): SourceHanSans-Bold.ttc(4)
+
+Name: SourceHanSansHWK-Regular
+Class: Korea
+OTFname(10): SourceHanSansHWK-Regular.otf
+OTCname(20): SourceHanSans-Regular.ttc(5)
+
+Name: SourceHanSansHWK-Bold
+Class: Korea
+OTFname(10): SourceHanSansHWK-Bold.otf
+OTCname(20): SourceHanSans-Bold.ttc(5)
+
+Name: SourceHanSansHWSC-Regular
+Class: GB
+OTFname(10): SourceHanSansHWSC-Regular.otf
+OTCname(20): SourceHanSans-Regular.ttc(6)
+
+Name: SourceHanSansHWSC-Bold
+Class: GB
+OTFname(10): SourceHanSansHWSC-Bold.otf
+OTCname(20): SourceHanSans-Bold.ttc(6)
+
+Name: SourceHanSansHWTC-Regular
+Class: CNS
+OTFname(10): SourceHanSansHWTC-Regular.otf
+OTCname(20): SourceHanSans-Regular.ttc(7)
+
+Name: SourceHanSansHWTC-Bold
+Class: CNS
+OTFname(10): SourceHanSansHWTC-Bold.otf
+OTCname(20): SourceHanSans-Bold.ttc(7)
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehanserif.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehanserif.dat
new file mode 100644
index 0000000000..a3c3ec1bee
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehanserif.dat
@@ -0,0 +1,142 @@
+# SourceHanSerif
+
+Name: SourceHanSerif-ExtraLight
+Class: Japan
+OTFname(10): SourceHanSerif-ExtraLight.otf
+OTCname(20): SourceHanSerif-ExtraLight.ttc(0)
+
+Name: SourceHanSerif-Light
+Class: Japan
+OTFname(10): SourceHanSerif-Light.otf
+OTCname(20): SourceHanSerif-Light.ttc(0)
+
+Name: SourceHanSerif-Regular
+Class: Japan
+OTFname(10): SourceHanSerif-Regular.otf
+OTCname(20): SourceHanSerif-Regular.ttc(0)
+
+Name: SourceHanSerif-Medium
+Class: Japan
+OTFname(10): SourceHanSerif-Medium.otf
+OTCname(20): SourceHanSerif-Medium.ttc(0)
+
+Name: SourceHanSerif-SemiBold
+Class: Japan
+OTFname(10): SourceHanSerif-SemiBold.otf
+OTCname(20): SourceHanSerif-SemiBold.ttc(0)
+
+Name: SourceHanSerif-Bold
+Class: Japan
+OTFname(10): SourceHanSerif-Bold.otf
+OTCname(20): SourceHanSerif-Bold.ttc(0)
+
+Name: SourceHanSerif-Heavy
+Class: Japan
+OTFname(10): SourceHanSerif-Heavy.otf
+OTCname(20): SourceHanSerif-Heavy.ttc(0)
+
+Name: SourceHanSerifK-ExtraLight
+Class: Korea
+OTFname(10): SourceHanSerifK-ExtraLight.otf
+OTCname(20): SourceHanSerif-ExtraLight.ttc(1)
+
+Name: SourceHanSerifK-Light
+Class: Korea
+OTFname(10): SourceHanSerifK-Light.otf
+OTCname(20): SourceHanSerif-Light.ttc(1)
+
+Name: SourceHanSerifK-Regular
+Class: Korea
+OTFname(10): SourceHanSerifK-Regular.otf
+OTCname(20): SourceHanSerif-Regular.ttc(1)
+
+Name: SourceHanSerifK-Medium
+Class: Korea
+OTFname(10): SourceHanSerifK-Medium.otf
+OTCname(20): SourceHanSerif-Medium.ttc(1)
+
+Name: SourceHanSerifK-SemiBold
+Class: Korea
+OTFname(10): SourceHanSerifK-SemiBold.otf
+OTCname(20): SourceHanSerif-SemiBold.ttc(1)
+
+Name: SourceHanSerifK-Bold
+Class: Korea
+OTFname(10): SourceHanSerifK-Bold.otf
+OTCname(20): SourceHanSerif-Bold.ttc(1)
+
+Name: SourceHanSerifK-Heavy
+Class: Korea
+OTFname(10): SourceHanSerifK-Heavy.otf
+OTCname(20): SourceHanSerif-Heavy.ttc(1)
+
+Name: SourceHanSerifSC-ExtraLight
+Class: GB
+OTFname(10): SourceHanSerifSC-ExtraLight.otf
+OTCname(20): SourceHanSerif-ExtraLight.ttc(2)
+
+Name: SourceHanSerifSC-Light
+Class: GB
+OTFname(10): SourceHanSerifSC-Light.otf
+OTCname(20): SourceHanSerif-Light.ttc(2)
+
+Name: SourceHanSerifSC-Regular
+Class: GB
+OTFname(10): SourceHanSerifSC-Regular.otf
+OTCname(20): SourceHanSerif-Regular.ttc(2)
+
+Name: SourceHanSerifSC-Medium
+Class: GB
+OTFname(10): SourceHanSerifSC-Medium.otf
+OTCname(20): SourceHanSerif-Medium.ttc(2)
+
+Name: SourceHanSerifSC-SemiBold
+Class: GB
+OTFname(10): SourceHanSerifSC-SemiBold.otf
+OTCname(20): SourceHanSerif-SemiBold.ttc(2)
+
+Name: SourceHanSerifSC-Bold
+Class: GB
+OTFname(10): SourceHanSerifSC-Bold.otf
+OTCname(20): SourceHanSerif-Bold.ttc(2)
+
+Name: SourceHanSerifSC-Heavy
+Class: GB
+OTFname(10): SourceHanSerifSC-Heavy.otf
+OTCname(20): SourceHanSerif-Heavy.ttc(2)
+
+Name: SourceHanSerifTC-ExtraLight
+Class: CNS
+OTFname(10): SourceHanSerifTC-ExtraLight.otf
+OTCname(20): SourceHanSerif-ExtraLight.ttc(3)
+
+Name: SourceHanSerifTC-Light
+Class: CNS
+OTFname(10): SourceHanSerifTC-Light.otf
+OTCname(20): SourceHanSerif-Light.ttc(3)
+
+Name: SourceHanSerifTC-Regular
+Class: CNS
+OTFname(10): SourceHanSerifTC-Regular.otf
+OTCname(20): SourceHanSerif-Regular.ttc(3)
+
+Name: SourceHanSerifTC-Medium
+Class: CNS
+OTFname(10): SourceHanSerifTC-Medium.otf
+OTCname(20): SourceHanSerif-Medium.ttc(3)
+
+Name: SourceHanSerifTC-SemiBold
+Class: CNS
+OTFname(10): SourceHanSerifTC-SemiBold.otf
+OTCname(20): SourceHanSerif-SemiBold.ttc(3)
+
+Name: SourceHanSerifTC-Bold
+Class: CNS
+OTFname(10): SourceHanSerifTC-Bold.otf
+OTCname(20): SourceHanSerif-Bold.ttc(3)
+
+Name: SourceHanSerifTC-Heavy
+Class: CNS
+OTFname(10): SourceHanSerifTC-Heavy.otf
+OTCname(20): SourceHanSerif-Heavy.ttc(3)
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-toppan.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-toppan.dat
new file mode 100644
index 0000000000..f4bc4a54fa
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-toppan.dat
@@ -0,0 +1,69 @@
+# Toppan (including Fontworks MacOS version)
+
+### JAPANESE ###
+
+# Note about Mac (Mac OS X 10.6 -- macOS 10.13)
+# ToppanBunkyuMincho-Regular.otf
+# ToppanBunkyuGothic.ttc
+# ToppanBunkyuMidashiMincho-ExtraBold.otf
+# ToppanBunkyuMidashiGothic-ExtraBold.otf
+# are bundled with macOS 10.12 -- 10.12.6 Sierra.
+# ToppanBunkyuMinchoPr6N-Regular.otf
+# ToppanBunkyuGothicPr6N.ttc
+# ToppanBunkyuMidashiMinchoStdN-ExtraBold.otf
+# ToppanBunkyuMidashiGothicStdN-ExtraBold.otf
+# are bundled with macOS 10.13 High Sierra or later versions.
+
+# based on Morisawa Passport
+# ("P" stands for pair kerning)
+
+Name: AP-OTF-BunkyuMinPr6N-R
+PSName: PBunkyuMinPr6N-R
+Class: Japan
+OTFname: AP-OTF-BunkyuMinPr6N-R.otf
+
+Name: AP-OTF-BunkyuMinPr6-R
+PSName: PBunkyuMinPr6-R
+Class: Japan
+OTFname: AP-OTF-BunkyuMinPr6-R.otf
+
+Name: AP-OTF-BunkyuMdMinStdN-EB
+PSName: PBunkyuMdMinStdN-EB
+Class: Japan
+OTFname: AP-OTF-BunkyuMdMinStdN-EB.otf
+
+Name: AP-OTF-BunkyuMdMinStd-EB
+PSName: PBunkyuMdMinStd-EB
+Class: Japan
+OTFname: AP-OTF-BunkyuMdMinStd-EB.otf
+
+Name: AP-OTF-BunkyuGoPr6N-DB
+PSName: PBunkyuGoPr6N-DB
+Class: Japan
+OTFname: AP-OTF-BunkyuGoPr6N-DB.otf
+
+Name: AP-OTF-BunkyuGoPr6N-R
+PSName: PBunkyuGoPr6N-R
+Class: Japan
+OTFname: AP-OTF-BunkyuGoPr6N-R.otf
+
+Name: AP-OTF-BunkyuGoPr6-DB
+PSName: PBunkyuGoPr6-DB
+Class: Japan
+OTFname: AP-OTF-BunkyuGoPr6-DB.otf
+
+Name: AP-OTF-BunkyuGoPr6-R
+PSName: PBunkyuGoPr6-R
+Class: Japan
+OTFname: AP-OTF-BunkyuGoPr6-R.otf
+
+Name: AP-OTF-BunkyuMdGoStdN-EB
+PSName: PBunkyuMdGoStdN-EB
+Class: Japan
+OTFname: AP-OTF-BunkyuMdGoStdN-EB.otf
+
+Name: AP-OTF-BunkyuMdGoStd-EB
+PSName: PBunkyuMdGoStd-EB
+Class: Japan
+OTFname: AP-OTF-BunkyuMdGoStd-EB.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-typebank.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-typebank.dat
new file mode 100644
index 0000000000..d0fac9c1f7
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-typebank.dat
@@ -0,0 +1,33 @@
+# TypeBank
+
+### JAPANESE ###
+
+# Note about Windows:
+# UDDigiKyokashoN-R.ttc
+# UDDigiKyokashoN-B.ttc
+# are bundled with Windows 10 (Fall Creators Update).
+
+Name: UDDigiKyokashoN-R
+Class: Japan
+TTCname: UDDigiKyokashoN-R.ttc(0)
+
+Name: UDDigiKyokashoNP-R
+Class: Japan
+TTCname: UDDigiKyokashoN-R.ttc(1)
+
+Name: UDDigiKyokashoNK-R
+Class: Japan
+TTCname: UDDigiKyokashoN-R.ttc(2)
+
+Name: UDDigiKyokashoN-B
+Class: Japan
+TTCname: UDDigiKyokashoN-B.ttc(0)
+
+Name: UDDigiKyokashoNP-B
+Class: Japan
+TTCname: UDDigiKyokashoN-B.ttc(1)
+
+Name: UDDigiKyokashoNK-B
+Class: Japan
+TTCname: UDDigiKyokashoN-B.ttc(2)
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-ume.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-ume.dat
new file mode 100644
index 0000000000..dc0e129b8f
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-ume.dat
@@ -0,0 +1,106 @@
+# Ume-font (free)
+
+### JAPANESE ###
+
+# Note:
+# in the current release (2016-09-03 umefont_660.7z),
+# ume-tms.ttf and ume-pms.ttf ("studybook" family) share the same PSName
+# as ume-tmo.ttf and ume-pmo.ttf; we don't add these database
+# intentionally -- HY (2017/01/17)
+
+Name: Ume-Mincho
+Class: Japan
+Provides(140): Ryumin-Light
+Provides(140): RyuminPro-Light
+Provides(140): HiraMinProN-W3
+Provides(140): HiraMinPro-W3
+Provides(140): FutoMinA101-Bold
+Provides(140): FutoMinA101Pro-Bold
+Provides(140): HiraMinProN-W6
+Provides(140): HiraMinPro-W6
+Provides(140): MidashiMin-MA31
+Provides(140): MidashiMinPro-MA31
+TTFname(10): ume-tmo3.ttf
+#TTFname(11): ume-tms3.ttf
+
+Name: Ume-Gothic
+Class: Japan
+Provides(140): GothicBBB-Medium
+Provides(140): GothicBBBPro-Medium
+Provides(140): HiraKakuProN-W3
+Provides(140): HiraKakuPro-W3
+Provides(140): FutoGoB101-Bold
+Provides(140): FutoGoB101Pro-Bold
+Provides(140): HiraKakuProN-W6
+Provides(140): HiraKakuPro-W6
+Provides(140): MidashiGo-MB31
+Provides(140): MidashiGoPro-MB31
+Provides(140): HiraKakuStdN-W8
+Provides(140): HiraKakuStd-W8
+Provides(140): Jun101-Light
+Provides(140): Jun101Pro-Light
+Provides(140): HiraMaruProN-W4
+Provides(140): HiraMaruPro-W4
+TTFname(10): ume-tgo4.ttf
+
+Name: Ume-Gothic-O5
+Class: Japan
+TTFname(10): ume-tgo5.ttf
+
+Name: Ume-Gothic-C4
+Class: Japan
+TTFname(10): ume-tgc4.ttf
+
+Name: Ume-Gothic-C5
+Class: Japan
+TTFname(10): ume-tgc5.ttf
+
+Name: Ume-Gothic-S4
+Class: Japan
+TTFname(10): ume-tgs4.ttf
+
+Name: Ume-Gothic-S5
+Class: Japan
+TTFname(10): ume-tgs5.ttf
+
+Name: Ume-P-Mincho
+Class: Japan
+TTFname(10): ume-pmo3.ttf
+#TTFname(11): ume-pms3.ttf
+
+Name: Ume-P-Gothic
+Class: Japan
+TTFname(10): ume-pgo4.ttf
+
+Name: Ume-P-Gothic-O5
+Class: Japan
+TTFname(10): ume-pgo5.ttf
+
+Name: Ume-P-Gothic-C4
+Class: Japan
+TTFname(10): ume-pgc4.ttf
+
+Name: Ume-P-Gothic-C5
+Class: Japan
+TTFname(10): ume-pgc5.ttf
+
+Name: Ume-P-Gothic-S4
+Class: Japan
+TTFname(10): ume-pgs4.ttf
+
+Name: Ume-P-Gothic-S5
+Class: Japan
+TTFname(10): ume-pgs5.ttf
+
+Name: Ume-UI-Gothic
+Class: Japan
+TTFname(10): ume-ugo4.ttf
+
+Name: Ume-UI-Gothic-O5
+Class: Japan
+TTFname(10): ume-ugo5.ttf
+
+Name: Ume-Hy-Gothic
+Class: Japan
+TTFname(10): ume-hgo4.ttf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-unfonts.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-unfonts.dat
new file mode 100644
index 0000000000..1b1201b478
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-unfonts.dat
@@ -0,0 +1,112 @@
+# Unfonts (free)
+
+### KOREAN ###
+
+# Note about TeX Live:
+# Un*.ttf (23 files, excluding UnBom.ttf for license issue)
+# are available as "unfonts-{core,extra}" package for free.
+
+# Unfonts-core (free)
+
+Name: UnBatang
+Class: Korea
+Provides(60): HYSMyeongJo-Medium
+TTFname: UnBatang.ttf
+
+Name: UnBatang-Bold
+Class: Korea
+TTFname: UnBatangBold.ttf
+
+Name: UnDotum
+Class: Korea
+Provides(60): HYGoThic-Medium
+TTFname: UnDotum.ttf
+
+Name: UnDotum-Bold
+Class: Korea
+TTFname: UnDotumBold.ttf
+
+Name: UnDinaru
+Class: Korea
+Provides(60): HYRGoThic-Medium
+TTFname: UnDinaru.ttf
+
+Name: UnDinaru-Bold
+Class: Korea
+TTFname: UnDinaruBold.ttf
+
+Name: UnDinaru-Light
+Class: Korea
+TTFname: UnDinaruLight.ttf
+
+Name: UnGraphic
+Class: Korea
+TTFname: UnGraphic.ttf
+
+Name: UnGraphic-Bold
+Class: Korea
+TTFname: UnGraphicBold.ttf
+
+Name: UnGungseo
+Class: Korea
+TTFname: UnGungseo.ttf
+
+Name: UnPilgi
+Class: Korea
+TTFname: UnPilgi.ttf
+
+Name: UnPilgi-Bold
+Class: Korea
+TTFname: UnPilgiBold.ttf
+
+# Unfonts-extra (free)
+
+#Name: UnBom
+#Class: Korea
+#TTFname: UnBom.ttf
+
+Name: UnPen
+Class: Korea
+TTFname: UnPen.ttf
+
+Name: UnPenheulim
+Class: Korea
+TTFname: UnPenheulim.ttf
+
+Name: UnPilgia
+Class: Korea
+TTFname: UnPilgia.ttf
+
+Name: UnShinmun
+Class: Korea
+TTFname: UnShinmun.ttf
+
+Name: UnVada
+Class: Korea
+TTFname: UnVada.ttf
+
+Name: UnYetgul
+Class: Korea
+TTFname: UnYetgul.ttf
+
+Name: UnTaza
+Class: Korea
+TTFname: UnTaza.ttf
+
+# UnJamo... family has proportional metrics
+Name: UnJamoBatang
+Class: Korea
+TTFname: UnJamoBatang.ttf
+
+Name: UnJamoDotum
+Class: Korea
+TTFname: UnJamoDotum.ttf
+
+Name: UnJamoNovel
+Class: Korea
+TTFname: UnJamoNovel.ttf
+
+Name: UnJamoSora
+Class: Korea
+TTFname: UnJamoSora.ttf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-wenquanyi.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-wenquanyi.dat
new file mode 100644
index 0000000000..8d0f2264a8
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-wenquanyi.dat
@@ -0,0 +1,56 @@
+# WenQuanYi (free)
+
+### SIMPLIFIED/TRADITIONAL CHINESE ###
+
+# GB
+Name: WenQuanYiMicroHei
+Class: GB
+TTCname(10): wqy-microhei.ttc(0)
+
+# CNS
+Name: WenQuanYiMicroHei-Adobe-CNS1
+Class: CNS
+TTCname(10): wqy-microhei.ttc(0)
+
+# GB
+Name: WenQuanYiMicroHeiMono
+Class: GB
+TTCname(10): wqy-microhei.ttc(1)
+
+# CNS
+Name: WenQuanYiMicroHeiMono-Adobe-CNS1
+Class: CNS
+TTCname(10): wqy-microhei.ttc(1)
+
+# GB
+Name: WenQuanYiZenHei
+Class: GB
+TTCname(10): wqy-zenhei.ttc(0)
+TTFname(20): wqy-zenhei.ttf
+
+# CNS
+Name: WenQuanYiZenHei-Adobe-CNS1
+Class: CNS
+TTCname(10): wqy-zenhei.ttc(0)
+TTFname(20): wqy-zenhei.ttf
+
+# GB
+Name: WenQuanYiZenHeiMono
+Class: GB
+TTCname(10): wqy-zenhei.ttc(1)
+
+# CNS:
+Name: WenQuanYiZenHeiMono-Adobe-CNS1
+Class: CNS
+TTCname(10): wqy-zenhei.ttc(1)
+
+# GB
+Name: WenQuanYiZenHeiSharp
+Class: GB
+TTCname(10): wqy-zenhei.ttc(2)
+
+# CNS
+Name: WenQuanYiZenHeiSharp-Adobe-CNS1
+Class: CNS
+TTCname(10): wqy-zenhei.ttc(2)
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-yu-osx.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-yu-osx.dat
new file mode 100644
index 0000000000..68866fe2f9
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-yu-osx.dat
@@ -0,0 +1,79 @@
+# Yu-fonts MacOS version
+
+### JAPANESE ###
+
+# Note about Mac (Mac OS X 10.6 -- macOS 10.13)
+# Yu Gothic Medium.otf
+# Yu Gothic Bold.otf
+# are bundled with OS X 10.9 Mavericks -- macOS 10.12.6 Sierra.
+# YuGothic-Medium.otf
+# YuGothic-Bold.otf
+# are bundled with macOS 10.13 High Sierra or later versions.
+# Yu Mincho Medium.otf
+# Yu Mincho Demibold.otf
+# are bundled with OS X 10.9 Mavericks -- 10.10.5 Yosemite.
+# YuMincho.ttc
+# index 0: YuMin-Medium
+# index 1: YuMin-Demibold
+# index 2: YuMin_36pKn-Medium
+# index 3: YuMin_36pKn-Demibold
+# is bundled with OS X 10.11 -- 10.11.6 El Capitan.
+# YuMincho.ttc
+# index 0: YuMin-Medium
+# index 1: YuMin-Demibold
+# index 2: YuMin-Extrabold
+# index 3: YuMin_36pKn-Medium
+# index 4: YuMin_36pKn-Demibold
+# index 5: YuMin_36pKn-Extrabold
+# is bundled with macOS 10.12 Sierra or later versions.
+# Kyokasho.ttc
+# is bundled with macOS 10.12 Sierra or later versions.
+
+Name: YuMin-Medium
+Class: Japan
+Provides(80): Ryumin-Light
+Provides(80): RyuminPro-Light
+Provides(80): HiraMinProN-W3
+Provides(80): HiraMinPro-W3
+OTFname(20): Yu Mincho Medium.otf
+OTFname(10): YuMin-Medium.otf
+
+Name: YuMin-Demibold
+Class: Japan
+Provides(80): FutoMinA101-Bold
+Provides(80): FutoMinA101Pro-Bold
+Provides(80): HiraMinProN-W6
+Provides(80): HiraMinPro-W6
+Provides(80): MidashiMin-MA31
+Provides(80): MidashiMinPro-MA31
+OTFname(20): Yu Mincho Demibold.otf
+OTFname(10): YuMin-Demibold.otf
+
+Name: YuGo-Medium
+Class: Japan
+Provides(80): GothicBBB-Medium
+Provides(80): GothicBBBPro-Medium
+Provides(80): HiraKakuProN-W3
+Provides(80): HiraKakuPro-W3
+OTFname(20): Yu Gothic Medium.otf
+OTFname(19): YuGothic-Medium.otf
+OTFname(10): YuGo-Medium.otf
+
+Name: YuGo-Bold
+Class: Japan
+Provides(80): FutoGoB101-Bold
+Provides(80): FutoGoB101Pro-Bold
+Provides(80): HiraKakuProN-W6
+Provides(80): HiraKakuPro-W6
+Provides(80): MidashiGo-MB31
+Provides(80): MidashiGoPro-MB31
+Provides(80): HiraKakuStdN-W8
+Provides(80): HiraKakuStd-W8
+Provides(80): Jun101-Light
+Provides(80): Jun101Pro-Light
+Provides(80): HiraMaruProN-W4
+Provides(80): HiraMaruPro-W4
+OTFname(20): Yu Gothic Bold.otf
+OTFname(19): YuGothic-Bold.otf
+OTFname(10): YuGo-Bold.otf
+
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-yu-win.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-yu-win.dat
new file mode 100644
index 0000000000..34d2e1be6f
--- /dev/null
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-yu-win.dat
@@ -0,0 +1,119 @@
+# Yu-fonts Windows/MSOffice version
+
+### JAPANESE ###
+
+# Note about Windows:
+# yugothi{b,c,l}.ttf
+# yumin.ttf, yumin{db,l}.ttf
+# are bundled with Windows 8.1.
+# YuGoth{B,L,M,R}.ttc
+# yumin.ttf, yumin{db,l}.ttf
+# are bundled with Windows 10.
+# YUGOTH{B,L,M,R}.TTC
+# YUMIN.TTF, YUMIN{DB,L}.TTF
+# are bundled with "Yu Font Pack for MSOffice 2010/2013".
+# YuGothic.ttf
+# YuGothic-Bold.ttf
+# are bundled with VS2013 or later versions.
+
+# Note about MSOffice:
+# YuGoth{B,L,M,R}.ttf
+# yumin.ttf, yumin{db,l}.ttf
+# are bundled with Office for Mac 2016.
+
+# In the following database, Yu Font Pack entries do not appear
+# as separate lines, but they are implied by Windows 10 entries
+# since win32 is case-insensitive.
+# Currently we don't add VS2013 YuGothic.ttf (YuGothic) and
+# YuGothic-Bold.ttf (YuGothic-Bold) on purpose, because these files
+# are smaller than Windows 8.1 yugothic.ttf and yugothib.ttf
+
+Name: YuMincho-Regular
+Class: Japan
+Provides(90): Ryumin-Light
+Provides(90): RyuminPro-Light
+Provides(90): HiraMinProN-W3
+Provides(90): HiraMinPro-W3
+TTFname(20): yumin.ttf
+#TTFname(50): YuMincho-Regular.ttf # never existed
+
+Name: YuMincho-Light
+Class: Japan
+TTFname(20): yuminl.ttf
+#TTFname(50): YuMincho-Light.ttf # never existed
+
+Name: YuMincho-DemiBold
+Class: Japan
+Provides(90): FutoMinA101-Bold
+Provides(90): FutoMinA101Pro-Bold
+Provides(90): HiraMinProN-W6
+Provides(90): HiraMinPro-W6
+Provides(90): MidashiMin-MA31
+Provides(90): MidashiMinPro-MA31
+TTFname(20): yumindb.ttf
+#TTFname(50): YuMincho-DemiBold.ttf # never existed
+
+Name: YuGothic-Regular
+Class: Japan
+Provides(90): GothicBBB-Medium
+Provides(90): GothicBBBPro-Medium
+Provides(90): HiraKakuProN-W3
+Provides(90): HiraKakuPro-W3
+TTFname(25): yugothic.ttf
+TTCname(20): YuGothR.ttc(0)
+TTFname(40): YuGothR.ttf
+#TTFname(50): YuGothic-Regular.ttf # never existed
+
+Name: YuGothic-Medium
+Class: Japan
+TTCname(20): YuGothM.ttc(0)
+TTFname(40): YuGothM.ttf
+
+Name: YuGothic-Light
+Class: Japan
+TTFname(25): yugothil.ttf
+TTCname(20): YuGothL.ttc(0)
+TTFname(40): YuGothL.ttf
+#TTFname(50): YuGothic-Light.ttf # never existed
+
+Name: YuGothic-Bold
+Class: Japan
+Provides(90): FutoGoB101-Bold
+Provides(90): FutoGoB101Pro-Bold
+Provides(90): HiraKakuProN-W6
+Provides(90): HiraKakuPro-W6
+Provides(90): MidashiGo-MB31
+Provides(90): MidashiGoPro-MB31
+Provides(90): HiraKakuStdN-W8
+Provides(90): HiraKakuStd-W8
+Provides(90): Jun101-Light
+Provides(90): Jun101Pro-Light
+Provides(90): HiraMaruProN-W4
+Provides(90): HiraMaruPro-W4
+TTFname(25): yugothib.ttf
+TTCname(20): YuGothB.ttc(0)
+TTFname(40): YuGothB.ttf
+#TTFname(50): YuGothic-Bold.ttf
+
+# Yu-UI-fonts (Windows only)
+
+Name: YuGothicUI-Semilight
+Class: Japan
+TTCname(20): YuGothR.ttc(1)
+
+Name: YuGothicUI-Regular
+Class: Japan
+TTCname(20): YuGothM.ttc(1)
+
+Name: YuGothicUI-Light
+Class: Japan
+TTCname(20): YuGothL.ttc(1)
+
+Name: YuGothicUI-Bold
+Class: Japan
+TTCname(20): YuGothB.ttc(1)
+
+Name: YuGothicUI-Semibold
+Class: Japan
+TTCname(20): YuGothB.ttc(2)
+