首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统::绘图::Text::PrivateFontCollection在字体未安装时无法工作

系统::绘图::Text::PrivateFontCollection在字体未安装时无法工作
EN

Stack Overflow用户
提问于 2016-05-02 15:29:47
回答 1查看 678关注 0票数 2

我尝试从内存中添加字体(嵌入式资源),并将它用于我的windows窗体(c++/cli)应用程序.代码正在工作,但是当指定的字体没有安装在计算机上时,textbox使用的是默认字体而不是我的自定义字体。CompatibleTextRenderingDefault设置为true。

代码语言:javascript
复制
    System::Drawing::Text::PrivateFontCollection^ privateFont = gcnew System::Drawing::Text::PrivateFontCollection();

    IO::Stream^ fontStream = Reflection::Assembly::GetExecutingAssembly()->GetManifestResourceStream("textfont.otf");
    array<Byte>^ fontData = gcnew array<Byte>(fontStream->Length);
    fontStream->Read(fontData, 0, (int)fontStream->Length);
    fontStream->Close();

    pin_ptr<byte> fontAddress = &fontData[0];
    privateFont->AddMemoryFont((IntPtr)fontAddress, fontData->Length);

    this->TextBox_Username->Font = gcnew System::Drawing::Font(safe_cast<System::Drawing::FontFamily^>(privateFont->Families[0]), 9.749999F, System::Drawing::FontStyle::Bold);
    this->TextBox_Password->Font = gcnew System::Drawing::Font(safe_cast<System::Drawing::FontFamily^>(privateFont->Families[0]), 9.749999F, System::Drawing::FontStyle::Bold);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-10 11:33:30

可用于将字体加载到AddFontFile中的两种方法(AddFontFile、AddMemoryFont)都不完全支持OpenType字体。使用TrueType字体代替。

另见https://social.msdn.microsoft.com/Forums/en-US/40834a16-2378-4aeb-a499-25f835fe5738/opentype-font-as-embedded-resource?forum=winforms

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36986131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档