From 73119e25979911a0378c6c00b39a670ba871beb2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 13 Feb 2011 14:30:36 -0700 Subject: [PATCH] Conversion pipeline: Correctly handle align attribute on img tags. MOBI Output: Support the vertical-align CSS property for images --- src/calibre/ebooks/mobi/mobiml.py | 3 +++ src/calibre/ebooks/oeb/transforms/flatcss.py | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/mobi/mobiml.py b/src/calibre/ebooks/mobi/mobiml.py index 17a14d9e12..bdf81597b1 100644 --- a/src/calibre/ebooks/mobi/mobiml.py +++ b/src/calibre/ebooks/mobi/mobiml.py @@ -367,6 +367,9 @@ class MobiMLizer(object): istate.attrib['src'] = elem.attrib['src'] istate.attrib['align'] = 'baseline' cssdict = style.cssdict() + valign = cssdict.get('vertical-align', None) + if valign in ('top', 'bottom', 'middle'): + istate.attrib['align'] = valign for prop in ('width', 'height'): if cssdict[prop] != 'auto': value = style[prop] diff --git a/src/calibre/ebooks/oeb/transforms/flatcss.py b/src/calibre/ebooks/oeb/transforms/flatcss.py index 653aa4533b..db6bdf0a7a 100644 --- a/src/calibre/ebooks/oeb/transforms/flatcss.py +++ b/src/calibre/ebooks/oeb/transforms/flatcss.py @@ -207,7 +207,14 @@ class CSSFlattener(object): font_size = self.sbase if self.sbase is not None else \ self.context.source.fbase if 'align' in node.attrib: - cssdict['text-align'] = node.attrib['align'] + if tag != 'img': + cssdict['text-align'] = node.attrib['align'] + else: + val = node.attrib['align'] + if val in ('middle', 'bottom', 'top'): + cssdict['vertical-align'] = val + elif val in ('left', 'right'): + cssdict['text-align'] = val del node.attrib['align'] if node.tag == XHTML('font'): node.tag = XHTML('span')