Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使画布中的字体平滑,就像使用-webkit字体平滑:CSS中的抗锯齿一样?_Css_Canvas_Fonts_Text Rendering_Font Smoothing - Fatal编程技术网

如何使画布中的字体平滑,就像使用-webkit字体平滑:CSS中的抗锯齿一样?

如何使画布中的字体平滑,就像使用-webkit字体平滑:CSS中的抗锯齿一样?,css,canvas,fonts,text-rendering,font-smoothing,Css,Canvas,Fonts,Text Rendering,Font Smoothing,我正在构建一个横幅生成工具来自动化我们的工作流程。但我在呈现字体时发现了一个问题(稍后我将添加一些屏幕截图) 如果我们使用完全相同的字体和字体大小,而我使用的是mac,所以它是视网膜屏幕: 如果我看一下设计应用程序中的文本(无论它是用Photoshop、Sketch还是基于webgl的设计工具Figma制作的),它看起来非常清晰(平滑),这是理想的 如果我使用html/css呈现字体,那么字体看起来比设计应用程序中的字体厚得多。它使我的文本看起来更繁忙,因为汉字本身在视觉上比英文字符复杂但是如果

我正在构建一个横幅生成工具来自动化我们的工作流程。但我在呈现字体时发现了一个问题(稍后我将添加一些屏幕截图)

如果我们使用完全相同的字体和字体大小,而我使用的是mac,所以它是视网膜屏幕:

  • 如果我看一下设计应用程序中的文本(无论它是用Photoshop、Sketch还是基于webgl的设计工具Figma制作的),它看起来非常清晰(平滑),这是理想的

  • 如果我使用html/css呈现字体,那么字体看起来比设计应用程序中的字体厚得多。它使我的文本看起来更繁忙,因为汉字本身在视觉上比英文字符复杂但是如果我使用-webkit字体平滑:抗锯齿,那么文本的呈现几乎与设计应用程序相同,也非常好

  • 然而,我的工具必须使用canvas,因为html/css不支持设计应用程序的某些效果,然后我发现,canvas中的文本呈现似乎也很厚。而且,我还没有找到像-webkit字体平滑:抗锯齿这样的方法来完全修复它。我唯一能做的改进就是将画布缩放到3倍甚至4倍我确实发现,当画布缩放到4倍大时,字体会变薄,但它离-webkit字体平滑:抗锯齿的效果仍然很远


  • 是否有任何方法可以使画布文本呈现结果与-webkit字体平滑:html/css中的抗锯齿???

    相同?虽然我可以想到一些原因,但您应该能够回答的第一个问题是“如果需要绘制文本,为什么要使用画布元素?”-例如,为什么您不能将该文本绘制为
    ,放置在画布上的适当位置,并使用剪切父级确保溢出被隐藏?嘿,Pomax,感谢您的评论,让我解释一下。所以我正在创建一个横幅生成工具。所以,像文字、遮罩、形状、圆弧、背景和渐变这样的东西肯定会成为横幅的一部分。由于它是一种工具,我们不能预先假设设计师总是将文本置于一切之上,这就是为什么我决定将文本设置为画布的一部分,而不是html元素覆盖。是的,这是公平的。由于画布渲染东西的方式不同(它不能依赖于本机dpi的操作系统级渲染,它必须将东西“绘制”到(亚)像素网格上),因此两个系统之间的渲染效果不可能完全相同,因此我建议先使用像素偏移:整数画布坐标位于屏幕像素之间,所以试着用(0.5,0.5)来抵消你的值,看看这是否有帮助。