import yaml import os from .utils import get_files __all__ = ['load_fonts', 'DSFont'] class DSFont: def __init__(self, path, language): self.path = path self.language = language def load_fonts(config_path='configs/dataset.yml') -> list[DSFont]: with open(config_path, 'r', encoding='utf-8') as f: config = yaml.safe_load(f) ds_config = config['dataset'] ds_path = ds_config['path'] font_list = [] for spec in ds_config['specs']: for spec_path in spec['path']: spec_path = os.path.join(ds_path, spec_path) spec_files = get_files(spec_path) if spec.keys().__contains__('rule'): rule = eval(spec['rule']) else: rule = None for file in spec_files: if rule is not None and not rule(file): print('skip: ' + file) continue font_list.append(DSFont(file, spec['language'])) return font_list