是否可以在CSS中禁用字体平滑?

时间:2012-05-10 16:38:19

标签: html css fonts stylesheet font-smoothing

我想要一些小字体看起来没有平滑。是否可以使用HTML / CSS禁用字体平滑?

4 个答案:

答案 0 :(得分:18)

是的,这是可能的,但不适用于所有浏览器。

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(适用于Chrome)Force Font Smoothing in Chrome on Windows

答案 1 :(得分:4)

是的,虽然我不能说哪些浏览器会引起你的注意!

你可以写

<p style="font-smooth:never;">

获得你想要的效果。


修改

我确信几个月前我已经使用过这个,但我在Mozilla网络上阅读

  

尽管出现在CSS3字体的早期(2002年)草稿中,但字体平滑有   已从此规范中删除,目前尚未发布   标准轨道。

抱歉!

答案 2 :(得分:2)

答案 3 :(得分:0)

我也在找这个。我最终在另一个 stackoverflow 线程 (How to get "crispEdges" for SVG text?) 上找到了一个解决方案来禁用 SVG 的文本平滑(禁用抗锯齿),但该解决方案也适用于常规 HTML 元素。

诀窍是使用 SVG 过滤器,然后您可以将其添加到任何 HTML 元素中,使任何东西都变得酥脆。

  1. 首先,我们需要定义过滤器,以便我们可以在 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>
  1. 将过滤器添加到仅包含文本的 HTML 元素。如果它有背景颜色或其他东西,它就不起作用。
p {
    filter: url(#crispify);
}
  1. 额外的东西:您可能想要隐藏 SVG 元素,因此将其添加到 CSS 中。
.offscreen {
    position: absolute;
    left: -100000px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden;
}
  1. 另一件事:如果白色看起来很奇怪,请将颜色更改为黑色并使用另一个过滤器将其反转,因此您的代码如下所示:
p {
  filter: url(#crispify) invert(1);
}
  1. 请注意,这对于设计为清晰的字体(例如像素字体)来说将是最佳选择。我也不知道这是否适用于所有浏览器,但它适用于 Chrome、Edge 和 Firefox。