Class TrueTypeFont

    • Field Detail

      • bBoxes

        protected int[][] bBoxes
      • isVertical

        protected boolean isVertical
      • kerning

        protected IntHashtable kerning
        The map containing the kerning information. It represents the content of table 'kern'. The key is an Integer where the top 16 bits are the glyph number for the first character and the lower 16 bits are the glyph number for the second character. The value is the amount of kerning in normalized 1000 units as an Integer. This value is usually negative.
      • fontStreamBytes

        private byte[] fontStreamBytes
    • Constructor Detail

      • TrueTypeFont

        private TrueTypeFont​(OpenTypeParser fontParser)
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • TrueTypeFont

        protected TrueTypeFont()
      • TrueTypeFont

        public TrueTypeFont​(java.lang.String path)
                     throws java.io.IOException
        Throws:
        java.io.IOException
      • TrueTypeFont

        public TrueTypeFont​(byte[] ttf)
                     throws java.io.IOException
        Throws:
        java.io.IOException
      • TrueTypeFont

        TrueTypeFont​(java.lang.String ttcPath,
                     int ttcIndex)
              throws java.io.IOException
        Throws:
        java.io.IOException
      • TrueTypeFont

        TrueTypeFont​(byte[] ttc,
                     int ttcIndex)
              throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • getKerning

        public int getKerning​(Glyph first,
                              Glyph second)
        Gets the kerning between two glyphs.
        Specified by:
        getKerning in class FontProgram
        Parameters:
        first - the first glyph
        second - the second glyph
        Returns:
        the kerning to be applied
      • isCff

        public boolean isCff()
      • getActiveCmap

        public java.util.Map<java.lang.Integer,​int[]> getActiveCmap()
      • getFontStreamBytes

        public byte[] getFontStreamBytes()
      • getDirectoryOffset

        public int getDirectoryOffset()
        The offset from the start of the file to the table directory. It is 0 for TTF and may vary for TTC depending on the chosen font.
        Returns:
        directory Offset
      • getSubset

        public byte[] getSubset​(java.util.Set<java.lang.Integer> glyphs,
                                boolean subset)
      • mapGlyphsCidsToGids

        public java.util.Set<java.lang.Integer> mapGlyphsCidsToGids​(java.util.Set<java.lang.Integer> glyphs)
        Maps a set of glyph CIDs (as used in PDF file) to corresponding GID values (as a glyph primary identifier in the font file). This call is only meaningful for fonts that return true for isCff(). For other types of fonts, GID and CID are always the same, so that call would essentially return a set of the same values.
        Parameters:
        glyphs - a set of glyph CIDs
        Returns:
        a set of glyph ids corresponding to the passed glyph CIDs
      • isCmapPresent

        public boolean isCmapPresent​(int platformID,
                                     int encodingID)
        Checks whether current TrueTypeFont program contains the “cmap” subtable with provided platform ID and encoding ID.
        Parameters:
        platformID - platform ID
        encodingID - encoding ID
        Returns:
        true if “cmap” subtable with provided platform ID and encoding ID is present in the font program, false otherwise
      • getNumberOfCmaps

        public int getNumberOfCmaps()
        Gets the number of the “cmap” subtables for the current TrueTypeFont program.
        Returns:
        the number of the “cmap” subtables
      • readGdefTable

        protected void readGdefTable()
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • readGsubTable

        protected void readGsubTable()
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • readGposTable

        protected void readGposTable()
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • initializeFontProperties

        private void initializeFontProperties()
                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • getCodePagesSupported

        public java.lang.String[] getCodePagesSupported()
        Gets the code pages supported by the font.
        Returns:
        the code pages supported by the font
      • isBuiltWith

        public boolean isBuiltWith​(java.lang.String fontProgram)
        Description copied from class: FontProgram
        Checks whether the FontProgram was built with corresponding fontName. Default value is false unless overridden.
        Overrides:
        isBuiltWith in class FontProgram
        Parameters:
        fontProgram - a font name or path to a font program
        Returns:
        true, if the FontProgram was built with the fontProgram. Otherwise false.
      • close

        public void close()
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • updateUsedGlyphs

        public void updateUsedGlyphs​(java.util.SortedSet<java.lang.Integer> usedGlyphs,
                                     boolean subset,
                                     java.util.List<int[]> subsetRanges)
        The method will update usedGlyphs with additional range or with all glyphs if there is no subset. This set of used glyphs can be used for building width array and ToUnicode CMAP.
        Parameters:
        usedGlyphs - a set of integers, which are glyph ids that denote used glyphs. This set is updated inside of the method if needed.
        subset - subset status
        subsetRanges - additional subset ranges
      • toCompactRange

        private static int[] toCompactRange​(java.util.List<int[]> ranges)
        Normalizes given ranges by making sure that first values in pairs are lower than second values and merges overlapping ranges in one.
        Parameters:
        ranges - a List of integer arrays, which are constituted by pairs of ints that denote each range limits. Each integer array size shall be a multiple of two
        Returns:
        single merged array consisting of pairs of integers, each of them denoting a range