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



我想将GtkTextView的字体设置为用户使用GtkFontChooserDialog选择的字体。如何做到这一点?我尝试了很多方法,但没有一种效果足够好或根本不够。

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


我尝试了GtkTextTag,就像Gtknerd推荐的那样。

这种方法有两个问题:

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

你可能想像谷歌搜索一样使用GtkTextTag。

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

像这样使用 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*).但它已经过时了,并且在一段时间内没有效果。

最新更新