是的,这帮助我指明了正确的方向。这几天我一直在兜圈子。还有一些事情要做,整理一下代码,但发现这行得通:
声明:
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);
显示窗口,我们就完成了。