Как установить шрифт на тот, который пользователь выбрал с помощью средства выбора шрифтов? - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу установить шрифт GtkTextView на тот, который пользователь выбрал, используя GtkFontChooserDialog . Как это может быть сделано? Я пробовал много способов, но ни один из них не работает достаточно хорошо или вообще.

Кроме того, я использую GTK + 3 stable, поэтому, пожалуйста, не рекомендуйте устаревшие решения (например, используя gtk_widget_override_font () ). Мне нужно современное решение этой проблемы, я уже знаю, как ее решить, используя устаревшие функции.


Я попробовал GtkTextTag так же, как theGtknerd , рекомендовано .

У этого метода есть две проблемы:

  1. Это не меняет контекст стиля виджета, через который я получаю текущий шрифт.
  2. Я использовал gtk_text_buffer_apply_tag () , чтобы применить тег, содержащий шрифт, который выбрал пользователь, но это не динамический , шрифт изменяется только между текущим началом и текущий конец, который не учитывает последующие потенциальные изменения текста.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Используйте 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*). Но это очень устарело и не дает эффекта через некоторое время.

0 голосов
/ 19 сентября 2018

Вы, вероятно, хотите использовать GtkTextTag как поисковый запрос Google, приведенный здесь здесь .

Другой вариант - использовать CSS, но я не думаю, что этобудет очень удобен для форматирования большого количества текста.

...