public GsubData getGsubData() throws IOException { GlyphSubstitutionTable table = getGsub(); if (table == null) { return GsubData.NO_DATA_FOUND; } return table.getGsubData(); }
/** * Returns the best Unicode from the font (the most general). The PDF spec says that "The means * by which this is accomplished are implementation-dependent." * * The returned cmap will perform glyph substitution. * * @param isStrict False if we allow falling back to any cmap, even if it's not Unicode. * @throws IOException if the font could not be read, or there is no Unicode cmap */ public CmapLookup getUnicodeCmapLookup(boolean isStrict) throws IOException { CmapSubtable cmap = getUnicodeCmapImpl(isStrict); if (!enabledGsubFeatures.isEmpty()) { GlyphSubstitutionTable table = getGsub(); if (table != null) { return new SubstitutingCmapLookup(cmap, table, Collections.unmodifiableList(enabledGsubFeatures)); } } return cmap; }
/** * Returns the best Unicode from the font (the most general). The PDF spec says that "The means * by which this is accomplished are implementation-dependent." * * The returned cmap will perform glyph substitution. * * @param isStrict False if we allow falling back to any cmap, even if it's not Unicode. * @throws IOException if the font could not be read, or there is no Unicode cmap */ public CmapLookup getUnicodeCmapLookup(boolean isStrict) throws IOException { CmapSubtable cmap = getUnicodeCmapImpl(isStrict); if (!enabledGsubFeatures.isEmpty()) { GlyphSubstitutionTable table = getGsub(); if (table != null) { return new SubstitutingCmapLookup(cmap, (GlyphSubstitutionTable) table, Collections.unmodifiableList(enabledGsubFeatures)); } } return cmap; }