如何使画布中的字体平滑,就像使用-webkit字体平滑:CSS中的抗锯齿一样?
我正在构建一个横幅生成工具来自动化我们的工作流程。但我在呈现字体时发现了一个问题(稍后我将添加一些屏幕截图) 如果我们使用完全相同的字体和字体大小,而我使用的是mac,所以它是视网膜屏幕:如何使画布中的字体平滑,就像使用-webkit字体平滑:CSS中的抗锯齿一样?,css,canvas,fonts,text-rendering,font-smoothing,Css,Canvas,Fonts,Text Rendering,Font Smoothing,我正在构建一个横幅生成工具来自动化我们的工作流程。但我在呈现字体时发现了一个问题(稍后我将添加一些屏幕截图) 如果我们使用完全相同的字体和字体大小,而我使用的是mac,所以它是视网膜屏幕: 如果我看一下设计应用程序中的文本(无论它是用Photoshop、Sketch还是基于webgl的设计工具Figma制作的),它看起来非常清晰(平滑),这是理想的 如果我使用html/css呈现字体,那么字体看起来比设计应用程序中的字体厚得多。它使我的文本看起来更繁忙,因为汉字本身在视觉上比英文字符复杂但是如果
是否有任何方法可以使画布文本呈现结果与-webkit字体平滑:html/css中的抗锯齿???相同?虽然我可以想到一些原因,但您应该能够回答的第一个问题是“如果需要绘制文本,为什么要使用画布元素?”-例如,为什么您不能将该文本绘制为
或
,放置在画布上的适当位置,并使用剪切父级确保溢出被隐藏?嘿,Pomax,感谢您的评论,让我解释一下。所以我正在创建一个横幅生成工具。所以,像文字、遮罩、形状、圆弧、背景和渐变这样的东西肯定会成为横幅的一部分。由于它是一种工具,我们不能预先假设设计师总是将文本置于一切之上,这就是为什么我决定将文本设置为画布的一部分,而不是html元素覆盖。是的,这是公平的。由于画布渲染东西的方式不同(它不能依赖于本机dpi的操作系统级渲染,它必须将东西“绘制”到(亚)像素网格上),因此两个系统之间的渲染效果不可能完全相同,因此我建议先使用像素偏移:整数画布坐标位于屏幕像素之间,所以试着用(0.5,0.5)来抵消你的值,看看这是否有帮助。