世界杯黑哨

在现代应用程序开发和设计中,合适的字体能够大大提升用户体验和界面美观度。为了方便地安装和管理字体,本文将介绍如何使用 PowerShell 脚本自动化安装字体。

1. 背景

在 Windows 操作系统中,字体通常存储在 C:\Windows\Fonts 目录中,用户可以通过安装新字体到系统中来使用。如果要一次安装大量新字体,手动安装可能会很繁琐,因此编写一个自动化脚本可以节省时间和精力。

2. 脚本功能

从指定目录中递归查找字体文件(包括 .ttf 和 .otf 文件)。将字体文件复制到系统字体目录。在注册表中注册新安装的字体,以便在系统中可以正确识别和使用。

3. 获取字体:

以安装 JetBrainsMono 字体为例,从JetBrains官网下载字体:https://www.jetbrains.com/lp/mono/ 得到一个zip压缩包(JetBrainsMono-2.304.zip),里面大概包含30多个字体文件,解压到你的本地路径,如:D:\JetBrainsMono-2.304

3. PowerShell 脚本

以下是完整的脚本代码:

# 定义源文件夹,包含字体文件

$SourceFolder = "D:\JetBrainsMono-2.304"

# 定义注册表路径

$FontsRegistryPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"

# 添加系统绘图的程序集

Add-Type -AssemblyName System.Drawing

# 创建一个新的私有字体集合

$WindowsFonts = [System.Drawing.Text.PrivateFontCollection]::new()

# 获取源文件夹中所有的 .ttf 和 .otf 字体文件,并递归查找

Get-ChildItem -Path $SourceFolder -Include *.ttf, *.otf -Recurse -File | ForEach-Object {

# 将字体文件复制到系统字体文件夹中

Copy-Item -Path $_.FullName -Destination "$env:SystemRoot\Fonts" -Force -Confirm:$false -PassThru

# 输出当前正在安装的字体名称

Write-Host "正在安装字体: $($_.Name)"

# 将字体文件添加到私有字体集合中

$WindowsFonts.AddFontFile($_.Fullname)

# 添加字体的注册表值

$FontFamilyName = $WindowsFonts.Families[-1].Name

$RegistryValue = @{

Path = $FontsRegistryPath # 字体注册表路径

Name = $FontFamilyName # 字体名称

Value = $_.Name # 字体文件的名称

}

# 移除可能已存在的同名字体注册表项

Remove-ItemProperty -Name $FontFamilyName -Path $FontsRegistryPath -ErrorAction SilentlyContinue

# 添加新的注册表项以注册新安装的字体

New-ItemProperty @RegistryValue

} | Out-Null

修改的地方只有一处:将 $SourceFolder = 改成你的实际解压路径。

脚本执行截图:

4. 使用说明

需要以 管理员权限 运行 ps1 脚本,否则可能没有权限修改系统字体目录和注册表。确保指定的 源文件夹路径 和 字体文件类型 是正确的。

5. 结论

通过使用 PowerShell 脚本,你可以高效地自动化字体的安装过程,节省时间并减少手动操作中的错误。这样的脚本在进行大规模部署时尤为重要,尤其是在需要统一字体样式的环境中。