69 lines
2.3 KiB
Python
69 lines
2.3 KiB
Python
|
# font management
|
|||
|
# author: Zeng Yifu(曾逸夫)
|
|||
|
# creation time: 2022-05-01
|
|||
|
# email: zyfiy1314@163.com
|
|||
|
# project homepage: https://gitee.com/CV_Lab/gradio_yolov5_det
|
|||
|
|
|||
|
import os
|
|||
|
import sys
|
|||
|
from pathlib import Path
|
|||
|
|
|||
|
import wget
|
|||
|
from rich.console import Console
|
|||
|
|
|||
|
ROOT_PATH = sys.path[0] # Project root directory
|
|||
|
|
|||
|
# Chinese, English, Russian, Spanish, Arabic, Korean
|
|||
|
fonts_list = ["SimSun.ttf", "TimesNewRoman.ttf", "malgun.ttf"] # font list
|
|||
|
fonts_suffix = ["ttc", "ttf", "otf"] # font suffix
|
|||
|
|
|||
|
data_url_dict = {
|
|||
|
"SimSun.ttf": "https://gitee.com/CV_Lab/gradio_yolov5_det/attach_files/1053539/download/SimSun.ttf",
|
|||
|
"TimesNewRoman.ttf": "https://gitee.com/CV_Lab/gradio_yolov5_det/attach_files/1053537/download/TimesNewRoman.ttf",
|
|||
|
"malgun.ttf": "https://gitee.com/CV_Lab/gradio_yolov5_det/attach_files/1053538/download/malgun.ttf",}
|
|||
|
|
|||
|
console = Console()
|
|||
|
|
|||
|
|
|||
|
# create font library
|
|||
|
def add_fronts(font_diff):
|
|||
|
|
|||
|
global font_name
|
|||
|
|
|||
|
for k, v in data_url_dict.items():
|
|||
|
if k in font_diff:
|
|||
|
font_name = v.split("/")[-1] # font name
|
|||
|
Path(f"{ROOT_PATH}/fonts").mkdir(parents=True, exist_ok=True) # Create a directory
|
|||
|
|
|||
|
file_path = f"{ROOT_PATH}/fonts/{font_name}" # font path
|
|||
|
|
|||
|
try:
|
|||
|
# Download font file
|
|||
|
wget.download(v, file_path)
|
|||
|
except Exception as e:
|
|||
|
print("Path error! Program ended!")
|
|||
|
print(e)
|
|||
|
sys.exit()
|
|||
|
else:
|
|||
|
print()
|
|||
|
console.print(f"{font_name} [bold green]font file download complete![/bold green] has been saved to: {file_path}")
|
|||
|
|
|||
|
|
|||
|
# Determine the font file
|
|||
|
def is_fonts(fonts_dir):
|
|||
|
if os.path.isdir(fonts_dir):
|
|||
|
# if the font library exists
|
|||
|
f_list = os.listdir(fonts_dir) # local font library
|
|||
|
|
|||
|
font_diff = list(set(fonts_list).difference(set(f_list)))
|
|||
|
|
|||
|
if font_diff != []:
|
|||
|
# font does not exist
|
|||
|
console.print("[bold red] font does not exist, loading...[/bold red]")
|
|||
|
add_fronts(font_diff) # Create a font library
|
|||
|
else:
|
|||
|
console.print(f"{fonts_list}[bold green]font already exists![/bold green]")
|
|||
|
else:
|
|||
|
# The font library does not exist, create a font library
|
|||
|
console.print("[bold red]font library does not exist, creating...[/bold red]")
|
|||
|
add_fronts(fonts_list) # Create a font library
|