Pango select 倍数字体

Pango select multiples fonts

我想在我的软件中使用 pango 的三种字体:

Pango 正确呈现文本,但我想要 select 一种字体

有什么方法可以表明这种偏好的 pango 字体?

我使用:linux 和 pango 1.29

最简单的方法是使用PangoMarkup设置你想要的字体:

//  See documentation for Pango markup for details

char *pszMarkup = "<span face=\"{font family name goes here}\">"
                  "{text requiring font goes here}"
                  "</span>";  //  Split for clarity
char            *pszText;   // Pointer for text without markup tags
PangoAttrList   *pAttr;     // Attribute list - will be populated with tag info

pango_parse_markup (pszMarkup, -1, 0, &attr_list, &pszText, NULL, NULL);

您现在有一个常规文本缓冲区和一个属性列表。如果你想手动设置这些(不通过解析器),你将需要一个 PangoAttribute 每个字体实例并手动设置 PangoAttribute.start_index 和 PangoAttribute.end_index。

无论您如何获取它们,现在都将它们交给 PangoLayout:

//  pWidget is the windowed widget in which the text is displayed:

PangoContext *pCtxt = gtk_widget_get_pango_context (pWidget);
PangoLayout  *pLayout = pango_layout_new (pCtxt);

pango_layout_set_attributes(pLayout, pAttr);
pango_layout_set_text (pLayout, pszText, -1);

就是这样。使用pango_cairo_show_layout(cr, pLayout) 显示结果。仅当内容更改时才需要更改设置 - 它会在绘制信号之间保持值。