// Font families. The lesson text is Chinese + heavy math. // // We pass FONT FALLBACK LISTS rather than single names: typst tries each in // order and falls back to the next if a face is missing. This means we never // hard-fail when one specific CJK font is absent on the compile host — a key // MVP robustness requirement (CI may have a different font set). /// Serif body font (宋体). First broadly-shipped match wins; if none are /// present typst falls back to its own default — we never hard-fail. #let serif = ("Noto Serif CJK SC", "Source Han Serif SC", "Songti SC", "SimSun") /// Sans / heading font (黑体). #let sans = ("Noto Sans CJK SC", "Source Han Sans SC", "PingFang SC", "Heiti SC", "SimHei") /// Accent font used for problem/proof bodies (仿宋 feel). #let accent = ("FZFangSong-Z02S", "FangSong", "STFangsong", "Songti SC")