【发布时间】:2022-08-15 06:01:59
【问题描述】:
请看一下这个jsfiddle:
https://jsfiddle.net/darrengates/c5mwohb7/
如果您在 jsfiddle 中打开控制台,您会看到日文文本不像英文那样“删除线”。
英文删除线: t̶h̶i̶s̶̶i̶s̶̶E̶n̶g̶l̶i̶s̶h̶̶s̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h̶
Japanese strikethrough (on my screen just a bunch of rectangles with lines through): の̶ス̶レ̶ッ̶ド̶で̶、̶ス̶ク̶リ̶ー̶ン̶シ̶
我希望能够通过某种方式(不使用或其他基于 html 标记的方法)为日语和可能的其他亚洲语言实现删除线。
这是小提琴的代码:
function strike(text) {
return text
.split(\'\')
.map((char) => {
return char + \'\\u0336\'
})
.join(\'\')
}
console.log(strike(\'this is English strikethrough\'))
console.log(strike(\'のスレッドで、スクリーンシ\'))
-
我不知道你是否已经知道,但是Wikipedia says (with my emphasis added):\“在日本,删除文本时通常使用双删除线(而不是单删除线).这是为了增加清晰度,因为在复杂的汉字中,单个删除线可能会被遗漏或与字符中的笔划混淆\".虽然这与您的问题没有直接关系,但它确实引发了一个问题,即为什么您尝试对日文字符使用单删除线而不是双删除线。
-
在您的问题中澄清也会有帮助确切地使用带有日文字符的删除线时您希望看到的内容。当 HTML
<p><s>のスレッドで、スクリーンシ</s></p>被渲染时,删除线工作正常(对我来说),并且直接穿过日文字符的中间。这是否是您在使用 JavaScript 时也想看到的,因为即使您的英文删除线在您的问题中也没有这样做,在 Fiddle 中也没有。 -
您还可以完美地在 HTML 中的日文字符上获得双删除线:
<p><del style=\"text-decoration-style: double;\">のスレッドで、スクリーンシ</del></p>。那是您应该尝试在 JavaScript 中模拟的渲染吗? -
我最终只是使用 <del> 而不是 unicode 来完成这项任务。
-
好的。由于这是一个好问题,即使您最终使用了另一种方法,也请考虑发布答案。这比将决议埋在 cmets 中对社区更有帮助。我很乐意投票。
标签: javascript html css unicode