}
int
+OTF_get_variation_glyphs (OTF *otf, int c, OTF_GlyphID code[256])
+{
+ int i, n;
+ OTF_cmap *cmap;
+ OTF_EncodingSubtable14 *sub14;
+
+ memset (code, 0, sizeof (OTF_GlyphID) * 256);
+ if (! otf->cmap
+ && OTF_get_table (otf, "cmap") < 0)
+ return 0;
+ cmap = otf->cmap;
+ for (i = 0; i < cmap->numTables; i++)
+ if (cmap->EncodingRecord[i].subtable.format == 14)
+ break;
+ if (i == cmap->numTables)
+ return 0;
+ sub14 = cmap->EncodingRecord[i].subtable.f.f14;
+ for (i = 0, n = 0; i < 256; i++)
+ {
+ int uvs = (i < 16 ? 0xFE00 + i : 0xE0100 + (i - 16));
+
+ if ((code[i] = get_uvs_glyph (cmap, sub14, c, uvs)))
+ n++;
+ }
+ return n;
+}
+
+
+int
OTF_drive_gdef (OTF *otf, OTF_GlyphString *gstring)
{
OTF_GDEF *gdef;