Class FontFileReader


  • public class FontFileReader
    extends java.lang.Object
    Reads a TrueType font file into a byte array and provides file like functions for array access.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private int current  
      private byte[] file  
      private int fsize  
    • Constructor Summary

      Constructors 
      Constructor Description
      FontFileReader​(java.io.InputStream in)
      Constructor
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      byte[] getAllBytes()
      Returns the full byte array representation of the file.
      byte[] getBytes​(int offset, int length)
      Return a copy of the internal array
      int getCurrentPos()
      Returns current file position.
      int getFileSize()
      Returns the size of the file.
      private byte read()
      Read 1 byte.
      byte readTTFByte()
      Read 1 signed byte.
      int readTTFLong()
      Read 4 bytes.
      short readTTFShort()
      Read 2 bytes signed.
      short readTTFShort​(long pos)
      Read 2 bytes signed at position pos without changing current position.
      java.lang.String readTTFString()
      Read a NUL terminated ISO-8859-1 string.
      java.lang.String readTTFString​(int len)
      Read an ISO-8859-1 string of len bytes.
      java.lang.String readTTFString​(int len, int encodingID)
      Read an ISO-8859-1 string of len bytes.
      int readTTFUByte()
      Read 1 unsigned byte.
      long readTTFULong()
      Read 4 bytes.
      int readTTFUShort()
      Read 2 bytes unsigned.
      int readTTFUShort​(long pos)
      Read 2 bytes unsigned at position pos without changing current position.
      void seekSet​(long offset)
      Set current file position to offset
      void skip​(long add)
      Skip a given number of bytes.
      void writeTTFUShort​(long pos, int val)
      Write a USHort at a given position.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • fsize

        private final int fsize
      • current

        private int current
      • file

        private final byte[] file
    • Constructor Detail

      • FontFileReader

        public FontFileReader​(java.io.InputStream in)
                       throws java.io.IOException
        Constructor
        Parameters:
        in - InputStream to read from
        Throws:
        java.io.IOException - In case of an I/O problem
    • Method Detail

      • seekSet

        public void seekSet​(long offset)
                     throws java.io.IOException
        Set current file position to offset
        Parameters:
        offset - The new offset to set
        Throws:
        java.io.IOException - In case of an I/O problem
      • skip

        public void skip​(long add)
                  throws java.io.IOException
        Skip a given number of bytes.
        Parameters:
        add - The number of bytes to advance
        Throws:
        java.io.IOException - In case of an I/O problem
      • getCurrentPos

        public int getCurrentPos()
        Returns current file position.
        Returns:
        int The current position.
      • getFileSize

        public int getFileSize()
        Returns the size of the file.
        Returns:
        int The filesize
      • read

        private byte read()
                   throws java.io.IOException
        Read 1 byte.
        Returns:
        One byte
        Throws:
        java.io.IOException - If EOF is reached
      • readTTFByte

        public final byte readTTFByte()
                               throws java.io.IOException
        Read 1 signed byte.
        Returns:
        One byte
        Throws:
        java.io.IOException - If EOF is reached
      • readTTFUByte

        public final int readTTFUByte()
                               throws java.io.IOException
        Read 1 unsigned byte.
        Returns:
        One unsigned byte
        Throws:
        java.io.IOException - If EOF is reached
      • readTTFShort

        public final short readTTFShort()
                                 throws java.io.IOException
        Read 2 bytes signed.
        Returns:
        One signed short
        Throws:
        java.io.IOException - If EOF is reached
      • readTTFUShort

        public final int readTTFUShort()
                                throws java.io.IOException
        Read 2 bytes unsigned.
        Returns:
        One unsigned short
        Throws:
        java.io.IOException - If EOF is reached
      • writeTTFUShort

        public final void writeTTFUShort​(long pos,
                                         int val)
                                  throws java.io.IOException
        Write a USHort at a given position.
        Parameters:
        pos - The absolute position to write to
        val - The value to write
        Throws:
        java.io.IOException - If EOF is reached
      • readTTFShort

        public final short readTTFShort​(long pos)
                                 throws java.io.IOException
        Read 2 bytes signed at position pos without changing current position.
        Parameters:
        pos - The absolute position to read from
        Returns:
        One signed short
        Throws:
        java.io.IOException - If EOF is reached
      • readTTFUShort

        public final int readTTFUShort​(long pos)
                                throws java.io.IOException
        Read 2 bytes unsigned at position pos without changing current position.
        Parameters:
        pos - The absolute position to read from
        Returns:
        One unsigned short
        Throws:
        java.io.IOException - If EOF is reached
      • readTTFLong

        public final int readTTFLong()
                              throws java.io.IOException
        Read 4 bytes.
        Returns:
        One signed integer
        Throws:
        java.io.IOException - If EOF is reached
      • readTTFULong

        public final long readTTFULong()
                                throws java.io.IOException
        Read 4 bytes.
        Returns:
        One unsigned integer
        Throws:
        java.io.IOException - If EOF is reached
      • readTTFString

        public final java.lang.String readTTFString()
                                             throws java.io.IOException
        Read a NUL terminated ISO-8859-1 string.
        Returns:
        A String
        Throws:
        java.io.IOException - If EOF is reached
      • readTTFString

        public final java.lang.String readTTFString​(int len)
                                             throws java.io.IOException
        Read an ISO-8859-1 string of len bytes.
        Parameters:
        len - The length of the string to read
        Returns:
        A String
        Throws:
        java.io.IOException - If EOF is reached
      • readTTFString

        public final java.lang.String readTTFString​(int len,
                                                    int encodingID)
                                             throws java.io.IOException
        Read an ISO-8859-1 string of len bytes.
        Parameters:
        len - The length of the string to read
        encodingID - the string encoding id (presently ignored; always uses UTF-16BE)
        Returns:
        A String
        Throws:
        java.io.IOException - If EOF is reached
      • getBytes

        public byte[] getBytes​(int offset,
                               int length)
                        throws java.io.IOException
        Return a copy of the internal array
        Parameters:
        offset - The absolute offset to start reading from
        length - The number of bytes to read
        Returns:
        An array of bytes
        Throws:
        java.io.IOException - if out of bounds
      • getAllBytes

        public byte[] getAllBytes()
        Returns the full byte array representation of the file.
        Returns:
        byte array.