0

pango を使用してソフトウェアで使用したいフォントが 3 つあります。

  • Font1: ラテン文字、クリリック文字
  • Font2: ハングル文字
  • Font3: 日本語の文字

Pango はテキストを正しくレンダリングしますが、フォントを選択したい

この好みの pango フォントを示す方法はありますか?

私が使用するもの: Linux と pango 1.29

4

1 に答える 1

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);

これで、通常のテキストのバッファーと属性リストができました。これらを (パーサーを介さずに) 手動で設定する場合は、フォントのインスタンスごとに 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) を使用して結果を表示します。セットアップは、コンテンツが変更された場合にのみ変更する必要があります。ドロー信号全体で値が維持されます。

于 2015-05-27T05:24:11.617 に答える