From 2397ee84bf8ac27ed16942ba37dab317a334a68d Mon Sep 17 00:00:00 2001 From: "Marshall T. Vandegrift" Date: Sun, 11 Jan 2009 15:41:34 -0500 Subject: [PATCH] Mobipocket support: - Add 'vertical-align: text-top' as a -generating case - Add titles to title-less known s and cleanly ignoren any others - Add transform to generate results of CSS 'text-transform' and 'font-variant' --- src/calibre/ebooks/mobi/mobiml.py | 2 +- src/calibre/ebooks/mobi/writer.py | 6 +- src/calibre/ebooks/oeb/base.py | 23 +++- .../ebooks/oeb/transforms/manglecase.py | 111 ++++++++++++++++++ 4 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 src/calibre/ebooks/oeb/transforms/manglecase.py diff --git a/src/calibre/ebooks/mobi/mobiml.py b/src/calibre/ebooks/mobi/mobiml.py index 7dd2224bc3..73542da6c1 100644 --- a/src/calibre/ebooks/mobi/mobiml.py +++ b/src/calibre/ebooks/mobi/mobiml.py @@ -303,7 +303,7 @@ class MobiMLizer(object): else: istate.family = 'serif' valign = style['vertical-align'] - if valign in ('super', 'sup') or asfloat(valign) > 0: + if valign in ('super', 'text-top') or asfloat(valign) > 0: istate.valign = 'super' elif valign == 'sub' or asfloat(valign) < 0: istate.valign = 'sub' diff --git a/src/calibre/ebooks/mobi/writer.py b/src/calibre/ebooks/mobi/writer.py index baf4e11b2d..4e14c524cb 100644 --- a/src/calibre/ebooks/mobi/writer.py +++ b/src/calibre/ebooks/mobi/writer.py @@ -28,6 +28,7 @@ from calibre.ebooks.oeb.transforms.flatcss import CSSFlattener from calibre.ebooks.oeb.transforms.rasterize import SVGRasterizer from calibre.ebooks.oeb.transforms.trimmanifest import ManifestTrimmer from calibre.ebooks.oeb.transforms.htmltoc import HTMLTOCAdder +from calibre.ebooks.oeb.transforms.manglecase import CaseMangler from calibre.ebooks.mobi.palmdoc import compress_doc from calibre.ebooks.mobi.langcodes import iana2mobi from calibre.ebooks.mobi.mobiml import MBP_NS, MBP, MobiMLizer @@ -114,7 +115,8 @@ class Serializer(object): buffer.write('') for ref in self.oeb.guide.values(): path, frag = urldefrag(ref.href) - if hrefs[path].media_type not in OEB_DOCS: + if hrefs[path].media_type not in OEB_DOCS or + not ref.title: continue buffer.write('