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] =?UTF-8?q?fix:=20use=20=E2=BA=A9as=20correct=20radical=20?=
 =?UTF-8?q?for=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