私のvpsサーバーでこのエラーを取得:
fontconfig warning: "/etc/fonts/fonts.conf", line 100: unknown element "blank"
これはファイルです:
それを修正するには?
TL; DR:おそらくこの警告は無視してください。
少し大胆な感じがする場合は、<blank>...</blank>
ファイルから/etc/fonts/fonts.conf
セクションを削除してみてください(あまり気まずい感じがない場合は、最初にバックアップを作成してください)。私がこれを試したとき、警告は消えました。ただし、ファイルの上部にDO NOT EDIT THIS FILE. IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED. LOCAL CHANGES BELONG IN 'local.conf'.
という恐ろしいメッセージが表示されていることに気づいたかもしれません。したがって、これはおそらく正しい解決策ではありませんでした。 (とにかく私がなぜそれをしたのか疑問に思った場合:local.conf
が見当たらず、細かいマニュアルを読むのが面倒であり、私のハックが上書きされるのはバグと言うよりも機能のようであり、メンテナがそうするのでとにかく後で公式のソリューションを公開する可能性があります-私が学びたかったことを除いて)
OK、今すぐバックアップしましょう。これは(当然のことながら) fontconfig
の<blank>
要素に関連しており、その使用法は fontconfig docs で説明されています。
<blank>
フォントには、エンコーディングでは表示されるが画面上では空白として描画される「壊れた」グリフが含まれていることがよくあります。要素内で、空白であると想定される各Unicode文字を要素に配置します。このセットの外の空白として描画される文字は、フォントでサポートされる文字のセットから除外されます。
ドキュメントは、これらのオプションを定義しても何もないことを示唆しています。また、それらは DTDで指定 です。ただし、関連するfontconfig API FcBlanks
(私の強調)に気づいたかもしれません。
FcBlanksオブジェクトは、描画時に空白になることが予想されるUnicode文字のリストを保持します。新しいフォントをスキャンするとき、空でこのリストにないグリフはすべて壊れていると見なされ、フォントに関連付けられたFcCharSetに配置されません。これにより、アプリケーションにより正確なCharSetが提供されます。
FcBlanksは非推奨であり、新しく作成されたコードでは使用しないでください。古いコードとの互換性のために一部の関数では引き続き受け入れられますが、将来は削除されます。
これは、互換性のために構成ファイルで許可されているが、これ以上使用することを意図していないことを私に示唆しています。
詳細情報がないと、この警告がどのような状況で表示されているのかわかりませんが、最近、クロム/電子/ Google Chromeで多くの警告が表示されました。私が気付いたchromiumの external/fontconfig
のコミット履歴をのぞいてみます:
commit dc8326d3f116bb2a1425aa68660a332e351b6cb4
Author: Behdad Esfahbod <[email protected]>
Date: Fri Sep 15 01:20:56 2017 -0400
[fc-query] Remove --ignore-blanks / -b
Blanks are the new black, err, dead!
...
commit 8b46a518bda8ecb3c5e2dfb0c1e5fda99e40aa3e
Author: Behdad Esfahbod <[email protected]>
Date: Tue Sep 12 17:08:08 2017 -0400
Update documentation for removal of blanks
Patch from Jerry Casiano.
2.12.91変更ログ でも確認できます。この警告は、chromiumがこのバージョン(またはそれ以降)のfontconfigに更新された頃に表示され始めたのではないかと思います。 2018年6月頃に起こったようです/クロム69 。 DEPS
file および third_party/fontconfig/BUILD.gn
を覗くと、ba206df9b9a7ca300265f650842c1459ff7c634a
(2.13.1より新しいカップルのコミット)が使用されていることが示唆されます。一方、組み込みビルドはChromeOSとLinuxが「システムバージョン」を使用します。私が正しく理解していれば、Linuxで/にchromiumをビルドするとき、 build/install-build-deps.sh
はディストリビューションによって提供される最新のlibfontconfig1
パッケージをインストールしたことになります(私の場合 2.11.0-6.7 + b1 )。この時点で、特に私のクロムのビルドがどのようにコンパイルされているかについての詳細を少し調べましたが、その後興味を失いました。私はメンテナが他のディストリビューションと同じようにそれを維持しようとすることを想定しています。
最後に、私がひどく間違えられていない場合、このメッセージはすべて、構成ファイルに、それを出力するプログラムで使用されない(コメント以外の)情報が含まれていることを意味しています。
以下も参照してください。