標籤:

CSS 能實現既優先使用英文字體又對彎引號特別處理嗎?

今天看了直角引號和彎引號的討論,我覺得可能很多知友並不知道中英文的彎引號是同一個碼以至於必須依靠字體來區分形態,而中英文混排時通常會讓英文字體優先否則英文部分使用了中文字體會非常難看,正是這樣才會出現彎引號的形態問題。

雖然將彎引號全處理成中文字體會在某些地方造成排版錯誤。但相比之下,提問者希望在問題標題中使用英文形態的彎引號的情況應該非常罕見。如果這種特別處理是可以實現的,不妨一試。這樣彎引號就不會太難看。如果這在技術上是不能實現的,那就不能像一些知友說的那樣把這歸結為知乎自己的設計缺陷。


`@font-face` 有相關屬性 `unicode-range`,可用類似這樣的一段 CSS 來指定以中文字體顯示彎引號(這是 CSS3 特性,支持還不廣泛,但對於這種非關鍵樣式來說夠用了):

@font-face {

font-family: "Chinese Quotes";

src: local("Some Chinese Font");

unicode-range: U+2018-2019, U+201C-201D;

}

body { font-family: "Chinese Quotes", "Some Latin Font", "Some Chinese Font", generic-family; }

同理,這一招也可以用於破折號、間隔號等和西文標點共享碼位的中文標點。

但問題在於,這樣把彎引號統一交給中文字體顯示,會讓西文中的彎引號很麻煩(尤其是「it』s」這樣的詞中撇號),情況類似 InDesign 的「複合字體」特性。理論上那個 `body` 選擇器應該是 `:lang(zh)` 才好。

詳見這篇文章:

Creating Custom Font Stacks with Unicode-Range

http://24ways.org/2011/unicode-range

* * *

我覺得在知乎沒有必要特地把彎引號顯示為一字寬。

另外,看到 @王成 的答案我才想起來知乎已經用過這技術了:http://www.zhihu.com/question/20525863


能。見這個答案:http://www.zhihu.com/question/20596050/answer/15590196


拋磚。

我可以想到的一種做法是,設計一種字型檔內只有標點符號的字體,然後使用 Web Font 技術載入之(因為只有標點符號所以體積會比較小),並在 font-family 中將其置於最前。


推薦閱讀:

遊戲出現在文中,是否要加書名號?比如:他在玩《憤怒的小鳥》。
關於日語的標點符號,你需要知道這些
別逗了,難道逗號我都不會用嗎?
日語中引號(「」)的作用與中文中的有不同嗎?
課程名稱,應該加什麼符號?

TAG:CSS | 標點符號 |