3 min read

RemNote 中文英文分离字体定制完整指南

在使用 RemNote 时,我们可能希望实现中文和英文使用不同字体的效果。例如,中文采用「霞鹜文楷 Mono」字体,而英文字符使用系统默认字体,以提高阅读体验和视觉效果。本文将详细介绍如何通过自定义 CSS 实现这一目标。

一、问题背景

RemNote 默认不支持直接修改字体,我们只能通过官方提供的 Custom CSS 功能修改界面样式。默认情况下,当我们指定一个字体时,所有字符(包括中文、英文和数字)都会统一使用该字体,可能会出现英文显示效果不佳的情况。

我们的目标是:

  • 普通正文的中文使用「霞鹜文楷 Mono」字体。
  • 普通正文的英文字符自动使用系统默认字体(如 Inter、Segoe UI、苹果系统字体等)。
  • 所有标题级别 (Heading 1/2/3) 和加粗文本也使用系统默认字体,且有明确的字重区分。

二、解决方案

我们需要使用 CSS 中的 @font-faceunicode-range 描述符来实现对中文和英文字符的自动区分和回退。

第一步:声明仅针对中文字符的字体

我们使用了霞鹜文楷 Mono 字体,并限定了字体只对中文 Unicode 范围内的字符生效。

@font-face {
  font-family: 'WenKaiCN';
  src: url('https://raw.githubusercontent.com/lxgw/LxgwWenKai/main/fonts/TTF/LXGWWenKaiMono-Regular.ttf') format('truetype');
  unicode-range:
    U+4E00-9FFF,
    U+3400-4DBF,
    U+20000-2A6DF,
    U+3000-303F,
    U+FF00-FFEF;
}

第二步:设置全局正文字体,自动区分中英文

.rem-text {
  font-family:
    'WenKaiCN',
    "Inter",
    -apple-system, BlinkMacSystemFont,
    "Segoe UI", Roboto, Helvetica, Arial,
    sans-serif !important;
}

这里的字体顺序非常关键:

  • 浏览器遇到汉字时使用 WenKaiCN(即霞鹜文楷 Mono)。
  • 遇到英文或数字时,由于不在 unicode-range 中自动跳过,选择下一个字体 (Inter 或系统默认)。

第三步:标题字体的恢复

标题(Heading 1、2、3)不适合用 Mono 字体,我们明确将其恢复到 RemNote 默认字体并设定半粗 (600) 字重。

.rem-text.rem-header--1,
.rem-text.rem-header--2,
.rem-text.rem-header--3 {
  font-family:
    "Inter", -apple-system, BlinkMacSystemFont,
    "Segoe UI", Roboto, Helvetica, Arial,
    sans-serif !important;
  font-weight: 600 !important;
}

第四步:加粗文本字体恢复

对加粗文本,我们也恢复默认字体并强制设定为 bold (700) 字重。

.rem-text span.bold {
  font-family:
    "Inter", -apple-system, BlinkMacSystemFont,
    "Segoe UI", Roboto, Helvetica, Arial,
    sans-serif !important;
  font-weight: 700 !important;
}

三、实施效果

使用以上完整 CSS 代码后,在 RemNote 中实现了以下效果:

  • 普通段落的中文字符使用优雅的「霞鹜文楷 Mono」。
  • 英文和数字自然地回落到系统字体,清晰易读。
  • 标题和加粗文本明确地与正文区分,视觉上清晰且层次分明。

四、总结与建议

本方案利用 CSS 的高级特性巧妙实现了字体的自动区分与回退,不仅解决了视觉效果上的问题,还大幅提升了日常笔记的阅读舒适度。

若有其他字体需求,依然可参考本方案灵活修改 Unicode 范围和字体堆栈。希望本文能帮助大家更愉快地使用 RemNote!