all files / fontkit/src/ WOFFFont.coffee

94.74% Statements 18/19
75% Branches 3/4
100% Functions 5/5
94.74% Lines 18/19
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32     13×                        
TTFFont = require './TTFFont'
WOFFDirectory = require './tables/WOFFDirectory'
tables = require './tables'
pako = require 'pako/lib/inflate'
toBuffer = require 'typedarray-to-buffer'
r = require 'restructure'
 
class WOFFFont extends TTFFont
  @probe: (buffer) ->
    return buffer.toString('ascii', 0, 4) is 'wOFF'
    
  _decodeDirectory: ->
    @directory = WOFFDirectory.decode(@stream, _startOffset: 0)
    
  _getTableStream: (tag) ->
    table = @directory.tables[tag]
    Eif table
      @stream.pos = table.offset
    
      if table.compLength < table.origLength
        buf = toBuffer pako.inflate @stream.readBuffer(table.compLength)
        return new r.DecodeStream(buf)
      else
        return @stream
        
    return null
    
  _decodeTable: (table) ->
    return tables[table.tag].decode(@_getTableStream(table.tag), this, table.origLength)
    
module.exports = WOFFFont