diff --git a/src/odf/odf2xhtml.py b/src/odf/odf2xhtml.py index df7ce0bc8d..c0537698c4 100644 --- a/src/odf/odf2xhtml.py +++ b/src/odf/odf2xhtml.py @@ -937,8 +937,21 @@ ol, ul { padding-left: 2em; } """ if self.currentstyle is None: # Added by Kovid return + + # Added by Kovid + names = {x[1]:x for x in attrs.iterkeys()} + ignore_keys = set() + if ('margin' in names and 'margin-top' in names and 'margin-left' in + names and 'margin-right' in names and 'margin-bottom' in + names): + # These come from XML and we cannot preserve XML attribute order so + # we assume that margin is to be overriden + # See https://bugs.launchpad.net/calibre/+bug/941134 + ignore_keys.add(names['margin']) + for key,attr in attrs.items(): - self.styledict[self.currentstyle][key] = attr + if key not in ignore_keys: + self.styledict[self.currentstyle][key] = attr familymap = {'frame':'frame', 'paragraph':'p', 'presentation':'presentation',