texlive[56697] Build/source/texk/dvipdfm-x: Extension to load user

commits+kakuto at tug.org commits+kakuto at tug.org
Sun Oct 18 22:56:51 CEST 2020


Revision: 56697
          http://tug.org/svn/texlive?view=revision&revision=56697
Author:   kakuto
Date:     2020-10-18 22:56:51 +0200 (Sun, 18 Oct 2020)
Log Message:
-----------
Extension to load user defined CID-to-GID mapping for TrueType fonts. (S. Hirata)

Modified Paths:
--------------
    trunk/Build/source/texk/dvipdfm-x/ChangeLog
    trunk/Build/source/texk/dvipdfm-x/cidtype0.c
    trunk/Build/source/texk/dvipdfm-x/cidtype2.c
    trunk/Build/source/texk/dvipdfm-x/configure
    trunk/Build/source/texk/dvipdfm-x/configure.ac
    trunk/Build/source/texk/dvipdfm-x/data/dvipdfmx.cfg
    trunk/Build/source/texk/dvipdfm-x/type0.c

Added Paths:
-----------
    trunk/Build/source/texk/dvipdfm-x/data/Adobe-Japan1-YuMincho-Regular

Modified: trunk/Build/source/texk/dvipdfm-x/ChangeLog
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/ChangeLog	2020-10-18 20:51:26 UTC (rev 56696)
+++ trunk/Build/source/texk/dvipdfm-x/ChangeLog	2020-10-18 20:56:51 UTC (rev 56697)
@@ -1,3 +1,15 @@
+2020-10-19  Shunsaku Hirata  <shunsaku.hirata74 at gmail.com>
+
+	* cidtype0.c, cidtype2.c, type0.c: User defined CID-to-GID
+	PostScript CMap with filename of the form
+	REGISTRY-ORDERING-PSFontName can be loaded (if exist) for
+	mapping CIDs to GIDs. This feature can be used for directory
+	mapping CIDs to GIDs instead of
+	CID -> to-code CMaps -> TrueType cmap -> GID route.
+	* data/Adobe-Japan1-YuMincho-Regular: An example of CID-to-GID
+	CMap file.
+	* configure.ac: Version 20201019.
+
 2020-10-14  Shunsaku Hirata  <shunsaku.hirata74 at gmail.com>
 
 	* tt_cmap.c: Fix a bug that checking array indices is wrong.

Modified: trunk/Build/source/texk/dvipdfm-x/cidtype0.c
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/cidtype0.c	2020-10-18 20:51:26 UTC (rev 56696)
+++ trunk/Build/source/texk/dvipdfm-x/cidtype0.c	2020-10-18 20:56:51 UTC (rev 56697)
@@ -823,18 +823,19 @@
                pdf_new_name("Subtype"),
                pdf_new_name("CIDFontType0"));
 
-  memmove(fontname + 7, fontname, strlen(fontname) + 1);
-  pdf_font_make_uniqueTag(fontname); 
-  fontname[6] = '+';
+  pdf_font_make_uniqueTag(font->uniqueID); 
 
   font->descriptor = pdf_new_dict();
-  pdf_add_dict(font->descriptor,
-               pdf_new_name("FontName"),
-               pdf_new_name(fontname));
-  pdf_add_dict(font->resource, 
-               pdf_new_name("BaseFont"),
-               pdf_new_name(fontname));
   {
+    char *tmp;
+    
+    tmp = NEW(strlen(font->fontname)+8, char);
+    sprintf(tmp, "%s+%s", font->uniqueID, font->fontname);
+    pdf_add_dict(font->descriptor, pdf_new_name("FontName"), pdf_new_name(tmp));
+    pdf_add_dict(font->resource,   pdf_new_name("BaseFont"), pdf_new_name(tmp));
+    RELEASE(tmp);
+  }
+  {
     pdf_obj *csi_dict = pdf_new_dict();
     pdf_add_dict(csi_dict,
                  pdf_new_name("Registry"),
@@ -971,17 +972,18 @@
                pdf_new_name("CIDFontType0"));
 
   if (opt->embed) {
-    memmove(fontname + 7, fontname, strlen(fontname) + 1);
-    pdf_font_make_uniqueTag(fontname); 
-    fontname[6] = '+';
+    char *tmp;
+
+    tmp = NEW(strlen(font->fontname)+8, char);
+    pdf_font_make_uniqueTag(font->uniqueID);
+    sprintf(tmp, "%s+%s", font->uniqueID, font->fontname);
+    pdf_add_dict(font->descriptor, pdf_new_name("FontName"), pdf_new_name(tmp));
+    pdf_add_dict(font->resource,   pdf_new_name("BaseFont"), pdf_new_name(tmp));
+    RELEASE(tmp);
+  } else {
+    pdf_add_dict(font->descriptor, pdf_new_name("FontName"), pdf_new_name(font->fontname));
+    pdf_add_dict(font->resource,   pdf_new_name("BaseFont"), pdf_new_name(font->fontname));
   }
-
-  pdf_add_dict(font->descriptor,
-               pdf_new_name("FontName"),
-               pdf_new_name(fontname));
-  pdf_add_dict(font->resource, 
-               pdf_new_name("BaseFont"),
-               pdf_new_name(fontname));
   {
     pdf_obj *csi_dict = pdf_new_dict();
     pdf_add_dict(csi_dict,
@@ -1118,17 +1120,18 @@
                pdf_new_name("CIDFontType0"));
 
   if (opt->embed) {
-    memmove(fontname + 7, fontname, strlen(fontname) + 1);
-    pdf_font_make_uniqueTag(fontname); 
-    fontname[6] = '+';
+    char *tmp;
+
+    tmp = NEW(strlen(font->fontname)+8, char);
+    pdf_font_make_uniqueTag(font->uniqueID);
+    sprintf(tmp, "%s+%s", font->uniqueID, font->fontname);
+    pdf_add_dict(font->descriptor, pdf_new_name("FontName"), pdf_new_name(tmp));
+    pdf_add_dict(font->resource,   pdf_new_name("BaseFont"), pdf_new_name(tmp));
+    RELEASE(tmp);
+  } else {
+    pdf_add_dict(font->descriptor, pdf_new_name("FontName"), pdf_new_name(font->fontname));
+    pdf_add_dict(font->resource,   pdf_new_name("BaseFont"), pdf_new_name(font->fontname));
   }
-
-  pdf_add_dict(font->descriptor,
-               pdf_new_name("FontName"),
-               pdf_new_name(fontname));
-  pdf_add_dict(font->resource, 
-               pdf_new_name("BaseFont"),
-               pdf_new_name(fontname));
   {
     pdf_obj *csi_dict = pdf_new_dict();
     pdf_add_dict(csi_dict,

Modified: trunk/Build/source/texk/dvipdfm-x/cidtype2.c
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/cidtype2.c	2020-10-18 20:51:26 UTC (rev 56696)
+++ trunk/Build/source/texk/dvipdfm-x/cidtype2.c	2020-10-18 20:56:51 UTC (rev 56697)
@@ -439,10 +439,10 @@
 static int32_t
 cid_to_code (CMap *cmap, CID cid, int unicode_cmap)
 {
-  unsigned char  inbuf[2], outbuf[32];
-  int            inbytesleft = 2, outbytesleft = 32;
+  unsigned char        inbuf[2], outbuf[32];
+  int                  inbytesleft = 2, outbytesleft = 32;
   const unsigned char *p;
-  unsigned char *q;
+  unsigned char       *q;
 
   if (!cmap)
     return cid;
@@ -479,6 +479,29 @@
   return -1;
 }
 
+static uint16_t
+cid_to_gid (CMap *cmap, CID cid)
+{
+  unsigned char        inbuf[2], outbuf[2];
+  int                  inbytesleft = 2, outbytesleft = 2;
+  const unsigned char *p;
+  unsigned char       *q;
+
+  if (!cmap)
+    return cid;
+
+  inbuf[0] = (cid >> 8) & 0xff;
+  inbuf[1] = cid & 0xff;
+  p = inbuf; q = outbuf;
+
+  CMap_decode_char(cmap, &p, &inbytesleft, &q, &outbytesleft);
+
+  if (inbytesleft != 0 || outbytesleft != 0)
+    return 0;
+
+  return (uint16_t) (outbuf[0] << 8|outbuf[1]);
+}
+
 /* #define NO_GHOSTSCRIPT_BUG 1 */
 
 int
@@ -494,7 +517,12 @@
   CID               cid, last_cid;
   unsigned char    *cidtogidmap;
   USHORT            num_glyphs;
-  int               i, glyph_ordering = 0, unicode_cmap = 0;
+  enum {
+    glyph_ordering,
+    via_cid_to_code,
+    via_cid_to_gid,
+  } maptype = via_cid_to_code;
+  int               i, unicode_cmap = 0;
   FILE             *fp = NULL;
 
   if (!font->reference)
@@ -592,52 +620,66 @@
    */
   if (!strcmp(font->cid.csi.registry, "Adobe") &&
       !strcmp(font->cid.csi.ordering, "Identity")) {
-    glyph_ordering = 1;
-  } else {
-    glyph_ordering = 0;
-  }
+    maptype = glyph_ordering;
+    ttcmap  = NULL;
+    cmap    = NULL;
+  } else { 
+    if (font->cid.csi.registry && font->cid.csi.ordering) {
+      char   *cmap_name;
+      size_t  len;
+      int     cmap_id;
 
-  /*
-   * Select TrueType cmap table, find ToCode CMap for each TrueType encodings.
-   */
-  if (glyph_ordering) {
-    ttcmap = NULL;
-    cmap   = NULL;
-  } else {
-    /*
-     * This part contains a bug. It may choose SJIS encoding TrueType cmap
-     * table for Adobe-GB1.
-     */
-    for (i = 0; i <= KNOWN_ENCODINGS_MAX; i++) {
-      ttcmap = tt_cmap_read(sfont,
-                            known_encodings[i].platform,
-                            known_encodings[i].encoding);
-      if (ttcmap)
-        break;
+      len  = strlen(font->cid.csi.registry) + strlen(font->cid.csi.ordering);
+      len += strlen(font->fontname);
+      len += 3;
+      cmap_name = NEW(len+1, char);
+      snprintf(cmap_name, len + 1, "%s-%s-%s",
+               font->cid.csi.registry, font->cid.csi.ordering, font->fontname);
+      cmap_id = CMap_cache_find(cmap_name);
+      RELEASE(cmap_name);
+      if (cmap_id >= 0) {
+        cmap    = CMap_cache_get(cmap_id);
+        ttcmap  = NULL;
+        maptype = via_cid_to_gid;
+      }
     }
-    if (!ttcmap) {
-      WARN("No usable TrueType cmap table found for font \"%s\".", font->filename);
-      WARN("CID character collection for this font is set to \"%s-%s\"",
-           font->cid.csi.registry, font->cid.csi.ordering);
-      WARN("Cannot continue without this...");
-      sfnt_close(sfont);
-      DPXFCLOSE(fp);
-      return -1;
-    } else if (i <= WIN_UCS_INDEX_MAX) {
-      unicode_cmap = 1;
-    } else {
-      unicode_cmap = 0;
-    }
-
-    if (!strcmp(font->cid.csi.ordering, "UCS") && i <= WIN_UCS_INDEX_MAX) {
-      cmap = NULL;
-    } else {
-      cmap = find_tocode_cmap(font->cid.csi.registry, font->cid.csi.ordering, i);
-      if (!cmap) {
+    if (maptype != via_cid_to_gid) {
+      maptype = via_cid_to_code;
+      /*
+      * This part contains a bug. It may choose SJIS encoding TrueType cmap
+      * table for Adobe-GB1.
+      */
+      for (i = 0; i <= KNOWN_ENCODINGS_MAX; i++) {
+        ttcmap = tt_cmap_read(sfont,
+                              known_encodings[i].platform,
+                              known_encodings[i].encoding);
+        if (ttcmap)
+          break;
+      }
+      if (!ttcmap) {
+        WARN("No usable TrueType cmap table found for font \"%s\".", font->filename);
+        WARN("CID character collection for this font is set to \"%s-%s\"",
+             font->cid.csi.registry, font->cid.csi.ordering);
+        WARN("Cannot continue without this...");
         sfnt_close(sfont);
         DPXFCLOSE(fp);
-        return -1; 
+        return -1;
+      } else if (i <= WIN_UCS_INDEX_MAX) {
+        unicode_cmap = 1;
+      } else {
+        unicode_cmap = 0;
       }
+
+      if (!strcmp(font->cid.csi.ordering, "UCS") && i <= WIN_UCS_INDEX_MAX) {
+        cmap = NULL;
+      } else {
+        cmap = find_tocode_cmap(font->cid.csi.registry, font->cid.csi.ordering, i);
+        if (!cmap) {
+          sfnt_close(sfont);
+          DPXFCLOSE(fp);
+          return -1; 
+        }
+      }
     }
   }
 
@@ -708,10 +750,16 @@
       if (!is_used_char2(h_used_chars, cid))
         continue;
 
-      if (glyph_ordering) {
+      switch (maptype) {
+      case glyph_ordering:
         gid  = cid;
         code = cid;
-      } else {
+        break;
+      case via_cid_to_gid: 
+        gid  = cid_to_gid(cmap, cid);
+        code = cid;
+        break;
+      case via_cid_to_code:
         code = cid_to_code(cmap, cid, unicode_cmap);
         if (code < 0) {
           WARN("Unable to map CID to code: CID=%u", cid);
@@ -731,6 +779,7 @@
           }
 #endif /* FIX_CJK_UNIOCDE_SYMBOLS */
         }
+        break;
       }
       if (gid == 0) {
         if (code >= 0)
@@ -759,7 +808,7 @@
     /*
      * Require `vrt2' or `vert'.
      */
-    if (glyph_ordering) {
+    if (maptype != via_cid_to_code) {
       gsub_list = NULL;
     } else {
       gsub_list = otl_gsub_new();
@@ -791,10 +840,16 @@
         continue;
       }
 
-      if (glyph_ordering) {
+      switch (maptype) {
+      case glyph_ordering:
         gid  = cid;
         code = cid;
-      } else {
+        break;
+      case via_cid_to_gid:
+        gid  = cid_to_gid(cmap, cid);
+        code = cid;
+        break;
+      case via_cid_to_code:
         code = cid_to_code(cmap, cid, unicode_cmap);
         if (code < 0) {
           WARN("Unable to map CID to code: CID=%u", cid);
@@ -814,6 +869,7 @@
           }
 #endif /* FIX_CJK_UNIOCDE_SYMBOLS */
         }
+        break;
       }
       if (gid == 0) {
         if (code >= 0)
@@ -1099,14 +1155,19 @@
   }
 
   if (opt->embed) {
-    memmove(fontname + 7, fontname, strlen(fontname) + 1);
-    pdf_font_make_uniqueTag(fontname);
-    fontname[6] = '+';
+    char *tmp;
+    
+    pdf_font_make_uniqueTag(font->uniqueID);
+    tmp = NEW(strlen(fontname)+8, char);
+    sprintf(tmp, "%s+%s", font->uniqueID, font->fontname);
+    pdf_add_dict(font->descriptor, pdf_new_name("FontName"), pdf_new_name(tmp));
+    pdf_add_dict(font->resource,   pdf_new_name("BaseFont"), pdf_new_name(tmp));
+    RELEASE(tmp);
+  } else {
+    pdf_add_dict(font->descriptor, pdf_new_name("FontName"), pdf_new_name(font->fontname));
+    pdf_add_dict(font->resource,   pdf_new_name("BaseFont"), pdf_new_name(font->fontname));
   }
 
-  pdf_add_dict(font->descriptor, pdf_new_name("FontName"), pdf_new_name(fontname));
-  pdf_add_dict(font->resource,  pdf_new_name("BaseFont"), pdf_new_name(fontname));
-
   sfnt_close(sfont);
   if (fp)
     DPXFCLOSE(fp);

Modified: trunk/Build/source/texk/dvipdfm-x/configure
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/configure	2020-10-18 20:51:26 UTC (rev 56696)
+++ trunk/Build/source/texk/dvipdfm-x/configure	2020-10-18 20:56:51 UTC (rev 56697)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for dvipdfm-x (TeX Live) 20201014.
+# Generated by GNU Autoconf 2.69 for dvipdfm-x (TeX Live) 20201019.
 #
 # Report bugs to <dvipdfmx at tug.org>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='dvipdfm-x (TeX Live)'
 PACKAGE_TARNAME='dvipdfm-x--tex-live-'
-PACKAGE_VERSION='20201014'
-PACKAGE_STRING='dvipdfm-x (TeX Live) 20201014'
+PACKAGE_VERSION='20201019'
+PACKAGE_STRING='dvipdfm-x (TeX Live) 20201019'
 PACKAGE_BUGREPORT='dvipdfmx at tug.org'
 PACKAGE_URL=''
 
@@ -1350,7 +1350,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures dvipdfm-x (TeX Live) 20201014 to adapt to many kinds of systems.
+\`configure' configures dvipdfm-x (TeX Live) 20201019 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1421,7 +1421,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20201014:";;
+     short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20201019:";;
    esac
   cat <<\_ACEOF
 
@@ -1551,7 +1551,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-dvipdfm-x (TeX Live) configure 20201014
+dvipdfm-x (TeX Live) configure 20201019
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2390,7 +2390,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by dvipdfm-x (TeX Live) $as_me 20201014, which was
+It was created by dvipdfm-x (TeX Live) $as_me 20201019, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -8077,7 +8077,7 @@
 
 # Define the identity of the package.
  PACKAGE='dvipdfm-x--tex-live-'
- VERSION='20201014'
+ VERSION='20201019'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -14746,7 +14746,7 @@
 Report bugs to <bug-libtool at gnu.org>."
 
 lt_cl_version="\
-dvipdfm-x (TeX Live) config.lt 20201014
+dvipdfm-x (TeX Live) config.lt 20201019
 configured by $0, generated by GNU Autoconf 2.69.
 
 Copyright (C) 2011 Free Software Foundation, Inc.
@@ -16636,7 +16636,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by dvipdfm-x (TeX Live) $as_me 20201014, which was
+This file was extended by dvipdfm-x (TeX Live) $as_me 20201019, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -16706,7 +16706,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-dvipdfm-x (TeX Live) config.status 20201014
+dvipdfm-x (TeX Live) config.status 20201019
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

Modified: trunk/Build/source/texk/dvipdfm-x/configure.ac
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/configure.ac	2020-10-18 20:51:26 UTC (rev 56696)
+++ trunk/Build/source/texk/dvipdfm-x/configure.ac	2020-10-18 20:56:51 UTC (rev 56697)
@@ -8,7 +8,7 @@
 dnl   gives unlimited permission to copy and/or distribute it,
 dnl   with or without modifications, as long as this notice is preserved.
 dnl
-AC_INIT([dvipdfm-x (TeX Live)], [20201014], [dvipdfmx at tug.org])
+AC_INIT([dvipdfm-x (TeX Live)], [20201019], [dvipdfmx at tug.org])
 AC_PREREQ([2.65])
 AC_CONFIG_SRCDIR([agl.c])
 AC_CONFIG_AUX_DIR([../../build-aux])

Added: trunk/Build/source/texk/dvipdfm-x/data/Adobe-Japan1-YuMincho-Regular
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/data/Adobe-Japan1-YuMincho-Regular	                        (rev 0)
+++ trunk/Build/source/texk/dvipdfm-x/data/Adobe-Japan1-YuMincho-Regular	2020-10-18 20:56:51 UTC (rev 56697)
@@ -0,0 +1,135 @@
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (Adobe-Japan1-YuMincho-Regular)
+%%Title: (Adobe-Japan1-YuMincho-Regular Adobe Japan1 7)
+%%Version: 1.000
+%%EndComments
+
+/CIDInit /ProcSet findresource begin
+
+12 dict begin
+
+begincmap
+
+/CIDSystemInfo 3 dict dup begin
+  /Registry (Adobe) def
+  /Ordering (Adobe_Japan1_YuMincho_Regular) def
+  /Supplement 7 def
+end def
+
+/CMapName /Adobe-Japan1-YuMincho-Regular def
+/CMapVersion 1.000 def
+/CMapType 2 def
+
+/WMode 0 def
+
+1 begincodespacerange
+  <0000> <5AFF>
+endcodespacerange
+
+1 beginbfchar
+<0000> <0000> 
+endbfchar
+
+91 beginbfrange
+<0001> <00ff> <0003>
+<0100> <01ff> <0102>
+<0200> <02ff> <0202>
+<0300> <03ff> <0302>
+<0400> <04ff> <0402>
+<0500> <05ff> <0502>
+<0600> <06ff> <0602>
+<0700> <07ff> <0702>
+<0800> <08ff> <0802>
+<0900> <09ff> <0902>
+<0a00> <0aff> <0a02>
+<0b00> <0bff> <0b02>
+<0c00> <0cff> <0c02>
+<0d00> <0dff> <0d02>
+<0e00> <0eff> <0e02>
+<0f00> <0fff> <0f02>
+<1000> <10ff> <1002>
+<1100> <11ff> <1102>
+<1200> <12ff> <1202>
+<1300> <13ff> <1302>
+<1400> <14ff> <1402>
+<1500> <15ff> <1502>
+<1600> <16ff> <1602>
+<1700> <17ff> <1702>
+<1800> <18ff> <1802>
+<1900> <19ff> <1902>
+<1a00> <1aff> <1a02>
+<1b00> <1bff> <1b02>
+<1c00> <1cff> <1c02>
+<1d00> <1dff> <1d02>
+<1e00> <1eff> <1e02>
+<1f00> <1fff> <1f02>
+<2000> <20ff> <2002>
+<2100> <21ff> <2102>
+<2200> <22ff> <2202>
+<2300> <23ff> <2302>
+<2400> <24ff> <2402>
+<2500> <25ff> <2502>
+<2600> <26ff> <2602>
+<2700> <27ff> <2702>
+<2800> <28ff> <2802>
+<2900> <29ff> <2902>
+<2a00> <2aff> <2a02>
+<2b00> <2bff> <2b02>
+<2c00> <2cff> <2c02>
+<2d00> <2dff> <2d02>
+<2e00> <2eff> <2e02>
+<2f00> <2fff> <2f02>
+<3000> <30ff> <3002>
+<3100> <31ff> <3102>
+<3200> <32ff> <3202>
+<3300> <33ff> <3302>
+<3400> <34ff> <3402>
+<3500> <35ff> <3502>
+<3600> <36ff> <3602>
+<3700> <37ff> <3702>
+<3800> <38ff> <3802>
+<3900> <39ff> <3902>
+<3a00> <3aff> <3a02>
+<3b00> <3bff> <3b02>
+<3c00> <3cff> <3c02>
+<3d00> <3dff> <3d02>
+<3e00> <3eff> <3e02>
+<3f00> <3fff> <3f02>
+<4000> <40ff> <4002>
+<4100> <41ff> <4102>
+<4200> <42ff> <4202>
+<4300> <43ff> <4302>
+<4400> <44ff> <4402>
+<4500> <45ff> <4502>
+<4600> <46ff> <4602>
+<4700> <47ff> <4702>
+<4800> <48ff> <4802>
+<4900> <49ff> <4902>
+<4a00> <4aff> <4a02>
+<4b00> <4bff> <4b02>
+<4c00> <4cff> <4c02>
+<4d00> <4dff> <4d02>
+<4e00> <4eff> <4e02>
+<4f00> <4fff> <4f02>
+<5000> <50ff> <5002>
+<5100> <51ff> <5102>
+<5200> <52ff> <5202>
+<5300> <53ff> <5302>
+<5400> <54ff> <5402>
+<5500> <55ff> <5502>
+<5600> <56ff> <5602>
+<5700> <57ff> <5702>
+<5800> <58ff> <5802>
+<5900> <59ff> <5902>
+<5a00> <5a13> <5a02>
+endbfrange
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+
+%%EndResource
+%%EOF
+

Modified: trunk/Build/source/texk/dvipdfm-x/data/dvipdfmx.cfg
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/data/dvipdfmx.cfg	2020-10-18 20:51:26 UTC (rev 56696)
+++ trunk/Build/source/texk/dvipdfm-x/data/dvipdfmx.cfg	2020-10-18 20:56:51 UTC (rev 56697)
@@ -156,7 +156,7 @@
 %% kpsewhich -progname=dvipdfmx -format='other text files' dvipdfmx.cfg
 %% and control which one is found by setting DVIPDFMXINPUTS.
 %%
-D  "rungs -q -dDELAYSAFER -dNOPAUSE -dBATCH -dEPSCrop -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=%v -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dAutoRotatePages=/None -sOutputFile='%o' '%i' -c quit"
+D  "rungs -q -dALLOWPSTRANSPARENCY -dDELAYSAFER -dNOPAUSE -dBATCH -dEPSCrop -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=%v -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dAutoRotatePages=/None -sOutputFile='%o' '%i' -c quit"
 
 % other random ps converters people have experimented with.
 %D "/usr/local/bin/ps2pdf -dEPSCrop '%i' '%o'"

Modified: trunk/Build/source/texk/dvipdfm-x/type0.c
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/type0.c	2020-10-18 20:51:26 UTC (rev 56696)
+++ trunk/Build/source/texk/dvipdfm-x/type0.c	2020-10-18 20:56:51 UTC (rev 56697)
@@ -112,9 +112,6 @@
   tounicode = NULL;
   csi       = &cidfont->cid.csi;
   fontname  = cidfont->fontname;
-  if (cidfont->cid.options.embed) {
-    fontname += 7; /* FIXME: Skip pseudo unique tag... */
-  }
 
   switch (cidfont->subtype) {
   case PDF_FONT_FONTTYPE_CIDTYPE2:
@@ -191,13 +188,16 @@
    *  Type0 font's fontname is usually descendant CID-keyed font's font name 
    *  appended by -ENCODING.
    */
-  fontname = cidfont->fontname;
+  if (cidfont->cid.options.embed) {
+    fontname = NEW(strlen(cidfont->fontname)+8, char);
+    sprintf(fontname, "%s+%s", cidfont->uniqueID, cidfont->fontname);
+  } else {
+    fontname = NEW(strlen(cidfont->fontname)+1, char);
+    strcpy(fontname, cidfont->fontname);
+  }
 
   if (dpx_conf.verbose_level > 0) {
-    if (cidfont->cid.options.embed && strlen(fontname) > 7)
-      MESG("(CID:%s)", fontname+7); /* skip XXXXXX+ */
-    else
-      MESG("(CID:%s)", fontname);
+    MESG("(CID:%s)", cidfont->fontname);
   }
 
   switch (cidfont->subtype) {



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