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