Handle lengths in units of ex and en

This commit is contained in:
Kovid Goyal 2009-06-10 18:47:10 -07:00
parent 54de4dc434
commit 2dabc47ee6

View File

@ -279,7 +279,7 @@ class Stylizer(object):
class Style(object): class Style(object):
UNIT_RE = re.compile(r'^(-*[0-9]*[.]?[0-9]*)\s*(%|em|px|mm|cm|in|pt|pc)$') UNIT_RE = re.compile(r'^(-*[0-9]*[.]?[0-9]*)\s*(%|em|ex|en|px|mm|cm|in|pt|pc)$')
def __init__(self, element, stylizer): def __init__(self, element, stylizer):
self._element = element self._element = element
@ -362,6 +362,11 @@ class Style(object):
elif unit == 'em': elif unit == 'em':
font = font or self.fontSize font = font or self.fontSize
result = value * font result = value * font
elif unit in ('ex', 'en'):
# This is a hack for ex since we have no way to know
# the x-height of the font
font = font or self.fontSize
result = value * font * 0.5
elif unit == 'pc': elif unit == 'pc':
result = value * 12.0 result = value * 12.0
elif unit == 'mm': elif unit == 'mm':