C# - 如何在不将其安装到系统中的情况下使用自定义字体

时间:2010-12-10 16:34:29

标签: c# fonts

我需要你的帮助。

我正在使用自定义Font在C#上开发一个小应用程序。 问题是,字体必须先安装在系统上。如果系统中没有该字体,则只使用Times New Roman。 有没有办法在应用程序中嵌入字体文件,因此不需要在每个系统中安装它?

谢谢。

2 个答案:

答案 0 :(得分:9)

如果您还在阅读本文,我可能会指出您不必使用不安全的代码来加载资源中的字体。这是使用Marshal的一个例子。

PrivateFontCollection _fonts = new PrivateFontCollection();

byte[] fontData = Resources.CustomFontResourceName;

IntPtr fontPtr = Marshal.AllocCoTaskMem(fontData.Length);

Marshal.Copy(fontData, 0, fontPtr, fontData.Length);

_fonts.AddMemoryFont(fontPtr, fontData.Length);

Marshal.FreeCoTaskMem(fontPtr);

Font customFont = new Font(_fonts.Families[0], 6.0F);

答案 1 :(得分:1)

请注意,如果您使用AddMemoryFont,则需要使用此api调用“AddFontMemResourceEx”,否则它将无效。

PrivateFontCollection giving me symbols