diff options
12 files changed, 627 insertions, 154 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/cjk-gs-integrate/cjk-gs-integrate.pl b/Build/source/texk/texlive/linked_scripts/cjk-gs-integrate/cjk-gs-integrate.pl index 2dbfdd49b01..270600e38fa 100755 --- a/Build/source/texk/texlive/linked_scripts/cjk-gs-integrate/cjk-gs-integrate.pl +++ b/Build/source/texk/texlive/linked_scripts/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/Master/texmf-dist/doc/fonts/cjk-gs-integrate/ChangeLog b/Master/texmf-dist/doc/fonts/cjk-gs-integrate/ChangeLog index 33491958dd2..c09836b0910 100644 --- a/Master/texmf-dist/doc/fonts/cjk-gs-integrate/ChangeLog +++ b/Master/texmf-dist/doc/fonts/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/Master/texmf-dist/doc/fonts/cjk-gs-integrate/README.md b/Master/texmf-dist/doc/fonts/cjk-gs-integrate/README.md index 9f948f7b24b..a3081b78fd1 100644 --- a/Master/texmf-dist/doc/fonts/cjk-gs-integrate/README.md +++ b/Master/texmf-dist/doc/fonts/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/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-haranoaji.dat b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-haranoaji.dat index e3517f67d3c..686e1732711 100644 --- a/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-haranoaji.dat +++ b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/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/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-macos-removeonly.dat b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-macos-removeonly.dat index ce9ff48eb27..bb98673dab4 100644 --- a/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-macos-removeonly.dat +++ b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/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/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-microsoft.dat b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-microsoft.dat index 0c0a373233b..68a632360a0 100644 --- a/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-microsoft.dat +++ b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/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/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notosans.dat b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notosans.dat index d93b43f73fb..1eac4da6ddd 100644 --- a/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notosans.dat +++ b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/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/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notoserif.dat b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notoserif.dat index e9131668073..deac6765555 100644 --- a/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-notoserif.dat +++ b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/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/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sinotype.dat b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sinotype.dat index 37a032391e2..49327b229ca 100644 --- a/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sinotype.dat +++ b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/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/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehansans.dat b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehansans.dat index e480b7dc6ba..2a0a5f6a363 100644 --- a/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehansans.dat +++ b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/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/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehanserif.dat b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehanserif.dat index a3c3ec1beea..1189c4f7492 100644 --- a/Master/texmf-dist/fonts/misc/cjk-gs-integrate/cjkgs-sourcehanserif.dat +++ b/Master/texmf-dist/fonts/misc/cjk-gs-integrate/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) diff --git a/Master/texmf-dist/scripts/cjk-gs-integrate/cjk-gs-integrate.pl b/Master/texmf-dist/scripts/cjk-gs-integrate/cjk-gs-integrate.pl index 2dbfdd49b01..270600e38fa 100755 --- a/Master/texmf-dist/scripts/cjk-gs-integrate/cjk-gs-integrate.pl +++ b/Master/texmf-dist/scripts/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 |