自从我们对使用系统UI字体感到比较兴趣与关注之后,它们不需要网络字体传送服务或存储在服务器上的字体文件。
我们如何在网站上使用系统UI字体?
目前,有两种方法可以让你的网站使用系统UI字体进行排版。
方法A是使用简写CSS属性:font: menu。
有许多CSS字体属性已经开发时间最长(caption,icon,menu,message-box,small-caption,status-bar),但从来没有见过它们被普遍使用在项目中。
方法A有其缺点:
它不会在iOS上返回正确的字体,也不会在许多Android浏览器中返回。
它是一种速记,这意味着它会覆盖字体大小,它不能与之结合,也不会重新出现。
方法B是按名称列出字体:
当然B方法有它的缺点:
你必须维护列表(及其顺序)。
该列表面向最流行的浏览器和操作系统,但并不针对所有这些浏览器和操作系统。
它在Mac OS X El Capitan的Firefox中不起作用,导致Neue Helvetica被展示。
此解决方案容易出现命名冲突,这导致了一个非常有趣的错误,系统字体在Medium上。另外,例如,Oxygen(KDE的UI字体)是人们可以安装的另一种字体的名称,这可能会导致意外。此外,如果你是开发人员并且碰巧在你的计算机上安装了Roboto或Fira Sans,则此字体声明可能会使用其中一个而不是系统的实际UI字体。
Mac OS 10.0到10.9使用Lucida Grande作为系统UI字体。Mac OS 10.10使用Neue Helvetica。但是,所有版本的Mac OS X都安装了这两种字体。因为font-family
声明通过顺序浏览字体列表来找到第一个安装,在某些平台上选择Lucida Grande而在其他平台上选择Neue Helvetica是不可能的,将始终选择声明中列出的第一个可用的。
你可能倾向于将方法A与方法B结合起来,以获得两全其美。不幸的是,这并不容易,因font和font-family属性是互斥的,即一个将覆盖另一个。
你可能还想象从服务器发送不同的CSS值,具体取决于用户代理(例如,只有font-family: “Fira Sans”, sans-serif;
当我们知道浏览器在Firefox OS上运行时才发送),或者通过JavaScript执行,但这似乎很麻烦且难以维护,但它仍然无法解决我们所有的问题。
目前我们使用方法B:
我们选择这种方法是因为它似乎有较少的问题,更符合多数实战开发中。
此外,如果要根据网站使用的UI字体调整填充或行高,则必须使用上面的混合方法。
领取专属 10元无门槛券
私享最新 技术干货