MOBI Output: Make super/subscripts use a slightly smaller font when rendered on a Kindle. Also allow the use of vertical-align:top/bottom in the CSS to specify a super/subscript. Fixes #758667 (conversion to mobi ignores vertical-align:top and superscript font size)

This commit is contained in:
Kovid Goyal 2011-04-13 10:49:32 -06:00
parent 569bc4ede1
commit 4ebe630652

View File

@ -463,9 +463,9 @@ class MobiMLizer(object):
text = COLLAPSE.sub(' ', elem.text) text = COLLAPSE.sub(' ', elem.text)
valign = style['vertical-align'] valign = style['vertical-align']
not_baseline = valign in ('super', 'sub', 'text-top', not_baseline = valign in ('super', 'sub', 'text-top',
'text-bottom') or ( 'text-bottom', 'top', 'bottom') or (
isinstance(valign, (float, int)) and abs(valign) != 0) isinstance(valign, (float, int)) and abs(valign) != 0)
issup = valign in ('super', 'text-top') or ( issup = valign in ('super', 'text-top', 'top') or (
isinstance(valign, (float, int)) and valign > 0) isinstance(valign, (float, int)) and valign > 0)
vtag = 'sup' if issup else 'sub' vtag = 'sup' if issup else 'sub'
if not_baseline and not ignore_valign and tag not in NOT_VTAGS and not isblock: if not_baseline and not ignore_valign and tag not in NOT_VTAGS and not isblock:
@ -484,6 +484,7 @@ class MobiMLizer(object):
parent = bstate.para if bstate.inline is None else bstate.inline parent = bstate.para if bstate.inline is None else bstate.inline
if parent is not None: if parent is not None:
vtag = etree.SubElement(parent, XHTML(vtag)) vtag = etree.SubElement(parent, XHTML(vtag))
vtag = etree.SubElement(vtag, XHTML('small'))
# Add anchors # Add anchors
for child in vbstate.body: for child in vbstate.body:
if child is not vbstate.para: if child is not vbstate.para: