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