From 97e447eb4cd004d4a1ca7ffa63d9d2486e537ba8 Mon Sep 17 00:00:00 2001
From: Philipp Stadler <philipp.pospischil@univie.ac.at>
Date: Thu, 6 Mar 2025 13:22:52 +0100
Subject: [PATCH 1/6] =?UTF-8?q?fix:=20use=20=E2=BA=A9as=20correct=20radica?=
 =?UTF-8?q?l=20for=20both=20=E7=8F=BE=20and=20=E7=8E=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 build/gen-hanzi-data/radical-overrides.ts | 6 ++++++
 build/gen-hanzi-data/radical.ts           | 7 ++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)
 create mode 100644 build/gen-hanzi-data/radical-overrides.ts

diff --git a/build/gen-hanzi-data/radical-overrides.ts b/build/gen-hanzi-data/radical-overrides.ts
new file mode 100644
index 0000000..7440d01
--- /dev/null
+++ b/build/gen-hanzi-data/radical-overrides.ts
@@ -0,0 +1,6 @@
+/**
+ * Maps characters to a radical where data from cnchar is incorrect.
+ */
+export const radicalOverrides = new Map<string, string>()
+radicalOverrides.set("现", "⺩") // 王
+radicalOverrides.set("現", "⺩") // 王
diff --git a/build/gen-hanzi-data/radical.ts b/build/gen-hanzi-data/radical.ts
index baf1acc..85260a9 100644
--- a/build/gen-hanzi-data/radical.ts
+++ b/build/gen-hanzi-data/radical.ts
@@ -4,6 +4,7 @@ import cncharRadical from 'cnchar-radical'
 import cncharTrad from 'cnchar-trad'
 import { isKangxiOrCjkRadical } from './blocks/index'
 import { queryPatchedHanziWriterData } from './patched-hanzi-writer'
+import { radicalOverrides } from './radical-overrides'
 
 cnchar.use(cncharOrder, cncharRadical, cncharTrad)
 
@@ -107,7 +108,11 @@ export function isInlineRadical (char: string): boolean {
 
 export async function queryRadicalInfo (char: string): Promise<RadicalInfo> {
   let radical: string
-  if (isInlineRadical(char)) {
+
+  const override = radicalOverrides.get(char)
+  if (override !== undefined) {
+    radical = override
+  } else if (isInlineRadical(char)) {
     // already a radical, the radical is the same char
     radical = char
   } else {
-- 
GitLab


From 59d5eee45ab32d9b0ae9d8c2fb709bb8fd5f6d83 Mon Sep 17 00:00:00 2001
From: Philipp Stadler <philipp.pospischil@univie.ac.at>
Date: Thu, 6 Mar 2025 13:36:30 +0100
Subject: [PATCH 2/6] =?UTF-8?q?fix:=20add=20radical=20for=20=E6=A3=92,=20w?=
 =?UTF-8?q?hich=20is=20=E6=9C=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 build/gen-hanzi-data/radical-overrides.ts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/build/gen-hanzi-data/radical-overrides.ts b/build/gen-hanzi-data/radical-overrides.ts
index 7440d01..ab2633d 100644
--- a/build/gen-hanzi-data/radical-overrides.ts
+++ b/build/gen-hanzi-data/radical-overrides.ts
@@ -4,3 +4,4 @@
 export const radicalOverrides = new Map<string, string>()
 radicalOverrides.set("现", "⺩") // 王
 radicalOverrides.set("現", "⺩") // 王
+radicalOverrides.set("棒", "木")
-- 
GitLab


From b058ff8400c15a90a502bc6fc7d8bfa27b52c0eb Mon Sep 17 00:00:00 2001
From: Philipp Stadler <philipp.pospischil@univie.ac.at>
Date: Thu, 6 Mar 2025 13:38:25 +0100
Subject: [PATCH 3/6] =?UTF-8?q?fix:=20shorten=20chinese=20meaning=20of=20?=
 =?UTF-8?q?=E7=96=92=20radical=20to=20n=C3=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/hanzi-data/lut.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/components/hanzi-data/lut.ts b/src/components/hanzi-data/lut.ts
index 2bd174e..e4a37c0 100644
--- a/src/components/hanzi-data/lut.ts
+++ b/src/components/hanzi-data/lut.ts
@@ -709,7 +709,7 @@ defineRadical(
   ['疒'],
   {
     radicalMeaningDe: 'Krankheit, (Radikal des Zeichens bing)',
-    radicalMeaningZh: 'nè, chuáng, bìng zì páng'
+    radicalMeaningZh: 'nè'
   }
 )
 defineRadical(
-- 
GitLab


From 97e15e71c5621e4604b24205a84b50abcb293f54 Mon Sep 17 00:00:00 2001
From: Philipp Stadler <philipp.pospischil@univie.ac.at>
Date: Thu, 6 Mar 2025 14:04:13 +0100
Subject: [PATCH 4/6] =?UTF-8?q?fix:=20translate=20=E9=85=89=20correctly=20?=
 =?UTF-8?q?with=20Wein,=20Alkohol=20into=20German?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/hanzi-data/lut.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/components/hanzi-data/lut.ts b/src/components/hanzi-data/lut.ts
index e4a37c0..ad238fe 100644
--- a/src/components/hanzi-data/lut.ts
+++ b/src/components/hanzi-data/lut.ts
@@ -995,7 +995,7 @@ defineRadical(
 )
 defineRadical(
   ['酉'],
-  { radicalMeaningDe: 'Amphore, 10. Erdzweig', radicalMeaningZh: 'yǒu' }
+  { radicalMeaningDe: 'Wein, Alkohol', radicalMeaningZh: 'yǒu' }
 )
 defineRadical(
   ['豕'],
-- 
GitLab


From e87281540ba09a325eb9e2c7cc8e1bad30b717a9 Mon Sep 17 00:00:00 2001
From: Philipp Stadler <philipp.pospischil@univie.ac.at>
Date: Thu, 6 Mar 2025 14:04:47 +0100
Subject: [PATCH 5/6] chore: bump version

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index 8a61c77..e5bb681 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "kartenaale-card-templates",
-  "version": "5.0.6",
+  "version": "5.0.7",
   "description": "HTML and data for Anki cards",
   "repository": "https://gitlab.phaidra.org/kartenaale/card-templates",
   "author": "Philipp Stadler <hello@phstadler.com>",
-- 
GitLab


From 68cad023df05845f7e482434a4f73af0a3ca5226 Mon Sep 17 00:00:00 2001
From: Philipp Stadler <philipp.pospischil@univie.ac.at>
Date: Thu, 6 Mar 2025 14:11:28 +0100
Subject: [PATCH 6/6] chore: change data filename to overwrite all old data for
 existing users

---
 build/gen-hanzi-data/generate.ts                              | 2 +-
 .../pools/traditional/hanyu-jiaocheng-2a-trad.txt             | 4 ++--
 src/components/hanzi-data/index.ts                            | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/build/gen-hanzi-data/generate.ts b/build/gen-hanzi-data/generate.ts
index a80dcba..31704f6 100644
--- a/build/gen-hanzi-data/generate.ts
+++ b/build/gen-hanzi-data/generate.ts
@@ -44,7 +44,7 @@ export async function generate (config: Config): Promise<void> {
           }
           // the underscore ensures that Anki media checks dón't think the file
           // is unused
-          const out = join(generatingDir, `_hd${char}.js`)
+          const out = join(generatingDir, `_cd${char}.js`)
           generated.push(generateForHanzi(char, out))
         }
       }
diff --git a/build/gen-hanzi-data/pools/traditional/hanyu-jiaocheng-2a-trad.txt b/build/gen-hanzi-data/pools/traditional/hanyu-jiaocheng-2a-trad.txt
index b717d99..c081136 100644
--- a/build/gen-hanzi-data/pools/traditional/hanyu-jiaocheng-2a-trad.txt
+++ b/build/gen-hanzi-data/pools/traditional/hanyu-jiaocheng-2a-trad.txt
@@ -252,6 +252,7 @@
 滑
 滿
 漂
+演
 灸
 炎
 炤
@@ -321,7 +322,6 @@
 結
 經
 練
-縯
 績
 織
 纔
@@ -349,7 +349,6 @@
 葉
 著
 葫
-蔴
 薯
 藥
 蘆
@@ -469,6 +468,7 @@
 高
 魚
 鴨
+麻
 麼
 點
 鼕
diff --git a/src/components/hanzi-data/index.ts b/src/components/hanzi-data/index.ts
index eeaee84..7312284 100644
--- a/src/components/hanzi-data/index.ts
+++ b/src/components/hanzi-data/index.ts
@@ -30,7 +30,7 @@ export async function getHanziData (
     throw new Error(`Can only get data for single chars, got: ${char}`)
   }
 
-  const data = (await getDataUnsafe({ path: `hanzi-data/_hd${char}.js`, key: char })) as Readonly<HanziData>
+  const data = (await getDataUnsafe({ path: `hanzi-data/_cd${char}.js`, key: char })) as Readonly<HanziData>
   if (kind === GetHanziDataKind.TRADITIONAL && data.trad !== undefined) {
     // data in the cache is read-only => make a fresh copy with trad overrides
     return {
-- 
GitLab