私はここ数日、xtermに、ここ数年konsoleで慣れているのと同じフォントを表示させようと試みてきました。これは、顔のサイズが比較的小さい場合でも非常にうまく機能します。 xtermは、私が読むのがはるかに難しい方法でフォントをレンダリングしているようです。
比較のために、いくつかのスクリーンショットを示します。
問題のフォントはDejaVuSans Mono8です。どちらも明らかにアンチエイリアス処理されています。違いの理由かもしれないと思って、konsoleからxtermまでの配色を適用しましたが、そうではありませんでした。また、konsoleでは、「太字で濃い色を描く」チェックボックスを有効にしていますが、太字と通常のフォントの違いは明らかです。
違いは、各アプリケーションがフォントをどれだけ積極的にアンチエイリアスするかにあるようです。 xtermでは、少なくとも私にとっては、テキストははるかにぼやけており、読むのもかなり困難です。おそらく、文字m
で最も明白です。これは、太字ではないバージョンではxtermの2つのピクセルに最初の「脚」が広がっていますが、konsoleではそれは素晴らしくシャープです。
GentooとUbuntuの両方で同じ結果が得られ、Gentooラップトップの/etc/fonts/conf.d
での控えめなセットアップと、Ubuntuでのオールインセットアップの両方があります。
なぜxtermが非ラテン文字の一部を表示できないのか理解できればボーナスポイントですが、私はそれほど気にしません。それは私にはまったく意味がありません。それは手がかりかもしれませんが...
これが私の.Xresources
の関連部分です:
XTerm*faceName: DejaVu Sans Mono
XTerm*faceSize: 8
XTerm*background: #000000
XTerm*foreground: #B2B2B2
XTerm*color0: #000000
XTerm*color1: #B21818
XTerm*color2: #18B218
XTerm*color3: #B26818
XTerm*color4: #1818B2
XTerm*color5: #B218B2
XTerm*color6: #18B2B2
XTerm*color7: #B2B2B2
XTerm*color8: #686868
XTerm*color9: #FF5454
XTerm*color10: #54FF54
XTerm*color11: #FFFF54
XTerm*color12: #5454FF
XTerm*color13: #FF54FF
XTerm*color14: #54FFFF
XTerm*color15: #FFFFFF
XTerm*boldColors: true
更新:明確にするために、xtermでTTFを使用するのは簡単です。私が探しているのは、TTFがxtermでレンダリングされる方法を微調整して、konsole(さらに言えば他のほとんどすべてのX11アプリ)で使用される設定に一致させる方法です。何らかの理由で、xtermは、Xresourcesまたはfontconfig設定(システムの他の部分によって正しく取得される)のいずれかで設定しようとしているTTFフォントの面名と面サイズ以外のすべてを無視しているようです。
Xterm(1)では、Ctrlキーを押しながらウィンドウを右クリックすることで、フォントの種類を変更できます。選択肢が少ないからだと思います。 「TrueType」オプションをクリックすると、探しているものに近い結果が得られます。ご存じのとおり、Xresourcesファイルを編集することでより詳細な制御を得ることができます-これを適切に変更する方法の例については、 https://wiki.archlinux.org/index.php/Xterm を参照してください。あなたの要望。
xterm(1)は、デフォルトではほとんどの非ラテン文字を表示しません。 -u8オプションを使用するか、uxterm(1)ラッパーを使用できます
このコマンドを試してください。必要に応じてサイズを調整するか、省略してCtrlキーを押しながら右クリックしてフォントサイズを変更できます。
xterm -u8 -fn 7x13 -fa "DejaVu Sans Mono:size = 8:antialias = true"
これは、GTKアプリとxtermがフォントを構成するために大きく異なる方法を使用しているためです。 GTKはfont-configを使用しますが、xterm/XftはXリソースを使用します。
Xリソースを使用してXftフォントを構成するには、これを~/.Xresources
に追加します。
Xft.rgba: rgb
この設定は、アンチエイリアスの種類を変更します。これは、rgba設定なしでxmag
、およびrgb
、grb
、vrgb
で撮影されたxtermスクリーンショットの例です。それらはすべて、異なる鮮明さ、色の忠実度、および見かけの明るさを持っています。
Xft.antialias
、Xft.hinting
、Xft.hintstyle
、Xft.lcdfilter
などのノブもあります。詳細については、いくつかの fontconfigドキュメント を参照してください。
Konsoleとxtermで見られるレンダリングの違いは、fontconfigのヒント設定にあります。 2つのスクリーンショットの間でグリフの形状を比較すると、ヒントが含まれていることがわかります。 Konsoleでは、ピクセルグリッドにスナップされているため、ゼロの形状が少し異なります(これは、フォントヒンティングが行うことの1つです)。
KonsoleはKDE構成の追加レイヤーから設定を取得する可能性がありますが、xtermは低レベルのfontconfig設定のみを尊重します。
私は最近Archシステムでこれに取り組んでおり、Konsoleで見ているものを最もよく再現する設定の組み合わせは次のとおりです(これを.Xresources
に入れてください):
Xft.antialias: 1
Xft.autohint: 1
Xft.hintstyle: hintslight
一部のフォントには、フォントの設計者からのヒント情報が含まれています。しない人もいます。 FreeType Autohinter(Xft.autohint: 1
)はフォントのヒントを生成し、ヒントレベルhintslight
は、含まれているヒントにフォールバックします(存在する場合)。おそらくhintfull
を試す価値もあります。好みに加えて、使用しているフォントに存在するヒントの品質に依存します。
(これらのスクリーンショットではサブピクセルアンチエイリアスを使用していません。必要に応じて、別のコメント投稿者がサブピクセルアンチエイリアスの使用を開始する方法をすでに説明しています。)
これが、各ヒントレベルでの前後のスクリーンショットです。 (192dpiディスプレイの7pt Anonymous Pro。)
デフォルト:
上記の構成: