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/font.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 | |