如何使用fontconfig获取字体列表(C/C++)?

2023-11-21

我听说 fontconfig 是在 Linux 中获取字体的最佳选择。不幸的是,我一直在浏览他们的开发人员文档,但我完全不知道我在做什么。看来没有简单的函数来获取系统字体列表。我必须执行模式搜索......对吗?

简而言之,使用 fontconfig 获取 true-type 字体列表(它们的系列、字体和目录)的最佳方法是什么?当然,如果有比 fontconfig 更好的东西,我当然愿意接受其他解决方案。


我有一个类似的问题,并找到了这篇文章(fontconfig 文档有点难以理解)。 MindaugasJ 的回复很有用,但要注意额外的行,例如FcPatternPrint()或打印出结果FcNameUnparse()。此外,您还需要添加一个FC_FILE传递给的参数列表的参数FcObjectSetBuild。像这样的东西:

FcConfig* config = FcInitLoadConfigAndFonts();
FcPattern* pat = FcPatternCreate();
FcObjectSet* os = FcObjectSetBuild (FC_FAMILY, FC_STYLE, FC_LANG, FC_FILE, (char *) 0);
FcFontSet* fs = FcFontList(config, pat, os);

printf("Total matching fonts: %d\n", fs->nfont);
for (int i=0; fs && i < fs->nfont; ++i) {
   FcPattern* font = fs->fonts[i];
   FcChar8 *file, *style, *family;
   if (FcPatternGetString(font, FC_FILE, 0, &file) == FcResultMatch &&
       FcPatternGetString(font, FC_FAMILY, 0, &family) == FcResultMatch &&
       FcPatternGetString(font, FC_STYLE, 0, &style) == FcResultMatch)
   {
      printf("Filename: %s (family %s, style %s)\n", file, family, style);
   }
}
if (fs) FcFontSetDestroy(fs);

我有一个稍微不同的问题需要解决,因为我需要找到要传递给 freetype 的字体文件FC_New_Face()给定一些字体“名称”的函数。此代码能够使用 fontconfig 来查找与名称匹配的最佳文件:

FcConfig* config = FcInitLoadConfigAndFonts();

// configure the search pattern, 
// assume "name" is a std::string with the desired font name in it
FcPattern* pat = FcNameParse((const FcChar8*)(name.c_str()));
FcConfigSubstitute(config, pat, FcMatchPattern);
FcDefaultSubstitute(pat);

// find the font
FcResult res;
FcPattern* font = FcFontMatch(config, pat, &res);
if (font)
{
   FcChar8* file = NULL;
   if (FcPatternGetString(font, FC_FILE, 0, &file) == FcResultMatch)
   {
      // save the file to another std::string
      fontFile = (char*)file;
   }
   FcPatternDestroy(font);
}

FcPatternDestroy(pat);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用fontconfig获取字体列表(C/C++)? 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 使用 JNA 单击鼠标

    我正在尝试使用 JNA 模拟鼠标在窗口中的单击 public class App public static final int WM LBUTTONUP 514 public static final int WM LBUTTONDOWN
  • 使用 ASP.NET Core 获取绝对 URL

    在 MVC 5 中 我使用以下扩展方法来生成绝对 URL 而不是相对 URL public static class UrlHelperExtensions public static string AbsoluteAction this
  • 什么是回调函数以及如何在 OOP 中使用它

    我想使用php 简单的 HTML DOM 解析器从充满文章的页面上的每篇文章中获取图像 标题 日期和描述 当查看 API 时 我注意到它有一个 set callback 来设置回调函数 但是我不确定它的作用或我将如何使用它 在其中一个示例中
  • 使用 unique_ptr 作为值初始化静态 std::map

    如何初始化静态地图 其中值是std unique ptr static void f static std map
  • 在 ruby​​ on Rails 中被 nokogiri 转换为“\u0092”

    我有一个 html 页面 其中包含一些 html 实体 例如 Here I am not pasting whole html page content just putting issue line only html file p th
  • ASP.NET Session 对象中的实体框架对象上下文?

    我们有一个多层的 Asp NET Web 窗体应用程序 数据层有一个类叫做DataAccess它实现了IDisposable并有一个实体框架对象上下文的实例作为私有字段 该类具有许多返回各种实体集合的公共方法 并且在释放其对象上下文时将释放
  • Django:在后台发送电子邮件的最佳方式?

    我正在从 Django 发送电子邮件 使用 Webfaction 然而 这非常慢 所以我想在后台发送电子邮件 即使电子邮件尚未发送 也会向用户返回响应 关于什么是最好的方法有什么想法吗 我读过有关芹菜的内容 但设置它的步骤似乎很多 http
  • 将 EXE 作为 DLL 加载,本地 vftable

    我有一个名为test exe通常用作独立应用程序 我想将此 exe 用作另一个应用程序 app exe 中的模块 dll test exe 中的代码做了一些非常简单的事情 例如 void doTest MyClass inst new My
  • Raphael JS 沿路径文本

    我正在寻找一个例子或对一个概念的一些确认 希望在应用程序上使用 Raphael JS 并希望能够像 Illustrator 等图形设计应用程序那样扭曲文本 以下是 Chris Wilson 代码的改编版 重构为嵌入式函数 并添加了一些功能
  • 从时间格式中删除前导零

    我收到这种格式的字符串 HH mm ss 我想删除前导零 但始终保留最后四个字符 例如m ss即使m将是零 我正在格式化音频持续时间 例子 00 03 15 gt 3 15 10 10 10 gt 10 10 10 00 00 00 gt
  • ASP.NET Web api:记录/指定服务

    我一直在看asp net 网络 API 而且我喜欢实现实用 Web 服务的简单性 但是 我如何记录 指定这样实现的服务的接口 例如 是否有任何规范我可以传递或生成给没有 NET 背景的 Java 人员 让他轻松调用和使用服务 我可以给 ja
  • 如何让 R 使用更多 CPU 使用率?

    我注意到 R 并没有使用我所有的 CPU 我想大幅增加它 高达 100 我不希望它只是并行化几个函数 我希望 R 使用更多的 CPU 资源 我正在尝试使用 lp 函数运行纯 IP 设置打包程序 目前 我运行 Windows 我的计算机上有
  • Android - 如何知道一个视图是否覆盖了RelativeLayout中的另一个视图

    我有一个RelativeLayout 里面有两个视图 view1 每十秒在布局内的随机位置重新创建一次 view2 处于静态位置并且比 view1 大 我想知道第一个视图何时在第二个视图区域内创建 我该怎么做 我目前正在尝试此代码 但 id
  • 如何使用WMI获取USB设备的盘符

    我需要跟踪 C 应用程序中的 USB 插入和移除事件 因此我根据 SO 上的其他问题提出了以下想法 我无法使用这个方法 var drives DriveInfo GetDrives Where drive gt drive IsReady
  • 为什么以及何时 WHERE 子句中带条件的 LEFT JOIN 不等于 ON 中的相同 LEFT JOIN? [复制]

    这个问题在这里已经有答案了 我遇到了一个非常令人困惑的情况 这让我质疑我对 SQL Server 中联接的所有理解 SELECT t1 f2 FROM t1 LEFT JOIN t2 ON t1 f1 t2 f1 AND cond2 AND
  • 让logstash向不同的索引添加不同的输入

    我已经设置了logstash来使用嵌入式elasticsearch 我可以记录事件 我的logstashconf看起来是这样的 https gist github com khebbie 42d72d212cf3727a03a0 现在我想添
  • 如何使“python setup.py install”安装源而不是egg文件?

    我曾经跑步python setup py install在 python 项目中 它只会将源移动到site packages 但有时它会 mv anegg文件至site packages usr bin env python encodin
  • 如何判断指针指向的是堆还是栈?

    Example bool isHeapPtr void ptr int iStack 35 int ptrStack iStack bool isHeapPointer1 isHeapPtr ptrStack Should be false
  • 如何将 Font Awesome 与 MPDF 一起使用?

    我正在使用 Zend Framework 并使用 mpdf 创建 PDF 我正在尝试使用 fontawesome 来表示某些文章 但是 fontawesome 的字体无法正确呈现 下面是代码 stylesheet file get cont
  • 如何使用fontconfig获取字体列表(C/C++)?

    我听说 fontconfig 是在 Linux 中获取字体的最佳选择 不幸的是 我一直在浏览他们的开发人员文档 但我完全不知道我在做什么 看来没有简单的函数来获取系统字体列表 我必须执行模式搜索 对吗 简而言之 使用 fontconfig