文字描边 (-webkit-text-stroke) css 问题
Text Stroke (-webkit-text-stroke) css Problem
我正在使用 NextJs 和 TailwindCSS 进行个人项目。
完成项目后,我使用私人导航器查看我的进度,但笔画似乎没有正常工作,除了 Chrome.
我在所有浏览器中都遇到过这种情况
这是我得到的:
这是期望的行为:
代码:
<div className="outline-title text-white pb-2 text-5xl font-bold text-center mb-12 mt-8">
Values & Process
</div>
Css:
.outline-title {
color: rgba(0, 0, 0, 0);
-webkit-text-stroke: 2px black;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
有人可以解释或帮助解决这个问题。
浏览器兼容性:
由于浏览器兼容性问题 -webkit-text-stroke 将不支持少数浏览器。可以通过阴影实现轮廓效果。
希望这有效!
.outline-title {
font-family: sans-serif;
color: white;
text-shadow:
1px 1px 0 #000,
-1px -1px 0 #000,
1px -1px 0 #000,
-1px 1px 0 #000,
1px 1px 0 #000;
font-size: 50px;
}
<div class="outline-title text-white pb-2 text-5xl font-bold text-center mb-12 mt-8">
Values & Process
</div>
---- 更新 ---
这是在某些浏览器中使用可变宽度字体时的一个已知问题。至于为什么,我不知道
https://github.com/rsms/inter/issues/292#issuecomment-674993644
TL:DR
@Satheesh Kumar 提出的 text-shadow
仍然是最可靠的解决方案。
正如@diopside 所指出的那样,这种呈现行为 与可变字体有关。
这些内部轮廓的原因是基于一些可变字体的结构。
'Traditional' 字体(所以在可变字体之前)——只包含一个轮廓形状,也许还有一个反形状,例如小写字母 [=32= 的内部切出 'hole' ]e 字形.
否则,您会遇到意外的 even/odd 问题,导致路径区域重叠导致排除形状。
应用这种构造方法,你将永远不会看到任何形状的重叠。您可以将它们想象成 'merged down' 复合路径。像前面提到的洞这样的反形状是基于简单的规则,比如逆时针路径方向——顺便说一句。您可能仍然会在 svg-clipping paths 中遇到这个概念——在某些浏览器中无法完美呈现。
但可变字体允许 segemented/overlapping 构造 glyphs/characters 以促进不同字体粗细和宽度之间的插值。
显然 webkit-text-stroke
勾勒出 glyph/character 的精确贝塞尔解剖结构,导致每个字形组件出现不需要的轮廓。
这本身不是可变字体的问题,因为粗细和宽度插值已在字体设计中使用至少 25 年。所以这个古怪的渲染问题取决于使用的字体——许多 classic/older 编译为较新的可变字体格式的字体仍将依赖旧学校的方法(避免任何重叠)。
我正在使用 NextJs 和 TailwindCSS 进行个人项目。
完成项目后,我使用私人导航器查看我的进度,但笔画似乎没有正常工作,除了 Chrome.
我在所有浏览器中都遇到过这种情况这是我得到的:
这是期望的行为:
代码:
<div className="outline-title text-white pb-2 text-5xl font-bold text-center mb-12 mt-8">
Values & Process
</div>
Css:
.outline-title {
color: rgba(0, 0, 0, 0);
-webkit-text-stroke: 2px black;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
有人可以解释或帮助解决这个问题。
浏览器兼容性:
由于浏览器兼容性问题 -webkit-text-stroke 将不支持少数浏览器。可以通过阴影实现轮廓效果。
希望这有效!
.outline-title {
font-family: sans-serif;
color: white;
text-shadow:
1px 1px 0 #000,
-1px -1px 0 #000,
1px -1px 0 #000,
-1px 1px 0 #000,
1px 1px 0 #000;
font-size: 50px;
}
<div class="outline-title text-white pb-2 text-5xl font-bold text-center mb-12 mt-8">
Values & Process
</div>
---- 更新 ---
这是在某些浏览器中使用可变宽度字体时的一个已知问题。至于为什么,我不知道
https://github.com/rsms/inter/issues/292#issuecomment-674993644
TL:DR
@Satheesh Kumar 提出的 text-shadow
仍然是最可靠的解决方案。
正如@diopside 所指出的那样,这种呈现行为 与可变字体有关。
这些内部轮廓的原因是基于一些可变字体的结构。
'Traditional' 字体(所以在可变字体之前)——只包含一个轮廓形状,也许还有一个反形状,例如小写字母 [=32= 的内部切出 'hole' ]e 字形.
否则,您会遇到意外的 even/odd 问题,导致路径区域重叠导致排除形状。
应用这种构造方法,你将永远不会看到任何形状的重叠。您可以将它们想象成 'merged down' 复合路径。像前面提到的洞这样的反形状是基于简单的规则,比如逆时针路径方向——顺便说一句。您可能仍然会在 svg-clipping paths 中遇到这个概念——在某些浏览器中无法完美呈现。
但可变字体允许 segemented/overlapping 构造 glyphs/characters 以促进不同字体粗细和宽度之间的插值。
显然 webkit-text-stroke
勾勒出 glyph/character 的精确贝塞尔解剖结构,导致每个字形组件出现不需要的轮廓。
这本身不是可变字体的问题,因为粗细和宽度插值已在字体设计中使用至少 25 年。所以这个古怪的渲染问题取决于使用的字体——许多 classic/older 编译为较新的可变字体格式的字体仍将依赖旧学校的方法(避免任何重叠)。