X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/8495b2ce8e9aebe778db74217b60fb68c0b5f9f2..aeb59958474fc1036ac19618fb1bdbdefd52da60:/src/librarian/covers/widgets/title.py diff --git a/src/librarian/covers/widgets/title.py b/src/librarian/covers/widgets/title.py index a5c6522..b9dc8cb 100644 --- a/src/librarian/covers/widgets/title.py +++ b/src/librarian/covers/widgets/title.py @@ -1,3 +1,6 @@ +# This file is part of Librarian, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Wolne Lektury. See NOTICE for more information. +# import PIL.ImageFont from librarian import get_resource from librarian.cover import Metric @@ -10,35 +13,29 @@ 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, - layout_engine=PIL.ImageFont.LAYOUT_BASIC + layout_engine=PIL.ImageFont.Layout.BASIC ) title_font.set_variation_by_axes([800]) + title_font_2 = PIL.ImageFont.truetype( + get_resource('fonts/OpenSans-VariableFont_wdth,wght.ttf'), + self.m.font_size, + layout_engine=PIL.ImageFont.Layout.BASIC + ) + title_font_2.set_variation_by_axes([700, 700]) + font_fallbacks = { + ('\u0590', '\u05FF'): title_font_2, + } lines = self.lines or (int(self.height * (176/200) / self.m.leading) - 0) @@ -50,7 +47,8 @@ class TitleBox(Widget): lines, self.m.leading, self.m.tracking, - .5, .5 + .5, .5, + font_fallbacks=font_fallbacks ) self.margin_top = self.tb.margin_top