2024-09-16

在 Rime 配置文件中,给键值对的值加引号的原因主要与 YAML(YAML Ain’t Markup Language)语法规则有关。

在 YAML 中,字符串值不总是必须加引号,但是在某些情况下,加引号可以避免解析错误,确保 YAML 解析器能够正确识别字符串内容。下面是需要加引号的几种常见情况:

1. 带有特殊字符或空格的字符串

如果字符串中包含空格、冒号、逗号、或特殊字符,YAML 解析器会有可能把它误认为其他类型的值(如数字、布尔值等),这时需要加引号。

  • "KaiTi" 包含字母,但有些字体名称可能包含空格或其他字符,例如 "Microsoft YaHei",为了统一处理和避免潜在问题,通常会在字体名称周围加上引号。

    示例

    1
    2
    style:
    font_face: "KaiTi" # 字体名加引号,避免解析器误解

2. 避免解析为布尔值或数字

如果某些值本身可能会被 YAML 解析器误认为布尔值或数字,加引号可以避免这种情况。

  • 例如,如果有一个字体名是 TrueFalse,YAML 会把它解析为布尔值,而不是字符串:
    1
    2
    style:
    font_face: "True" # 不加引号时,YAML 可能将它解析为布尔值

3. YAML 关键字或特殊值

某些字符串(例如 yes, no, null,或者数字开头的内容)在 YAML 中有特殊含义,不加引号时可能会导致解析错误。例如 12345 会被解析成数字,而不是字符串。

结论:

  • patch 中为 "style/font_face" 指定值 "KaiTi" 加引号,主要是为了确保 YAML 解析器能正确地识别这是一个字符串,避免可能的误解析。
  • 尽管字体名不含特殊字符和空格时可以不加引号,但在 YAML 中,加引号是一种安全的通用做法,尤其当你希望确保它总是被解析为字符串类型时。