CanvasRenderingContext2D: textRendering 属性

CanvasRenderingContext2D.textRenderingCanvas API 的一个属性,它向渲染引擎提供关于在渲染文本时应优化哪些方面的信息。

这些值与 SVG text-rendering 属性(以及 CSS text-rendering 属性)相对应。

向浏览器引擎提供文本渲染提示。以下列出了一些值:

auto

浏览器会根据情况智能地判断在绘制文本时应该优先优化速度、清晰度还是几何精度。

optimizeSpeed

浏览器在绘制文本时会优先优化渲染速度,而不是清晰度和几何精度。它会禁用字距调整和连字。

optimizeLegibility

浏览器在绘制文本时会优先优化清晰度,而不是渲染速度和几何精度。它会启用字距调整和可选连字。

geometricPrecision

浏览器在绘制文本时会优先优化几何精度,而不是渲染速度和清晰度。字体的某些方面(如字距调整)不会线性缩放。对于较大的缩放系数,你可能会看到文本渲染效果不太理想,但尺寸会如你预期的那样(不会四舍五入到最接近的操作系统支持的字体大小)。

此属性可以用于获取或设置值。

示例

在本示例中,我们使用 textRendering 属性支持的每个值来显示文本“Hello World”。每个情况下的值也会通过读取属性来显示。

HTML

html
<canvas id="canvas" width="700" height="220"></canvas>

JavaScript

js
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
ctx.font = "20px serif";

// Default (auto)
ctx.fillText(`Hello world (default: ${ctx.textRendering})`, 5, 20);

// Text rendering: optimizeSpeed
ctx.textRendering = "optimizeSpeed";
ctx.fillText(`Hello world (${ctx.textRendering})`, 5, 50);

// Text rendering: optimizeLegibility
ctx.textRendering = "optimizeLegibility";
ctx.fillText(`Hello world (${ctx.textRendering})`, 5, 80);

// Text rendering: geometricPrecision
ctx.textRendering = "geometricPrecision";
ctx.fillText(`Hello world (${ctx.textRendering})`, 5, 110);

结果

规范

规范
HTML 标准
# dom-context-2d-textrendering

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。