diff --git a/install.ps1 b/install.ps1 index bfea03a81a9..d985a70858e 100644 --- a/install.ps1 +++ b/install.ps1 @@ -11,13 +11,19 @@ .EXAMPLE C:\PS> ./install.ps1 FiraCode, Hack Installs all the FiraCode and Hack fonts. +.EXAMPLE + C:\PS> ./install.ps1 CascadiaCode -WindowsCompatibleOnly + Filters fonts to include only those labeled as 'Windows Compatible' + Can be used in combination with the -FontName and/or -WhatIf parameters .EXAMPLE C:\PS> ./install.ps1 DejaVuSansMono -WhatIf Shows which fonts would be installed without actually installing the fonts. Remove the "-WhatIf" to install the fonts. #> [CmdletBinding(SupportsShouldProcess)] -param () +param ( + [switch]$WindowsCompatibleOnly +) dynamicparam { $Attributes = [Collections.ObjectModel.Collection[Attribute]]::new() @@ -44,8 +50,17 @@ end { Join-Path $PSScriptRoot patched-fonts | Push-Location foreach ($aFontName in $FontName) { - Get-ChildItem $aFontName -Filter "*.ttf" -Recurse | Foreach-Object {$fontFiles.Add($_)} - Get-ChildItem $aFontName -Filter "*.otf" -Recurse | Foreach-Object {$fontFiles.Add($_)} + Get-ChildItem $aFontName -Recurse | Where-Object { + $IsValidFileExtension = $_.Extension -match 'ttf|otf' + + if ($WindowsCompatibleOnly) { + $IsValidFileExtension -and ($_.BaseName -match 'Windows Compatible') + } else { + $IsValidFileExtension + } + } | ForEach-Object { + $fontFiles.Add($_) + } } Pop-Location