Windows 11 高DPI環境でPoderosaのフォント崩れを修正する方法 | 初心者向けPowerShellコマンド

Windows 11 高DPI環境でPoderosaのフォント崩れを修正する方法 | 初心者向けPowerShellコマンド

最終更新日: 2025年4月30日 | 著者: Grok by xAI

概要

Windows 11の高DPI環境(4K、DPI150%)で、Poderosa 3.0.0のメニューバーやツールバーのフォントが崩れる、またはぼやける問題を解決する方法を解説します。初心者でも簡単に実行できる一発PowerShellコマンドを提供し、環境依存しない形でフォントをシャープに表示します。このマニュアルは、Windows 2000風のフォント(MS Gothic)を使用することを前提としており、他のユーザーにも適用可能な形で設計されています。

対象となる問題

以下の問題に対応します:

  • メニューバーやツールバーのフォントが潰れて見づらい(フォント崩れ)。
  • フォントがぼやけてシャープに表示されない(フォントぼけ)。
  • オプション設定ウィンドウの文字が見えなくなる。

注意: この方法はPoderosa 3.0.0向けに設計されていますが、最新バージョンへのアップデートや別のターミナルエミュレータ(例: Windows Terminal)の使用も検討してください。

修正手順

ステップ1: PowerShellを管理者権限で起動

まず、PowerShellを管理者権限で起動します。以下のコマンドをコピーして、PowerShellに入力してください。

Start-Process powershell -Verb RunAs
        

ステップ2: 一発コマンドを実行

以下のPowerShellスクリプトをコピーして、管理者権限で起動したPowerShellに貼り付けて実行してください。このスクリプトは、環境依存しない形でPoderosaのフォント崩れを修正します。フォントはWindows 2000風の「MS Gothic」に設定されます。

# 日本語メッセージ用の関数
function Write-JapaneseMessage {
    param (
        [string]$Message,
        [string]$Type = "Info"
    )
    switch ($Type) {
        "Info" { Write-Host "【情報】 $Message" -ForegroundColor Green }
        "Warning" { Write-Host "【警告】 $Message" -ForegroundColor Yellow }
        "Error" { Write-Host "【エラー】 $Message" -ForegroundColor Red; exit 1 }
    }
}

# ステップ1: 管理者権限の確認
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
if (-not $isAdmin) {
    Write-JapaneseMessage "このスクリプトを実行するには管理者権限が必要です。PowerShellを右クリックして「管理者として実行」を選択し、再度実行してください。" "Error"
}

# ステップ2: Poderosaの実行ファイルパスを動的に検索
$poderosaPath = $null
$searchPaths = @(
    "C:\Program Files",
    "C:\Program Files (x86)",
    "C:\",
    "D:\"
)
$possibleNames = @("Poderosa.exe", "poderosa.exe", "PODEROSA.EXE")

foreach ($basePath in $searchPaths) {
    foreach ($name in $possibleNames) {
        $searchPattern = Join-Path -Path $basePath -ChildPath "**\$name"
        try {
            $foundPath = Get-ChildItem -Path $basePath -Filter $name -Recurse -ErrorAction SilentlyContinue -Depth 5 | Select-Object -First 1 -ExpandProperty FullName
            if ($foundPath) {
                $poderosaPath = $foundPath
                break
            }
        } catch {
            Write-JapaneseMessage "パス $basePath の検索中にエラーが発生しました: $_" "Warning"
        }
    }
    if ($poderosaPath) { break }
}

if (-not $poderosaPath) {
    Write-JapaneseMessage "Poderosa.exeが見つかりませんでした。Poderosaがインストールされているディレクトリ(例: C:\Program Files (x86)\Poderosa)を確認してください。" "Error"
}
Write-JapaneseMessage "Poderosa.exeが見つかりました: $poderosaPath"

# ステップ3: レジストリ設定(HIGHDPIAWARE)
$regPath = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
$desiredValue = "~ HIGHDPIAWARE"

# 既存の設定を削除
$deleteOutput = reg delete "$regPath" /v "$poderosaPath" /f 2>&1
if ($LASTEXITCODE -eq 0) {
    Write-JapaneseMessage "既存のレジストリ設定を削除しました: $poderosaPath"
} else {
    Write-JapaneseMessage "既存のレジストリ設定は見つかりませんでした。削除時の出力: $deleteOutput" "Warning"
}

# レジストリ設定を適用
$escapedPoderosaPath = $poderosaPath -replace '([()\\])', '^$1'
$regCommand = "reg add `"$regPath`" /v `"$escapedPoderosaPath`" /t REG_SZ /d `"$desiredValue`" /f"
$addOutput = cmd /c $regCommand 2>&1
if ($LASTEXITCODE -eq 0) {
    Write-JapaneseMessage "レジストリ設定を適用しました: $poderosaPath = $desiredValue"
} else {
    Write-JapaneseMessage "レジストリ設定の適用に失敗しました。詳細: $addOutput" "Error"
}

# 設定が正しく反映されたか確認
$escapedPoderosaPathForQuery = $escapedPoderosaPath -replace '"', ''
$queryOutput = reg query "$regPath" /v "$escapedPoderosaPathForQuery" 2>&1 | Select-String "$desiredValue"
if ($queryOutput) {
    Write-JapaneseMessage "レジストリ設定が正しく反映されました。"
} else {
    Write-JapaneseMessage "レジストリ設定が正しく反映されていません。詳細: $queryOutput" "Error"
}

# ステップ4: システムフォントをMS Gothicに変更(Windows 2000風)
$fontRegPath = "HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes"
$fontBackupPath = "$env:USERPROFILE\font_backup.reg"

# フォント設定をバックアップ
$backupOutput = reg export "$fontRegPath" "$fontBackupPath" /y 2>&1
if ($LASTEXITCODE -eq 0) {
    Write-JapaneseMessage "システムフォント設定をバックアップしました: $fontBackupPath"
} else {
    Write-JapaneseMessage "システムフォント設定のバックアップに失敗しました。続行しますが、元に戻す際に手動で復元が必要です。詳細: $backupOutput" "Warning"
}

# システムフォントをMS Gothicに変更
$fontAddOutput1 = reg add "$fontRegPath" /v "MS Shell Dlg" /t REG_SZ /d "MS Gothic" /f 2>&1
$fontAddOutput2 = reg add "$fontRegPath" /v "MS Shell Dlg 2" /t REG_SZ /d "MS Gothic" /f 2>&1
if ($LASTEXITCODE -eq 0) {
    Write-JapaneseMessage "システムフォントをMS Gothicに変更しました。"
} else {
    Write-JapaneseMessage "システムフォントの変更に失敗しました。詳細: $fontAddOutput1, $fontAddOutput2" "Error"
}

# ステップ5: Poderosaの設定ファイルにフォント設定を追加
$configPath = "$env:APPDATA\Poderosa\options.conf"
if (-not (Test-Path $configPath)) {
    Write-JapaneseMessage "設定ファイルが見つかりません: $configPath。一度Poderosaを起動して設定ファイルを生成してください。" "Error"
}

try {
    $content = Get-Content -Path $configPath -Raw -ErrorAction Stop
    if ($content -match "fontName=.*") {
        $newContent = $content -replace "fontName=.*", "fontName=MS Gothic"
    } else {
        $newContent = $content -replace "(fontSize=.*\r?\n)", "`$1    fontName=MS Gothic`r`n"
    }
    Set-Content -Path $configPath -Value $newContent -ErrorAction Stop
    Write-JapaneseMessage "Poderosaの設定ファイルにfontName=MS Gothicを追加しました。"
} catch {
    Write-JapaneseMessage "設定ファイルの編集に失敗しました: $_. 手動で $configPath を開き、fontName=MS Gothic を追加してください。" "Error"
}

Write-JapaneseMessage "すべての設定が完了しました。PCを再起動してPoderosaを起動してください。フォントがシャープに表示されるはずです。"
Write-JapaneseMessage "元に戻すには、以下のコマンドを実行してください:"
Write-JapaneseMessage "reg delete `"$regPath`" /v `"$poderosaPath`" /f; reg import `"$fontBackupPath`""
        

ステップ3: PCを再起動して確認

スクリプトを実行したら、PCを再起動してください。その後、Poderosaを起動し、以下の点を確認してください:

  • メニューバーやツールバーのフォントがシャープに表示されているか。
  • フォントが「MS Gothic」(Windows 2000風)に変更されているか。

ステップ4: 元に戻す方法

設定を元に戻したい場合は、以下のコマンドを実行してください。管理者権限でPowerShellを起動してからコピー&ペーストしてください。

# レジストリ設定を削除
$regPath = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
$poderosaPath = "C:\Program Files (x86)\Poderosa\Poderosa.exe"
reg delete "$regPath" /v "$poderosaPath" /f 2>&1 | Out-Null
Write-Output "レジストリ設定を削除しました: $poderosaPath"

# システムフォントを元に戻す
$fontBackupPath = "$env:USERPROFILE\font_backup.reg"
if (Test-Path $fontBackupPath) {
    reg import "$fontBackupPath" 2>&1 | Out-Null
    Write-Output "システムフォントを元に戻しました。"
} else {
    Write-Warning "バックアップファイルが見つかりません: $fontBackupPath"
}
        

よくある質問(FAQ)

Q1: スクリプト実行時に「管理者権限が必要です」と表示されました。どうすればいいですか?

A1: PowerShellを右クリックし、「管理者として実行」を選択して再度スクリプトを実行してください。管理者権限がないとレジストリやシステムフォントを変更できません。

Q2: Poderosa.exeが見つからないとエラーが出ました。どうすればいいですか?

A2: Poderosaがインストールされているディレクトリを確認してください。デフォルトでは「C:\Program Files (x86)\Poderosa」にインストールされていますが、別の場所にある場合はスクリプト内の「$searchPaths」にそのパスを追加してください。

Q3: フォントがまだぼやけて見えます。どうすればさらに改善できますか?

A3: WindowsのClearType設定を調整してください。Windows検索バーで「ClearType」と入力し、「ClearType テキストの調整」を選択して、最もシャープに見える設定を選んでください。また、Poderosaの最新バージョンを確認するか、Windows Terminalなどの高DPI対応ターミナルエミュレータへの移行を検討してください。

© 2025 Grok by xAI. All rights reserved.