Merge pull request #27 from olivierberten/os2_v5
Support for OS/2 table version 5 as proposed by Microsoft
This commit is contained in:
commit
6f3772bcb4
@ -80,12 +80,19 @@ OS2_format_2_addition = OS2_format_1_addition + """
|
|||||||
usMaxContex: H
|
usMaxContex: H
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
OS2_format_5_addition = OS2_format_2_addition + """
|
||||||
|
usLowerOpticalPointSize: H
|
||||||
|
usUpperOpticalPointSize: H
|
||||||
|
"""
|
||||||
|
|
||||||
bigendian = " > # big endian\n"
|
bigendian = " > # big endian\n"
|
||||||
|
|
||||||
OS2_format_1 = OS2_format_0 + OS2_format_1_addition
|
OS2_format_1 = OS2_format_0 + OS2_format_1_addition
|
||||||
OS2_format_2 = OS2_format_0 + OS2_format_2_addition
|
OS2_format_2 = OS2_format_0 + OS2_format_2_addition
|
||||||
|
OS2_format_5 = OS2_format_0 + OS2_format_5_addition
|
||||||
OS2_format_1_addition = bigendian + OS2_format_1_addition
|
OS2_format_1_addition = bigendian + OS2_format_1_addition
|
||||||
OS2_format_2_addition = bigendian + OS2_format_2_addition
|
OS2_format_2_addition = bigendian + OS2_format_2_addition
|
||||||
|
OS2_format_5_addition = bigendian + OS2_format_5_addition
|
||||||
|
|
||||||
|
|
||||||
class table_O_S_2f_2(DefaultTable.DefaultTable):
|
class table_O_S_2f_2(DefaultTable.DefaultTable):
|
||||||
@ -102,6 +109,8 @@ class table_O_S_2f_2(DefaultTable.DefaultTable):
|
|||||||
elif len(data) == sstruct.calcsize(OS2_format_2_addition):
|
elif len(data) == sstruct.calcsize(OS2_format_2_addition):
|
||||||
if self.version not in (2, 3, 4):
|
if self.version not in (2, 3, 4):
|
||||||
self.version = 1
|
self.version = 1
|
||||||
|
elif len(data) == sstruct.calcsize(OS2_format_5_addition):
|
||||||
|
self.version = 5
|
||||||
else:
|
else:
|
||||||
from fontTools import ttLib
|
from fontTools import ttLib
|
||||||
raise ttLib.TTLibError, "unknown format for OS/2 table (incorrect length): version %s" % (self.version, len(data))
|
raise ttLib.TTLibError, "unknown format for OS/2 table (incorrect length): version %s" % (self.version, len(data))
|
||||||
@ -109,6 +118,8 @@ class table_O_S_2f_2(DefaultTable.DefaultTable):
|
|||||||
sstruct.unpack2(OS2_format_1_addition, data, self)
|
sstruct.unpack2(OS2_format_1_addition, data, self)
|
||||||
elif self.version in (2, 3, 4):
|
elif self.version in (2, 3, 4):
|
||||||
sstruct.unpack2(OS2_format_2_addition, data, self)
|
sstruct.unpack2(OS2_format_2_addition, data, self)
|
||||||
|
elif self.version == 5:
|
||||||
|
sstruct.unpack2(OS2_format_5_addition, data, self)
|
||||||
elif self.version <> 0:
|
elif self.version <> 0:
|
||||||
from fontTools import ttLib
|
from fontTools import ttLib
|
||||||
raise ttLib.TTLibError, "unknown format for OS/2 table: version %s" % self.version
|
raise ttLib.TTLibError, "unknown format for OS/2 table: version %s" % self.version
|
||||||
@ -123,6 +134,8 @@ class table_O_S_2f_2(DefaultTable.DefaultTable):
|
|||||||
data = sstruct.pack(OS2_format_1, self)
|
data = sstruct.pack(OS2_format_1, self)
|
||||||
elif self.version in (2, 3, 4):
|
elif self.version in (2, 3, 4):
|
||||||
data = sstruct.pack(OS2_format_2, self)
|
data = sstruct.pack(OS2_format_2, self)
|
||||||
|
elif self.version == 5:
|
||||||
|
data = sstruct.pack(OS2_format_5, self)
|
||||||
else:
|
else:
|
||||||
from fontTools import ttLib
|
from fontTools import ttLib
|
||||||
raise ttLib.TTLibError, "unknown format for OS/2 table: version %s" % self.version
|
raise ttLib.TTLibError, "unknown format for OS/2 table: version %s" % self.version
|
||||||
@ -134,6 +147,8 @@ class table_O_S_2f_2(DefaultTable.DefaultTable):
|
|||||||
format = OS2_format_1
|
format = OS2_format_1
|
||||||
elif self.version in (2, 3, 4):
|
elif self.version in (2, 3, 4):
|
||||||
format = OS2_format_2
|
format = OS2_format_2
|
||||||
|
elif self.version == 5:
|
||||||
|
format = OS2_format_5
|
||||||
else:
|
else:
|
||||||
format = OS2_format_0
|
format = OS2_format_0
|
||||||
formatstring, names, fixes = sstruct.getformat(format)
|
formatstring, names, fixes = sstruct.getformat(format)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user