菜单

更新脚本

相关源文件

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

Material Icons 更新器(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,则限制处理的图标数量(用于测试)

来源:update/update_repo.py32-39

关键组件

  1. 元数据获取:从 Google Fonts 中检索所有图标信息

  2. 版本比较:比较本地和远程版本,以确定更新内容

  3. 资源下载:为所有需要的资源类型创建获取操作

  4. ZIP 解压:将下载的 ZIP 文件解压到相应的目录

  5. 字体处理:下载并处理字体文件,生成字形代码映射

来源:update/update_repo.py103-186 update/update_repo.py43-91

Material Symbols 更新器(update_symbols.py

update_symbols.py 脚本负责更新较新的 Material Symbols 集,该集使用了可变字体技术。它处理可变字体所需的更复杂的资源结构,并提供多种自定义轴。

命令行选项

标志类型默认描述
--fetch布尔值True是否实际下载资源,还是仅识别需要更新的内容
--overwrite布尔值是否更新并覆盖现有资源
--icon_limit整型0如果大于 0,则限制处理的图标数量(用于测试)

来源:update/update_symbols.py34-36

关键组件

  1. 特定于符号的元数据:获取 Material Symbols 特有的元数据

  2. 可变字体处理:下载四种可变字体轴的各种组合的资源

  3. 并行下载:使用 joblib 进行并行处理以加快下载速度

  4. 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 模块提供了用于处理字体文件和生成字形代码映射文件的实用函数。它被两个更新脚本使用。

主要功能

  1. 字体分析:使用 fontTools 库分析 TTF/OTF 字体文件
  2. 连字提取:提取连字信息,将图标名称映射到字形代码
  3. PUA 检测:专注于 Unicode 的私有使用区 (PUA) 中的字形代码,这是图标字体通常存储其符号的地方

来源:update/icons.py15-75

版本跟踪

更新脚本使用 current_versions.json 文件跟踪图标版本,该文件维护了图标标识符与其当前版本号的映射。

在更新过程中,脚本会

  1. 加载当前版本
  2. 与 Google 服务器上的元数据进行比较
  3. 仅更新版本较新的图标
  4. 将更新后的版本信息保存回文件

这种方法通过仅下载实际发生更改的资源来确保高效更新。

来源: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。

来源:update/update_repo.py64-91 update/update_symbols.py57-73