我需要你的帮助。
我正在使用自定义Font在C#上开发一个小应用程序。 问题是,字体必须先安装在系统上。如果系统中没有该字体,则只使用Times New Roman。 有没有办法在应用程序中嵌入字体文件,因此不需要在每个系统中安装它?
谢谢。
答案 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”,否则它将无效。