2018/01/14(日) [n年前の日記]
#1 [gimp][windows] GIMP 2.8.22 Portableのfontconfigについて調べたり
自分が画像編集・作成をする際は、Windows10 x64 上で GIMP 2.8.22 Portable を使って作業を行っているのだけど。どうも時々、起動直後にフォント検索で待たされてしまう場面があるので、どういう状態になってるのか、解決策がないか少し調べたり。
まず、前提として。GIMP や Inkscape は、OSが持ってるフォント種類の情報を、C:\Users\ユーザ名\AppData\Local\ 以下の fontconfig フォルダにキャッシュの形で残すようで。初回起動時はフォント検索で時間がかかるけど、その後の起動ではフォント検索が早く済むのは、fontconfig フォルダ内のキャッシュを参照してるから、だと思われる。
更に、GIMP Portable は以下のような動作をするようで。おそらく通常版のGIMPは、コレとは違う動作をするのだろうと思うけど…。
C:\Users\ユーザ名\AppData\Local\ に fontconfigフォルダが無い場合…。
ただ、GIMP ではなく Inkscape を起動して、C:\Users\ユーザ名\AppData\Local\ 以下に fontconfig フォルダが作られる場合がある。その場合、Inkscape を終了しても、fontconfig がそのまま残った状態になる。
この状態で GIMP Portable を起動すると…。
一応、GIMP Portable 2.8.20 と GIMP Portable 2.8.22 で動作確認したけれど、上記のような動作になっているようで。この状態なら、起動するたびにフォント検索が走ったりはしない。
まず、前提として。GIMP や Inkscape は、OSが持ってるフォント種類の情報を、C:\Users\ユーザ名\AppData\Local\ 以下の fontconfig フォルダにキャッシュの形で残すようで。初回起動時はフォント検索で時間がかかるけど、その後の起動ではフォント検索が早く済むのは、fontconfig フォルダ内のキャッシュを参照してるから、だと思われる。
更に、GIMP Portable は以下のような動作をするようで。おそらく通常版のGIMPは、コレとは違う動作をするのだろうと思うけど…。
C:\Users\ユーザ名\AppData\Local\ に fontconfigフォルダが無い場合…。
- GIMP Portable を起動すると、フォントを検索して、C:\Users\ユーザ名\AppData\Local\ 以下に、fontconfig フォルダを作ってキャッシュを保存する。
- GIMP Portable を終了させると、C:\Users\ユーザ名\AppData\Local\ 以下の fontconfig フォルダは、GIMP Portableインストールフォルダ\Data\ 以下に移動されて、C:\Users\ユーザ名\AppData\Local\ 以下の fontconfig フォルダは消滅する。
- 次回、GIMP Portable を起動させると、GIMP Portableインストールフォルダ\Data\fontconfig が、C:\Users\ユーザ名\AppData\Local\ 以下に移動されて、GIMP Portableインストールフォルダ\Data\以下の fontconfigフォルダは消滅する。
- C:\Users\ユーザ名\AppData\Local\
- GIMP Portableインストールフォルダ\Data\
C:\Users\USERNAME\AppData\Local\ | GIMP Portable install dir\Data\ | |
---|---|---|
GIMP runnig | fontconfig | (none) |
GIMP not runnig | (none) | fontconfig |
ただ、GIMP ではなく Inkscape を起動して、C:\Users\ユーザ名\AppData\Local\ 以下に fontconfig フォルダが作られる場合がある。その場合、Inkscape を終了しても、fontconfig がそのまま残った状態になる。
この状態で GIMP Portable を起動すると…。
- GIMP Portable は、C:\Users\ユーザ名\AppData\Local\fontconfig を fontconfig.BackupByGIMPPortable にリネームする。これで、GIMP以外のアプリが作ってしまった fontconfig をバックアップしてる、のだと思う。
- GIMP Portableインストールフォルダ\Data\fontconfig が、C:\Users\ユーザ名\AppData\Local\fontconfig に移動される。
- GIMP Portable を終了すると、C:\Users\ユーザ名\AppData\Local\fontconfig は GIMP Portableインストールフォルダ\Data\fontconfig に移動されて、fontconfig.BackupByGIMPPortable は fontconfig にリネームされる。
一応、GIMP Portable 2.8.20 と GIMP Portable 2.8.22 で動作確認したけれど、上記のような動作になっているようで。この状態なら、起動するたびにフォント検索が走ったりはしない。
◎ 疑問点。 :
ところで。GIMP起動中に、Inkscape を起動したらどうなるだろう…?
C:\Users\ユーザ名\AppData\Local\ の fontconfig はGIMP用だから、Inkscape は、その fontconfig を使えない。だから、Inkscape は fontconfig を作り直す。fontconfig の中には、Inkscape用の fontconfig 情報が保存される。
Inkscape を終了しても、Inkscape用の fontconfig は残ったまま。
この状態で GIMP を終了すると…。fontconfig は GIMP Portableインストールフォルダ\Data\fontconfig に移動されるけど、その中には Inkscape用の fontconfig も含まれてる。
GIMP Portable を起動する。fontconfig が移動される。中には GIMP で使えない fontconfig が含まれているから、GIMP はフォント検索を始める…。
と予想したのだけど。試してみたところ、たしかに fontconfig内に Inkscape用の fontconfig も含まれてしまったけれど、GIMP 2.8.22 はフォントの再検索はしなかった。
逆に、Inkscape を実行中の状態で、GIMP Portable を起動すると、どんな結果になるだろう…? さあ、皆で考えよう!
何にせよ、Windows上で GIMP と Inkscape は同時に起動しないほうがよさそうだなと…。
たぶんこのあたり、Linux上では、fontconfig は共通・同一バージョンが使われていて問題にならないのではないかと。Windowsは、各アプリに同梱されてる fontconfig のバージョンがアプリ毎に違うのに、同じ場所にキャッシュを作ろうとしてしまうから、問題が起きるのだろう。
キャッシュファイルの中に、「〜.NEW」があると、フォント検索が行われる、という話もどこかで見かけた。であれば、何かの拍子に .NEW が作成されて、そのキャッシュファイルがずっと残った状態になっていたりすると、起動するたびにフォントの再検索がされてしまう状態に陥る、ということなのかもしれない。
C:\Users\ユーザ名\AppData\Local\ の fontconfig はGIMP用だから、Inkscape は、その fontconfig を使えない。だから、Inkscape は fontconfig を作り直す。fontconfig の中には、Inkscape用の fontconfig 情報が保存される。
Inkscape を終了しても、Inkscape用の fontconfig は残ったまま。
この状態で GIMP を終了すると…。fontconfig は GIMP Portableインストールフォルダ\Data\fontconfig に移動されるけど、その中には Inkscape用の fontconfig も含まれてる。
GIMP Portable を起動する。fontconfig が移動される。中には GIMP で使えない fontconfig が含まれているから、GIMP はフォント検索を始める…。
と予想したのだけど。試してみたところ、たしかに fontconfig内に Inkscape用の fontconfig も含まれてしまったけれど、GIMP 2.8.22 はフォントの再検索はしなかった。
逆に、Inkscape を実行中の状態で、GIMP Portable を起動すると、どんな結果になるだろう…? さあ、皆で考えよう!
何にせよ、Windows上で GIMP と Inkscape は同時に起動しないほうがよさそうだなと…。
たぶんこのあたり、Linux上では、fontconfig は共通・同一バージョンが使われていて問題にならないのではないかと。Windowsは、各アプリに同梱されてる fontconfig のバージョンがアプリ毎に違うのに、同じ場所にキャッシュを作ろうとしてしまうから、問題が起きるのだろう。
キャッシュファイルの中に、「〜.NEW」があると、フォント検索が行われる、という話もどこかで見かけた。であれば、何かの拍子に .NEW が作成されて、そのキャッシュファイルがずっと残った状態になっていたりすると、起動するたびにフォントの再検索がされてしまう状態に陥る、ということなのかもしれない。
◎ 通常版のGIMP 2.8.22はこのあたり不具合があるらしい。 :
GIMP Portable ではなく、通常版の GIMP 2.8.22 の場合、このあたりで不具合があるらしい。なんでも、起動直後に毎回必ずフォントを検索してしまう状態に陥る時があるのだとか。
_Bug 782676 - Ship with current fontconfig version to avoid fontconfig cache issues
GIMP 2.8.20 と GIMP 2.8.22 は利用してる fontconfig のバージョンが違うので、GIMP 2.8.20 の fontconfig が残っていると 2.8.22 では使えないからフォントの再検索が、云々と書いてあるような…?
ふと、親父さんPC(Windows10 x64)上の GIMP 2.8.22 が、起動時に毎回フォント検索をしていたことを思い出した。試しに fontconfig を削除してから GIMP 2.8.22 を起動してみたところ、次からの起動時はフォントの再検索をしない状態になった。つまり、何故か毎回フォント検索されてしまう場合は、試しに fontconfigフォルダを削除して様子を見てみるのもアリ、ということかな…。
_Bug 782676 - Ship with current fontconfig version to avoid fontconfig cache issues
GIMP 2.8.20 と GIMP 2.8.22 は利用してる fontconfig のバージョンが違うので、GIMP 2.8.20 の fontconfig が残っていると 2.8.22 では使えないからフォントの再検索が、云々と書いてあるような…?
ふと、親父さんPC(Windows10 x64)上の GIMP 2.8.22 が、起動時に毎回フォント検索をしていたことを思い出した。試しに fontconfig を削除してから GIMP 2.8.22 を起動してみたところ、次からの起動時はフォントの再検索をしない状態になった。つまり、何故か毎回フォント検索されてしまう場合は、試しに fontconfigフォルダを削除して様子を見てみるのもアリ、ということかな…。
[ ツッコむ ]
以上です。