Material Design Icons 仓库中的更新脚本可以自动化从 Google 服务器获取最新图标资源的流程。这些脚本负责使 Material Icons(经典图标集)和 Material Symbols(基于可变字体的较新图标集)保持与最新设计和新增内容同步。有关更新后版本跟踪的信息,请参阅版本跟踪。
更新系统由 Python 脚本组成,这些脚本用于获取可用图标的元数据,将其与本地跟踪的版本进行比较,并在需要时下载更新的资源。该系统同时处理常规图标资源(SVG、PNG、XML)和字体文件,确保仓库的所有组件保持同步。
来源:update/update_repo.py update/update_symbols.py update/icons.py update/current_versions.json
更新系统遵循系统化的工作流程,以确定需要更新的内容并高效地获取和处理这些资源。两个更新脚本具有相似的整体流程。
来源:update/update_repo.py218-275 update/update_symbols.py203-254
update_repo.py)update_repo.py 脚本负责更新经典的 Material Icons 集。它会下载各种尺寸和样式的 SVG 文件、Android/iOS 资源和 PNG 文件。
| 标志 | 类型 | 默认 | 描述 |
|---|---|---|---|
--skip_existing | 布尔值 | 否 | 跳过已本地存在的文件的更新,即使有可用更新 |
--fetch | 布尔值 | True | 是否实际下载资源,还是仅识别需要更新的内容 |
--explode_zip_files | 布尔值 | True | 是否解压下载的 ZIP 文件 |
--icon_limit | 整型 | 0 | 如果大于 0,则限制处理的图标数量(用于测试) |
元数据获取:从 Google Fonts 中检索所有图标信息
版本比较:比较本地和远程版本,以确定更新内容
资源下载:为所有需要的资源类型创建获取操作
ZIP 解压:将下载的 ZIP 文件解压到相应的目录
字体处理:下载并处理字体文件,生成字形代码映射
来源:update/update_repo.py103-186 update/update_repo.py43-91
update_symbols.py)update_symbols.py 脚本负责更新较新的 Material Symbols 集,该集使用了可变字体技术。它处理可变字体所需的更复杂的资源结构,并提供多种自定义轴。
| 标志 | 类型 | 默认 | 描述 |
|---|---|---|---|
--fetch | 布尔值 | True | 是否实际下载资源,还是仅识别需要更新的内容 |
--overwrite | 布尔值 | 否 | 是否更新并覆盖现有资源 |
--icon_limit | 整型 | 0 | 如果大于 0,则限制处理的图标数量(用于测试) |
来源:update/update_symbols.py34-36
特定于符号的元数据:获取 Material Symbols 特有的元数据
可变字体处理:下载四种可变字体轴的各种组合的资源
并行下载:使用 joblib 进行并行处理以加快下载速度
WOFF2 处理:将 Web Open Font Format 2 (WOFF2) 文件转换为 TTF
来源:update/update_symbols.py87-91 update/update_symbols.py227-232 update/update_symbols.py144 update/update_symbols.py149-152
icons.py)icons.py 模块提供了用于处理字体文件和生成字形代码映射文件的实用函数。它被两个更新脚本使用。
更新脚本使用 current_versions.json 文件跟踪图标版本,该文件维护了图标标识符与其当前版本号的映射。
在更新过程中,脚本会
这种方法通过仅下载实际发生更改的资源来确保高效更新。
来源:update/current_versions.json1-1300 update/update_repo.py231-234 update/update_symbols.py216-219
更新系统需要多个 Python 依赖项,这些依赖项列在 requirements.txt 中
absl-py
fonttools
requests
joblib
...
您可以使用以下命令安装这些依赖项:
来源:update/requirements.txt1-19
更新 Material Icons(经典图标集)
更新 Material Symbols(基于可变字体的较新图标集)
进行选择性或测试性更新
来源:update/update_repo.py257-267 update/update_symbols.py245-249
更新脚本旨在与整个仓库结构集成,将下载的资源放置在适当的目录中。
这使得开发人员可以轻松找到他们项目所需的特定资源,无论是使用 Material Icons 还是 Material Symbols。