pango を使用してソフトウェアで使用したいフォントが 3 つあります。
- Font1: ラテン文字、クリリック文字
- Font2: ハングル文字
- Font3: 日本語の文字
Pango はテキストを正しくレンダリングしますが、フォントを選択したい
この好みの 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);
これで、通常のテキストのバッファーと属性リストができました。これらを (パーサーを介さずに) 手動で設定する場合は、フォントのインスタンスごとに 1 つの 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) を使用して結果を表示します。セットアップは、コンテンツが変更された場合にのみ変更する必要があります。ドロー信号全体で値が維持されます。