From 1de938f2faa50cb805d7ebea3075c1d6d969d254 Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Wed, 1 Feb 2023 17:07:33 +0100 Subject: [PATCH] Refactoring: Move Move font related functions into font module --- synthesis/text/font.py | 26 ++++++++++++++++++++++++- test/fixtures/page_generation/page.py | 28 +-------------------------- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/synthesis/text/font.py b/synthesis/text/font.py index 48368e4..47c6c27 100644 --- a/synthesis/text/font.py +++ b/synthesis/text/font.py @@ -4,7 +4,7 @@ from pathlib import Path from typing import List from PIL import Image, ImageDraw, ImageFont -from funcy import lmap, complement, keep, first, lzip +from funcy import lmap, complement, keep, first, lzip, omit, project from loguru import logger from synthesis.random import rnd @@ -80,3 +80,27 @@ def get_fonts(path: Path = None) -> List[str]: fonts = list(path.rglob("*.ttf")) fonts = [font.name for font in fonts] return fonts + + +@lru_cache(maxsize=None) +def get_font_picker(**kwargs): + return RandomFontPicker(**kwargs, return_default_font=True) + + +@lru_cache(maxsize=None) +def pick_random_mono_space_font_available_on_system(**kwargs): + font_picker = get_font_picker(**omit(kwargs, ["includes", "excludes"])) + return font_picker.pick_random_mono_space_font_available_on_system() + + +@lru_cache(maxsize=None) +def pick_random_font_available_on_system(**kwargs): + kwargs["excludes"] = ( + *kwargs.get( + "excludes", + ), + "Kinnari", + "KacstOne", + ) + font_picker = get_font_picker(**omit(kwargs, ["includes", "excludes"])) + return font_picker.pick_random_font_available_on_system(**project(kwargs, ["includes", "excludes"])) diff --git a/test/fixtures/page_generation/page.py b/test/fixtures/page_generation/page.py index 7d84451..99f913d 100644 --- a/test/fixtures/page_generation/page.py +++ b/test/fixtures/page_generation/page.py @@ -30,7 +30,7 @@ from synthesis.partitioner.page_partitioner import PagePartitioner from synthesis.random import rnd from synthesis.segment.content_rectangle import ContentRectangle from synthesis.segment.random_content_rectangle import RandomContentRectangle -from synthesis.text.font import RandomFontPicker +from synthesis.text.font import pick_random_mono_space_font_available_on_system, pick_random_font_available_on_system from synthesis.text.line_formatter.identity import IdentityLineFormatter from synthesis.text.line_formatter.paragraph import ParagraphLineFormatter @@ -52,8 +52,6 @@ from funcy import ( lfilter, repeatedly, mapcat, - omit, - project, chunks, ) @@ -671,30 +669,6 @@ def dump_plt_to_image(rectangle): return image -@lru_cache(maxsize=None) -def get_font_picker(**kwargs): - return RandomFontPicker(**kwargs, return_default_font=True) - - -@lru_cache(maxsize=None) -def pick_random_mono_space_font_available_on_system(**kwargs): - font_picker = get_font_picker(**omit(kwargs, ["includes", "excludes"])) - return font_picker.pick_random_mono_space_font_available_on_system() - - -@lru_cache(maxsize=None) -def pick_random_font_available_on_system(**kwargs): - kwargs["excludes"] = ( - *kwargs.get( - "excludes", - ), - "Kinnari", - "KacstOne", - ) - font_picker = get_font_picker(**omit(kwargs, ["includes", "excludes"])) - return font_picker.pick_random_font_available_on_system(**project(kwargs, ["includes", "excludes"])) - - @lru_cache(maxsize=None) def pick_colormap() -> ListedColormap: cmap_name = rnd.choice(