web-dev-qa-db-ja.com

FirefoxでTTFフォントの合字(tt、ti、fi、ffなど)を修正するにはどうすればよいですか?

特定のWindowsフォントでは、合字カーニングが反転し、2つの文字が太字になるような表示の問題があります。 FirefoxでHelveticaを使用したメールのスクリーンショットを次に示します。

enter image description here

ご覧のとおり、交差した文字(tf)が互いに接続し、iなどの文字が交差する方法に関するもののようです。

私は非常に長い間(複数のシステムで)この問題を抱えていましたが、似たような問題がポップアップ表示され、それらを修正する方法を見つけた人がいるかどうか疑問に思いました。

注:これはFirefoxにのみ影響すると思います。 ChromeとLibreOfficeはどちらも問題ありません。

22
Oli

Libre Officeを含むすべてのアプリケーションで動作する別のソリューションは、 aldeby で提供されます。

ファイル~/.fonts.confを編集または作成し、このコードを貼り付けます:

<match target="font" >
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>

必ずXML構造を保持してください。

ログアウトして再度ログインすると、Calibri(および場合によっては他のフォント)の外観が格段に良くなります(実際には、ここに示された他の回答よりもbetterいビットマップの置換が完全に無効になっているため)。

25
Calimo

合字 の無効化( Calimoのfonts.conf回答 を参照)間違った方向です!Calibri のようなフォントですが、タイポグラフィの美しさの一部も削除されます。これは、違いがわからなくなるまでフォントを縮小することに似ています。

Calibriフォントを削除し、 Carlito をインストールすることでこれを解決しました。これは「 metric-compatible with Calibri」です「fontconfig(local.conf)へのマッピングエントリ」とともにパッケージ化され、フォントキャッシュが更新されます。

$ rm ~/.fonts/Microsoft/CALIBRI*
$ Sudo apt install fonts-crosextra-carlito
$ fc-cache

その後、CarlitoがCalibriの代わりになっていることを確認できます。

$ fc-match Calibri
Carlito-Regular.ttf: "Carlito" "Regular"

(これが機能しない場合は、Sudo rm /usr/share/fonts/truetype/msttcorefonts/calibri*のようなものが必要になることがありますが、大文字と小文字の正確な場所は異なる場合があります。)

MicrosoftのCalibriを削除する前に、Calibriを使用するテストドキュメントをLibreOfficeに保存し、スクリーンショットを撮りました。その後、LibreOfficeを終了し、再度開いて、テストドキュメントを読み込みました。 「Calibri」フォント名は、それが置き換えられたことを示すためにイタリック体で表示されました。この代替バージョンのスクリーンショットを撮り、オリジナルの下に貼り付けました。

Calibri tests

上記のテキストは13pt Calibriのスクリーンショットのペアであり、MicrosoftのCalibriはfontconfigと一致するCarlitoの上にあります。 LibreOffice 5.0.5.1でレンダリングされるように、太字やフォーマット、「ペアカーニング」は有効になっていません。

CarlitoはCalibriに非常に近く、合字は適切にレンダリングされ、全体的に非常にきれいです。

Caladea for Cambria with fonts-crosextra-caladeaでも同じことができ、Googleの Croscoreフォント Arimo、Tinos、およびCousine for ArialTimes New Roman 、および Courier New with fonts-croscore。詳細については、Debianの CalibriおよびCambriaフォントの代替 wikiをご覧ください。

しかし、Helveticaはどうですか?

この質問は Helvetica フォントについて尋ねます。これはAppleの推奨フォントです sans-serif フォントです。 Microsoftは、Calibriに変更する前に Arial を優先しました。デフォルトのLinuxマッピングはディストリビューションによって異なりますが、通常は Nimbus Sans L または Liberation Sans のいずれかです。

$ fc-match Helvetica
n019003l.pfb: "Nimbus Sans L" "Regular"

これを実行してArialを取得した場合、上記の合字の問題が発生するかなりの理由です。Arialは素晴らしいフォントではありません。

Helveticaにはそれを取り巻く文化があり、Helveticaと完全にメトリック互換性のあるフォントは見つかりません。 Arial(およびLiberation Sansとそのフォーク Arimo を含むArialとメトリック互換のフォントは、文字幅が同じです(つまり、「ほぼ」メトリック互換です。テキストはHelveticaと同じように折り返されます) )。フリーフォントの中では、Liberation SansとNimbus Sans seem が最も類似した美学を持っています。

IBM Plex もある[ 1 ] [ 2 ]。 Plexは、IBMのすべてのマテリアルでHelvetica(また、sansだけでなく、セリフ体フォントや等幅フォントも圧縮されています)を置き換えるように設計されていますが、Helveticaやその他のフォントとはまったく互換性がありません。 Font Squirrelには、 Plexフォントのサンプル の見やすいビューがあります。

Fontconfigエイリアス

Helveticaを別のフォントに手動でエイリアスするには(したがって、CalibriやArialを削除する必要はありませんが、その場合は手動でエイリアスする必要があります)、~/.config/fontconfig/fonts.confファイルを編集します(古いシステムの場合は~/.fonts.conf。混乱を避けるために、 この回答 に記載されているように、後者を前者にシンボリックリンクし、Helveticaに新しい<alias>セクションを追加します(これはArimoを使用します。 ):

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>

  <alias>
    <family>Helvetica</family>
    <prefer><family>Arimo</family></prefer>
  </alias>

</fontconfig>
9
Adam Katz

lgarzo's answer は機能しますonlyテキストに「noligs」クラスがあるWebサイト(ほとんどのWebサイトでは機能しません)。

すべてのWebサイトで合字をグローバルに無効にするには、userChrome.cssに次の行を追加します。

* { -moz-font-feature-settings: "liga" 0; }

それを行う最も簡単な方法は、 Stylish 拡張子を持つ新しいスタイルを作成することです。

6
Calimo

画像を見ながらいくつかの発言が私の心に浮かびました。

  • 合字はanti-aliasedのようですが、残りのテキストはそうではありません。したがって、通常のテキストより太く見えます(ただし、太字に見えることも否定できません)。
  • 私の知る限り、Helveticaフォントは非標準フォントです。つまり、デフォルトのWindowsインストールには付属していません。インストールされていますか、それとも別のフォントですか?

問題は、フォントが合字/カーニングを正しくサポートしていないことに基づいていると思います。

以下のCSSルールを使用して、FFの合字を無効にできます。

/* disable common ligatures, usually on by default */
.noligs { -moz-font-feature-settings: "liga" 0; }

ソース: CSSリファレンス:Mozilla拡張機能

4
lgarzo

Calimoの答えに加えて、Archlinuxユーザーはヘルプを見つけることができます https://wiki.archlinux.org/index.php/font_configuration -ビットマップフォントを無効にします

ローカル設定ファイル〜/ .config/fontconfig/conf.d/20-no-embedded.confを作成することを提案しましたが、システム全体のオプションを選択しました

Sudo touch /etc/fonts/conf.d/20-no-embedded.conf
Sudo chmod 777 /etc/fonts/conf.d/20-no-embedded.conf
nano 777 /etc/fonts/conf.d/20-no-embedded.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

次に、アプリを再起動します(私の場合はThunderbird)

1