[OS/2] define recalcXAvgCharWidth method
copied from current subsetter code (matches ufo2ft's outlineCompiler)
This commit is contained in:
parent
380f8d573d
commit
3731056401
@ -1,4 +1,5 @@
|
|||||||
from fontTools.misc import sstruct
|
from fontTools.misc import sstruct
|
||||||
|
from fontTools.misc.roundTools import otRound
|
||||||
from fontTools.misc.textTools import safeEval, num2binary, binary2num
|
from fontTools.misc.textTools import safeEval, num2binary, binary2num
|
||||||
from fontTools.ttLib.tables import DefaultTable
|
from fontTools.ttLib.tables import DefaultTable
|
||||||
import bisect
|
import bisect
|
||||||
@ -299,6 +300,19 @@ class table_O_S_2f_2(DefaultTable.DefaultTable):
|
|||||||
self.setUnicodeRanges(bits)
|
self.setUnicodeRanges(bits)
|
||||||
return bits
|
return bits
|
||||||
|
|
||||||
|
def recalcXAvgCharWidth(self, ttFont):
|
||||||
|
"""Recalculate xAvgCharWidth using metrics from ttFont's 'hmtx' table.
|
||||||
|
|
||||||
|
Set it to 0 if the unlikely event 'hmtx' table is not found.
|
||||||
|
"""
|
||||||
|
avg_width = 0
|
||||||
|
hmtx = ttFont.get("hmtx")
|
||||||
|
if hmtx:
|
||||||
|
widths = [m[0] for m in hmtx.metrics.values() if m[0] > 0]
|
||||||
|
avg_width = otRound(sum(widths) / len(widths))
|
||||||
|
self.xAvgCharWidth = avg_width
|
||||||
|
return avg_width
|
||||||
|
|
||||||
|
|
||||||
# Unicode ranges data from the OpenType OS/2 table specification v1.7
|
# Unicode ranges data from the OpenType OS/2 table specification v1.7
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user