CSS 文本渲染属性text-rendering的介绍和使用示例

CSS关于文本渲染的属性text-rendering告诉渲染引擎工作时如何优化显示文本,属性text-rendering正是一个SVG属性,目前尚没有任何的CSS标准对其进行定义,本文附有示例,感兴趣的朋友可以参考下

 

摘要:

CSS关于文本渲染的属性text-rendering告诉渲染引擎工作时如何优化显示文本。 浏览器会在渲染速度、易读性(清晰度)和几何精度方面做一个权衡。

我 们知道,SVG-可缩放矢量图形(Scalable Vector Graphics)是由W3C制定的, 基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。SVG严格遵从 XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率 无关的矢量图形格式。IE 9、Firefox、Opera、Chrome 以及 Safari 支持内联 SVG。IE 8或更早版本,可通过安装Adobe SVG Viewer以支持SVG。

而属性text-rendering正是一个SVG属性,目前尚没有任何的CSS标准对其进行定 义。

不过Gecko(for Firefox)和WebKit核心的浏览器已经允许你在 Windows/Mac/Linux系统的HTML/XML内容中应用该属性。

对 于某些小于20px的字体来说,当你把该属性设为optimizeLegibility时,包含 诸如ff、fl、fi这种连字的文本会产生一个非常明显的效果,比如Microsoft's Calibri, Candara, Constantia, Corbel和DejaVu类字体。如果你对连字不太理 解,可以参考维基百科的解释 http://en.wikipedia.org/wiki/Typographic_ligature

默认值:auto
适用于:文本元素
继承性:yes
媒介类型(Media Types):可视型(公认的媒介类型包括哪些?参见W3C文档 http://www.w3.org/TR/CSS2/media.html)

语法:

格式:text-rendering: auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit

值:

auto:
当绘制文本时,浏览器会进行智能识别,何时应该从速度、清晰度和几何精度方 面进行优化。关于各浏览器对该属性解释的差别,参见下面的兼容性表格。

optimizeSpeed:
当绘制文本时,浏览器会着重渲染速度,而不是清晰度和几何精度。该属性值不 能用于字距调整和连字。Gecko默认开启该属性,Firefox 是默认20px以下开启该属性。

optimizeLegibility:
当绘制文本时,浏览器会侧重文本的可读性(清晰度),而不是渲染速度和几何 精度。该属性值可以用于字距调整和连字。
使 用CSS 3的@font-face来渲染文字的情况越来越多,易读性开始被关注和重视。尤其是小号的文字。由于目前还没有CSS属性控制显示在线字体的微妙细 节,Safari 5,Chrome和Webkit系列浏览器支持text-rendering启用kerning 和 ligatures。
Gecko 和WebKit 浏览器处理这个属性的方式很不一样。前者默认启用这个特性, 而后者,你需要将其设置为optimizeLegibility。Firefox默认20px以上字体文本会开启该属性。
geometricPrecision:
当绘制文本时,浏览器会着重几何精度,而不是清晰度和渲染速度。字体的某些 方面,比如字间距并不是按照线性比例进行渲染的,因此该属性可以使得设置为 这些字体的文本看起来很整洁。

在 SVG中,当文本被放大或缩小,浏览器会计算文本的最终尺寸(即指定字体大小 和应用比例),然后按照计算出来的尺寸,从系统的字体库中请求一种合适的字 体。但是,如果你要求的字体大小,比如9px字号的140%的比例,产生的字号12.6 在字体库中并不存在,所以此时浏览器会将字号舍为12px。这导致了文本的阶梯 缩放。

不过,当渲染引擎完全支持几何精度属性时,你可以利用几何精度属性流畅地缩 放文本。对于比较大的缩放因子,你可能看不到特别完美的渲染效果,但显示字 号将会是你所期待的大小,既不会向上也不向下四舍五入Windows/Linux支持的字 号大小。

如果定义为geometricPrecision,Webkit精确应用定义的属性值,Gecko则将 geometricPrecision解释为optimizeLegibility,其表现与设置为 optimizeLegibility的表现是一样的.

实例

/* 对body应用optimizeLegibility保证整个html文档的易读性,但可能出现文字连写的效果,对元素应用class='foo'可以避免出现文字连写现象 */

复制代码
代码如下:

body { text-rendering: optimizeLegibility; }
.foo { text-rendering: optimizeSpeed; }

 

Gecko核心浏览器注意事项:

属 性值设为auto时有个20px的渲染阈值,这个阈值可以通过更改偏好设置 browser.display.auto_quality_min_font_size这一项。(对于Firefox,首先在浏览器键入 about:config回车即可进入,更多更改配置选项的方法参见这里http://kb.mozillazine.org /Editing_configuration),如果你想了解更多有关mozilla preference- browser.display.auto_quality_min_font_size的介绍可以查看官方文档 http://kb.mozillazine.org/Browser.display.auto_quality_min_font_size。

optimizeSpeed 选项在Gecko2.0(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)上无效。因为文本渲染的标准代码已经足够快,没有比它更快的代码路径。这是一个bug。参见bug 595688 .https://bugzilla.mozilla.org/show_bug.cgi?id=595688

浏览器兼容表:

 

存在的问题:

混 合使用optimizeLegibility和font-variant: small-caps会导致small-caps渲染失败。最糟糕的情况是文本不显示在Web页面上,在低配置的移动设备上可能导致页面无法正常加载。 (问题bug原文http://code.google.com/p/chromium/issues/detail?id=51973)
对Safari 5,使用ex作为 margin, padding, border-width ,outline-width的度量单位,同时使用optimizeLegibility会导致浏览器崩溃。不过本人测试Safari 5.1.7(7534.57.2)中文版貌似已经修复了崩溃的问题。(测试页面地址http://quorning.net /safari_crash.htm)

时间: 2024-10-27 05:57:05

CSS 文本渲染属性text-rendering的介绍和使用示例的相关文章

css3文本阴影属性text

css3文本阴影属性text-shadow的几点说明: css2的时候已经有了text-shadow这个属性,但是css2.1的又删除了这个属性,css3又重新使用了这个属性: text-shadow:阴影水平偏移值(可取正负值): 阴影垂直偏移值(可取正负值):阴影模糊值:阴影颜色 Firefox,webkit内核的Safari和Chrome,Opera支持Text Shadow(文本阴影):text-shadow:2px 2px 5px #333333 一个文本可以使用多个文本阴影 IE不支

CSS 3 transform 属性的 BUG分析介绍

最近在弄一个功能,需要通过弹窗来显示内容,取舍并尝试之后选择利用 CSS 3 transform 属性的 translate() 参数来实现弹窗的居中定位.   鼓捣了半天,测试 Chrome 完全正常,Edge 也正常,恩,到这里我觉得自己已经看到结局了,万万没想到,打开 IE 11 之后直接气的吐血!设置的 transform 属性竟然完全无效,说好的 IE 9 及以上就可以兼容的呢?怎么和想象中的不一样呀!   之前尝试各种让元素水平加垂直居中的方法,都各种因为什么表格嵌套啊,兼容性啊,适

巧用CSS动态控制文本的属性

css|动态|控制 用CSS可以很方便地动态改变文本的属性,从而可制作出动态地使文字变大.缩小.改变文字颜色.改变文本的背景.字间距.行间距等等网页特效,一切都在你的掌握之中.是不是有点玄?事实就是如此.那一定很复杂吧?不!看完本文,你就会明白,原来这么简单. 原理:利用CSS的属性值可动态改变的特点. 思路:定义文本的多种属性值,再用一个事件来触发,一旦事件发生,则改变文本属性值,从而达到预期目的.请看下面的示例: 一.动态改变文字大小 这个例子的效果是:一段文本,当鼠标在这段文本上,文字变大

CSS文本如何折行介绍

white-space:属性设置如何处理元素内的空白(空格.换行和tab字符)的处理. normal 默认.空白会被浏览器忽略. pre 空白会被浏览器保留.其行为方式类似 HTML 中的 标签.   nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 标签为止. pre-wrap 保留空白符序列,但是正常地进行换行. pre-line 合并空白符序列,但是保留换行符. inherit 规定应该从父元素继承 white-space 属性的值. word-wrap:设置或检索当当前行超过

巧用CSS的Border属性

css 制作过网页的人都有为画线而烦恼的经历,本文介绍的小技巧也许对你有所帮助.我们先来认识一下"Border"(画边框),它是CSS的一个属性,用它可以给能确定范围的HTML标记(如TD.DIV等等)画边框,它可以定义边框线的类型.宽度和颜色,利用这个特性,可以制作一些特殊效果.下面将通过实例来说明其应用技巧. 1.给文本加边框 上面的示例中,给一段文字加了不同的边框,只是为了说明边框线的颜色.粗细是可变的.第一个边框的CSS代码是:style="border:thin s

纯CSS文本阴影效果实现

css CSS2中的text-shadow属性能够很容易的给web页面中的文本添加阴影,但是到目前为止只有OS X的Safari浏览器支持它,今天,我们将为其他浏览器创建CSS文本阴影效果,包括Firefox. 讨论了多年的text-shadow属性可以让你控制页面元素阴影的颜色.偏移量及模糊度,尽管其还未被广泛支持,但是某些设计师已经开始决定在任意地方使用CSS text-shadows属性了.尽管这只是为很少数量的用户增强性设计. CSS Text-Shadows Safari实现 如果你使

OpenCascade Chinese Text Rendering

OpenCascade Chinese Text Rendering eryar@163.com Abstract. OpenCascade uses advanced text rendering powered by FTGL library. The FreeType provides vector text rendering, as a result the text can be rotated and zoomed without quality loss. FreeType al

[译] 使用 CSS 的 font-size-adjust 属性改善网页排版

本文讲的是[译] 使用 CSS 的 font-size-adjust 属性改善网页排版, 原文地址:Improve Web Typography with CSS Font Size Adjust 原文作者:Panayotis Matsinopoulos 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:lampui 校对者:sun.Yuuoniy CSS 中的 font-size-adjust 属性允许开发者基于小写字母的高度指定 font-size 

CSS滤镜:Gray属性

css|滤镜 Gray属性把一张图片变成灰度图.它的表达式很简单: Filter:Gray 其实这个属性没什么好讲的,只需在您定义的IMG样式中加入一句代码: {Filter:Gray}就一切OK了. 下面两幅图分别代表未加Gray属性和添加了Gray属性的效果: 这是原图,点击可放大 转成gray属性后的效果图 本节讲述的内容比较简单,下一节将向您介绍Invert转化属性.