summaryrefslogtreecommitdiff
path: root/fonts
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-03-08 03:01:00 +0000
committerNorbert Preining <norbert@preining.info>2020-03-08 03:01:00 +0000
commita8880a5ee484845d9a526c5ca8d21d31214af22b (patch)
tree6571a4bcbb457a90ddeef77c05fd72b7ebbac86e /fonts
parent8012fbf3193a5d1699496b198c3bd448973557bd (diff)
CTAN sync 202003080300
Diffstat (limited to 'fonts')
-rw-r--r--fonts/utilities/cjk-gs-integrate/ChangeLog96
-rw-r--r--fonts/utilities/cjk-gs-integrate/README.md1
-rwxr-xr-xfonts/utilities/cjk-gs-integrate/cjk-gs-integrate.pl128
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-haranoaji.dat32
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-macos-removeonly.dat1
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-microsoft.dat10
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-notosans.dat72
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-notoserif.dat56
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-sinotype.dat1
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehansans.dat144
-rw-r--r--fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehanserif.dat112
11 files changed, 509 insertions, 144 deletions
diff --git a/fonts/utilities/cjk-gs-integrate/ChangeLog b/fonts/utilities/cjk-gs-integrate/ChangeLog
index 33491958dd..c09836b091 100644
--- a/fonts/utilities/cjk-gs-integrate/ChangeLog
+++ b/fonts/utilities/cjk-gs-integrate/ChangeLog
@@ -1,10 +1,98 @@
+2020-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Release 20200307.0 (HEAD -> master) [57531f5]
+
+2020-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * cjk-gs-integrate-macos.pl: support Catalina (at least nothing is wrong) (origin/master, origin/HEAD) [d43852e]
+
+2020-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * don't check PSName even in --strict-psname mode if false e.g. STKaiti-Adobe-CNS1 has intentionally wrong PSName in database. [be79554]
+
+2020-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * fix database for MalgunGothic (#28) [bccb1a5]
+
+2020-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * comment [8f64741]
+
+2020-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * improve hidden debug option --strict-psname [c037fe3]
+
+2020-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * typo in warning [53d0a58]
+
+2020-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * don't add symlinking AI0 CMaps when real fonts are unavailable [5ce4c52]
+
+2020-03-07 Masamichi Hosoda <trueroad@trueroad.jp>
+
+ * Add search_cmap (trueroad/add-kpsewhich-cmap-cache) [b0b0b09]
+
+2020-03-07 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * 'CMap:' entry is unsupported for class other than AI0 (trueroad/master) [f499f39]
+
+2020-03-05 Masamichi Hosoda <trueroad@trueroad.jp>
+
+ * Add warning when AI0 is specified for non-OTF (trueroad/add-ai0-cmap) [0d8bceb]
+
+2020-03-05 Masamichi Hosoda <trueroad@trueroad.jp>
+
+ * Add AI0 font alias handling [37a8f77]
+
+2020-03-03 Masamichi Hosoda <trueroad@trueroad.jp>
+
+ * Add CMap parameters to the database for sourcehan [adac7e5]
+
+2020-03-03 Masamichi Hosoda <trueroad@trueroad.jp>
+
+ * Change the class of AI0 fonts to AI0 in the database [9a47a63]
+
+2020-03-03 Masamichi Hosoda <trueroad@trueroad.jp>
+
+ * Add database class AI0 and parameter CMap for AI0 fonts [96b7811]
+
+2020-03-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * HaranoAji -> J70 [e29c9a2]
+
+2020-03-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * Merge remote-tracking branch 'trueroad/add-haranoaji-alias' [7c68c9e]
+
+2020-03-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * reduce kpsewhich call [c8f9877]
+
+2020-03-04 Masamichi Hosoda <trueroad@trueroad.jp>
+
+ * Add removing CMap files when `--remove` option (trueroad/add-symlinking-cmaps) [534e4de]
+
+2020-03-04 Masamichi Hosoda <trueroad@trueroad.jp>
+
+ * Add symlinking CMap files used by created snippets [a354a37]
+
+2020-03-03 Masamichi Hosoda <trueroad@trueroad.jp>
+
+ * Add haranoaji for aliases (trueroad/add-haranoaji-alias) [78a8a63]
+
+2020-01-15 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
+
+ * more info on debug message [9bf9f64]
+
2020-01-15 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
- * Release 20200115.0 (HEAD -> master) [2eba287]
+ * Release 20200115.0 (tag: 20200115.0) [2eba287]
2020-01-15 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
- * copyright year (origin/master, origin/HEAD) [ec0590e]
+ * copyright year [ec0590e]
2020-01-14 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
@@ -36,7 +124,7 @@
2019-09-04 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
- * code cleanup (zrlistttc) [840be09]
+ * code cleanup [840be09]
2019-09-04 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
@@ -56,7 +144,7 @@
2019-09-01 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
- * use zrlistttc.lua for checking PSName (preliminary) (origin/zrlistttc) [789ba5b]
+ * use zrlistttc.lua for checking PSName (preliminary) [789ba5b]
2019-08-16 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
diff --git a/fonts/utilities/cjk-gs-integrate/README.md b/fonts/utilities/cjk-gs-integrate/README.md
index 9f948f7b24..a3081b78fd 100644
--- a/fonts/utilities/cjk-gs-integrate/README.md
+++ b/fonts/utilities/cjk-gs-integrate/README.md
@@ -191,6 +191,7 @@ alias if necessary.
For the Japanese fonts:
Morisawa Pr6N, Morisawa, Hiragino ProN, Hiragino,
Kozuka Pr6N, Kozuka ProVI, Kozuka Pro, Kozuka Std,
+ HaranoAji,
Yu OS X, Yu Win, MS,
Moga-Mobo-ex, Moga-Mobo, IPAex, IPA, Ume
diff --git a/fonts/utilities/cjk-gs-integrate/cjk-gs-integrate.pl b/fonts/utilities/cjk-gs-integrate/cjk-gs-integrate.pl
index 2dbfdd49b0..270600e38f 100755
--- a/fonts/utilities/cjk-gs-integrate/cjk-gs-integrate.pl
+++ b/fonts/utilities/cjk-gs-integrate/cjk-gs-integrate.pl
@@ -39,7 +39,7 @@ use Cwd 'abs_path';
use strict;
(my $prg = basename($0)) =~ s/\.pl$//;
-my $version = '20200115.0';
+my $version = '20200307.0';
if (win32()) {
# conversion between internal (utf-8) and console (cp932):
@@ -574,6 +574,7 @@ sub main {
}
print_info(($opt_remove ? "removing" : "generating") . " snippets and cidfmap.aliases for font aliases ...\n");
do_aliases();
+ do_cmaps();
write_akotfps_datafile() if $opt_akotfps;
if ($opt_texmflink && !$dry_run) {
print_info("running mktexlsr ...\n");
@@ -727,7 +728,7 @@ sub do_aliases {
#
$outp .= "\n\n% Aliases\n";
#
- my (@jal, @kal, @tal, @sal);
+ my (@jal, @kal, @tal, @sal, @ai0al);
#
for my $al (sort keys %aliases) {
my $target;
@@ -766,6 +767,8 @@ sub do_aliases {
push @sal, "/$al /$target ;";
} elsif ($class eq 'CNS') {
push @tal, "/$al /$target ;";
+ } elsif ($class eq 'AI0') {
+ push @ai0al, "/$al /$target ;";
} else {
print STDERR "unknown class $class for $al\n";
}
@@ -779,6 +782,7 @@ sub do_aliases {
$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;
+ $outp .= "\n% Adobe-Identity-0 fonts\n" . join("\n", @ai0al) . "\n" if @ai0al;
#
return if $dry_run;
if ($outp && !$opt_remove) {
@@ -798,6 +802,67 @@ sub do_aliases {
}
}
+sub do_cmaps {
+ # add symlinking CMaps
+ # for which we generate snippets but gs does not provide
+ my $cmapdest = "$opt_output/CMap";
+ return if $dry_run;
+ if ($opt_remove) {
+ # we remove only if both of the following conditions are met:
+ # (1) it is a link
+ # (2) the link target is the same as kpsewhich result
+ # otherwise it's unsafe to remove, as it may have been added
+ # by others or distributed by gs itself
+ for my $class (%encode_list) {
+ for my $enc (@{$encode_list{$class}}) {
+ if (-l "$cmapdest/$enc") {
+ my $linkt = readlink("$cmapdest/$enc");
+ if ($linkt) {
+ if ($linkt eq search_cmap($enc)) {
+ unlink("$cmapdest/$enc");
+ }
+ }
+ }
+ }
+ }
+ return;
+ }
+ # add mode
+ if (! -d "$cmapdest") {
+ print_debug("Creating directory $cmapdest ...\n");
+ make_dir("$cmapdest", "cannot create CMap directory");
+ }
+ for my $class (%encode_list) {
+ if ($class =~ m/^AI0-(.*)$/) {
+ # skip AI0 font-specific CMap when the real font is unavailable
+ next if (!$fontdb{$1}{'available'});
+ }
+ for my $enc (@{$encode_list{$class}}) {
+ if (! -f "$cmapdest/$enc") {
+ print_debug("CMap $enc is not found in gs resource directory\n");
+ my $dest = search_cmap($enc);
+ if ($dest) {
+ print_debug("Symlinking CMap $dest ...\n");
+ link_font($dest, "$cmapdest", $enc);
+ } else {
+ print_debug("CMap $enc is not found by kpsewhich\n");
+ }
+ }
+ }
+ }
+}
+
+my %cmap_cache;
+
+sub search_cmap {
+ my ($cmap) = @_;
+ # search CMap with kpsewhich and cache
+ if (! exists $cmap_cache{$cmap}) {
+ chomp($cmap_cache{$cmap} = `kpsewhich -format=cmap $cmap`);
+ }
+ return $cmap_cache{$cmap};
+}
+
sub update_master_cidfmap {
# what we have to do is:
# in add mode:
@@ -899,6 +964,9 @@ sub generate_cidfmap_entry {
$s .= "1) 5]";
} elsif ($c eq "Korea") {
$s .= "1) 2]";
+ } elsif ($c eq "AI0") {
+ print_warning("cannot use class AI0 for non-OTF $n, skipping.\n");
+ return '';
} else {
print_warning("unknown class $c for $n, skipping.\n");
return '';
@@ -914,6 +982,9 @@ sub generate_font_snippet {
add_akotfps_data($n);
return;
}
+ if ($c eq "AI0") {
+ $c = "AI0-$n";
+ }
for my $enc (@{$encode_list{$c}}) {
if ($opt_remove) {
unlink "$fd/$n-$enc" if (-f "$fd/$n-$enc");
@@ -1205,7 +1276,7 @@ sub info_found_fonts {
# 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);
+ my (@jal, @kal, @tal, @sal, @ai0al);
for my $al (sort keys %aliases) {
my $cl;
my @ks = sort { $a <=> $b} keys(%{$aliases{$al}});
@@ -1237,6 +1308,8 @@ sub info_list_aliases {
push @sal, $foo;
} elsif ($cl eq 'CNS') {
push @tal, $foo;
+ } elsif ($cl eq 'AI0') {
+ push @ai0al, $foo;
} else {
print STDERR "unknown class $cl for $al\n";
}
@@ -1246,11 +1319,13 @@ sub info_list_aliases {
print @kal if @kal;
print @sal if @sal;
print @tal if @tal;
+ print @ai0al if @ai0al;
} 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;
+ print "Aliases for Adobe-Identity-0 fonts:\n", @ai0al, "\n" if @ai0al;
}
}
@@ -1429,11 +1504,13 @@ sub check_for_files {
my $actualpsname;
my $bname;
for my $b (sort keys %{$bntofn{$realfile}}) {
- $fontdb{$k}{'doublecheck'} = "debug" if $opt_strictpsname;
- if ($fontdb{$k}{'doublecheck'} && $zrlistttc_available) {
+ if ($opt_strictpsname && !$fontdb{$k}{'doublecheck'}) {
+ $fontdb{$k}{'doublecheck'} = "debug"; # stub
+ }
+ if ($fontdb{$k}{'doublecheck'} && $fontdb{$k}{'doublecheck'} ne "false" && $zrlistttc_available) {
print_debug("We need to test whether\n");
- print_debug(" $b\n");
- print_debug("is the correct one. Invoking zrlistttc ...\n");
+ print_debug(" $b:$index\n");
+ print_debug("is the correct one ($k). Invoking zrlistttc ...\n");
chomp($actualpsname = `texlua $zrlistttc -i $index "$b"`);
if ($?) {
# something is wrong with the font file, or zrlistttc does not support it;
@@ -1448,7 +1525,12 @@ sub check_for_files {
if ($actualpsname ne $k) {
print_debug("... PSName returned by zrlistttc ($actualpsname) is\n");
print_debug("different from our database ($k), discarding!\n");
- print_warning("zrlistttc check failed for $b\n") if $opt_strictpsname;
+ if ($opt_strictpsname && $fontdb{$k}{'doublecheck'} eq "debug") {
+ # in our database, we've set $fontdb{$k}{'doublecheck'} to "true" intentionally
+ # when we *know* doublecheck is actually required;
+ # if the stub "debug" detects a difference, our database should contain a bug!
+ print_warning("zrlistttc check failed for $b: please report to the author!\n");
+ }
} else {
print_debug("... test passed.\n");
$bname = $b;
@@ -1633,6 +1715,7 @@ sub read_each_font_database {
my (@curdbl) = @_;
my $fontname = "";
my $fontclass = "";
+ my @fontcmaps = ();
my %fontprovides = ();
my $fontdoublecheck = "";
my %fontfiles;
@@ -1658,12 +1741,18 @@ sub read_each_font_database {
$fontdb{$realfontname}{'doublecheck'} = $fontdoublecheck;
$fontdb{$realfontname}{'files'} = { %fontfiles };
$fontdb{$realfontname}{'provides'} = { %fontprovides };
+ if ($fontclass eq "AI0") {
+ $encode_list{"AI0-$realfontname"} = [ @fontcmaps ];
+ } elsif (@fontcmaps) {
+ print_warning("CMap entry for $realfontname (Class: $fontclass) ignored!\n");
+ }
if ($opt_debug >= 3) {
print_dddebug("Dumping fontfiles for $realfontname: " . Data::Dumper::Dumper(\%fontfiles));
}
# reset to start
$fontname = $fontclass = $psname = "";
$fontdoublecheck = "";
+ @fontcmaps = ();
%fontfiles = ();
%fontprovides = ();
} else {
@@ -1671,6 +1760,7 @@ sub read_each_font_database {
# reset to start
$fontname = $fontclass = $psname = "";
$fontdoublecheck = "";
+ @fontcmaps = ();
%fontfiles = ();
%fontprovides = ();
}
@@ -1709,6 +1799,7 @@ sub read_each_font_database {
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/^CMap:\s*(.*)$/) { push(@fontcmaps, $1); next ; }
if ($l =~ m/^Provides\((\d+)\):\s*(.*)$/) { $fontprovides{$2} = $1; next; }
if ($l =~ m/^Doublecheck:\s*(.*)$/) { $fontdoublecheck = $1 ; next ; }
if ($l =~ m/^Casefold:\s*(.*)$/) { $fontdoublecheck = $1 ; next ; } # no longer used
@@ -1820,7 +1911,13 @@ sub dump_font_database {
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";
+ my $class = $fontdb{$k}{'class'};
+ print FOO "Class: $class\n";
+ if ($class eq "AI0") {
+ for my $cmap (@{$encode_list{"AI0-$k"}}) {
+ print FOO "CMap: $cmap\n";
+ }
+ }
for my $p (sort keys %{$fontdb{$k}{'provides'}}) {
print FOO "Provides($fontdb{$k}{'provides'}{$p}): $p\n";
}
@@ -2148,6 +2245,7 @@ alias if necessary.
For the Japanese fonts:
Morisawa Pr6N, Morisawa, Hiragino ProN, Hiragino,
Kozuka Pr6N, Kozuka ProVI, Kozuka Pro, Kozuka Std,
+ HaranoAji,
Yu OS X, Yu Win, MS,
Moga-Mobo-ex, Moga-Mobo, IPAex, IPA, Ume
@@ -2328,7 +2426,7 @@ INCLUDE cjkgs-ume.dat
# Sazanami (free)
INCLUDE cjkgs-sazanami.dat
-# Harano Aji Fonts (free)
+# Harano Aji Fonts (free) -- Provides J70, J71
INCLUDE cjkgs-haranoaji.dat
# Osaka (Apple)
@@ -2536,8 +2634,18 @@ Name: GungsuhChe
Class: Korea
TTCname(20): batang.ttc(3)
+# for Windows 10
+# and Office for Mac 2016 (at least Ver.16.11.0, 2018-03)
+Name: MalgunGothic
+Class: Korea
+Doublecheck: true
+TTFname: malgun.ttf
+
+# for Windows 7
+# and Office for Mac 2016 (Ver.15.32.0, 2017-03)
Name: MalgunGothicRegular
Class: Korea
+Doublecheck: true
TTFname: malgun.ttf
Name: MalgunGothicBold
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-haranoaji.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-haranoaji.dat
index e3517f67d3..686e173271 100644
--- a/fonts/utilities/cjk-gs-integrate/database/cjkgs-haranoaji.dat
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-haranoaji.dat
@@ -8,10 +8,16 @@ OTFname: HaranoAjiMincho-ExtraLight.otf
Name: HaranoAjiMincho-Light
Class: Japan
+Provides(70): Ryumin-Light
+Provides(70): RyuminPro-Light
+Provides(70): HiraMinProN-W3
+Provides(70): HiraMinPro-W3
OTFname: HaranoAjiMincho-Light.otf
Name: HaranoAjiMincho-Regular
Class: Japan
+Provides(70): FutoMinA101-Bold
+Provides(70): FutoMinA101Pro-Bold
OTFname: HaranoAjiMincho-Regular.otf
Name: HaranoAjiMincho-Medium
@@ -20,10 +26,18 @@ OTFname: HaranoAjiMincho-Medium.otf
Name: HaranoAjiMincho-SemiBold
Class: Japan
+Provides(70): MidashiMin-MA31
+Provides(70): MidashiMinPro-MA31
+Provides(70): HiraMinProN-W6
+Provides(70): HiraMinPro-W6
OTFname: HaranoAjiMincho-SemiBold.otf
Name: HaranoAjiMincho-Bold
Class: Japan
+Provides(71): MidashiMin-MA31
+Provides(71): MidashiMinPro-MA31
+Provides(71): HiraMinProN-W6
+Provides(71): HiraMinPro-W6
OTFname: HaranoAjiMincho-Bold.otf
Name: HaranoAjiMincho-Heavy
@@ -40,21 +54,39 @@ OTFname: HaranoAjiGothic-Light.otf
Name: HaranoAjiGothic-Normal
Class: Japan
+Provides(70): HiraKakuProN-W3
+Provides(70): HiraKakuPro-W3
OTFname: HaranoAjiGothic-Normal.otf
Name: HaranoAjiGothic-Regular
Class: Japan
+Provides(70): GothicBBB-Medium
+Provides(70): GothicBBBPro-Medium
+Provides(71): HiraKakuProN-W3
+Provides(71): HiraKakuPro-W3
OTFname: HaranoAjiGothic-Regular.otf
Name: HaranoAjiGothic-Medium
Class: Japan
+Provides(70): FutoGoB101-Bold
+Provides(70): FutoGoB101Pro-Bold
+Provides(70): HiraKakuProN-W6
+Provides(70): HiraKakuPro-W6
OTFname: HaranoAjiGothic-Medium.otf
Name: HaranoAjiGothic-Bold
Class: Japan
+Provides(70): MidashiGo-MB31
+Provides(70): MidashiGoPro-MB31
+Provides(70): HiraKakuStdN-W8
+Provides(70): HiraKakuStd-W8
OTFname: HaranoAjiGothic-Bold.otf
Name: HaranoAjiGothic-Heavy
Class: Japan
+Provides(70): Jun101-Light
+Provides(70): Jun101Pro-Light
+Provides(70): HiraMaruProN-W4
+Provides(70): HiraMaruPro-W4
OTFname: HaranoAjiGothic-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
index ce9ff48eb2..bb98673dab 100644
--- a/fonts/utilities/cjk-gs-integrate/database/cjkgs-macos-removeonly.dat
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-macos-removeonly.dat
@@ -395,6 +395,7 @@ RMVname(40): 楷体.ttc(3)
Name: STKaiti-Adobe-CNS1
Class: CNS
#Provides(??): MKai-Medium # fails
+Doublecheck: false
TTFname(10): STKaiti.ttf
TTFname(11): STKAITI.TTF
TTFname(20): 华文楷体.ttf
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-microsoft.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-microsoft.dat
index 0c0a373233..68a632360a 100644
--- a/fonts/utilities/cjk-gs-integrate/database/cjkgs-microsoft.dat
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-microsoft.dat
@@ -31,6 +31,12 @@
# are bundled with Office for Mac 2016.
# [TODO] I don't know when the TTC index of msgothic.ttc changed!
+# Office for Mac 2016 (Ver.15.32.0, 2017-03):
+# msgothic.ttc Version 5.10i : old (P -> UI)
+# Office for Mac 2016 (at least Ver.16.16.14, 2019-09):
+# msgothic.ttc Version 5.30 : new (UI -> P)
+# Windows 8.1 (at least 2014-12)
+# msgothic.ttc Version 5.10 : new (UI -> P)
# [TODO] Check about HG* fonts, and move Chinese/Korean fonts
@@ -84,13 +90,13 @@ Doublecheck: true
TTFname(50): MS PGothic.ttf
TTFname(30): MS-PGothic.ttf
TTCname(20): msgothic.ttc(1) # old
-TTCname(20): msgothic.ttc(2) # new
+TTCname(19): msgothic.ttc(2) # new
Name: MS-UIGothic
Class: Japan
Doublecheck: true
TTCname(20): msgothic.ttc(2) # old
-TTCname(20): msgothic.ttc(1) # new
+TTCname(19): msgothic.ttc(1) # new
Name: Meiryo
Class: Japan
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-notosans.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-notosans.dat
index d93b43f73f..1eac4da6dd 100644
--- a/fonts/utilities/cjk-gs-integrate/database/cjkgs-notosans.dat
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-notosans.dat
@@ -1,182 +1,182 @@
# NotoSans
Name: NotoSansCJKjp-Thin
-Class: Japan
+Class: AI0
OTFname(10): NotoSansCJKjp-Thin.otf
OTCname(20): NotoSansCJK-Thin.ttc(0)
Name: NotoSansCJKjp-Light
-Class: Japan
+Class: AI0
OTFname(10): NotoSansCJKjp-Light.otf
OTCname(20): NotoSansCJK-Light.ttc(0)
Name: NotoSansCJKjp-DemiLight
-Class: Japan
+Class: AI0
OTFname(10): NotoSansCJKjp-DemiLight.otf
OTCname(20): NotoSansCJK-DemiLight.ttc(0)
Name: NotoSansCJKjp-Regular
-Class: Japan
+Class: AI0
OTFname(10): NotoSansCJKjp-Regular.otf
OTCname(20): NotoSansCJK-Regular.ttc(0)
Name: NotoSansCJKjp-Medium
-Class: Japan
+Class: AI0
OTFname(10): NotoSansCJKjp-Medium.otf
OTCname(20): NotoSansCJK-Medium.ttc(0)
Name: NotoSansCJKjp-Bold
-Class: Japan
+Class: AI0
OTFname(10): NotoSansCJKjp-Bold.otf
OTCname(20): NotoSansCJK-Bold.ttc(0)
Name: NotoSansCJKjp-Black
-Class: Japan
+Class: AI0
OTFname(10): NotoSansCJKjp-Black.otf
OTCname(20): NotoSansCJK-Black.ttc(0)
Name: NotoSansCJKkr-Thin
-Class: Korea
+Class: AI0
OTFname(10): NotoSansCJKkr-Thin.otf
OTCname(20): NotoSansCJK-Thin.ttc(1)
Name: NotoSansCJKkr-Light
-Class: Korea
+Class: AI0
OTFname(10): NotoSansCJKkr-Light.otf
OTCname(20): NotoSansCJK-Light.ttc(1)
Name: NotoSansCJKkr-DemiLight
-Class: Korea
+Class: AI0
OTFname(10): NotoSansCJKkr-DemiLight.otf
OTCname(20): NotoSansCJK-DemiLight.ttc(1)
Name: NotoSansCJKkr-Regular
-Class: Korea
+Class: AI0
OTFname(10): NotoSansCJKkr-Regular.otf
OTCname(20): NotoSansCJK-Regular.ttc(1)
Name: NotoSansCJKkr-Medium
-Class: Korea
+Class: AI0
OTFname(10): NotoSansCJKkr-Medium.otf
OTCname(20): NotoSansCJK-Medium.ttc(1)
Name: NotoSansCJKkr-Bold
-Class: Korea
+Class: AI0
OTFname(10): NotoSansCJKkr-Bold.otf
OTCname(20): NotoSansCJK-Bold.ttc(1)
Name: NotoSansCJKkr-Black
-Class: Korea
+Class: AI0
OTFname(10): NotoSansCJKkr-Black.otf
OTCname(20): NotoSansCJK-Black.ttc(1)
Name: NotoSansCJKsc-Thin
-Class: GB
+Class: AI0
OTFname(10): NotoSansCJKsc-Thin.otf
OTCname(20): NotoSansCJK-Thin.ttc(2)
Name: NotoSansCJKsc-Light
-Class: GB
+Class: AI0
OTFname(10): NotoSansCJKsc-Light.otf
OTCname(20): NotoSansCJK-Light.ttc(2)
Name: NotoSansCJKsc-DemiLight
-Class: GB
+Class: AI0
OTFname(10): NotoSansCJKsc-DemiLight.otf
OTCname(20): NotoSansCJK-DemiLight.ttc(2)
Name: NotoSansCJKsc-Regular
-Class: GB
+Class: AI0
OTFname(10): NotoSansCJKsc-Regular.otf
OTCname(20): NotoSansCJK-Regular.ttc(2)
Name: NotoSansCJKsc-Medium
-Class: GB
+Class: AI0
OTFname(10): NotoSansCJKsc-Medium.otf
OTCname(20): NotoSansCJK-Medium.ttc(2)
Name: NotoSansCJKsc-Bold
-Class: GB
+Class: AI0
OTFname(10): NotoSansCJKsc-Bold.otf
OTCname(20): NotoSansCJK-Bold.ttc(2)
Name: NotoSansCJKsc-Black
-Class: GB
+Class: AI0
OTFname(10): NotoSansCJKsc-Black.otf
OTCname(20): NotoSansCJK-Black.ttc(2)
Name: NotoSansCJKtc-Thin
-Class: CNS
+Class: AI0
OTFname(10): NotoSansCJKtc-Thin.otf
OTCname(20): NotoSansCJK-Thin.ttc(3)
Name: NotoSansCJKtc-Light
-Class: CNS
+Class: AI0
OTFname(10): NotoSansCJKtc-Light.otf
OTCname(20): NotoSansCJK-Light.ttc(3)
Name: NotoSansCJKtc-DemiLight
-Class: CNS
+Class: AI0
OTFname(10): NotoSansCJKtc-DemiLight.otf
OTCname(20): NotoSansCJK-DemiLight.ttc(3)
Name: NotoSansCJKtc-Regular
-Class: CNS
+Class: AI0
OTFname(10): NotoSansCJKtc-Regular.otf
OTCname(20): NotoSansCJK-Regular.ttc(3)
Name: NotoSansCJKtc-Medium
-Class: CNS
+Class: AI0
OTFname(10): NotoSansCJKtc-Medium.otf
OTCname(20): NotoSansCJK-Medium.ttc(3)
Name: NotoSansCJKtc-Bold
-Class: CNS
+Class: AI0
OTFname(10): NotoSansCJKtc-Bold.otf
OTCname(20): NotoSansCJK-Bold.ttc(3)
Name: NotoSansCJKtc-Black
-Class: CNS
+Class: AI0
OTFname(10): NotoSansCJKtc-Black.otf
OTCname(20): NotoSansCJK-Black.ttc(3)
Name: NotoSansMonoCJKjp-Regular
-Class: Japan
+Class: AI0
OTFname(10): NotoSansMonoCJKjp-Regular.otf
OTCname(20): NotoSansCJK-Regular.ttc(4)
Name: NotoSansMonoCJKjp-Bold
-Class: Japan
+Class: AI0
OTFname(10): NotoSansMonoCJKjp-Bold.otf
OTCname(20): NotoSansCJK-Bold.ttc(4)
Name: NotoSansMonoCJKkr-Regular
-Class: Korea
+Class: AI0
OTFname(10): NotoSansMonoCJKkr-Regular.otf
OTCname(20): NotoSansCJK-Regular.ttc(5)
Name: NotoSansMonoCJKkr-Bold
-Class: Korea
+Class: AI0
OTFname(10): NotoSansMonoCJKkr-Bold.otf
OTCname(20): NotoSansCJK-Bold.ttc(5)
Name: NotoSansMonoCJKsc-Regular
-Class: GB
+Class: AI0
OTFname(10): NotoSansMonoCJKsc-Regular.otf
OTCname(20): NotoSansCJK-Regular.ttc(6)
Name: NotoSansMonoCJKsc-Bold
-Class: GB
+Class: AI0
OTFname(10): NotoSansMonoCJKsc-Bold.otf
OTCname(20): NotoSansCJK-Bold.ttc(6)
Name: NotoSansMonoCJKtc-Regular
-Class: CNS
+Class: AI0
OTFname(10): NotoSansMonoCJKtc-Regular.otf
OTCname(20): NotoSansCJK-Regular.ttc(7)
Name: NotoSansMonoCJKtc-Bold
-Class: CNS
+Class: AI0
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
index e913166807..deac676555 100644
--- a/fonts/utilities/cjk-gs-integrate/database/cjkgs-notoserif.dat
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-notoserif.dat
@@ -1,141 +1,141 @@
# NotoSerif
Name: NotoSerifCJKjp-ExtraLight
-Class: Japan
+Class: AI0
OTFname(10): NotoSerifCJKjp-ExtraLight.otf
OTCname(20): NotoSerifCJK-ExtraLight.ttc(0)
Name: NotoSerifCJKjp-Light
-Class: Japan
+Class: AI0
OTFname(10): NotoSerifCJKjp-Light.otf
OTCname(20): NotoSerifCJK-Light.ttc(0)
Name: NotoSerifCJKjp-Regular
-Class: Japan
+Class: AI0
OTFname(10): NotoSerifCJKjp-Regular.otf
OTCname(20): NotoSerifCJK-Regular.ttc(0)
Name: NotoSerifCJKjp-Medium
-Class: Japan
+Class: AI0
OTFname(10): NotoSerifCJKjp-Medium.otf
OTCname(20): NotoSerifCJK-Medium.ttc(0)
Name: NotoSerifCJKjp-SemiBold
-Class: Japan
+Class: AI0
OTFname(10): NotoSerifCJKjp-SemiBold.otf
OTCname(20): NotoSerifCJK-SemiBold.ttc(0)
Name: NotoSerifCJKjp-Bold
-Class: Japan
+Class: AI0
OTFname(10): NotoSerifCJKjp-Bold.otf
OTCname(20): NotoSerifCJK-Bold.ttc(0)
Name: NotoSerifCJKjp-Black
-Class: Japan
+Class: AI0
OTFname(10): NotoSerifCJKjp-Black.otf
OTCname(20): NotoSerifCJK-Black.ttc(0)
Name: NotoSerifCJKkr-ExtraLight
-Class: Korea
+Class: AI0
OTFname(10): NotoSerifCJKkr-ExtraLight.otf
OTCname(20): NotoSerifCJK-ExtraLight.ttc(1)
Name: NotoSerifCJKkr-Light
-Class: Korea
+Class: AI0
OTFname(10): NotoSerifCJKkr-Light.otf
OTCname(20): NotoSerifCJK-Light.ttc(1)
Name: NotoSerifCJKkr-Regular
-Class: Korea
+Class: AI0
OTFname(10): NotoSerifCJKkr-Regular.otf
OTCname(20): NotoSerifCJK-Regular.ttc(1)
Name: NotoSerifCJKkr-Medium
-Class: Korea
+Class: AI0
OTFname(10): NotoSerifCJKkr-Medium.otf
OTCname(20): NotoSerifCJK-Medium.ttc(1)
Name: NotoSerifCJKkr-SemiBold
-Class: Korea
+Class: AI0
OTFname(10): NotoSerifCJKkr-SemiBold.otf
OTCname(20): NotoSerifCJK-SemiBold.ttc(1)
Name: NotoSerifCJKkr-Bold
-Class: Korea
+Class: AI0
OTFname(10): NotoSerifCJKkr-Bold.otf
OTCname(20): NotoSerifCJK-Bold.ttc(1)
Name: NotoSerifCJKkr-Black
-Class: Korea
+Class: AI0
OTFname(10): NotoSerifCJKkr-Black.otf
OTCname(20): NotoSerifCJK-Black.ttc(1)
Name: NotoSerifCJKsc-ExtraLight
-Class: GB
+Class: AI0
OTFname(10): NotoSerifCJKsc-ExtraLight.otf
OTCname(20): NotoSerifCJK-ExtraLight.ttc(2)
Name: NotoSerifCJKsc-Light
-Class: GB
+Class: AI0
OTFname(10): NotoSerifCJKsc-Light.otf
OTCname(20): NotoSerifCJK-Light.ttc(2)
Name: NotoSerifCJKsc-Regular
-Class: GB
+Class: AI0
OTFname(10): NotoSerifCJKsc-Regular.otf
OTCname(20): NotoSerifCJK-Regular.ttc(2)
Name: NotoSerifCJKsc-Medium
-Class: GB
+Class: AI0
OTFname(10): NotoSerifCJKsc-Medium.otf
OTCname(20): NotoSerifCJK-Medium.ttc(2)
Name: NotoSerifCJKsc-SemiBold
-Class: GB
+Class: AI0
OTFname(10): NotoSerifCJKsc-SemiBold.otf
OTCname(20): NotoSerifCJK-SemiBold.ttc(2)
Name: NotoSerifCJKsc-Bold
-Class: GB
+Class: AI0
OTFname(10): NotoSerifCJKsc-Bold.otf
OTCname(20): NotoSerifCJK-Bold.ttc(2)
Name: NotoSerifCJKsc-Black
-Class: GB
+Class: AI0
OTFname(10): NotoSerifCJKsc-Black.otf
OTCname(20): NotoSerifCJK-Black.ttc(2)
Name: NotoSerifCJKtc-ExtraLight
-Class: CNS
+Class: AI0
OTFname(10): NotoSerifCJKtc-ExtraLight.otf
OTCname(20): NotoSerifCJK-ExtraLight.ttc(3)
Name: NotoSerifCJKtc-Light
-Class: CNS
+Class: AI0
OTFname(10): NotoSerifCJKtc-Light.otf
OTCname(20): NotoSerifCJK-Light.ttc(3)
Name: NotoSerifCJKtc-Regular
-Class: CNS
+Class: AI0
OTFname(10): NotoSerifCJKtc-Regular.otf
OTCname(20): NotoSerifCJK-Regular.ttc(3)
Name: NotoSerifCJKtc-Medium
-Class: CNS
+Class: AI0
OTFname(10): NotoSerifCJKtc-Medium.otf
OTCname(20): NotoSerifCJK-Medium.ttc(3)
Name: NotoSerifCJKtc-SemiBold
-Class: CNS
+Class: AI0
OTFname(10): NotoSerifCJKtc-SemiBold.otf
OTCname(20): NotoSerifCJK-SemiBold.ttc(3)
Name: NotoSerifCJKtc-Bold
-Class: CNS
+Class: AI0
OTFname(10): NotoSerifCJKtc-Bold.otf
OTCname(20): NotoSerifCJK-Bold.ttc(3)
Name: NotoSerifCJKtc-Black
-Class: CNS
+Class: AI0
OTFname(10): NotoSerifCJKtc-Black.otf
OTCname(20): NotoSerifCJK-Black.ttc(3)
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-sinotype.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sinotype.dat
index 37a032391e..49327b229c 100644
--- a/fonts/utilities/cjk-gs-integrate/database/cjkgs-sinotype.dat
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sinotype.dat
@@ -115,6 +115,7 @@ TTFname(20): 华文楷体.ttf
Name: STKaiti-Adobe-CNS1
Class: CNS
#Provides(??): MKai-Medium # fails
+Doublecheck: false
TTFname(10): STKaiti.ttf
TTFname(11): STKAITI.TTF
TTFname(20): 华文楷体.ttf
diff --git a/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehansans.dat b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehansans.dat
index e480b7dc6b..2a0a5f6a36 100644
--- a/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehansans.dat
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehansans.dat
@@ -1,182 +1,254 @@
# SourceHanSans
Name: SourceHanSans-ExtraLight
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSansJP-UTF16-H
+CMap: UniSourceHanSansJP-UTF32-H
OTFname(10): SourceHanSans-ExtraLight.otf
OTCname(20): SourceHanSans-ExtraLight.ttc(0)
Name: SourceHanSans-Light
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSansJP-UTF16-H
+CMap: UniSourceHanSansJP-UTF32-H
OTFname(10): SourceHanSans-Light.otf
OTCname(20): SourceHanSans-Light.ttc(0)
Name: SourceHanSans-Normal
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSansJP-UTF16-H
+CMap: UniSourceHanSansJP-UTF32-H
OTFname(10): SourceHanSans-Normal.otf
OTCname(20): SourceHanSans-Normal.ttc(0)
Name: SourceHanSans-Regular
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSansJP-UTF16-H
+CMap: UniSourceHanSansJP-UTF32-H
OTFname(10): SourceHanSans-Regular.otf
OTCname(20): SourceHanSans-Regular.ttc(0)
Name: SourceHanSans-Medium
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSansJP-UTF16-H
+CMap: UniSourceHanSansJP-UTF32-H
OTFname(10): SourceHanSans-Medium.otf
OTCname(20): SourceHanSans-Medium.ttc(0)
Name: SourceHanSans-Bold
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSansJP-UTF16-H
+CMap: UniSourceHanSansJP-UTF32-H
OTFname(10): SourceHanSans-Bold.otf
OTCname(20): SourceHanSans-Bold.ttc(0)
Name: SourceHanSans-Heavy
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSansJP-UTF16-H
+CMap: UniSourceHanSansJP-UTF32-H
OTFname(10): SourceHanSans-Heavy.otf
OTCname(20): SourceHanSans-Heavy.ttc(0)
Name: SourceHanSansK-ExtraLight
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSansKR-UTF16-H
+CMap: UniSourceHanSansKR-UTF32-H
OTFname(10): SourceHanSansK-ExtraLight.otf
OTCname(20): SourceHanSans-ExtraLight.ttc(1)
Name: SourceHanSansK-Light
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSansKR-UTF16-H
+CMap: UniSourceHanSansKR-UTF32-H
OTFname(10): SourceHanSansK-Light.otf
OTCname(20): SourceHanSans-Light.ttc(1)
Name: SourceHanSansK-Normal
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSansKR-UTF16-H
+CMap: UniSourceHanSansKR-UTF32-H
OTFname(10): SourceHanSansK-Normal.otf
OTCname(20): SourceHanSans-Normal.ttc(1)
Name: SourceHanSansK-Regular
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSansKR-UTF16-H
+CMap: UniSourceHanSansKR-UTF32-H
OTFname(10): SourceHanSansK-Regular.otf
OTCname(20): SourceHanSans-Regular.ttc(1)
Name: SourceHanSansK-Medium
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSansKR-UTF16-H
+CMap: UniSourceHanSansKR-UTF32-H
OTFname(10): SourceHanSansK-Medium.otf
OTCname(20): SourceHanSans-Medium.ttc(1)
Name: SourceHanSansK-Bold
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSansKR-UTF16-H
+CMap: UniSourceHanSansKR-UTF32-H
OTFname(10): SourceHanSansK-Bold.otf
OTCname(20): SourceHanSans-Bold.ttc(1)
Name: SourceHanSansK-Heavy
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSansKR-UTF16-H
+CMap: UniSourceHanSansKR-UTF32-H
OTFname(10): SourceHanSansK-Heavy.otf
OTCname(20): SourceHanSans-Heavy.ttc(1)
Name: SourceHanSansSC-ExtraLight
-Class: GB
+Class: AI0
+CMap: UniSourceHanSansCN-UTF16-H
+CMap: UniSourceHanSansCN-UTF32-H
OTFname(10): SourceHanSansSC-ExtraLight.otf
OTCname(20): SourceHanSans-ExtraLight.ttc(2)
Name: SourceHanSansSC-Light
-Class: GB
+Class: AI0
+CMap: UniSourceHanSansCN-UTF16-H
+CMap: UniSourceHanSansCN-UTF32-H
OTFname(10): SourceHanSansSC-Light.otf
OTCname(20): SourceHanSans-Light.ttc(2)
Name: SourceHanSansSC-Normal
-Class: GB
+Class: AI0
+CMap: UniSourceHanSansCN-UTF16-H
+CMap: UniSourceHanSansCN-UTF32-H
OTFname(10): SourceHanSansSC-Normal.otf
OTCname(20): SourceHanSans-Normal.ttc(2)
Name: SourceHanSansSC-Regular
-Class: GB
+Class: AI0
+CMap: UniSourceHanSansCN-UTF16-H
+CMap: UniSourceHanSansCN-UTF32-H
OTFname(10): SourceHanSansSC-Regular.otf
OTCname(20): SourceHanSans-Regular.ttc(2)
Name: SourceHanSansSC-Medium
-Class: GB
+Class: AI0
+CMap: UniSourceHanSansCN-UTF16-H
+CMap: UniSourceHanSansCN-UTF32-H
OTFname(10): SourceHanSansSC-Medium.otf
OTCname(20): SourceHanSans-Medium.ttc(2)
Name: SourceHanSansSC-Bold
-Class: GB
+Class: AI0
+CMap: UniSourceHanSansCN-UTF16-H
+CMap: UniSourceHanSansCN-UTF32-H
OTFname(10): SourceHanSansSC-Bold.otf
OTCname(20): SourceHanSans-Bold.ttc(2)
Name: SourceHanSansSC-Heavy
-Class: GB
+Class: AI0
+CMap: UniSourceHanSansCN-UTF16-H
+CMap: UniSourceHanSansCN-UTF32-H
OTFname(10): SourceHanSansSC-Heavy.otf
OTCname(20): SourceHanSans-Heavy.ttc(2)
Name: SourceHanSansTC-ExtraLight
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSansTW-UTF16-H
+CMap: UniSourceHanSansTW-UTF32-H
OTFname(10): SourceHanSansTC-ExtraLight.otf
OTCname(20): SourceHanSans-ExtraLight.ttc(3)
Name: SourceHanSansTC-Light
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSansTW-UTF16-H
+CMap: UniSourceHanSansTW-UTF32-H
OTFname(10): SourceHanSansTC-Light.otf
OTCname(20): SourceHanSans-Light.ttc(3)
Name: SourceHanSansTC-Normal
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSansTW-UTF16-H
+CMap: UniSourceHanSansTW-UTF32-H
OTFname(10): SourceHanSansTC-Normal.otf
OTCname(20): SourceHanSans-Normal.ttc(3)
Name: SourceHanSansTC-Regular
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSansTW-UTF16-H
+CMap: UniSourceHanSansTW-UTF32-H
OTFname(10): SourceHanSansTC-Regular.otf
OTCname(20): SourceHanSans-Regular.ttc(3)
Name: SourceHanSansTC-Medium
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSansTW-UTF16-H
+CMap: UniSourceHanSansTW-UTF32-H
OTFname(10): SourceHanSansTC-Medium.otf
OTCname(20): SourceHanSans-Medium.ttc(3)
Name: SourceHanSansTC-Bold
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSansTW-UTF16-H
+CMap: UniSourceHanSansTW-UTF32-H
OTFname(10): SourceHanSansTC-Bold.otf
OTCname(20): SourceHanSans-Bold.ttc(3)
Name: SourceHanSansTC-Heavy
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSansTW-UTF16-H
+CMap: UniSourceHanSansTW-UTF32-H
OTFname(10): SourceHanSansTC-Heavy.otf
OTCname(20): SourceHanSans-Heavy.ttc(3)
Name: SourceHanSansHW-Regular
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSansHWJP-UTF16-H
+CMap: UniSourceHanSansHWJP-UTF32-H
OTFname(10): SourceHanSansHW-Regular.otf
OTCname(20): SourceHanSans-Regular.ttc(4)
Name: SourceHanSansHW-Bold
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSansHWJP-UTF16-H
+CMap: UniSourceHanSansHWJP-UTF32-H
OTFname(10): SourceHanSansHW-Bold.otf
OTCname(20): SourceHanSans-Bold.ttc(4)
Name: SourceHanSansHWK-Regular
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSansHWKR-UTF16-H
+CMap: UniSourceHanSansHWKR-UTF32-H
OTFname(10): SourceHanSansHWK-Regular.otf
OTCname(20): SourceHanSans-Regular.ttc(5)
Name: SourceHanSansHWK-Bold
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSansHWKR-UTF16-H
+CMap: UniSourceHanSansHWKR-UTF32-H
OTFname(10): SourceHanSansHWK-Bold.otf
OTCname(20): SourceHanSans-Bold.ttc(5)
Name: SourceHanSansHWSC-Regular
-Class: GB
+Class: AI0
+CMap: UniSourceHanSansHWCN-UTF16-H
+CMap: UniSourceHanSansHWCN-UTF32-H
OTFname(10): SourceHanSansHWSC-Regular.otf
OTCname(20): SourceHanSans-Regular.ttc(6)
Name: SourceHanSansHWSC-Bold
-Class: GB
+Class: AI0
+CMap: UniSourceHanSansHWCN-UTF16-H
+CMap: UniSourceHanSansHWCN-UTF32-H
OTFname(10): SourceHanSansHWSC-Bold.otf
OTCname(20): SourceHanSans-Bold.ttc(6)
Name: SourceHanSansHWTC-Regular
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSansHWTW-UTF16-H
+CMap: UniSourceHanSansHWTW-UTF32-H
OTFname(10): SourceHanSansHWTC-Regular.otf
OTCname(20): SourceHanSans-Regular.ttc(7)
Name: SourceHanSansHWTC-Bold
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSansHWTW-UTF16-H
+CMap: UniSourceHanSansHWTW-UTF32-H
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
index a3c3ec1bee..1189c4f749 100644
--- a/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehanserif.dat
+++ b/fonts/utilities/cjk-gs-integrate/database/cjkgs-sourcehanserif.dat
@@ -1,142 +1,198 @@
# SourceHanSerif
Name: SourceHanSerif-ExtraLight
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSerifJP-UTF16-H
+CMap: UniSourceHanSerifJP-UTF32-H
OTFname(10): SourceHanSerif-ExtraLight.otf
OTCname(20): SourceHanSerif-ExtraLight.ttc(0)
Name: SourceHanSerif-Light
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSerifJP-UTF16-H
+CMap: UniSourceHanSerifJP-UTF32-H
OTFname(10): SourceHanSerif-Light.otf
OTCname(20): SourceHanSerif-Light.ttc(0)
Name: SourceHanSerif-Regular
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSerifJP-UTF16-H
+CMap: UniSourceHanSerifJP-UTF32-H
OTFname(10): SourceHanSerif-Regular.otf
OTCname(20): SourceHanSerif-Regular.ttc(0)
Name: SourceHanSerif-Medium
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSerifJP-UTF16-H
+CMap: UniSourceHanSerifJP-UTF32-H
OTFname(10): SourceHanSerif-Medium.otf
OTCname(20): SourceHanSerif-Medium.ttc(0)
Name: SourceHanSerif-SemiBold
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSerifJP-UTF16-H
+CMap: UniSourceHanSerifJP-UTF32-H
OTFname(10): SourceHanSerif-SemiBold.otf
OTCname(20): SourceHanSerif-SemiBold.ttc(0)
Name: SourceHanSerif-Bold
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSerifJP-UTF16-H
+CMap: UniSourceHanSerifJP-UTF32-H
OTFname(10): SourceHanSerif-Bold.otf
OTCname(20): SourceHanSerif-Bold.ttc(0)
Name: SourceHanSerif-Heavy
-Class: Japan
+Class: AI0
+CMap: UniSourceHanSerifJP-UTF16-H
+CMap: UniSourceHanSerifJP-UTF32-H
OTFname(10): SourceHanSerif-Heavy.otf
OTCname(20): SourceHanSerif-Heavy.ttc(0)
Name: SourceHanSerifK-ExtraLight
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSerifKR-UTF16-H
+CMap: UniSourceHanSerifKR-UTF32-H
OTFname(10): SourceHanSerifK-ExtraLight.otf
OTCname(20): SourceHanSerif-ExtraLight.ttc(1)
Name: SourceHanSerifK-Light
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSerifKR-UTF16-H
+CMap: UniSourceHanSerifKR-UTF32-H
OTFname(10): SourceHanSerifK-Light.otf
OTCname(20): SourceHanSerif-Light.ttc(1)
Name: SourceHanSerifK-Regular
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSerifKR-UTF16-H
+CMap: UniSourceHanSerifKR-UTF32-H
OTFname(10): SourceHanSerifK-Regular.otf
OTCname(20): SourceHanSerif-Regular.ttc(1)
Name: SourceHanSerifK-Medium
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSerifKR-UTF16-H
+CMap: UniSourceHanSerifKR-UTF32-H
OTFname(10): SourceHanSerifK-Medium.otf
OTCname(20): SourceHanSerif-Medium.ttc(1)
Name: SourceHanSerifK-SemiBold
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSerifKR-UTF16-H
+CMap: UniSourceHanSerifKR-UTF32-H
OTFname(10): SourceHanSerifK-SemiBold.otf
OTCname(20): SourceHanSerif-SemiBold.ttc(1)
Name: SourceHanSerifK-Bold
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSerifKR-UTF16-H
+CMap: UniSourceHanSerifKR-UTF32-H
OTFname(10): SourceHanSerifK-Bold.otf
OTCname(20): SourceHanSerif-Bold.ttc(1)
Name: SourceHanSerifK-Heavy
-Class: Korea
+Class: AI0
+CMap: UniSourceHanSerifKR-UTF16-H
+CMap: UniSourceHanSerifKR-UTF32-H
OTFname(10): SourceHanSerifK-Heavy.otf
OTCname(20): SourceHanSerif-Heavy.ttc(1)
Name: SourceHanSerifSC-ExtraLight
-Class: GB
+Class: AI0
+CMap: UniSourceHanSerifCN-UTF16-H
+CMap: UniSourceHanSerifCN-UTF32-H
OTFname(10): SourceHanSerifSC-ExtraLight.otf
OTCname(20): SourceHanSerif-ExtraLight.ttc(2)
Name: SourceHanSerifSC-Light
-Class: GB
+Class: AI0
+CMap: UniSourceHanSerifCN-UTF16-H
+CMap: UniSourceHanSerifCN-UTF32-H
OTFname(10): SourceHanSerifSC-Light.otf
OTCname(20): SourceHanSerif-Light.ttc(2)
Name: SourceHanSerifSC-Regular
-Class: GB
+Class: AI0
+CMap: UniSourceHanSerifCN-UTF16-H
+CMap: UniSourceHanSerifCN-UTF32-H
OTFname(10): SourceHanSerifSC-Regular.otf
OTCname(20): SourceHanSerif-Regular.ttc(2)
Name: SourceHanSerifSC-Medium
-Class: GB
+Class: AI0
+CMap: UniSourceHanSerifCN-UTF16-H
+CMap: UniSourceHanSerifCN-UTF32-H
OTFname(10): SourceHanSerifSC-Medium.otf
OTCname(20): SourceHanSerif-Medium.ttc(2)
Name: SourceHanSerifSC-SemiBold
-Class: GB
+Class: AI0
+CMap: UniSourceHanSerifCN-UTF16-H
+CMap: UniSourceHanSerifCN-UTF32-H
OTFname(10): SourceHanSerifSC-SemiBold.otf
OTCname(20): SourceHanSerif-SemiBold.ttc(2)
Name: SourceHanSerifSC-Bold
-Class: GB
+Class: AI0
+CMap: UniSourceHanSerifCN-UTF16-H
+CMap: UniSourceHanSerifCN-UTF32-H
OTFname(10): SourceHanSerifSC-Bold.otf
OTCname(20): SourceHanSerif-Bold.ttc(2)
Name: SourceHanSerifSC-Heavy
-Class: GB
+Class: AI0
+CMap: UniSourceHanSerifCN-UTF16-H
+CMap: UniSourceHanSerifCN-UTF32-H
OTFname(10): SourceHanSerifSC-Heavy.otf
OTCname(20): SourceHanSerif-Heavy.ttc(2)
Name: SourceHanSerifTC-ExtraLight
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSerifTW-UTF16-H
+CMap: UniSourceHanSerifTW-UTF32-H
OTFname(10): SourceHanSerifTC-ExtraLight.otf
OTCname(20): SourceHanSerif-ExtraLight.ttc(3)
Name: SourceHanSerifTC-Light
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSerifTW-UTF16-H
+CMap: UniSourceHanSerifTW-UTF32-H
OTFname(10): SourceHanSerifTC-Light.otf
OTCname(20): SourceHanSerif-Light.ttc(3)
Name: SourceHanSerifTC-Regular
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSerifTW-UTF16-H
+CMap: UniSourceHanSerifTW-UTF32-H
OTFname(10): SourceHanSerifTC-Regular.otf
OTCname(20): SourceHanSerif-Regular.ttc(3)
Name: SourceHanSerifTC-Medium
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSerifTW-UTF16-H
+CMap: UniSourceHanSerifTW-UTF32-H
OTFname(10): SourceHanSerifTC-Medium.otf
OTCname(20): SourceHanSerif-Medium.ttc(3)
Name: SourceHanSerifTC-SemiBold
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSerifTW-UTF16-H
+CMap: UniSourceHanSerifTW-UTF32-H
OTFname(10): SourceHanSerifTC-SemiBold.otf
OTCname(20): SourceHanSerif-SemiBold.ttc(3)
Name: SourceHanSerifTC-Bold
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSerifTW-UTF16-H
+CMap: UniSourceHanSerifTW-UTF32-H
OTFname(10): SourceHanSerifTC-Bold.otf
OTCname(20): SourceHanSerif-Bold.ttc(3)
Name: SourceHanSerifTC-Heavy
-Class: CNS
+Class: AI0
+CMap: UniSourceHanSerifTW-UTF16-H
+CMap: UniSourceHanSerifTW-UTF32-H
OTFname(10): SourceHanSerifTC-Heavy.otf
OTCname(20): SourceHanSerif-Heavy.ttc(3)