Posted in

【早阅】内置语法高亮显示的字体_AI阅读总结 — 包阅AI

包阅导读总结

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 处理。

分析

  1. 技术实现:这种方法通过在字体文件中嵌入颜色信息,使得每个字符都可以有自己的颜色。这意味着在渲染文本时,浏览器可以直接显示带有颜色的字符,而不需要额外的 HTML 或 CSS 处理。

  2. 性能优势:由于不需要生成额外的 DOM 元素或运行 JavaScript,这种方法在性能上具有明显优势。特别是在处理大量代码时,可以显著减少渲染时间和资源消耗。

  3. 灵活性:Adam 的演示展示了如何通过 CSS 覆盖颜色,实现主题和颜色模式的切换,这为开发者提供了更大的灵活性和定制空间。

影响

  1. 行业影响:这种技术可能会改变现有的代码高亮库和工具的设计思路,推动更多的创新和优化。

  2. 未来趋势:随着浏览器和字体技术的不断进步,内置语法高亮的字体可能会成为新的标准,尤其是在需要高性能和低资源消耗的场景中。

结论

Heikki Lotvonen 的这项创新为网页代码高亮提供了一种全新的解决方案,不仅简化了实现过程,还提高了性能和灵活性。未来,这种基于字体的高亮技术可能会成为主流,特别是在需要高效渲染大量代码的应用场景中。开发者应关注这一技术的发展,并考虑将其应用于实际项目中。

早阅:了解技术资讯的一种方式。