我想将GtkTextView的字体设置为用户使用GtkFontChooserDialog选择的字体。如何做到这一点?我尝试了很多方法,但没有一种效果足够好或根本不够。
另外,我使用 GTK+3 稳定版,所以请不要推荐弃用的解决方案(例如使用 gtk_widget_override_font(((。我想要这个问题的最新解决方案,我已经知道如何使用已弃用的函数来解决它。
我尝试了GtkTextTag,就像Gtknerd推荐的那样。
这种方法有两个问题:
- 这不会改变小部件的样式上下文,通过它我可以获得当前字体。
- 我使用 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*)
.但它已经过时了,并且在一段时间内没有效果。