4

XFCE4 デスクトップを備えた Debian システムで Iceweasel ブラウザー (Firefox 派生) を使用しています。

~/.config/fontconfig/fonts.conf でカスタム フォント置換を定義していません。

これは、fc-match が現在教えてくれることです。

lone@debian:~$ fc-match "Liberation Mono"
n022003l.pfb: "Nimbus Mono L" "Regular"
lone@debian:~$ fc-match Courier
n022003l.pfb: "Nimbus Mono L" "Regular"
lone@debian:~$ fc-match monospace
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"

したがって、HTML がある場合、「Liberation Mono」フォントを使用すると、「Courier」を使用した場合と同じ結果が得られるはずです。しかし、以下のスクリーンショットでわかるように、そうではありません (JSFiddle: http://jsfiddle.net/8L3rmyxn/ )。

ここに画像の説明を入力

「Inspect Element」をクリックすると、実際に使用されているフォントが見つかりました。

CSS で 'Liberation Mono' を使用するテキストの場合、ブラウザーは代わりに 'DejaVu Serif' を使用しますが、これは fc-math の出力と一致しません。

CSS で「Courier」を使用するテキストの場合、ブラウザは fc-match の出力と一致する「Nimbus Mono L」を使用します。

CSS で「monospace」を使用するテキストの場合、ブラウザは「DejaVu Sans Mono」を使用します。これは、fc-match の出力と一致しています。

質問

'Liberation Mono' フォントの場合、ブラウザーが 'Nimbus Mono L' を使用せず、代わりに 'DejaVu Serif' フォントを使用するのはなぜですか?

既知の解像度

この問題を解決する方法を知っていることに注意してください。~/.config/fontconfig/fonts.conf で明示的に 'Liberation Mono' のエイリアスを定義すると、目的の結果が得られます。つまり、'Liberation Mono' フォントのテキストと 'Courier' フォントのテキストは同じように表示されます。

lone@debian:~$ cat ~/.config/fontconfig/fonts.conf 
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <alias>
        <family>Liberation Mono</family>
        <prefer><family>Nimbus Mono L</family></prefer>
    </alias>
</fontconfig>
lone@debian:~$ fc-match "Liberation Mono"
n022003l.pfb: "Nimbus Mono L" "Regular

ここに画像の説明を入力

質問、もう一度

しかし、私の疑問は残ります。fonts.conf でこの明示的なエイリアスがないと、CSS で 'Liberation Mono' フォントを指定すると、ブラウザーは 'Nimbus Mono L' を使用せず、代わりに 'DejaVu Serif' フォントを使用しfc-match "Liberation Mono"ます。 fonts.confでエイリアスを定義したかどうかに関係なく?

4

1 に答える 1

2

デフォルトでは、Firefox は fontconfig を介して最大 3 つの置換のみを許可します。

gfx.font_rendering.fontconfig.max_generic_substitutionsabout:config で設定して、この制限を増やすことができます。許容される最大値は 127 です。

于 2016-11-28T06:18:57.403 に答える