如何将字体设置为用户使用字体选择器选择的字体?

时间:2018-09-18 09:13:53

标签: c gtk gtk3

我想将GtkTextView的字体设置为用户使用GtkFontChooserDialog选择的字体。如何才能做到这一点?我已经尝试了很多方法,但是没有一种方法可以很好地工作或根本无法工作。

此外,我使用GTK + 3稳定版,因此请不要推荐不建议使用的解决方案(例如,使用gtk_widget_override_font())。我想要这个问题的最新解决方案,我已经知道如何使用不推荐使用的函数来解决它。


我像theGtknerd recommended一样尝试了GtkTextTag。

此方法有两个问题:

  1. 这不会更改窗口小部件的样式上下文,通过它可以获取当前字体。
  2. 我使用gtk_text_buffer_apply_tag()来应用包含用户选择的字体的标签,但这不是 dynamic ,字体仅在当前开始位置和当前结束位置之间更改,而没有考虑到以后对文本的潜在修改。

2 个答案:

答案 0 :(得分:0)

您可能希望像GtkTextTag带来的Google搜索一样使用here

您的另一种选择是使用CSS,但是我认为这对于格式化很多文本不是很友好。

答案 1 :(得分:0)

像这样使用GtkTextTag:

gtk_text_buffer_create_tag(buffer, "font", "family", "Monospace", NULL);

...

GtkTextIter start;
GtkTextIter end;

gtk_text_buffer_get_start_iter(buffer, &start);
gtk_text_buffer_get_end_iter(buffer, &end);

gtk_text_buffer_apply_tag_by_name(text_buffer, "font", &start, &end);

您可以使用gtk_widget_modify_font(GtkWidget*, PangoFontDescription*)。但这已经过时,并且在一段时间内没有效果。

相关问题