Да, это помогло направить меня в правильном направлении.Я ходил кругами пару дней.Еще нужно немного поработать, чтобы привести в порядок код, но обнаружил, что это работает:
Объявления:
The_Style_Context : Gtk_Style_Context;
The_Font_Size : Gint;
The_Font_Desc : Pango_Font_Description;
The_State : Gtk.Enums.Gtk_State_Flags := 1;
The_Tag : Gtk_Text_Tag;
Tags : Gtk_Text_Tag_Table;
Iter, Start_Iter : Gtk_Text_Iter;
Title_Scale : Constant := 2;
TextBuffer : Gtk_Text_Buffer;
TextView : Gtk_Text_View;
Предположим, что мы создали новое окно (Win), все необходимые поляи т. д., и текстовое представление.Теперь мы делаем:
The_Style_Context := Get_Style_Context (Win);
The_Font_Desc := Get_Font (The_Style_Context, The_State);
The_Font_Name := To_Unbounded_String (Get_Family (The_Font_Desc));
The_Font_Size := Get_Size (The_Font_Desc);
Gtk_New (Tags);
Gtk_New (The_Tag, "title_tag");
Add (Tags, The_Tag);
Следующая строка берет размер текущего шрифта и умножает его на масштаб, который я выбрал в разделе объявлений.
Set_Property (The_Tag, Size_Property, The_Font_Size * Title_Scale);
Создайте текстовый буфер итекстовое представление.
Gtk_New (TextBuffer, Tags);
Gtk_New (TextView, TextBuffer);
Предположим, мы установили поля для Text_View и некоторых других начальных параметров форматирования.Установите текст, затем примените форматирование тега:
TextBuffer.Set_Text ("Hello, world.");
Get_End_Iter (TextBuffer, Iter);
Get_Start_Iter (TextBuffer, Start_Iter);
Apply_Tag (TextBuffer, The_Tag, Start_Iter, Iter);
Покажите окно, и все готово.