(软连字符)和Chrome和Safari

时间:2012-08-09 17:15:00

标签: html css google-chrome web soft-hyphen

我有一个网站,我更喜欢使用& shy; (软连字符)以我想要的方式打破单词。

Click here for screenshot from Chrome

问题计算机运行OS X(多个版本),Chrome和Safari(多个版本)都会出现问题。具有完全相同的操作系统和浏览器版本的计屏幕截图是在OS 10.8上拍摄的,Chrome v.21.0.1180.75。

看起来像软连字符有效,因为它将单词分开,并插入连字符“ - ”,但它也会生成带有十字的矩形。

该网站使用@fontface,如果它与它有任何关系。

谢谢!

3 个答案:

答案 0 :(得分:2)

特别是考虑到你的fonttest website,问题似乎是由两个因素引起的:OS X上的一些WebKit浏览器是一个错误,它使得它们在文本行中使用字形呈现一个软连字符,而不是仅将其视为控制角色;并且StagSansWeb字体要么没有字形(使浏览器使用虚拟字形),要么具有奇怪的字形。如果这些浏览器另外将软连字符视为允许连字符,则可以解释症状,前提是Helvetica具有用于软连字符的空字形。

这是高度推测性或推测性的。

在更加坚实的基础上,标识中没有严格定义连字符文本的呈现。如果浏览器在foo­bar上应用连字符,则应该在一行结尾处呈现“foo”后跟连字符,但标准不会说明哪个连字符。如果它有一个字形,它可能是HYPHEN-MINUS(即Ascii连字符),或HYPHEN,甚至是SOFT HYPHEN。甚至可能是别的东西。它甚至可能依赖于语言,因为有些语言有自己的连字符。

因此可以理解的是,WebKit浏览器已经开始支持专有属性-webkit-hyphenate-character。但是,它似乎没有得到适当的实施。在Windows 7上的Chrome和Safari上测试-webkit-hyphenate-character: "\00AD",我注意到他们“连字”单词(包含软连字符)而不添加任何连字符(就像他们使用空字形一样),即使该属性的其他值工作正常。

总而言之,我希望您可以通过避免像StagSansWeb这样的字体来避免这个问题。通过修改字体可以解决问题。

答案 1 :(得分:1)

我在webkit / mac上遇到了同样的问题。创建该字体的代工厂帮助了我,并提供了有效的解决方案(添加Arial)

font-family:"Apercu Light", Arial, Calibri, sans-serif; 

而不是

font-family:"Apercu Light", Calibri, sans-serif; 

这是一个临时解决方案,直到更新字体文件。我认为对于这种特殊情况,Arial在webkit / mac上比helvetica有更好的支持。

答案 2 :(得分:1)

我已经soft hyphen bug in Webkit详细调查了这个问题。简而言之,问题似乎是Helvetica Light(和其他一些字体,如Avenir)中的错误和Webkit中的字体堆栈错误的组合。您可以通过在字体堆栈中包含Arial来修复它,例如

font-family:" Apercu Light",Arial,sans-serif;