mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
MOBI Output: Partial support for nested superscript and subscripts. Fixes #6132 (nested subscript conversion-----epub to mobi)
This commit is contained in:
parent
797e319a3e
commit
28d5193ba3
@ -58,6 +58,7 @@ class FormatState(object):
|
|||||||
self.fsize = 3
|
self.fsize = 3
|
||||||
self.ids = set()
|
self.ids = set()
|
||||||
self.valign = 'baseline'
|
self.valign = 'baseline'
|
||||||
|
self.nest = False
|
||||||
self.italic = False
|
self.italic = False
|
||||||
self.bold = False
|
self.bold = False
|
||||||
self.strikethrough = False
|
self.strikethrough = False
|
||||||
@ -233,9 +234,17 @@ class MobiMLizer(object):
|
|||||||
inline = etree.SubElement(inline, XHTML('a'), href=href)
|
inline = etree.SubElement(inline, XHTML('a'), href=href)
|
||||||
bstate.anchor = inline
|
bstate.anchor = inline
|
||||||
if valign == 'super':
|
if valign == 'super':
|
||||||
inline = etree.SubElement(inline, XHTML('sup'))
|
parent = inline
|
||||||
|
if istate.nest and bstate.inline is not None:
|
||||||
|
parent = bstate.inline
|
||||||
|
istate.nest = False
|
||||||
|
inline = etree.SubElement(parent, XHTML('sup'))
|
||||||
elif valign == 'sub':
|
elif valign == 'sub':
|
||||||
inline = etree.SubElement(inline, XHTML('sub'))
|
parent = inline
|
||||||
|
if istate.nest and bstate.inline is not None:
|
||||||
|
parent = bstate.inline
|
||||||
|
istate.nest = False
|
||||||
|
inline = etree.SubElement(parent, XHTML('sub'))
|
||||||
elif fsize != 3:
|
elif fsize != 3:
|
||||||
inline = etree.SubElement(inline, XHTML('font'),
|
inline = etree.SubElement(inline, XHTML('font'),
|
||||||
size=str(fsize))
|
size=str(fsize))
|
||||||
@ -343,8 +352,10 @@ class MobiMLizer(object):
|
|||||||
istate.family = 'serif'
|
istate.family = 'serif'
|
||||||
valign = style['vertical-align']
|
valign = style['vertical-align']
|
||||||
if valign in ('super', 'text-top') or asfloat(valign) > 0:
|
if valign in ('super', 'text-top') or asfloat(valign) > 0:
|
||||||
|
istate.nest = istate.valign in ('sub', 'super')
|
||||||
istate.valign = 'super'
|
istate.valign = 'super'
|
||||||
elif valign == 'sub' or asfloat(valign) < 0:
|
elif valign == 'sub' or asfloat(valign) < 0:
|
||||||
|
istate.nest = istate.valign in ('sub', 'super')
|
||||||
istate.valign = 'sub'
|
istate.valign = 'sub'
|
||||||
else:
|
else:
|
||||||
istate.valign = 'baseline'
|
istate.valign = 'baseline'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user