Pango select 倍数字体
Pango select multiples fonts
我想在我的软件中使用 pango 的三种字体:
- Font1:拉丁文、Cryllic 字符
- 字体 2:韩文字符
- Font3:日语字符
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) 显示结果。仅当内容更改时才需要更改设置 - 它会在绘制信号之间保持值。
我想在我的软件中使用 pango 的三种字体:
- Font1:拉丁文、Cryllic 字符
- 字体 2:韩文字符
- Font3:日语字符
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) 显示结果。仅当内容更改时才需要更改设置 - 它会在绘制信号之间保持值。