main
 1#let latin-fonts = (
 2  "Libertinus Serif",
 3  "Georgia",
 4  "Cambria",
 5  "Times New Roman",
 6)
 7#let cjk-fonts = (
 8  default: ("Source Han Serif",),
 9  cn: (
10    "Source Han Serif SC",
11    "Source Han Serif",
12    "Noto Serif CJK SC",
13    "Noto Serif SC",
14    "Noto Serif CJK",
15    "SimSun",
16    "STSongti",
17  ),
18  tw: (
19    "Source Han Serif TC",
20    "Source Han Serif",
21    "Noto Serif CJK TC",
22    "Noto Serif TC",
23    "Noto Serif CJK",
24  ),
25  jp: (
26    "Source Han Serif JP",
27    "Source Han Serif",
28    "Noto Serif CJK JP",
29    "Noto Serif JP",
30    "Noto Serif CJK",
31  ),
32  kr: (
33    "Source Han Serif KR",
34    "Source Han Serif",
35    "Noto Serif CJK KR",
36    "Noto Serif KR",
37    "Noto Serif CJK",
38  ),
39)
40
41
42#let font-template(body) = {
43  set text(font: latin-fonts)
44  let latin-in-cjk-fonts = latin-fonts.map(it => (name: it, covers: "latin-in-cjk"))
45  show text.where(lang: "zh"): set text(font: latin-in-cjk-fonts + cjk-fonts.default)
46  show text.where(lang: "zh", region: "cn"): set text(font: latin-in-cjk-fonts + cjk-fonts.cn)
47  show text.where(lang: "zh", region: "tw"): set text(font: latin-in-cjk-fonts + cjk-fonts.tw)
48  show text.where(lang: "jp"): set text(font: latin-in-cjk-fonts + cjk-fonts.jp)
49  show text.where(lang: "kr"): set text(font: latin-in-cjk-fonts + cjk-fonts.kr)
50
51  body
52}