CSS秘密花园: 连体字母_html/css_WEB-ITnose
和人一样,不是所有的字形放在一起的时候都可以显得很自然。例如,对于大多数衬线字体的 f 和 i 而言。字母 i 上边的小点经常和 f 中的横线重叠,使得它们的组合看起来非常笨拙。
为了解决这个问题,类型设计师经常会在他们的字体中添加额外的字符,称为连字符。这些都是单独设计的字形的二联体或三联体,用于排版方案中当对应的字符彼此相邻时。例如,如上图中的一些常见的连体字母,它们看起来比之前对应字符单独放在一起的时候好了很多。
还有一些所谓的*连体字“discretionary ligatures”:
事实上,对于不起眼的 & 符号,我们都知道并且喜欢把它作为字母 e 和字母 t 的连写(“et”在拉丁文中表示“and”)。
它被设计成一个另类的风格,而不是因为它们的等价字符对相邻时出了问题。
但是,浏览器从来不会默认使用*连体字(尽管这是正确的),并往往不会使用常见的连字体(这是一个bug)。事实上,直到最近,显式使用任何连写字的唯一方法就是使用它的等效Unicode字符——如, fi 表示 fi 连写。这种方法比解决问题带来了更大的麻烦:
- 很明显,它使得这些标签很难被阅读,也很难编写(能知道 define 是什么意思纯属运气)。
- 如果当前字体不包含这个连写字符,结果将是乱七八糟的(如下图所示)。
- 不是每个连写字都有一个等同的、标准的Unicode字符。例如, ct 连写字不对应任何的Unicode字符,所有包括它的字体都需要把它放置在Unicode PUA(私人使用区域)块中。
- 它会打破文本的可访问性,如复制/粘贴,搜索,和语音转换。很多应用都可以非常智能地处理这些,都不是所有都可以。它甚至可以打破一些浏览器的搜索。
所以,在这种时候,总需要一个更好的方法,对吧?
解决方案
在 CSS3 的中, font-variant 可以被转换成 shorthand ,包含了很多新的 longhand 属性。其中之一是 font-variant-ligatures ,特别为连写的开启和关闭而设计的。要打开所有可能的连写字,你需要使用三个标识符:
font-variant-ligatures: common-ligatures discretionary-ligatures historical-ligatures;
该属性是可继承的。你可能会发现*连体字“discretionary ligatures”妨碍可读性,想要把它们关掉。在这种情况下,你可能希望只打开常用的连写字:
font-variant-ligatures: common-ligatures;
你甚至可以明确地把其它两种连写字关闭:
font-variant-ligatures: common-ligatures no-discretionary-ligatures no-historical-ligatures;
font-variant-ligatures 还接受 none 值,就是完全把连写字关闭。不要使用 none 值,除非你知道自己设置的是什么。要把 font-variant-ligatures 重置为初始值,你需要使用 normal ,而不是 none 。
推荐阅读
-
CSS秘密花园: 连体字母_html/css_WEB-ITnose
-
如何让字符串(数字和字母)这样竖着显示_html/css_WEB-ITnose
-
CSS秘密花园: 交互式图像对比_html/css_WEB-ITnose
-
css实现将英文语句第一个单词首字母大写_html/css_WEB-ITnose
-
解决浏览器显示长数字不能自动换行或长字母不能换行的问题_html/css_WEB-ITnose
-
CSS秘密花园: 垂直居中_html/css_WEB-ITnose
-
CSS秘密花园: 垂直居中_html/css_WEB-ITnose
-
CSS秘密花园: 灵活的过渡_html/css_WEB-ITnose
-
如何让没有空格连续字母换行_html/css_WEB-ITnose
-
CSS秘密花园: Sticky footers_html/css_WEB-ITnose