|
|
这样改你看行不行
- import traceback
- from fontTools.ttLib import TTFont, TTCollection
- import re
- import os
- import argparse
- # 默认目标文件夹
- folder_path = './'
- # 创建解析器
- parser = argparse.ArgumentParser(description='命令行参数解析')
- # 装有ttf或者otf字体的目标文件夹
- parser.add_argument('-d', '--directory', type=str, help='目标文件夹')
- # 解析参数
- args = parser.parse_args()
- if(args.directory!=None):
- folder_path = str(args.directory)
- else:
- folder_path = './'
-
- # 判断字符串中是否包含中文
- def contains_chinese(text):
- return re.search(r'[\u4e00-\u9fff]', text) is not None
- # 获取指定.ttf字体文件的内部中文名,如果没有中文名将使用英文名
- def get_font_chinese_name(ttfFile):
- if ttfFile.lower().endswith(".ttc"):
- font_collection = TTCollection(ttfFile).fonts
- else:
- font_collection = [TTFont(ttfFile)]
- names = []
- for font in font_collection:
- name_dict = {} #名称字典, 如果有多个中文名,按优先级序列选择(简体中文>繁体中文,windows>mac),如果没有中文名,则按优先级选择英文名(英语美国>英语英国,windows>mac)
- name_priority = [2052, 3076, 33, 36 ,1028, 19, 1033, 0, 2057]
- for i, font_name in enumerate(font['name'].names):
- # print(i,font_name,font_name.langID,font_name.nameID)
- if font_name.nameID == 4: #包含字体家族详细信息:
- try:
- name_dict[font_name.langID] = font_name.toUnicode()
- except Exception:
- continue
- # 按优先级序列搜索
- for lang_id in name_priority:
- if lang_id in name_dict.keys():
- names.append(name_dict[lang_id].replace(" ","-"))
- break
- else:
- break
- if not names:
- print("错误:",ttfFile,"无法找到中文名或英文名。")
- return -1
- else:
- return '&'.join(names)
- #重命名文件
- def rename_file(old_name, new_name):
- try:
- os.rename(old_name, new_name)
- print(f"文件 {old_name} 已成功重命名为 {new_name}")
- except FileNotFoundError:
- print(f"文件 {old_name} 不存在,请检查路径是否正确。")
- #批量重命名文件
- if __name__ == "__main__":
- for root, dirs, files in os.walk(folder_path):
- for filename in files:
- if filename.lower().endswith(".ttf") or filename.lower().endswith(".otf") or filename.lower().endswith(".ttc"):
- ttfFile = os.path.join(root, filename)
- _, fileExtension = os.path.splitext(filename)
- try:
- c_name = get_font_chinese_name(ttfFile)
- if c_name==-1: continue
- newFileName = os.path.join(root,c_name+fileExtension)
- rename_file(ttfFile,newFileName)
- except Exception as e:
- traceback.print_exc()
复制代码
|
|