From 7003a4e90bce2f8f5ff9ecf28c202c83524d1338 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 3 Nov 2016 21:15:56 +0530 Subject: [PATCH] Generate covers: Fix & in the series causing incorrect formatting of series number. Fixes #1638759 [Cover Generator Format](https://bugs.launchpad.net/calibre/+bug/1638759) --- src/calibre/ebooks/covers.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/calibre/ebooks/covers.py b/src/calibre/ebooks/covers.py index 95bbf86135..9b4b20c1a0 100644 --- a/src/calibre/ebooks/covers.py +++ b/src/calibre/ebooks/covers.py @@ -105,7 +105,7 @@ def parse_text_formatting(text): if tag in {'b', 'strong', 'i', 'em'}: open_ranges.append([tag, offset, -1]) else: - offset += len(tok) + offset += len(tok.replace('&', '&')) text.append(tok) text = ''.join(text) formats = [] @@ -718,16 +718,18 @@ def generate_masthead(title, output_path=None, width=600, height=60, as_qimage=F def test(scale=0.25): - from PyQt5.Qt import QLabel, QApplication, QPixmap, QMainWindow, QWidget, QScrollArea, QGridLayout - app = QApplication([]) + from PyQt5.Qt import QLabel, QPixmap, QMainWindow, QWidget, QScrollArea, QGridLayout + from calibre.gui2 import Application + app = Application([]) mi = Metadata('Unknown', ['Kovid Goyal', 'John & Doe', 'Author']) - mi.series = 'A series of styles' + mi.series = 'A series & styles' m = QMainWindow() sa = QScrollArea(m) w = QWidget(m) sa.setWidget(w) l = QGridLayout(w) w.setLayout(l), l.setSpacing(30) + scale *= w.devicePixelRatioF() labels = [] for r, color in enumerate(sorted(default_color_themes)): for c, style in enumerate(sorted(all_styles())): @@ -736,6 +738,7 @@ def test(scale=0.25): prefs = override_prefs(cprefs, override_color_theme=color, override_style=style) scale_cover(prefs, scale) img = generate_cover(mi, prefs=prefs, as_qimage=True) + img.setDevicePixelRatio(w.devicePixelRatioF()) la = QLabel() la.setPixmap(QPixmap.fromImage(img)) l.addWidget(la, r, c)