css – @ font-face svg在Chrome中无法正常工作?

前端之家收集整理的这篇文章主要介绍了css – @ font-face svg在Chrome中无法正常工作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个特定字体的问题和在Chrome中呈现的方式。

Firefox由于使用ttf而正确显示字体。

Chrome不使用抗锯齿,字体太“尖锐”而且丑陋。

这是我使用的css声明

@font-face {
    font-family: 'HelveticaNeueLT Std Thin';
    src: url(../fonts/h2.eot);
    src: url(../fonts/h2.svg#test) format('svg'),url(../fonts/h2.woff) format('woff'),url(../fonts/h2.ttf) format('truetype');
font-weight: normal;
font-style: normal;
}

我得出结论,问题是与svg声明/字体文件
如果我根本不使用哈希标签,并将其保留为只有.svg,那么它会渲染抗锯齿,但在不同的线高度上,稍微偏离定位。如果我添加.svg#任何东西,它根本不反对它,看起来很丑陋。

欢迎任何建议帮助我解决这个令人讨厌的问题。

PS:Windows抗锯齿是好的,我测试了这个。我还尝试了只有svg字体的@media屏幕和(-webkit-min-device-pixel-ratio:0)声明,没有成功。
我意识到这可能是一个转贴,但已经尝试了相关问题的所有解决方案,我有点绝望。

解决方法

要在Windows上的Chrome中使网页字体呈现良好的抗锯齿,您需要在字体声明中使用此格式:
@font-face {
    font-family: 'Futura';
    src: url('futura.eot');
    src: url('futura.eot?#iefix') format('embedded-opentype'),url('futura.woff') format('woff'),url('futura.ttf') format('truetype'),url('futura.svg#futura') format('svg');

    font-weight: normal;
    font-style: normal;
}

@media screen and (-webkit-min-device-pixel-ratio:0) {
    @font-face {
        font-family: 'Futura';
        src: url('futura.svg#futura') format('svg');
    }
}

基本上,您需要强制Chrome使用SVG字体格式。您可以通过将.svg版本的网址移动到顶部来执行此操作,但是,Windows上的Chrome在执行此操作时会遇到问题(包括版本30)。通过使用媒体查询覆盖字体声明,解决了这些问题。

另外:有时基线位置与OpenType字体和SVG字体不匹配,但您可以通过简单地编辑SVG字体文件进行调整。 SVG字体是基于xml的,如果你看这个声明

<font-face units-per-em="2048" ascent="1900" descent="-510" />

您可以更改上升的值,并将其与其他字体格式版本相匹配。

猜你在找的CSS相关文章