Lisp_Object Vcharset_latin_viscii_upper;
 Lisp_Object Vcharset_chinese_big5;
 Lisp_Object Vcharset_chinese_big5_cdp;
+Lisp_Object Vcharset_japanese_jef_china3;
 Lisp_Object Vcharset_ideograph_gt;
 Lisp_Object Vcharset_ideograph_gt_pj_1;
 Lisp_Object Vcharset_ideograph_gt_pj_2;
   Qvietnamese_viscii_upper,
   Qchinese_big5,
   Qchinese_big5_cdp,
+  Qjapanese_jef_china3,
   Qideograph_daikanwa,
   Qideograph_gt,
   Qideograph_gt_pj_1,
       *charset = Vcharset_mojikyo;
       return c - MIN_CHAR_MOJIKYO;
     }
+  else if (c < MIN_CHAR_JEF_CHINA3)
+    {
+      *charset = Vcharset_ucs;
+      return c;
+    }
+  else if (c <= MAX_CHAR_JEF_CHINA3)
+    {
+      *charset = Vcharset_japanese_jef_china3;
+      return c - MAX_CHAR_JEF_CHINA3;
+    }
   else
     {
       *charset = Vcharset_ucs;
   defsymbol (&Qideograph_daikanwa,     "ideograph-daikanwa");
   defsymbol (&Qchinese_big5,           "chinese-big5");
   defsymbol (&Qchinese_big5_cdp,       "chinese-big5-cdp");
+  defsymbol (&Qjapanese_jef_china3,    "japanese-jef-china3");
   defsymbol (&Qmojikyo,                        "mojikyo");
   defsymbol (&Qmojikyo_2022_1,         "mojikyo-2022-1");
   defsymbol (&Qmojikyo_pj_1,           "mojikyo-pj-1");
                  build_string ("Big5 with CDP extension"),
                  build_string ("big5\\.cdp-0"),
                  Qnil, 0, 0, 0, 0);
+  staticpro (&Vcharset_japanese_jef_china3);
+  Vcharset_japanese_jef_china3 =
+    make_charset (LEADING_BYTE_JEF_CHINA3, Qjapanese_jef_china3, 256, 2,
+                 2, 2, 0, CHARSET_LEFT_TO_RIGHT,
+                 build_string ("JC3"),
+                 build_string ("JEF + CHINA3"),
+                 build_string ("JEF + CHINA3 private characters"),
+                 build_string ("china3jef-0"),
+                 Qnil, MIN_CHAR_JEF_CHINA3, MAX_CHAR_JEF_CHINA3, 0, 0);
   staticpro (&Vcharset_ideograph_gt);
   Vcharset_ideograph_gt =
     make_charset (LEADING_BYTE_GT, Qideograph_gt, 256, 3,