Pango选择多种字体

时间:2015-05-06 11:20:25

标签: utf-8 fonts pango

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

  • Font1:拉丁语,Cryllic字符
  • 字体2:韩文字符
  • Font3:日文字符

Pango正确渲染文本,但我想选择一种字体

有没有办法表明这种偏好pango字体?

我使用:linux和pango 1.29

1 个答案:

答案 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)显示结果。设置只需要在内容更改时进行更改 - 它会保持绘制信号的值。