1

呈现文本的最有效方法是什么,在TextBuffer任何情况下都可能是大写的 a TextView

它不适用于整个文本,仅适用于其中的特定样式 - 并且需要保留该部分的原始大写,以防用户将文本样式更改回非大写样式。

因此,如果文本的相关部分可以用一个TextTag理想的标记来标记,但没有完全大写的标记(有一个 small_caps 字体变体,由于某种原因,它似乎在 textview 中不起作用) -可以创建一个自定义的 TextTag 属性,如“all_caps”,如果可以,它将如何实现?

其他想法会覆盖 textview 绘制功能(听起来很痛苦)或可能创建辅助TextBuffer并动态更改文本大小写?

更新:

对于这个应用程序,最好的方法可能是截取PangoTextBuffer(from TextView's do_draw,我认为) 传递给的字符串并即时更改它:对于此应用程序中的其他文本样式,需要添加一些额外的文本字符 (这是一个编剧应用程序,所以有一个“Parenthical”风格,不出所料,它总是包含在括号中——这些应该作为风格的一部分添加,而不是依赖于用户添加它们)

所以更新的问题是:一个子类/猴子代码/某物//Pango如何拦截传递给(连同它的)的字符串,以便根据其样式更改/添加它?PangoCairoGtk+ 3PangoTextTagsTextTag

4

0 回答 0