function Invoke-WinUtilFontScaling { <# .SYNOPSIS Applies UI and font scaling for accessibility .PARAMETER ScaleFactor Sets the scaling from 0.75 and 2.0. Default is 1.0 (100% - no scaling) .EXAMPLE Invoke-WinUtilFontScaling -ScaleFactor 1.25 # Applies 125% scaling #> param ( [double]$ScaleFactor = 1.0 ) # Validate if scale factor is within the range if ($ScaleFactor -lt 0.75 -or $ScaleFactor -gt 2.0) { Write-Warning "Scale factor must be between 0.75 and 2.0. Using 1.0 instead." $ScaleFactor = 1.0 } # Define an array for resources to be scaled $fontResources = @( "FontSize", "ButtonFontSize", "HeaderFontSize", "TabButtonFontSize", "IconFontSize", "SettingsIconFontSize", "CloseIconFontSize", "AppEntryFontSize", "SearchBarTextBoxFontSize", "SearchBarClearButtonFontSize", "CustomDialogFontSize", "CustomDialogFontSizeHeader", "ConfigUpdateButtonFontSize", "CheckBoxBulletDecoratorSize" ) # Apply scaling to each resource foreach ($resourceName in $fontResources) { try { # Get the default font size from the theme configuration $originalValue = $sync.configs.themes.shared.$resourceName if ($originalValue) { # Convert string to double since values are stored as strings $originalValue = [double]$originalValue # Calculates and applies the new font size $newValue = [math]::Round($originalValue * $ScaleFactor, 1) $sync.Form.Resources[$resourceName] = $newValue Write-Debug "Scaled $resourceName from original $originalValue to $newValue (factor: $ScaleFactor)" } } catch { Write-Warning "Failed to scale resource $resourceName : $_" } } # Update the font scaling percentage displayed on the UI if ($sync.FontScalingValue) { $percentage = [math]::Round($ScaleFactor * 100) $sync.FontScalingValue.Text = "$percentage%" } Write-Debug "Font scaling applied with factor: $ScaleFactor" }