我想在我的pango软件中使用三种字体:
Pango正确渲染文本,但我想选择一种字体
有没有办法表明这种偏好pango字体?
我使用:linux和pango 1.29
答案 0 :(得分:0)
最简单的方法是使用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)显示结果。设置只需要在内容更改时进行更改 - 它会保持绘制信号的值。