2

.NET フレームワークを使用して、特定のフォントの一般的なフェイス名 (サンセリフ、セリフ、モノスペース、筆記体、ファンタジー) を見つける方法を探しています。私の好みの言語は C# ですが、15 年近くソース コードを書いているので、現代の言語で例を挙げていただければ、自分で翻訳することができます。

[編集 - 明確化]

特定のオブジェクトが属する一般的なフォント ファミリ (サンセリフ、セリフ、モノスペース、筆記体、またはファンタジー、場合によってはシンボル)を特定する方法が必要です。System.Drawing.Font

例として、次のコード行からフォントを作成するとします。

System.Drawing.Font font = new System.Drawing.Font( "Serif", 12f, System.Drawing.GraphicsUnit.Point );

結果のフォントは、12 ポイントの "Times New Roman" フォントになる可能性があります。しかし、"Times" や "New Roman" や "Times New Roman" は必要ありません。それが "Serif" ファミリーに含まれていることを知る必要があります。

4

3 に答える 3

2

あなたは一緒に行くことができますlinq

ここfontにあなたが探しているマイクロソフトの新しいリストがあります。

例:

  • サンセリフ または セリフ=Microsoft Sans Serif
  • モノスペース=Batang


var font = FontFamily.Families
                     .Where(c => c.Name == "Microsoft Sans Serif")
                     .FirstOrDefault();

アップデート:

Genericsフォントを探しています

http://msdn.microsoft.com/en-us/library/system.drawing.fontfamily.aspx

var font = FontFamily.GenericMonospace;
于 2013-02-22T02:26:27.430 に答える
1

これは、Windows フォント API 関数から直接利用できないタイポグラフィ フォントの分類です。可能性のあるバックドアは GetFontData() です。これにより、フォントの TrueType テーブルに直接アクセスできます。そこにはたくさんの情報がありますが、私はこの正確な種類の情報が利用可能であることを認識していません. テーブルの仕様を自分で確認できます。

于 2013-02-22T03:26:17.353 に答える
0

A way to go about finding the generic face name for a given font.

Assuming you have a Font object, you can get the font family name like this:

Font font;
string familyName = font.FontFamily.Name;

あなたの編集とコメントへの返信: 私が見つけた限りでは、フォントの種類に関する情報はフォントに保存されていません。たとえば、私がフォントをデザインしてファンタジーとして分類し、あなたがそのフォントをサンセリフとして分類することができます。各クラスに含まれるものについて明確な定義がないため、フォントのプロパティではありません。

システム全体のデフォルトのモノスペース、サンセリフ、およびセリフ フォント ( を介してFontFamily) がありますが、フォントにセリフがあるかどうかわかりません。を使用すると、フォントが筆記体であるか、下線が引かれているかなどを調べることができます。この回答font.Styleを通じて、フォントが等幅かどうかを調べることができます。

于 2013-02-22T01:51:22.677 に答える