diff --git a/src/calibre/ebooks/lit/reader.py b/src/calibre/ebooks/lit/reader.py index 06f5ebdabb..407aedae1f 100644 --- a/src/calibre/ebooks/lit/reader.py +++ b/src/calibre/ebooks/lit/reader.py @@ -276,8 +276,11 @@ class UnBinary(object): state = 'get attr' elif count > 0: if not in_censorship: - self.buf.write(c.encode( - 'ascii', 'xmlcharrefreplace')) + if c == '"': + c = '"' + elif c == '<': + c = '<' + self.buf.write(c.encode('ascii', 'xmlcharrefreplace')) count -= 1 if count == 0: if not in_censorship: diff --git a/src/calibre/ebooks/oeb/transforms/flatcss.py b/src/calibre/ebooks/oeb/transforms/flatcss.py index ee7d7fa0b2..63466ac551 100644 --- a/src/calibre/ebooks/oeb/transforms/flatcss.py +++ b/src/calibre/ebooks/oeb/transforms/flatcss.py @@ -37,6 +37,8 @@ class KeyMapper(object): @staticmethod def relate(size, base): + if size == 0: + return base size = float(size) base = float(base) if abs(size - base) < 0.1: return 0 @@ -48,6 +50,7 @@ class KeyMapper(object): return result def __getitem__(self, ssize): + ssize = asfloat(ssize, 0) if ssize in self.cache: return self.cache[ssize] dsize = self.map(ssize) @@ -66,6 +69,7 @@ class ScaleMapper(object): self.dscale = float(dbase) / float(sbase) def __getitem__(self, ssize): + ssize = asfloat(ssize, 0) dsize = ssize * self.dscale return dsize