xterm は、通常の文字の代わりにイタリック体を表示します。

xterm は、通常の文字の代わりにイタリック体を表示します。

golangGoogle Goフォントをユーザーとしてインストールしました。

  • 私はgo*.ttf〜/.fontsを入れました
  • 私は走ったfc-cache -fv

これで、以下を除くすべての場所で新しいフォントを使用できるようになります。xterm

$ fc-match gomono
GoMono-Regular.ttf: "GoMono" "Regular"
$ xterm -fa gomono

私は得る

ここに画像の説明を入力してください。

ご覧のとおり、xtermフォントのイタリック体のバリエーションをインポートしています...gomonoたとえば、他のプログラムでこれを使用していますが、emacsもちろん一般的なローマフォントもインポートしています...

私が何かを見逃しているのでしょうか、それともその製品だけの珍しい点ですかxterm

私はxterm本当に素晴らしいと古いDebian sidを使用していますxterm

ベストアンサー1

実際、これはxtermが解決できないFontconfigの珍しい点です。フォントのコレクションを追加のパラメータに置き換えると考えられる他のアプリケーションによっては、いくつかの改善点があります。

走れば

xterm -report-fonts -fa 'gomono'

読み込んだ内容が正確に表示されます。

Loaded XftFonts(gomono[normal])
                first char:    32
                last char:     64258
                missing-chars: 63567
                present-chars: 660
        Go Mono-8
        familylang=en
        style=Italic
        stylelang=en
        fullname=Go Mono Italic
        fullnamelang=en
        slant=100
        weight=80
        width=100
        pixelsize=10.6712
        spacing=100
        foundry=b&h
        antialias=True
        hintstyle=3
        hinting=True
        verticallayout=False
        autohint=False
        globaladvance=True
        file=/users/tom/.fonts/gomono/Go-Mono-Italic.ttf

そしてフォント構成ユーザーガイド110とはい傾斜。 Fontconfigは次のファイルのリストを確認しますgomono

Go-Bold-Italic.ttf
Go-Bold.ttf
Go-Italic.ttf
Go-Medium-Italic.ttf
Go-Medium.ttf
Go-Mono-Bold-Italic.ttf
Go-Mono-Bold.ttf
Go-Mono-Italic.ttf
Go-Mono.ttf
Go-Regular.ttf

内部採点システムに基づいてイタリック体フォントを好む。環境変数をFC_DEBUG127(各ビットに意味がある)に設定すると、スコアが表示されます。以下は、一般的なフォントとイタリック体のフォントを比較した抜粋です。

定期的な:

 slant: 100001  0(i)(s),  100(i)(w)
 weight: 20001  100(i)(s),  80(i)(w)
 width: 1  100(i)(s),  100(i)(w)
 lang: 1001  "en-US"(s),  aa|af|av|ay|be|bg|bi|br|bs|ca|ce|ch|co|cs|cy|da|de|el|en|eo|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gl|gv|ho|hr|hu|ia|id|ie|ik|io|is|it|ki|kl|kum|la|lb|lez|lt|lv|mg|mh|mk|mo|mt|nb|nds|nl|nn|no|nr|nso|ny|oc|om|os|pl|pt|rm|ro|ru|se|sel|sk|sl|sma|smj|smn|so|sq|sr|ss|st|sv|sw|tk|tl|tn|tr|ts|uk|uz|vo|vot|wa|wen|wo|xh|yap|zu|an|crh|csb|fil|hsb|ht|jv|kj|ku-tr|kwm|lg|li|ms|na|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|za(w)
 fontversion: 2.14735e+12  2147483647(i)(s),  131269(i)(w)
 decorative: 1  FcFalse(s),  FcFalse(w)
Score 0 0 1 1001 1002 0 0 0 100001 20001 1 1 0 0 0 2.14735e+12
Font 21 Pattern has 20 elts (size 20)
        family: "Go Mono"(w)
        familylang: "en"(w)
        style: "Regular"(w)
        stylelang: "en"(w)
        fullname: "Go Mono"(w)  
        fullnamelang: "en"(w)
        slant: 0(i)(w)
        weight: 80(i)(w)
        width: 100(i)(w)
        spacing: 100(i)(w)
        foundry: "b&h"(w)   
        file: "/users/tom/.fonts/gomono/Go-Mono.ttf"(w)   

イタリック体:

 slant: 1  0(i)(s),  0(i)(w)
 weight: 80001  100(i)(s),  180(i)(w)
 width: 1  100(i)(s),  100(i)(w)
 spacing: 1  100(i)(s),  100(i)(w)   
 lang: 1001  "en-US"(s),  aa|af|av|ay|be|bg|bi|br|bs|ca|ce|ch|co|cs|cy|da|de|el|en|eo|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gl|gv|ho|hr|hu|ia|id|ie|ik|io|is|it|ki|kl|kum|la|lb|lez|lt|lv|mg|mh|mk|mo|mt|nb|nds|nl|nn|no|nr|nso|ny|oc|om|os|pl|pt|rm|ro|ru|se|sel|sk|sl|sma|smj|smn|so|sq|sr|ss|st|sv|sw|tk|tl|tn|tr|ts|uk|uz|vo|vot|wa|wen|wo|xh|yap|zu|an|crh|csb|fil|hsb|ht|jv|kj|ku-tr|kwm|lg|li|ms|na|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|za(w)
 fontversion: 2.14735e+12  2147483647(i)(s),  131269(i)(w)
 decorative: 1  FcFalse(s),  FcFalse(w)
Score 0 0 1 1001 1002 1 0 0 1 80001 1 1 0 0 0 2.14735e+12 
Font 20 Pattern has 19 elts (size 19)
        family: "Go Mono"(w)
        familylang: "en"(w)
        style: "Italic"(w)
        stylelang: "en"(w)
        fullname: "Go Mono Italic"(w)
        fullnamelang: "en"(w)
        slant: 100(i)(w)
        weight: 80(i)(w)
        width: 100(i)(w)
        foundry: "b&h"(w)
        file: "/users/tom/.fonts/gomono/Go-Mono-Italic.ttf"(w)

ついに

 slant: 1  0(i)(s),  0(i)(w)
 weight: 20001  100(i)(s),  80(i)(w)
 width: 1  100(i)(s),  100(i)(w)
 lang: 2001  "en-US"(s),  (w)
 fontversion: 2.14748e+12  2147483647(i)(s),  0(i)(w)
 decorative: 1  FcFalse(s),  FcFalse(w)
Score 0 0 1001 2001 1002 0 0 0 1 20001 1 1 0 0 0 2.14748e+12
Best score 0 0 1 1001 1002 0 0 0 100001 20001 1 1 0 0 0 2.14735e+12
Pattern has 19 elts (size 19)
        family: "Go Mono"(w)
        familylang: "en"(w)  
        style: "Italic"(w)  
        stylelang: "en"(w) 
        fullname: "Go Mono Italic"(w)
        fullnamelang: "en"(w)
        slant: 100(i)(w)
        weight: 80(i)(w)
        width: 100(i)(w)
        foundry: "b&h"(w)
        file: "/users/tom/.fonts/gomono/Go-Mono-Italic.ttf"(w)

項目8と9(0から計算)のみが異なります。源泉fcmatch.c)は、次の数字のスコアを向上させる(下げる)最後に確認したフォントを選択します。

        for (i = 0; i < PRI_END; i++)
        {   
            if (best && bestscore[i] < score[i])
                break;
            if (!best || score[i] < bestscore[i])
            {   
                for (i = 0; i < PRI_END; i++)
                    bestscore[i] = score[i];
                best = s->fonts[f];
                break;
            }
        }

私の追跡では、間隔と幅を詳細の決定要素として使用してイタリック体フォントとして表示します。現在のソースコードを見ると、他の機能もチェックされていることがわかりますが(詳細は異なる場合があります)、基本アルゴリズムは同じです。

いくつかの調査で、固定幅フォントを使用するためのxtermの要件がFontconfigの問題を引き起こしたことがわかりました。オプションは次のとおりです(参照ユーザーマニュアル):

  proportional    spacing         0
  dual            spacing         90
  mono            spacing         100
  charcell        spacing         110

または選択しないでください。比例フォントを選択するとビューには適していませんが、xtermソースコードから制限を削除するのが最も確実な解決策です。 Fontconfigには、すでにモードにある設定を上書きする方法はありません。

これはxtermのバグではなく回避策です。このspacing=monoプロパティを使用した元の変更がxtermに追加されました。2000年11月著者:Keith Packard(彼はXftとFontconfigの原作者でもあります)。

次のようにして、フォント構成のエラーを簡単に表示できます。

fc-match 'Go Mono:spacing=monospace'

これは私に与える

Go-Mono-Italic.ttf: "Go Mono" "Italic"

おすすめ記事