CanvasRenderingContext2D: textRendering 属性

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

CanvasRenderingContext2D.textRendering 属性是 Canvas 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

浏览器兼容性