フォントを使用してインストールされたすべてのフォントの名前を印刷していますが、デフォルトのフォント(Segoe UI)を使用している場合は、フォントの文字セットを判別することはできますか?
今、私は次のことをしようとしていると私は理解できない何かが見つかりました:これは、デフォルトのフォントを使用して印刷したことがない
var installedFonts = new System.Drawing.Text.InstalledFontCollection().Families;
foreach (var family in installedFonts)
{
var font = new Font(family, 12);
if (font.GdiCharSet == 2) // Symbols font
{
// Print using default font
}
else // Readable font
{
// Print using font
}
}
を。さらに、フォントが異なる文字セットを使用している場合でも、すべてのフォントのGdiCharSet
は1
を返します。
このプロパティは、
Font(String, Single, FontStyle, GraphicsUnit, Byte)
コンストラクタに異なる文字セットが指定されていない限り、1を返します。
私はByte
の値を指定していないので、明らかにフォントを正しく作成していないようです(別のコンストラクタを使用しています)。これは、フォントの値がCharSet
であることを知る別の方法(「実際の」方法)があると思います。しかし私はそれをどこでも見つけることができません。誰が私がこれをどのように見つけることができるか知っていますか?
注釈として、メモ帳で管理します。書式>フォント...はフォントセレクタを開きます。 Scriptの下で使用されている文字セットが表示されていることがわかります。
["文字マップ"](http://sites.psu.edu/symbolcodes/wp-content/uploads/sites/4419/2015/07/CharMapWin7.png)ウィンドウツールを使用すると、すべてのフォントに任意の文字セットを作成するオプションがあります。だからあなたの質問は意味をなさない。しかし、あなたの目的は "どの文字がこのフォントで印刷できるか"を決定しようとするようなものです。それは別の質問です。 [this one](https://stackoverflow.com/questions/1439551/get-supported-characters-of-a-font-in-c-sharp)(wpfの場合) – Sinatr
@Sinatr私はおそらく間違ったアプローチを使用していますが、明らかにメモ帳がそれをやっているので何とか識別することは可能です。私の質問は、どのようにこれを行うことができます(可能なので)?上記のコンストラクタで使用するByteの値を知るにはどうすればよいですか? –
すべてのバイト値は、フォントを正常に生成します(試してください、おそらく私は間違っています)。必要な文字が含まれていますか?質問です。 – Sinatr