包阅导读总结
1. 语法高亮、颜色字体、网页开发、性能优势、技术创新
2. 本文介绍了 Heikki Lotvonen 提出的通过内置语法高亮功能的“颜色字体”实现代码高亮的新方法,分析了其技术实现、性能优势、灵活性等,认为此创新可能改变行业并成为未来趋势。
3.
– 网页开发中的代码语法高亮通常方式及问题
– 通常通过标签和 CSS 实现,在服务器端完成以避免客户端 JavaScript 负担。
– Heikki Lotvonen 的新方法
– 利用“颜色字体”和“上下文替代”功能在字体级别实现语法高亮。
– 无需额外 DOM 元素和客户端 JavaScript 处理。
– 技术分析
– 在字体文件嵌入颜色信息,浏览器直接显示带颜色字符。
– 性能优势明显,减少渲染时间和资源消耗。
– 可通过 CSS 覆盖颜色切换主题和模式,灵活性高。
– 影响和趋势
– 可能改变现有代码高亮库和工具设计思路。
– 或成新标准,在特定场景成为主流。
– 开发者应关注并应用于实际项目。
思维导图:
文章地址:https://mp.weixin.qq.com/s/ajyMWMro3GwAMCXMb84Q4g
文章来源:mp.weixin.qq.com
作者:Chris??Coyier
发布时间:2024/8/24 0:00
语言:中文
总字数:1041字
预计阅读时间:5分钟
评分:83分
标签:前端开发,语法高亮,颜色字体,性能优化,技术创新
以下为原文内容
本内容来源于用户推荐转载,旨在分享知识与观点,如有侵权请联系删除 联系邮箱 media@ilingban.com
作者:@Chris Coyier
原文:https://frontendmasters.com/blog/font-with-built-in-syntax-highlighting/
背景
在网页开发中,代码语法高亮通常通过在特定文本段落周围包裹<span>
标签,并使用 CSS 来应用颜色。这种方法通常在服务器端完成,以避免客户端 JavaScript 的负担。然而,Heikki Lotvonen 提出了一种新的方法,通过使用内置语法高亮功能的 “颜色字体”(color fonts)来实现代码高亮。
【第3343期】前端实现文本对比,并高亮显示差异!
html
<pre>
<code>@keyframes rounded-mask-reveal {
from {
clip-path: inset(10% 10% 10% 10% round 30px);
}
to {
clip-path: inset(0% 0% 0% 0% round 30px);
}
}
video {
animation: rounded-mask-reveal linear both;
animation-timeline: view();
animation-range: cover 0% cover 50%;
}</code>
</pre>
<p>It's always been annoying to have highlighting with inline code tags too... but not anymore! See, I can say <code>function rad() {}</code> or <code>a {
color: red; }</code></p>
<p>Holy cow!</p>
css
@font-face {
font-family: 'Monaspace';
src:
url('https://assets.codepen.io/2585/MonaspaceKrypton-SyntaxHighlighter-Regular.woff2')
format('woff2')
;
}
/* light theme */
@font-palette-values --kung-fury {
font-family: "Monaspace";
override-colors:
0 hsl(225 100% 40%), /* curlies and tags */
1 hsl(250 100% 80%), /* ? */
2 hsl(225 100% 40%), /* function */
3 hsl(225 100% 40%), /* ? */
4 hsl(270 50% 40%), /* () */
5 hsl(210 40% 2%), /* property name */
6 hsl(210 10% 30%), /* ? */
7 hsl(327 100% 54%) /* numbers */
;
}
@media (prefers-color-scheme: dark) {
@font-palette-values --kung-fury {
font-family: "Monaspace";
override-colors:
0 hsl(188 100% 75%), /* curlies and tags */
1 hsl(250 100% 80%), /* ? */
2 hsl(188 100% 75%), /* function */
3 hsl(188 100% 75%), /* ? */
4 hsl(250 100% 80%), /* () */
5 hsl(210 40% 98%), /* property name */
6 hsl(210 40% 80%), /* ? */
7 hsl(300 100% 80%) /* numbers */
;
}
}
code {
font-family: "Monaspace", monospace;
font-palette: --kung-fury;
}
pre {
min-width: 0;
overflow-x: auto;
padding: 2ch;
}
@layer support {
* {
box-sizing: border-box;
margin: 0;
}
html {
block-size: 100%;
color-scheme: dark light;
}
body {
min-block-size: 100%;
font-family: system-ui, sans-serif;
display: grid;
place-content: center;
gap: 5vmin;
}
p {
max-inline-size: 40ch;
}
}
https://codepen.io/argyleink/pen/GRbyNNv
要点
Heikki Lotvonen 的创新在于利用 OpenType 字体特性中的 “颜色字体” 和 “上下文替代” 功能,直接在字体级别上实现代码语法高亮,无需额外的 DOM 元素或客户端 JavaScript 处理。
分析
-
技术实现:这种方法通过在字体文件中嵌入颜色信息,使得每个字符都可以有自己的颜色。这意味着在渲染文本时,浏览器可以直接显示带有颜色的字符,而不需要额外的 HTML 或 CSS 处理。
-
性能优势:由于不需要生成额外的 DOM 元素或运行 JavaScript,这种方法在性能上具有明显优势。特别是在处理大量代码时,可以显著减少渲染时间和资源消耗。
-
灵活性:Adam 的演示展示了如何通过 CSS 覆盖颜色,实现主题和颜色模式的切换,这为开发者提供了更大的灵活性和定制空间。
影响
-
行业影响:这种技术可能会改变现有的代码高亮库和工具的设计思路,推动更多的创新和优化。
-
未来趋势:随着浏览器和字体技术的不断进步,内置语法高亮的字体可能会成为新的标准,尤其是在需要高性能和低资源消耗的场景中。
结论
Heikki Lotvonen 的这项创新为网页代码高亮提供了一种全新的解决方案,不仅简化了实现过程,还提高了性能和灵活性。未来,这种基于字体的高亮技术可能会成为主流,特别是在需要高效渲染大量代码的应用场景中。开发者应关注这一技术的发展,并考虑将其应用于实际项目中。
早阅:了解技术资讯的一种方式。