urxvtのフォントレンダリングの問題—文字間のスペースが大きすぎる


27

今日から、rxvt-unicodeでフォントレンダリングの問題が発生しています。特に、多くのフォントでは、文字間に余分なスペースが豊富にあります。他のフォントでは、rxvtはサイズの変更を拒否します。

以下は、urxvtとxtermの間隔の問題の例です。

フォントリソース:

URxvt*font:     xft:Terminus:medium:size=10
xterm*faceName: xft:Terminus:medium:size=10

そしてレンダリング

  • urxvt 悪いフォント
  • xterm 良いフォント

ヒンティングとアンチエイリアスのすべての組み合わせを試しました。サイズまたはピクセルサイズを変更すると、urxvtのフォントのサイズが変更されますが、これにより余分なスペースも増えます。

誰も私がこれを修正しようとするアイデアを持っていますか?


1
xterm実際に同じフォントを使用しているとは思わない。明確に異なります。リソースファイル()に存在しないフォントを使用して、これを確認できます。それでも同じように見える場合は、明らかにTerminusではありません。J0xterm*faceName: xft:Nosuchfont:medium:size=10
goldilocks 14年

@goldilocksあなたは正しいようです。Urxvtは間違ったフォント選択し、ひどくレンダリングしています。
ケーシー14年

1
gvim欲しいフォントがインストールされていないシステムで設定を使用する前に、これに気付きました。 xftまたは何かがモノスペースでないフォントにフォールバックし、それが表示されます。
ゴルディロックス

2
@goldilocks更新中に不正なfontconfigルールが入り込み、すべてのビットマップフォントが利用できないようにブロックしていたことがわかりました。私はそれを否定し、私は正常に戻っています。
ケーシー14年

回答:


15

Urxvtには、基本的なカーニングのオプションがありますletterSpace。参照man urxvt

-letsp number
コンパイルフリル:全体的な文字間隔を制御するために、計算された文字幅を調整する量。負の値を指定すると文字の間隔が狭くなり、正の値を指定すると文字の間隔が広くなります。奇妙なフォントメトリックを回避するのに役立ちます。リソースletterSpace。

~/.Xresourcesように、行を追加して間隔を調整できます。

URxvt.letterSpace: -1

注:最初のスクリーンショットから見分けるのは困難ですが、UrxvtはTerminusを見つけられないかロードできないため、デフォルトのフォントに戻っているようです。Terminusはビットマップフォント(デフォルトでは無効になっている可能性が高い)なのでxfontsel、正しいフォント文字列を定義にコピーするために使用する必要があります。

このシステムの仕組みの詳細な説明については、X論理フォントの説明に関するArch Wikiページを参照してください。


3
私もこの問題を抱えており、それurxvt -letsp -2が私にとって必要であることがわかりました。使用する-1方が優れていましたが、それが十分ではなかったので、最初は気づきませんでした。
アダム・カッツ

また、インストールされていない場合は、fc-match <font-name>代わりにを使用できますxfontselfont-nameは、URxvt*font行のフォント名で指定された式です)。これが式に一致する値で表示される場合、フォントは正しくロードされています。たとえば、fc-match "Noto Mono"与える場合DejaVuSans.ttf: "DejaVu Sans" "Book"、それは誤ったフォント表現であると考えることができます。
アビナッシュR

6

Terminusなどのビットマップフォントをブロックするルールがシステムで有効になっていることがわかりました。

このルール(私のシステム上)は、次のもの/etc/fonts/conf.d/70-no-bitmap-fontsに含まれていました。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- Reject bitmap fonts -->
 <selectfont>
  <rejectfont>
   <pattern>
     <patelt name="scalable"><bool>false</bool></patelt>
   </pattern>
  </rejectfont>
 </selectfont>
</fontconfig>

これをconf.dディレクトリから削除すると、フォントがで再び正しくレンダリングされurxvtます。


3

があることに注意してください 文字間隔に関するバグレポート

同様の問題がありました。バグの議論の推奨事項に従って、(およびの代わりに)設定Xft.rgba: noneXft.hintstyle: hintfullました。これで修正されました。フォントとしてUbuntu Monoを使用しました。~/.XdefaultsXft.rgba: rgbXft.hintstyle: hintslight


3

私の解決策は簡単でした:

URxvt*font:     xft:mono:medium:size=10
xterm*faceName: xft:mono:medium:size=10

今では完全に動作します。


0

これは、urxvtのどのファイルよりも実際のフォントファイル(私の場合はモノスペース)から発生する可能性が高いです。フォントが(誤って)一部のグリフの幅が広すぎると宣言した場合、urxvtはグリッドの幅も広げるように強制されます。

私の場合、見つけた「OK」フォントはBitstream Vera Sans Monoでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.