是否可以在 C++ 中嵌入 TTF 或 OTF 字体文件?应用?
是否可以在 C++ 应用程序中嵌入 TTF 或 OTF 字体文件,以便应用程序无需将其安装在目标计算机上即可使用它?欢迎任何想法。 (目标平台将是 Windows 和 Macintosh)。目的:字体是私有字体,不应该提供给用户。
Is it possible to embed a TTF or OTF font file in a C++ application so that application can use it without installing it on target machine? Any thoughts are welcome. (target platforms are going to be Windows and Macintosh). Purpose: Font is a private one and should not be available to the users.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
OS X:将字体包含在应用的
Resources
目录中,然后将值ATSApplicationFontsPath
添加到应用的Info.plist
包含相对于资源目录的路径。Windows:MSDN 有一篇文章 针对 Windows 窗体,使用
System.Drawing.Text.PrivateFontCollection
类和一个用于 WPF 使用System.Windows.Media.FontFamily
类。假设您使用 C++/CLI 和 .NET GUI 框架;它可能不适用于MFC。OS X: Include the font in the app’s
Resources
directory, then add the valueATSApplicationFontsPath
to the app’sInfo.plist
containing the path relative to the Resources directory.Windows: MSDN has an article for Windows Forms using the
System.Drawing.Text.PrivateFontCollection
class and one for WPF using theSystem.Windows.Media.FontFamily
class. This is assuming you’re using C++/CLI and the .NET GUI frameworks; it probably won’t apply for MFC.最近,我了解到TTF字体只是一个字节数组。只需进行十六进制转储并准备字节数组(注意字节序,大多数现代架构都是小字节序)。
以下线程有详细信息:
https://twitter.com/awmanoj/status/1071718063647580161
在 golang 中,还有一个字节数组的生成器。根据需要用另一种语言(如 Java/C++)实现相同的功能非常简单。
Recently, got to know that a TTF font is simply a byte array. Just take a hexdump and prepare the byte array (taking care of the endianness, most modern architectures are little endian).
Following thread has details:
https://twitter.com/awmanoj/status/1071718063647580161
In golang, there is also a generator of the byte array. Quite trivial to implement the same in another language like Java/C++ per the need.