1# Copyright (c) 2012 Google Inc. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# This is a simple utility for dumping out the header of a compressed file, and
6# is suitable for doing spot checks of compressed. files. However, this only
7# implements the "long" form of the table directory.
8
9import struct
10import sys
11
12def dump_woff2_header(header):
13  header_values = struct.unpack('>IIIHHIHHIIIII', header[:44])
14  for i, key in enumerate([
15    'signature',
16    'flavor',
17    'length',
18    'numTables',
19    'reserved',
20    'totalSfntSize',
21    'majorVersion',
22    'minorVersion',
23    'metaOffset',
24    'metaOrigLength',
25    'privOffset',
26    'privLength']):
27    print key, header_values[i]
28  numTables = header_values[3]
29  for i in range(numTables):
30    entry = struct.unpack('>IIIII', header[44+20*i:44+20*(i+1)])
31    print '%08x %d %d %d %d' % entry
32
33def main():
34  header = file(sys.argv[1]).read()
35  dump_woff2_header(header)
36
37main()
38
39