web-dev-qa-db-ja.com

フォントが豊富なためワインの起動が遅い

私のKubuntuでWineアプリケーションの読み込みが非常に遅い。永続的に実行するにはWineサーバーを自動起動する必要があることは一般的な知識です。

wineserver -p

これにより、プログラムごとの読み込み時間が大幅に短縮されますが、それだけでは十分ではありません。合理的に現代のコンピューターでは、初めての後にシンプルなワインアプリケーションを開始するのに必要な時間よりも約1秒かかります。

オンラインでソリューションを検索すると、主に このWineHQフォーラムの質問 でoiaohmの回答が得られました(関連する重複バグレポート here および here も参照)。 oiaohmが提起する最初の問題は、「多すぎる」フォントがインストールされていることと、ワインが非常に長いフォントリストを作成すると、起動時間が長くなることです。フォントの問題が、私のコンピューターでのWineの起動が遅い原因であることがわかりました。 Kubuntuにはデフォルトで多くのフォントがインストールされています。たとえば、幅広いNotoフォントファミリーを参照してください。 Wineへの影響だけのためにフォントを削除しても意味がありません。また、一部のフォントを削除したい場合でも、依存関係があるため、パッケージを削除して削除できるとは限りません。彼/彼女の答えで、oiaohmはカスタムfontconfigファイルを使用することを提案しましたが、詳しく説明しませんでした。

したがって、この問題に対するいくつかの、できれば「自然な」解決策を探しています。以下は、答えとして、私が見つけた解決策です。より良いものへの提案は大歓迎です。

1
Ami

この回答の目的は、私の経験に基づいて、上記のオイアオームのソリューションの詳細を提供することです。

Fontconfigは、システム全体のフォント構成ライブラリです。以下で行うフォント構成のカスタマイズについては、次のマニュアルページを参照してください。

man fonts-conf

アイデアは、カスタムフォント設定を作成し、デフォルトの設定の代わりにそれをWineに使用させることです。私が提案する手順は次のとおりです。

  1. Wineプログラムで実際に必要なフォントを調べます。これを行う合理的な方法は、使用するすべてのWineアプリケーションに対してlsof -p [PID of Wine application] | grep ttf(およびotfを使用した同上)を実行することです。
  2. カスタムフォント構成ディレクトリを作成します:mkdir ~/.wine/myfonts
  3. カスタムフォントキャッシュディレクトリを作成します:mkdir ~/.wine/myfonts-cache
  4. カスタムフォント構成ファイルをカスタムフォント構成ディレクトリに作成します。これを行うには、システムのデフォルトファイルcp /etc/fonts/fonts.conf ~/.wine/myfontsをコピーして、次のように編集します。
    • フォントディレクトリリストで、すべて(またはほとんど)の<dir>要素を、必要なフォントの特定のディレクトリを指す要素に置き換えます(ステップ1を参照)。たとえば、<dir>/usr/share/fonts/truetype/unfonts-core</dir>を入れます。
    • フォントキャッシュディレクトリリストで、すべての<cachedir>要素を削除し、カスタムフォントキャッシュディレクトリのみを配置します:<cachedir>~/.wine/myfonts-cache</cachedir>
    • 重要なのは、両方のリストで、プレフィックスxdgが付いている要素を削除することです。これらの要素はカスタマイズするために追加の手順が必要になるためです。
  5. カスタムフォント構成ファイルには<include>要素があり、変更されない限り、値「conf.d」が含まれています。そのため、カスタムフォント構成ディレクトリ内にこの名前のディレクトリを作成します(例:mkdir ~/.wine/myfonts/conf.d)。次に、このディレクトリに追加の設定ファイルをコピーします。元のconf.dディレクトリにあり、選択したフォントを保持するために必要です。たとえば、cp /etc/fonts/conf.d/90-fonts-unfonts-core.conf ~/.wine/myfonts/conf.dです。
  6. 環境変数の変更:Wineアプリケーションは、FONTCONFIG_FILEとFONTCONFIG_PATHの値をそれぞれカスタムフォント構成ファイルとカスタムフォント構成ディレクトリに設定して実行する必要があります。たとえば、WineアプリケーションXYZをインストールしたとします。アプリケーションランチャーをクリックし、XYZと入力して右クリックし、[アプリケーションの編集]を選択して、[アプリケーション]タブで[コマンド]フィールドをのように変更します。
    env FONTCONFIG_FILE="~/.wine/myfonts/fonts.conf" FONTCONFIG_PATH="~/.wine/myfonts" wine C:\\windows\\command\\start.exe /Unix ~/.wine/dosdevices/c:/users/Public/Start\ Menu/Programs/XYZ.lnk
    
    または、XYZ.desktopファイルを見つけて、直接変更します。これは、すべてのWineアプリケーションに対して実行する必要があります。実際には、Wineサーバーのロード後に初めてWineアプリケーションを実行するときのように、環境変数を設定するだけで済みます。
  7. 同じ環境変数を使用して、カスタムフォント構成用のfont cacheを生成します。例えば:
    export FONTCONFIG_FILE=~/.wine/myfonts/fonts.conf
    export FONTCONFIG_PATH=~/.wine/myfonts
    fc-cache -fv
    
  8. 最後に、再起動またはWineサーバーを再起動
    wineserver -k
    wineserver -p
    

Wineが実際に処理するフォントリストは、次のレジストリキーで確認できます。必要な環境変数を使用して、またはそれらを使用して別のWineアプリケーションを実行した後に、必ずregeditを実行してください。

HKEY_CURRENT_USER\Software\Wine\Fonts\Cache

1
Ami