Unicode下划线无法完全覆盖某些字符

7
我在C#应用程序中有一个需要下划线的字符串,这需要使用unicode来完成,因为该字符串会被导出并显示在word文件中。为此,我在每个字符前面加上了下划线unicode \u0332,虽然这可以工作,但'm'字符并没有完全下划线,如下图所示: enter image description here 我尝试在m之前和之后几次加上\u0332,但输出始终相同。
是否有任何方法可以完全下划线字符?
编辑:我刚刚尝试使用连续下划线unicode符号\u2381,但根本不渲染。
1个回答

5

U+0332是一个Unicode 组合字符,因此它会出现在它修改的字符之后。但这只指定了字符应该被下划线。具体的图形表示取决于应用程序及其渲染引擎;它并不完全支持所有地方。尝试将文本i̲m̲p̲o̲r̲t̲a̲n̲t̲粘贴到应用程序中,看看是否按预期工作。如果没有,则除了使用另一种表示方式,例如*important*IMPORTANT,或导出支持的富文本格式(RTF、docx等)之外,您无法做任何事情。


谢谢。这是一个MS Word .docx文件,我认为它支持并可以正确呈现此内容。由于该应用程序查找封装在 < > 括号中的标记,并将其替换为应用程序中相应命名的 string 变量的内容,因此我有些被动。 - Saggio
你为什么要在Word文档中使用Unicode黑科技来格式化某些内容? - R. Martinho Fernandes
1
@R.MartinhoFernandes 相信我,这不是一个理想的情况 - 这是一个遗留应用程序,这是第一次提出此请求。例如,模板化的Word文档只有类似于<results>的内容,应用程序会遍历并将<results>替换为应用程序中包含的信息,其中字符串中包含的一个单词需要被下划线标记。这是在运行时完成的,因此无法在模板本身中格式化文本,它需要在应用程序端进行格式化。 - Saggio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接