Type: choosing Optical kerning clears manual pair values, as Auto does

This commit is contained in:
dotCooCoo
2026-11-02 12:04:15 +07:00
committed by bflatastic
parent d8d0602c64
commit a6c64e2cf2
5 changed files with 16 additions and 12 deletions
+2 -2
View File
@@ -338,8 +338,8 @@ fn set_format(s: &mut Session, p: &Value) -> Result<Value> {
let flag = |k: &str| p.get(k).and_then(Value::as_bool);
let kerning = match p.get("kerning") {
None | Some(Value::Null) => None,
Some(Value::String(a)) if a.eq_ignore_ascii_case("auto") => Some(None),
Some(Value::String(a)) if a.eq_ignore_ascii_case("optical") => None,
// Auto and Optical both clear manual pair values.
Some(Value::String(a)) if a.eq_ignore_ascii_case("auto") || a.eq_ignore_ascii_case("optical") => Some(None),
Some(v) => Some(Some(v.as_f64().ok_or_else(|| bad(C, "kerning must be a number, \"auto\", or \"optical\""))?.clamp(-1000.0, 10000.0))),
};
let optical_kerning = match p.get("kerning") {
+2 -2
View File
@@ -549,8 +549,8 @@ impl CharChange {
tracking: num("tracking"),
kerning: match p.get("kerning") {
None | Some(Value::Null) => None,
Some(Value::String(v)) if v.eq_ignore_ascii_case("optical") => None,
Some(Value::String(v)) if v.eq_ignore_ascii_case("auto") => Some(None),
// Auto and Optical both clear manual pair values.
Some(Value::String(v)) if v.eq_ignore_ascii_case("optical") || v.eq_ignore_ascii_case("auto") => Some(None),
Some(v) => Some(Some(v.as_f64().ok_or_else(|| bad(cmd, "kerning must be a number, \"auto\", or \"optical\""))?)),
},
optical_kerning: match p.get("kerning") {