特定のフォントで間違った文字が表示されるのはなぜですか?

症状

Gill Sans や Linux Libertine G などの一部のフォントでは、表示されるテキストが完全に間違って表示されることがあります。文字は正しいスタイルで表示されていますが、間違った文字です。

これはV18以降に発生します。

原因

この問題は BricsCAD に限らず、他のプログラムでも発生します。

これらは多くのフォント ファイル (このようなファイルのバンドルはフォント ファミリと呼ばれます) を使用するフォントであり、プログラムは文字を描画するためにフォント ファミリ内で最も一致するフォント ファイルを暗黙的に検索します。フォントの表示は、1 つのフォント ファイルを使用した場合でも問題ありませんが、そのフォントに対して複数のファイルを使用すると、若干の改善が見られます。通常のフォント ファイルを使用して太字で描画するのは問題ありませんが、専用の太字フォント ファイルを使用する方が適切です。

大きなフォント ファミリには小さな欠陥がある場合があり、どのファミリのファイルを使用するかが不明確になります。その結果、文字を描画するときに、計算の初期段階で 1 つのフォント ファイルが使用され、後の段階で同じファミリの別のフォント ファイルが使用されます。

V17では問題になりませんが、V18ではキャラクターが描画され、完全に間違っている可能性があります。 新しい計算方法は実際には正しく、これを修正することはできません。

ソリューション

解決策は、単一のフォントに使用されるフォント ファミリを削減して、使用するファイルのあいまいな選択を回避することです。Gill Sans の場合、次のファイルを削除することでこれを実現できます。

  • Gill Sans Light
  • Gill Sans Light Italic
  • Gill Sans SemiBold
  • Gill Sans SemiBold Italic
  • Gill Sans UltraBold

使用するフォント ファイルを少なくしても、視覚効果は最小限になります。

Note:

多数のファイルで配布されるフォントでは、この問題は自動的には表示されません。

たとえば、Noto Sans フォントには、Italic、Light Italic というスタイルの 2 つのフォント ファイルがあります。しかし、2 つのフォントを Windows フォント ビューアーで開くと、2 つのフォントが技術的には 2 つの異なるフォント ファミリに属していることがわかります。

  • ファミリー Noto Sans (イタリック スタイルを使用)
  • ファミリー Noto Sans Light(イタリック体を使用)

フォント ファミリが異なるため、フォントはこの問題の影響を受けません。

同様に、ほとんどのフォントは、「拡張」フォント スタイルに別のフォント ファミリを使用することでこの問題を回避します。実際にこの問題が発生するフォントは、私たちが知る限りわずかしかありません。

拡張スタイルとは、次の 4 つのスタイル以外のフォント スタイルを指します。

  • 標準
  • 太字
  • 斜体
  • 太字斜体

詳細については、https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-idsフォント ファミリ名およびフォント サブファミリ名のセクションを参照。