获得可用字体列表的跨平台方式
Crossplatform way to get a list of available fonts?
如何获取可用字体的列表?
如果我不必依赖某个巨大的东西,我会更好。
到目前为止,我的解决方案是在linux上列出目录/usr/share/fonts
,在windows上列出目录C:WindowsFonts
。这样做对吗?
不,这不是正确的方式。然而,问题是,除了对freetype之类的东西进行标准化,或者为不同的操作系统编写具有大量后端的自己的库之外,真的没有正确的方法。
更清楚的是:大多数操作系统都有位图字体、轮廓字体、不同的字体编码、各种其他字体格式,但这些字体格式都不太受支持,或者通过一些额外的插件、非字母字体(想想Wingdings、棋子等(、彩色字体、TeX字体、postscript字体、3D字体等来支持
此外,您甚至可能没有列出它们的标准方法。例如,大多数操作系统都按名称和大小列出字体,但X Window系统传统上按许多列标题列出字体,包括字体的权重、是否为sans/serif、固定/可变间距、斜体与斜体等
此外,您还遇到了一些问题,比如用户字体与系统字体,甚至网络字体、字体服务器,以及现在的网络字体。
简而言之,字体很复杂。正是由于这样的原因,像freetype这样的库才得以存在。我建议只用一个。
但是,如果你确实想要一个更快、更黑客的解决方案,那么列出这些dirs就是一个开始。您可能应该使用您提到的两种方法,即两种可能的后端,分别为Linux和windows选择默认后端,但可能会列出/usr/share/X11/font,或者通过defoma列出字体。
嗯。。。我会使用OpenGL和默认(保证(字体,它们的列表可以在这里找到
或者我会看看这些链接:
- 独立于平台的方式获取字体目录
- 多平台环境中的字体
- OpenGL字体教程
或者你可以只使用一个图形库(SDL、OpenGL(和一个BITMAP,其中包含字体……并将其用于文本!:(
祝你好运,我希望你能找到你想要的!
- 以跨平台的方式将图像源路径从C++发送到 QML
- 以跨平台的方式C++处理键盘
- 跨平台套接字发送,Linux 上的缓冲区常量无效* Windows上的常量字符*,最佳处理方式
- 跨平台方式,以防止打开应用程序的多个实例
- 除了 boost 之外,获取目录中C++目录中所有文件的跨平台方式
- 如何以跨平台方式获取C中的环境变量
- 跨平台方式获取用户友好的文件类型描述
- 将UTC tm*转换为本地化tm*的跨平台方式
- 在程序中运行gcc的安全、跨平台的方式
- 跨平台获取一天中的时间的方式
- Qt生成按键(键盘)到系统(OS)的跨平台方式
- 如何以跨平台的方式在 C/C++ 中测试计算机的实际一般性能
- 跨平台方式关闭计算机
- 当路径中存在同名文件时,以跨平台方式包含系统头文件
- 以跨平台的方式在c++中调用外部文件(例如可执行文件)
- 如何以跨平台的方式获得(几乎)唯一的系统标识符
- 如何以跨平台的方式自动下载c++依赖项+ CMake
- 获得可用字体列表的跨平台方式
- 如何确定'std::map'创建的用于'boost::pool_allocator'的节点的大小(以跨平台方式)?
- 将 UTF8 转换为 std::wstring 的跨平台方式