瞎扯淡 这些中划线让我很困惑

Peter · 2013年11月14日 · 最后由 Peter 回复于 2013年11月15日 · 2903 次阅读

好歹我也是个做网站的,最近发现一个网站问题让我很困惑: 打开网页: http://www.duden.de/rechtschreibung/hallo

  1. 选中那个大大的 hal­lo,
  2. 然后 ctrl + c 复制
  3. 再找一个输入框,上面那个 Suchen 旁边的 input 框就可以,ctrl + v 粘贴,
  4. 你看到的是 hallo

  5. 再到任意一个文本编译器 ctrl + v 粘贴,notepad.exe 就行,不能是富文本的,Word 就不行,

  6. 你看到的是 hal-lo

那个特殊中划线用 hex 查看是两字节:C2AD 普通的中划线用 hex 查看是一个字节:2D

这是怎么做到的,这个字符为什么在 input 和 textarea 里面就看不到呢?

soft hyphen (U+00AD), 如果要换行就会从那换,效果同 <wbr> 或者 &#xad;

是否显示要看对应程序是怎么实现文字渲染的...

#1 楼 @luikore 用你的关键字找到这个: http://www.fileformat.info/info/unicode/char/00ad/index.htm

如果我也想把数据库中的 hallo 加上这个字符输出为 hal-lo,你有什么建议吗? 如果直接使用 &#173;,查看源代码会看到 &#173;,除非直接复制这个符号使用。

#2 楼 @Peter 找个拆音素 (phoneme segmentation) 的算法?

#2 楼 @Peter 哦,明白你的意思了... 解决办法是... 换个会显示的浏览器?(好像大部分浏览器都不显示它...)

http://www.w3.org/TR/html401/struct/text.html#h-9.3.3

标准规定是平时不显示,在那个地方换行了才显示

你把那个页面的 span 调成 display: block; width: 58px 就能见到它了...

#4 楼 @luikore 谢谢回复,我的意思是,如果我自己做一个程序,想把输出的信息中加入这些看不见的中划线,应该怎么做呢?加入&#173;是不行了,可能就只能复制这个符号使用了。

先找个包含音节拆分的词典拆分?按规则拆分的话,每种语言规则不一样,挺复杂的... tex 排版引擎有对英语的实现。然后就 join ...

["hal", "lo"].join "\u00AD"

可以看看 https://code.google.com/p/hyphenator/

需要 登录 后方可回复, 如果你还没有账号请 注册新账号