专名号

“专名号”就是专有名词下面的那条下划线,印象中在一些繁体的书中见过。详细的介绍可以看一下维基百科,或者知乎上的这条问答

之所以要说这个符号,是因为发现在HTML5中仍然保留了 “u“ 这个标记(element)。在HTML4中,“<u>“一般仅仅是用来给一段文字加下划线。按理说,像这种和语义没有关系的,在HTML5中应该是被废弃了。不明白,于是查了一下,在 W3C 看到了这么一段话:

The u element represents a span of text with an unarticulated, though explicitly rendered, non-textual annotation, such as labeling the text as being a proper name in Chinese text (a Chinese proper name mark), or labeling the text as being misspelt.

其中的“Chinese proper name mark”就是“专名号”。

它和下划线很像(这也许也是HTML5还沿用“u”的原因吧),所以浏览器们就直接用下划线代替了。但是如果遇到一些特殊情况,比如像前面链接中提到的那样:两个专有名词连在了一块儿(“巴斯普莱奥里酒店”),问题就出现了,下划线让人分不清那是几个专有名词了。

怎么办?

首先想到的就是两个词中间加一个空格,但这样做的话虽然样子像了,可是它把文档中的数据改变了——多了个空格。(可能有点吹毛求疵了)

不管怎么说,这毕竟仅仅是样子的问题,和内容没有关系,还得考虑用CSS:

u::before{content:" "}
<!--在前面加一个空格-->

还是不行,空格下面也加上下划线了,下划线还是连在了一块儿。

虽然很不喜欢下面的这种方法,但现在看来只能用它了:

u{margin:auto 1px}
<!--左右各加一个像素的边-->

为什么这么麻烦呢?

也许是因为人们不怎么用它吧,连Unicode中都没有收录。不过,话又说回来了,即便Unicode收录了,具体处理起来也很麻烦。很有可能还真是没有办法,毕竟像中文这样在词和词之间没有明确的分隔符的语言,你如何标记一个词的开始和结束呢?如果不知道开始或结束的位置,那怎么知道这条线该从哪儿断开呢?

对,也许就是因为这,它才没有在Unicode中作为一个组合字符(Combining character)出现吧。