我想要一些小字体看起来没有平滑。是否可以使用 HTML/CSS 禁用字体平滑?
问问题
36733 次
4 回答
22
是的,这是可能的,但并非适用于所有浏览器。
font-smooth: auto | never | always | <absolute-size> | length | initial | inherit
-webkit-font-smoothing : none | subpixel-antialiased | antialiased
对于您的情况:
font-smooth: never;
-webkit-font-smoothing : none;
UPD(for Chrome): 在 Windows 上的 Chrome 中强制字体平滑
于 2012-05-10T16:44:34.563 回答
5
是的,虽然我不能说哪些浏览器会注意到你!
你可以写
<p style="font-smooth:never;">
得到你想要的效果。
编辑
我确定我几个月前就用过这个,但我在 Mozilla 网络上阅读过
虽然出现在 CSS3 字体的早期(2002 年)草案中,但 font-smooth 已从本规范中删除,目前不在标准轨道上。
对不起!
于 2012-05-10T16:41:45.443 回答
3
尝试font-smooth: never;
http://webdesign.about.com/od/styleproperties/p/blspfontsmooth.htm
于 2012-05-10T16:41:07.910 回答
0
我也在找这个。我最终在另一个 stackoverflow 线程(如何为 SVG 文本中获取“crispEdges”?)上找到了一个解决方案来禁用 SVG 的文本平滑(禁用抗锯齿),但这个解决方案也适用于常规 HTML 元素。
诀窍是使用 SVG 过滤器,然后您可以将其添加到任何 HTML 元素中以使任何内容变得清晰。
- 首先我们需要定义过滤器,这样我们就可以在 CSS 中使用它。
<svg class="offscreen" width="0" height="0" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="crispify">
<feComponentTransfer>
<feFuncA type="discrete" tableValues="0 1"/>
</feComponentTransfer>
</filter>
</defs>
</svg>
- 将过滤器添加到仅包含文本的 HTML 元素。如果它有背景颜色或其他东西,它就不起作用。
p {
filter: url(#crispify);
}
- 额外的东西:你可能想要隐藏 SVG 元素,所以将它添加到 CSS 中。
.offscreen {
position: absolute;
left: -100000px;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
}
- 另一件事:如果白色看起来很奇怪,请将颜色更改为黑色并使用另一个过滤器将其反转,因此您的代码如下所示:
p {
filter: url(#crispify) invert(1);
}
- 请注意,这对于设计为清晰的字体(如像素字体)来说是最好的。我也不知道这是否适用于所有浏览器,但它确实适用于 Chrome、Edge 和 Firefox。
于 2021-03-16T14:23:45.130 回答