Commit 6ca0a9356ff05c15edbc2bbd905221beacbef447

suzuki toshiya 2023-05-11T14:31:23

[t1cid] Set FT_FACE_FLAG_CID_KEYED. * cidobjs.c (cid_face_init): Set FT_FACE_FLAG_CID_KEYED. * cidriver.c (cid_get_is_cid): Comment about the case that is_cid cannot guarantee the glyph collection specification.

diff --git a/src/cid/cidobjs.c b/src/cid/cidobjs.c
index 1fc121c..e11c41d 100644
--- a/src/cid/cidobjs.c
+++ b/src/cid/cidobjs.c
@@ -374,6 +374,14 @@
       if ( info->is_fixed_pitch )
         cidface->face_flags |= FT_FACE_FLAG_FIXED_WIDTH;
 
+      /*
+       * For the sfnt-wrapped CID fonts for MacOS, currently,
+       * its `cmap' tables are ignored, and the content in
+       * its `CID ' table is treated the same as naked CID-keyed
+       * font.  See ft_lookup_PS_in_sfnt_stream().
+       */
+      cidface->face_flags |= FT_FACE_FLAG_CID_KEYED;
+
       /* XXX: TODO: add kerning with .afm support */
 
       /* get style name -- be careful, some broken fonts only */
diff --git a/src/cid/cidriver.c b/src/cid/cidriver.c
index fd015ef..0907b1d 100644
--- a/src/cid/cidriver.c
+++ b/src/cid/cidriver.c
@@ -141,8 +141,14 @@
     FT_UNUSED( face );
 
 
+    /*
+     * XXX: If the ROS is Adobe-Identity-H or -V,
+     * the font has no reliable information about
+     * its glyph collection.  Should we not set
+     * *is_cid in such cases?
+     */
     if ( is_cid )
-      *is_cid = 1; /* cid driver is only used for CID keyed fonts */
+      *is_cid = 1;
 
     return error;
   }