17db96d56Sopenharmony_ci/* These routines may be quite inefficient, but it's used only to emulate old
27db96d56Sopenharmony_ci * standards. */
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci#ifndef EMULATE_JISX0213_2000_ENCODE_INVALID
57db96d56Sopenharmony_ci#  define EMULATE_JISX0213_2000_ENCODE_INVALID 1
67db96d56Sopenharmony_ci#endif
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_ci#define EMULATE_JISX0213_2000_ENCODE_BMP(assi, c)                       \
97db96d56Sopenharmony_ci    if (config == (void *)2000 && (                                     \
107db96d56Sopenharmony_ci                    (c) == 0x9B1C || (c) == 0x4FF1 ||                   \
117db96d56Sopenharmony_ci                    (c) == 0x525D || (c) == 0x541E ||                   \
127db96d56Sopenharmony_ci                    (c) == 0x5653 || (c) == 0x59F8 ||                   \
137db96d56Sopenharmony_ci                    (c) == 0x5C5B || (c) == 0x5E77 ||                   \
147db96d56Sopenharmony_ci                    (c) == 0x7626 || (c) == 0x7E6B)) {                  \
157db96d56Sopenharmony_ci        return EMULATE_JISX0213_2000_ENCODE_INVALID;                    \
167db96d56Sopenharmony_ci    }                                                                   \
177db96d56Sopenharmony_ci    else if (config == (void *)2000 && (c) == 0x9B1D) {                 \
187db96d56Sopenharmony_ci        (assi) = 0x8000 | 0x7d3b;                                       \
197db96d56Sopenharmony_ci    }
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_ci#define EMULATE_JISX0213_2000_ENCODE_EMP(assi, c)                       \
227db96d56Sopenharmony_ci    if (config == (void *)2000 && (c) == 0x20B9F) {                     \
237db96d56Sopenharmony_ci        return EMULATE_JISX0213_2000_ENCODE_INVALID;                    \
247db96d56Sopenharmony_ci    }
257db96d56Sopenharmony_ci
267db96d56Sopenharmony_ci#ifndef EMULATE_JISX0213_2000_DECODE_INVALID
277db96d56Sopenharmony_ci#  define EMULATE_JISX0213_2000_DECODE_INVALID 2
287db96d56Sopenharmony_ci#endif
297db96d56Sopenharmony_ci
307db96d56Sopenharmony_ci#define EMULATE_JISX0213_2000_DECODE_PLANE1(assi, c1, c2)               \
317db96d56Sopenharmony_ci    if (config == (void *)2000 &&                                       \
327db96d56Sopenharmony_ci                    (((c1) == 0x2E && (c2) == 0x21) ||                  \
337db96d56Sopenharmony_ci                     ((c1) == 0x2F && (c2) == 0x7E) ||                  \
347db96d56Sopenharmony_ci                     ((c1) == 0x4F && (c2) == 0x54) ||                  \
357db96d56Sopenharmony_ci                     ((c1) == 0x4F && (c2) == 0x7E) ||                  \
367db96d56Sopenharmony_ci                     ((c1) == 0x74 && (c2) == 0x27) ||                  \
377db96d56Sopenharmony_ci                     ((c1) == 0x7E && (c2) == 0x7A) ||                  \
387db96d56Sopenharmony_ci                     ((c1) == 0x7E && (c2) == 0x7B) ||                  \
397db96d56Sopenharmony_ci                     ((c1) == 0x7E && (c2) == 0x7C) ||                  \
407db96d56Sopenharmony_ci                     ((c1) == 0x7E && (c2) == 0x7D) ||                  \
417db96d56Sopenharmony_ci                     ((c1) == 0x7E && (c2) == 0x7E))) {                 \
427db96d56Sopenharmony_ci        return EMULATE_JISX0213_2000_DECODE_INVALID;                    \
437db96d56Sopenharmony_ci    }
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ci#define EMULATE_JISX0213_2000_DECODE_PLANE2(writer, c1, c2)             \
467db96d56Sopenharmony_ci    if (config == (void *)2000 && (c1) == 0x7D && (c2) == 0x3B) {       \
477db96d56Sopenharmony_ci        OUTCHAR(0x9B1D);                                                \
487db96d56Sopenharmony_ci    }
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci#define EMULATE_JISX0213_2000_DECODE_PLANE2_CHAR(assi, c1, c2)          \
517db96d56Sopenharmony_ci    if (config == (void *)2000 && (c1) == 0x7D && (c2) == 0x3B) {       \
527db96d56Sopenharmony_ci        (assi) = 0x9B1D;                                                \
537db96d56Sopenharmony_ci    }
547db96d56Sopenharmony_ci
55