呈现文本的最有效方法是什么,在TextBuffer
任何情况下都可能是大写的 a TextView
?
它不适用于整个文本,仅适用于其中的特定样式 - 并且需要保留该部分的原始大写,以防用户将文本样式更改回非大写样式。
因此,如果文本的相关部分可以用一个TextTag
理想的标记来标记,但没有完全大写的标记(有一个 small_caps 字体变体,由于某种原因,它似乎在 textview 中不起作用) -可以创建一个自定义的 TextTag 属性,如“all_caps”,如果可以,它将如何实现?
其他想法会覆盖 textview 绘制功能(听起来很痛苦)或可能创建辅助TextBuffer
并动态更改文本大小写?
更新:
对于这个应用程序,最好的方法可能是截取Pango
从TextBuffer
(from TextView
's do_draw
,我认为) 传递给的字符串并即时更改它:对于此应用程序中的其他文本样式,需要添加一些额外的文本字符 (这是一个编剧应用程序,所以有一个“Parenthical”风格,不出所料,它总是包含在括号中——这些应该作为风格的一部分添加,而不是依赖于用户添加它们)
所以更新的问题是:一个子类/猴子代码/某物//Pango
如何拦截传递给(连同它的)的字符串,以便根据其样式更改/添加它?PangoCairo
Gtk+ 3
Pango
TextTags
TextTag