javascript - 如何使用 monaco 编辑器在页面上使用两种不同的字体?
问题描述
我正在使用 react-monaco-editor。
在全局 css 中,我设置了一个字体系列,例如Helvetica, Tahoma, Arial, monospace
.
同时,我的页面上有一个编辑器实例,我想使用另一种字体,例如"Fira Code", monospace
. 我在编辑器的可选中设置它。编辑器显示此字体。
但是此时出现了一个问题,编辑器在测量字体宽度时使用的是全局字体。所以在 renderWhitespace 和显示缩进指示符时会出现错误。我尝试monaco.editor.remeasureFonts()
在 Hook 中或渲染之前使用,但没有成功。
我认为这与选择 monaco 用于测量的字体有关,但我找不到如何指定用于测量的 API。
解决方案
好吧,我想通了。
看了编辑器的源码后发现我的全局样式干扰了编辑器在确定宽度时生成的临时div宽度。
参考这个文件:https ://github.com/microsoft/vscode/blob/d8bc1fa0ff/src/vs/editor/browser/config/charWidthReader.ts
所以我找到了一个非常愚蠢但可用的解决方案:(奇怪的数字 50000px 来自那个文件)
*:not(div[style*='50000px']) {
font-family: Helvetica, Tahoma, Arial, "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", "Fira Code", monospace;
}
推荐阅读
- flutter - Flutter google map 如何在 GoogleMap 的小部件 onCreated 函数之外实例化 GoogleMapController 以进行测试?
- python - pylatex:如何更改文档的字体大小?
- swift - 加速度计数据从十六进制到浮点数
- javascript - 从 Vue 方法更新 FabricJS 对象
- python-3.x - 为什么我的不和谐机器人一次发送多条消息?
- python - 从 eded 消息中获取内容?
- javascript - 发布 500(内部服务器错误)第 48 行 app.js 和错误 SyntaxError: Unexpected token < in JSON at position 0 line 65 in app.js
- python - 使用 twitter API 时创建 pickle 文件
- c# - XDG0012:成员未被识别或不可访问
- c# - Entity Framework Core - DBContext 与多个 AJAX 调用发生冲突