4

.ttf ファイルがあり、フォント ファミリ名を取得したい。

4

2 に答える 2

2

これは、System.Windows.Media 名前空間をインポートすることによって最も簡単に実行できます。これにより、ByteArray からフォントを取得するよりも多くの作業と単純な API が得られます。

using System.Windows.Media;

String fontFilePath = "PATH TO YOUR FONT";
GlyphTypeface glyphTypeface = new GlyphTypeface(fontFileURI);
String fontFamily = glyphTypeface.Win32FamilyNames[new System.Globalization.CultureInfo("en-us")];
String fontFace = glyphTypeface.Win32FaceNames[new System.Globalization.CultureInfo("en-us")];

Console.WriteLine("Font: " + fontFamily + " " + fontFace);
于 2012-08-24T15:20:19.013 に答える
1

これは私が過去に使用したものです。これはWebアプリケーション用だったので、おそらくあなたが望むものではありません. また、フォント ttf ファイルがデータベースに保存されていました。[FONTASBYTEARRAY] を実際のバイト [] に置き換える必要があります。

ttf ファイルを font オブジェクトに入れるもっと良い方法があるかもしれませんが、これで始められるはずです。

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Text;
using System.Runtime.InteropServices;

namespace Utility
{
    public class Font
    {
        public string GetFont(byte[] [FONTASBYTEARRAY])
        {
            PrivateFontCollection fc = new PrivateFontCollection();
            IntPtr pointer = Marshal.UnsafeAddrOfPinnedArrayElement([FONTASBYTEARRAY], 0);
            fc.AddMemoryFont(pointer, Convert.ToInt32([FONTASBYTEARRAY].Length));
            System.Drawing.Font f = new System.Drawing.Font(fc.Families[0], 10);
            FontFamily ff = f.FontFamily;
            return ff.Name;
        }
    }
}
于 2010-03-23T05:36:29.657 に答える