web-dev-qa-db-ja.com

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

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

次に、urxvtとxtermの間の間隔の問題の例を示します。

フォントリソース:

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

そしてレンダリング

  • urxvt bad fonts
  • xterm good fonts

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

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

32
casey

私のシステムでは、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で再び適切にレンダリングされます。

6
casey

Urxvtには基本的なカーニングのオプションがあります:letterSpaceman urxvtをご覧ください:

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

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

URxvt.letterSpace: -1

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

このシステムがどのように機能するかについての詳細な説明は、 X論理フォントの説明 のArch Wikiページを参照してください。

16
jasonwryan

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

同様の問題がありました。バグディスカッションの推奨事項に従って、Xft.rgba: noneおよびXft.hintstyle: hintfull~/.Xdefaults (の代わりに Xft.rgba: rgbおよびXft.hintstyle: hintslight)。これで修正されました。ただし、フォントとしてUbuntu Monoを使用しました。

4
balu

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

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

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

3
b3h3m0th

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

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

2
exa