pub(crate) fn unicode_to_typst(ch: char) -> Option<&'static str> {
match ch {
'α' => Some("alpha"),
'β' => Some("beta"),
'γ' => Some("gamma"),
'δ' => Some("delta"),
'ε' => Some("epsilon"),
'ζ' => Some("zeta"),
'η' => Some("eta"),
'θ' => Some("theta"),
'ι' => Some("iota"),
'κ' => Some("kappa"),
'λ' => Some("lambda"),
'μ' => Some("mu"),
'ν' => Some("nu"),
'ξ' => Some("xi"),
'ο' => Some("omicron"),
'π' => Some("pi"),
'ρ' => Some("rho"),
'σ' | 'ς' => Some("sigma"),
'τ' => Some("tau"),
'υ' => Some("upsilon"),
'φ' => Some("phi"),
'χ' => Some("chi"),
'ψ' => Some("psi"),
'ω' => Some("omega"),
'Α' => Some("Alpha"),
'Β' => Some("Beta"),
'Γ' => Some("Gamma"),
'Δ' => Some("Delta"),
'Ε' => Some("Epsilon"),
'Ζ' => Some("Zeta"),
'Η' => Some("Eta"),
'Θ' => Some("Theta"),
'Ι' => Some("Iota"),
'Κ' => Some("Kappa"),
'Λ' => Some("Lambda"),
'Μ' => Some("Mu"),
'Ν' => Some("Nu"),
'Ξ' => Some("Xi"),
'Ο' => Some("Omicron"),
'Π' => Some("Pi"),
'Ρ' => Some("Rho"),
'Σ' => Some("Sigma"),
'Τ' => Some("Tau"),
'Υ' => Some("Upsilon"),
'Φ' => Some("Phi"),
'Χ' => Some("Chi"),
'Ψ' => Some("Psi"),
'Ω' => Some("Omega"),
'∞' => Some("infinity"),
'∂' => Some("partial"),
'∇' => Some("nabla"),
'∅' => Some("emptyset"),
'±' => Some("plus.minus"),
'×' => Some("times"),
'÷' => Some("div"),
'≤' => Some("lt.eq"),
'≥' => Some("gt.eq"),
'≠' => Some("eq.not"),
'≈' => Some("approx"),
'∈' => Some("in"),
'∉' => Some("in.not"),
'⊂' => Some("subset"),
'⊃' => Some("supset"),
'∪' => Some("union"),
'∩' => Some("sect"),
'∠' => Some("angle"),
'∧' => Some("and"),
'∨' => Some("or"),
'∘' => Some("compose"),
'⋅' => Some("dot.op"),
'∓' => Some("minus.plus"),
'¬' => Some("not"),
'⊕' => Some("plus.circle"),
'⊗' => Some("times.circle"),
'⊙' => Some("dot.circle"),
'⊢' => Some("tack.r"),
'⊣' => Some("tack.l"),
'⊤' => Some("top"),
'⊥' => Some("perp"),
'←' => Some("arrow.l"),
'↑' => Some("arrow.t"),
'→' => Some("arrow.r"),
'↓' => Some("arrow.b"),
'↔' => Some("arrow.l.r"),
'↦' => Some("arrow.r.bar"),
'↪' => Some("arrow.r.hook"),
'↼' => Some("harpoon.lt"),
'⇀' => Some("harpoon.rt"),
'⇐' => Some("arrow.l.double"),
'⇒' => Some("arrow.r.double"),
'⇔' => Some("arrow.l.r.double"),
'≡' => Some("equiv"),
'∼' => Some("tilde.op"),
'≅' => Some("tilde.eq"),
'≪' => Some("lt.double"),
'≫' => Some("gt.double"),
'⊆' => Some("subset.eq"),
'⊇' => Some("supset.eq"),
'∝' => Some("prop"),
'∴' => Some("therefore"),
'∵' => Some("because"),
'ℂ' => Some("CC"),
'ℍ' => Some("HH"),
'ℕ' => Some("NN"),
'ℙ' => Some("PP"),
'ℚ' => Some("QQ"),
'ℝ' => Some("RR"),
'ℤ' => Some("ZZ"),
_ => None,
}
}