Refactoring: Move

Move font related functions into font module
This commit is contained in:
Matthias Bisping 2023-02-01 17:07:33 +01:00
parent de9b3bad93
commit 1de938f2fa
2 changed files with 26 additions and 28 deletions

View File

@ -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"]))

View File

@ -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(