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

我再次需要你的帮助。

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

谢谢。

如果您还在阅读本文,我可能会指出您不必使用不安全的代码来加载资源中的字体。 这是使用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); 

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

PrivateFontCollection给我符号