texlive[54155] trunk: cjk-gs-integrate (7mar20)

commits+karl at tug.org commits+karl at tug.org
Sat Mar 7 22:39:27 CET 2020


Revision: 54155
          http://tug.org/svn/texlive?view=revision&revision=54155
Author:   karl
Date:     2020-03-07 22:39:27 +0100 (Sat, 07 Mar 2020)
Log Message:
-----------
cjk-gs-integrate (7mar20)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/cjk-gs-integrate/cjk-gs-integrate.pl
    trunk/Master/texmf-dist/doc/fonts/cjk-gs-integrate/ChangeLog
    trunk/Master/texmf-dist/doc/fonts/cjk-gs-integrate/README.md
    trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-haranoaji.dat
    trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-macos-removeonly.dat
    trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-microsoft.dat
    trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notosans.dat
    trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notoserif.dat
    trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sinotype.dat
    trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehansans.dat
    trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehanserif.dat
    trunk/Master/texmf-dist/scripts/cjk-gs-integrate/cjk-gs-integrate.pl

Modified: trunk/Build/source/texk/texlive/linked_scripts/cjk-gs-integrate/cjk-gs-integrate.pl
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/cjk-gs-integrate/cjk-gs-integrate.pl	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Build/source/texk/texlive/linked_scripts/cjk-gs-integrate/cjk-gs-integrate.pl	2020-03-07 21:39:27 UTC (rev 54155)
@@ -39,7 +39,7 @@
 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 @@
   }
   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 @@
   #
   $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 @@
       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 @@
   $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_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 @@
     $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 @@
     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 @@
 # 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 @@
       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 @@
     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 @@
       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 @@
           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 @@
   my (@curdbl) = @_;
   my $fontname = "";
   my $fontclass = "";
+  my @fontcmaps = ();
   my %fontprovides = ();
   my $fontdoublecheck = "";
   my %fontfiles;
@@ -1658,6 +1741,11 @@
           $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));
           }
@@ -1664,6 +1752,7 @@
           # reset to start
           $fontname = $fontclass = $psname = "";
           $fontdoublecheck = "";
+          @fontcmaps = ();
           %fontfiles = ();
           %fontprovides = ();
         } else {
@@ -1671,6 +1760,7 @@
           # reset to start
           $fontname = $fontclass = $psname = "";
           $fontdoublecheck = "";
+          @fontcmaps = ();
           %fontfiles = ();
           %fontprovides = ();
         }
@@ -1709,6 +1799,7 @@
     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 @@
   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 @@
 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 @@
 # 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 @@
 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

Modified: trunk/Master/texmf-dist/doc/fonts/cjk-gs-integrate/ChangeLog
===================================================================
--- trunk/Master/texmf-dist/doc/fonts/cjk-gs-integrate/ChangeLog	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Master/texmf-dist/doc/fonts/cjk-gs-integrate/ChangeLog	2020-03-07 21:39:27 UTC (rev 54155)
@@ -1,11 +1,99 @@
+2020-03-07  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* Release 20200307.0 (HEAD -> master) [57531f5]
+
+2020-03-07  Hironobu Yamashita  <h.y.acetaminophen at 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 at 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 at gmail.com>
+
+	* fix database for MalgunGothic (#28) [bccb1a5]
+
+2020-03-07  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* comment [8f64741]
+
+2020-03-07  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* improve hidden debug option --strict-psname [c037fe3]
+
+2020-03-07  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* typo in warning [53d0a58]
+
+2020-03-07  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* don't add symlinking AI0 CMaps when real fonts are unavailable [5ce4c52]
+
+2020-03-07  Masamichi Hosoda  <trueroad at trueroad.jp>
+
+	* Add search_cmap (trueroad/add-kpsewhich-cmap-cache) [b0b0b09]
+
+2020-03-07  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* 'CMap:' entry is unsupported for class other than AI0 (trueroad/master) [f499f39]
+
+2020-03-05  Masamichi Hosoda  <trueroad at trueroad.jp>
+
+	* Add warning when AI0 is specified for non-OTF (trueroad/add-ai0-cmap) [0d8bceb]
+
+2020-03-05  Masamichi Hosoda  <trueroad at trueroad.jp>
+
+	* Add AI0 font alias handling [37a8f77]
+
+2020-03-03  Masamichi Hosoda  <trueroad at trueroad.jp>
+
+	* Add CMap parameters to the database for sourcehan [adac7e5]
+
+2020-03-03  Masamichi Hosoda  <trueroad at trueroad.jp>
+
+	* Change the class of AI0 fonts to AI0 in the database [9a47a63]
+
+2020-03-03  Masamichi Hosoda  <trueroad at trueroad.jp>
+
+	* Add database class AI0 and parameter CMap for AI0 fonts [96b7811]
+
+2020-03-05  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* HaranoAji -> J70 [e29c9a2]
+
+2020-03-05  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* Merge remote-tracking branch 'trueroad/add-haranoaji-alias' [7c68c9e]
+
+2020-03-05  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* reduce kpsewhich call [c8f9877]
+
+2020-03-04  Masamichi Hosoda  <trueroad at trueroad.jp>
+
+	* Add removing CMap files when `--remove` option (trueroad/add-symlinking-cmaps) [534e4de]
+
+2020-03-04  Masamichi Hosoda  <trueroad at trueroad.jp>
+
+	* Add symlinking CMap files used by created snippets [a354a37]
+
+2020-03-03  Masamichi Hosoda  <trueroad at trueroad.jp>
+
+	* Add haranoaji for aliases (trueroad/add-haranoaji-alias) [78a8a63]
+
 2020-01-15  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
 
-	* Release 20200115.0 (HEAD -> master) [2eba287]
+	* more info on debug message [9bf9f64]
 
 2020-01-15  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
 
-	* copyright year (origin/master, origin/HEAD) [ec0590e]
+	* Release 20200115.0 (tag: 20200115.0) [2eba287]
 
+2020-01-15  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* copyright year [ec0590e]
+
 2020-01-14  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
 
 	* fix for incompatible change in msgothic.ttc index [14485c6]
@@ -36,7 +124,7 @@
 
 2019-09-04  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
 
-	* code cleanup (zrlistttc) [840be09]
+	* code cleanup [840be09]
 
 2019-09-04  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
 
@@ -56,7 +144,7 @@
 
 2019-09-01  Hironobu Yamashita  <h.y.acetaminophen at 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 at gmail.com>
 

Modified: trunk/Master/texmf-dist/doc/fonts/cjk-gs-integrate/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/fonts/cjk-gs-integrate/README.md	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Master/texmf-dist/doc/fonts/cjk-gs-integrate/README.md	2020-03-07 21:39:27 UTC (rev 54155)
@@ -191,6 +191,7 @@
 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
 

Modified: trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-haranoaji.dat
===================================================================
--- trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-haranoaji.dat	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-haranoaji.dat	2020-03-07 21:39:27 UTC (rev 54155)
@@ -8,10 +8,16 @@
 
 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 @@
 
 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 @@
 
 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
 

Modified: trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-macos-removeonly.dat
===================================================================
--- trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-macos-removeonly.dat	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-macos-removeonly.dat	2020-03-07 21:39:27 UTC (rev 54155)
@@ -395,6 +395,7 @@
 Name: STKaiti-Adobe-CNS1
 Class: CNS
 #Provides(??): MKai-Medium # fails
+Doublecheck: false
 TTFname(10): STKaiti.ttf
 TTFname(11): STKAITI.TTF
 TTFname(20): 华文楷体.ttf

Modified: trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-microsoft.dat
===================================================================
--- trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-microsoft.dat	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-microsoft.dat	2020-03-07 21:39:27 UTC (rev 54155)
@@ -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 @@
 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

Modified: trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notosans.dat
===================================================================
--- trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notosans.dat	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notosans.dat	2020-03-07 21:39:27 UTC (rev 54155)
@@ -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)
 

Modified: trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notoserif.dat
===================================================================
--- trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notoserif.dat	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notoserif.dat	2020-03-07 21:39:27 UTC (rev 54155)
@@ -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)

Modified: trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sinotype.dat
===================================================================
--- trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sinotype.dat	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sinotype.dat	2020-03-07 21:39:27 UTC (rev 54155)
@@ -115,6 +115,7 @@
 Name: STKaiti-Adobe-CNS1
 Class: CNS
 #Provides(??): MKai-Medium # fails
+Doublecheck: false
 TTFname(10): STKaiti.ttf
 TTFname(11): STKAITI.TTF
 TTFname(20): 华文楷体.ttf

Modified: trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehansans.dat
===================================================================
--- trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehansans.dat	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehansans.dat	2020-03-07 21:39:27 UTC (rev 54155)
@@ -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)
 

Modified: trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehanserif.dat
===================================================================
--- trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehanserif.dat	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehanserif.dat	2020-03-07 21:39:27 UTC (rev 54155)
@@ -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)
 

Modified: trunk/Master/texmf-dist/scripts/cjk-gs-integrate/cjk-gs-integrate.pl
===================================================================
--- trunk/Master/texmf-dist/scripts/cjk-gs-integrate/cjk-gs-integrate.pl	2020-03-07 21:39:08 UTC (rev 54154)
+++ trunk/Master/texmf-dist/scripts/cjk-gs-integrate/cjk-gs-integrate.pl	2020-03-07 21:39:27 UTC (rev 54155)
@@ -39,7 +39,7 @@
 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 @@
   }
   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 @@
   #
   $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 @@
       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 @@
   $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_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 @@
     $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 @@
     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 @@
 # 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 @@
       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 @@
     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 @@
       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 @@
           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 @@
   my (@curdbl) = @_;
   my $fontname = "";
   my $fontclass = "";
+  my @fontcmaps = ();
   my %fontprovides = ();
   my $fontdoublecheck = "";
   my %fontfiles;
@@ -1658,6 +1741,11 @@
           $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));
           }
@@ -1664,6 +1752,7 @@
           # reset to start
           $fontname = $fontclass = $psname = "";
           $fontdoublecheck = "";
+          @fontcmaps = ();
           %fontfiles = ();
           %fontprovides = ();
         } else {
@@ -1671,6 +1760,7 @@
           # reset to start
           $fontname = $fontclass = $psname = "";
           $fontdoublecheck = "";
+          @fontcmaps = ();
           %fontfiles = ();
           %fontprovides = ();
         }
@@ -1709,6 +1799,7 @@
     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 @@
   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 @@
 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 @@
 # 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 @@
 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



More information about the tex-live-commits mailing list.