From: Radek Czajka Date: Thu, 4 May 2023 10:21:44 +0000 (+0200) Subject: Marquise: scale title text in all layouts. X-Git-Tag: 2.4.12 X-Git-Url: https://git.mdrn.pl/librarian.git/commitdiff_plain/28532fa3b437bb36b9d5c582851d3cdcf8d772ab Marquise: scale title text in all layouts. --- diff --git a/setup.py b/setup.py index 1502037..44ab5ee 100755 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ def whole_tree(prefix, path): setup( name='librarian', - version='2.4.11.1', + version='2.4.12', description='Converter from WolneLektury.pl XML-based language to XHTML, TXT and other formats', author="Marek Stępniowski", author_email='marek@stepniowski.com', diff --git a/src/librarian/covers/marquise.py b/src/librarian/covers/marquise.py index fb84a79..d0ce49e 100644 --- a/src/librarian/covers/marquise.py +++ b/src/librarian/covers/marquise.py @@ -99,20 +99,25 @@ class MarquiseCover(Cover): (self.m.marquise_xl, None), ] - for marquise_h, lines in layout_options: - title_box_height = marquise_h - self.m.title_box_top - self.m.margin - try: - title_box = TitleBox( - self, - self.m.width - 2 * self.m.margin, - title_box_height, - lines, - force=lines is None - ) - except DoesNotFit: - continue - else: - break + # Trying all the layout options with decreasing scale. + title_box = None + title_scale = 1 + while title_box is None: + for marquise_h, lines in layout_options: + title_box_height = marquise_h - self.m.title_box_top - self.m.margin + try: + title_box = TitleBox( + self, + self.m.width - 2 * self.m.margin, + title_box_height, + lines, + scale=title_scale + ) + except DoesNotFit: + continue + else: + break + title_scale *= .99 self.marquise_height = marquise_h marquise = Marquise(self, marquise_h) diff --git a/src/librarian/covers/widgets/title.py b/src/librarian/covers/widgets/title.py index a5c6522..7d070ca 100644 --- a/src/librarian/covers/widgets/title.py +++ b/src/librarian/covers/widgets/title.py @@ -10,29 +10,14 @@ class TitleBox(Widget): leading = 176 # 50pt tracking = 2.385 - def __init__(self, cover, width, height, lines, force=False): + def __init__(self, cover, width, height, lines, scale=1): self.width = width self.height = height self.lines = lines - self.force = force - self.m = Metric(self, cover.m._scale) + self.m = Metric(self, cover.m._scale * scale) super().__init__(cover) def setup(self): - m = self.m - while True: - try: - self.build_box() - except: - if self.force: - self.m = Metric(self, self.m._scale * .99) - print('lower to', self.m.font_size) - else: - raise - else: - break - - def build_box(self): title_font = PIL.ImageFont.truetype( get_resource('fonts/SourceSans3VF-Roman.ttf'), self.m.font_size,