Skip to content

sageri/ChangeFont

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Font Unifier

项目简介

Font Unifier 是一个基于 Python 的桌面应用程序,用于批量统一 Microsoft Office 文件(Word、Excel、PowerPoint)的字体。该工具通过直观的图形用户界面,让用户轻松选择文件并指定目标字体,实现字体统一化处理。

主要功能

  • 支持多种文件格式:.docx、.xlsx、.pptx
  • 批量字体更改:统一文档中所有文本的字体
  • 主题字体覆盖:正确处理 Excel/Word 的主题字体引用(scheme/asciiTheme),避免多 sheet 或 CJK 文本回退到旧字体
  • 现代图形界面:浅色卡片式布局、靛蓝强调色、加载动画、状态色块
  • 智能字体选择:下拉框枚举系统全部字体,支持输入并前缀自动匹配(行为对标 Excel)
  • 后台处理:大文件处理在后台线程执行,界面不卡顿
  • 自动保存:生成修改后的新文件,原文件保持不变

安装说明

系统要求

  • Python 3.12 或更高版本
  • Windows 操作系统
  • Microsoft Office(用于查看处理后的文件)

依赖包安装

pip install PyQt6 python-docx openpyxl python-pptx

运行环境设置

  1. 创建虚拟环境(推荐):
python -m venv .venv
  1. 激活虚拟环境:
.venv\Scripts\activate
  1. 安装依赖:
pip install -r requirements.txt

使用方法

启动应用程序

双击运行 run_font_unifier.bat 文件,或在命令行中执行:

python src/font_unifier.py

操作步骤

  1. 点击 "Browse…" 按钮选择要处理的 Office 文件
  2. 在 "目标字体" 框中选择目标字体(默认为 "Meiryo UI"):可下拉选择,也可直接输入,输入时按前缀自动匹配系统已安装字体
  3. 点击 "Start Processing" 按钮开始处理
  4. 处理完成后,查看状态信息和保存路径

支持的文件类型

  • Word 文档 (.docx):更改正文、表格(含嵌套)、页眉/页脚文本的字体(同时清除主题字体引用)
  • Excel 工作簿 (.xlsx):替换全部字体定义(含默认/Normal 字体)并清除 scheme,覆盖所有工作表
  • PowerPoint 演示文稿 (.pptx):更改所有幻灯片文本(含表格、图表、嵌套组形状)的字体

输出说明

处理后的文件将以 原文件名_modified.扩展名 的格式保存到原文件所在目录。例如:

  • document.docxdocument_modified.docx
  • workbook.xlsxworkbook_modified.xlsx

注意事项

  • 原文件保护:工具不会修改原文件,只生成新的修改版本
  • 字体兼容性:确保指定的目标字体在系统中已安装
  • 文件大小:大文件处理可能需要较长时间,请耐心等待
  • 错误处理:如果处理过程中出现错误,请检查文件是否损坏或字体名称是否正确

项目结构

ChangeFont/
├── src/
│   └── font_unifier.py      # 主程序文件
├── tests/                   # 单元测试(pytest)
├── docs/
│   └── PRD.md               # 产品需求文档
├── config/                  # 配置文件目录
├── run_font_unifier.bat     # Windows 启动脚本
├── README.md                # 项目说明文档
├── requirements.txt         # Python 依赖包列表
├── .gitignore               # Git 忽略文件配置
└── .venv/                   # 虚拟环境目录(运行时创建)

开发信息

  • 开发语言:Python 3.12+
  • GUI 框架:PyQt6
  • Office 处理库
    • python-docx(Word 文件处理)
    • openpyxl(Excel 文件处理)
    • python-pptx(PowerPoint 文件处理)
  • 字体选择:下拉框枚举系统已安装的全部字体,支持输入与前缀自动匹配

许可证

本项目为个人实验项目,遵循 MIT 许可证。

贡献

欢迎提交 Issue 和 Pull Request 来改进这个项目。

更新日志

v1.0.0

  • 初始版本发布
  • 支持 Word、Excel、PowerPoint 文件的字体统一
  • 提供图形用户界面
  • 实现基本的错误处理和状态反馈

v1.1.0

  • 字体选择方式改为下拉框,提供16种预定义字体选项
  • 默认字体设置为 Meiryo UI
  • 改进用户体验,减少手动输入错误

v1.2.0

  • 修复中日文字体不生效问题(正确写入 eastAsia/ea 字体属性)
  • 修复 Excel 处理覆盖原有字号、粗体、颜色的问题(改为仅替换字体名)
  • 修复 PowerPoint 图表分支崩溃及轴 API 误用问题
  • 支持文件扩展名大小写(如 .PPTX
  • 字体处理迁移到后台线程(QThread),解决大文件界面卡死
  • 新增单元测试(pytest)

v1.3.0

  • 界面现代化:浅色卡片式布局、靛蓝强调色、加载动画、状态色块
  • 字体选择增强:枚举系统全部字体,可下拉+输入,前缀自动匹配(对标 Excel)
  • 修复 Excel 多 sheet 字体未生效:遍历全部字体定义并清除 scheme,覆盖默认/Normal 字体
  • 修复 Word 主题字体引用残留:清除 asciiTheme 等属性
  • 代码简化(process_office_file 路径处理、process_shape_text、GUI 小方法抽取)

v1.4.0

  • Word 覆盖扩展:页眉/页脚(默认/首页/偶数页)、嵌套表格(_process_docx_container 递归)
  • 稳定性:窗口关闭时等待后台线程结束(closeEvent),避免运行中线程被销毁
  • 健壮性:PPT 图表字体异常改为 logger.debug 记录而非静默吞掉
  • 可测性:process_shape_text 提升为模块级 _process_ppt_shape
  • 新增 5 项回归测试(Excel scheme/默认字体、Word 主题属性清除/页眉页脚/嵌套表格)
  • 进一步简化:docx 处理合并为单一递归、QSS 颜色生成去重

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors