use crate::{DecodeError, Decoder, EncodeError, Encoder};
pub const ISO_8859_1_NAME: &str = "ISO_8859-1:1987";
pub struct ISO8859_1Encoder;
impl Encoder for ISO8859_1Encoder {
fn name(&self) -> &'static str {
ISO_8859_1_NAME
}
fn encode(
&mut self,
src: &str,
dst: &mut [u8],
finish: bool,
) -> Result<(usize, usize), EncodeError> {
if src.is_empty() {
return if finish {
Ok((0, 0))
} else {
Err(EncodeError::InputIsEmpty)
};
}
if dst.is_empty() {
return Err(EncodeError::OutputTooShort);
}
let (mut read, mut write) = (0, 0);
for c in src.chars() {
let b = c as u32;
read += c.len_utf8();
if b >= 256 {
return Err(EncodeError::Unmappable { read, write, c });
}
dst[write] = b as u8;
write += 1;
if write == dst.len() {
break;
}
}
Ok((read, write))
}
}
pub struct ISO8859_1Decoder;
impl Decoder for ISO8859_1Decoder {
fn name(&self) -> &'static str {
ISO_8859_1_NAME
}
fn decode(
&mut self,
src: &[u8],
dst: &mut String,
finish: bool,
) -> Result<(usize, usize), DecodeError> {
if src.is_empty() {
return if finish {
Ok((0, 0))
} else {
Err(DecodeError::InputIsEmpty)
};
}
let len = dst.capacity() - dst.len();
if len < 4 {
return Err(DecodeError::OutputTooShort);
}
let (mut read, mut write) = (0, 0);
for &b in src {
let c = b as char;
let l = c.len_utf8();
if write + l > len {
break;
}
dst.push(c);
read += 1;
write += l;
}
Ok((read, write))
}
}
const ISO_8859_2_TO_UNICODE: [char; 128] = [
'\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{85}', '\u{86}', '\u{87}', '\u{88}',
'\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{8d}', '\u{8e}', '\u{8f}', '\u{90}', '\u{91}',
'\u{92}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{97}', '\u{98}', '\u{99}', '\u{9a}',
'\u{9b}', '\u{9c}', '\u{9d}', '\u{9e}', '\u{9f}', '\u{a0}', '\u{104}', '\u{2d8}', '\u{141}',
'\u{a4}', '\u{13d}', '\u{15a}', '\u{a7}', '\u{a8}', '\u{160}', '\u{15e}', '\u{164}', '\u{179}',
'\u{ad}', '\u{17d}', '\u{17b}', '\u{b0}', '\u{105}', '\u{2db}', '\u{142}', '\u{b4}', '\u{13e}',
'\u{15b}', '\u{2c7}', '\u{b8}', '\u{161}', '\u{15f}', '\u{165}', '\u{17a}', '\u{2dd}',
'\u{17e}', '\u{17c}', '\u{154}', '\u{c1}', '\u{c2}', '\u{102}', '\u{c4}', '\u{139}', '\u{106}',
'\u{c7}', '\u{10c}', '\u{c9}', '\u{118}', '\u{cb}', '\u{11a}', '\u{cd}', '\u{ce}', '\u{10e}',
'\u{110}', '\u{143}', '\u{147}', '\u{d3}', '\u{d4}', '\u{150}', '\u{d6}', '\u{d7}', '\u{158}',
'\u{16e}', '\u{da}', '\u{170}', '\u{dc}', '\u{dd}', '\u{162}', '\u{df}', '\u{155}', '\u{e1}',
'\u{e2}', '\u{103}', '\u{e4}', '\u{13a}', '\u{107}', '\u{e7}', '\u{10d}', '\u{e9}', '\u{119}',
'\u{eb}', '\u{11b}', '\u{ed}', '\u{ee}', '\u{10f}', '\u{111}', '\u{144}', '\u{148}', '\u{f3}',
'\u{f4}', '\u{151}', '\u{f6}', '\u{f7}', '\u{159}', '\u{16f}', '\u{fa}', '\u{171}', '\u{fc}',
'\u{fd}', '\u{163}', '\u{2d9}',
];
const UNICODE_TO_ISO_8859_2: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(164, 164),
(167, 167),
(168, 168),
(173, 173),
(176, 176),
(180, 180),
(184, 184),
(193, 193),
(194, 194),
(196, 196),
(199, 199),
(201, 201),
(203, 203),
(205, 205),
(206, 206),
(211, 211),
(212, 212),
(214, 214),
(215, 215),
(218, 218),
(220, 220),
(221, 221),
(223, 223),
(225, 225),
(226, 226),
(228, 228),
(231, 231),
(233, 233),
(235, 235),
(237, 237),
(238, 238),
(243, 243),
(244, 244),
(246, 246),
(247, 247),
(250, 250),
(252, 252),
(253, 253),
(258, 195),
(259, 227),
(260, 161),
(261, 177),
(262, 198),
(263, 230),
(268, 200),
(269, 232),
(270, 207),
(271, 239),
(272, 208),
(273, 240),
(280, 202),
(281, 234),
(282, 204),
(283, 236),
(313, 197),
(314, 229),
(317, 165),
(318, 181),
(321, 163),
(322, 179),
(323, 209),
(324, 241),
(327, 210),
(328, 242),
(336, 213),
(337, 245),
(340, 192),
(341, 224),
(344, 216),
(345, 248),
(346, 166),
(347, 182),
(350, 170),
(351, 186),
(352, 169),
(353, 185),
(354, 222),
(355, 254),
(356, 171),
(357, 187),
(366, 217),
(367, 249),
(368, 219),
(369, 251),
(377, 172),
(378, 188),
(379, 175),
(380, 191),
(381, 174),
(382, 190),
(711, 183),
(728, 162),
(729, 255),
(731, 178),
(733, 189),
];
const ISO_8859_3_TO_UNICODE: [char; 128] = [
'\u{80}',
'\u{81}',
'\u{82}',
'\u{83}',
'\u{84}',
'\u{85}',
'\u{86}',
'\u{87}',
'\u{88}',
'\u{89}',
'\u{8a}',
'\u{8b}',
'\u{8c}',
'\u{8d}',
'\u{8e}',
'\u{8f}',
'\u{90}',
'\u{91}',
'\u{92}',
'\u{93}',
'\u{94}',
'\u{95}',
'\u{96}',
'\u{97}',
'\u{98}',
'\u{99}',
'\u{9a}',
'\u{9b}',
'\u{9c}',
'\u{9d}',
'\u{9e}',
'\u{9f}',
'\u{a0}',
'\u{126}',
'\u{2d8}',
'\u{a3}',
'\u{a4}',
char::REPLACEMENT_CHARACTER,
'\u{124}',
'\u{a7}',
'\u{a8}',
'\u{130}',
'\u{15e}',
'\u{11e}',
'\u{134}',
'\u{ad}',
char::REPLACEMENT_CHARACTER,
'\u{17b}',
'\u{b0}',
'\u{127}',
'\u{b2}',
'\u{b3}',
'\u{b4}',
'\u{b5}',
'\u{125}',
'\u{b7}',
'\u{b8}',
'\u{131}',
'\u{15f}',
'\u{11f}',
'\u{135}',
'\u{bd}',
char::REPLACEMENT_CHARACTER,
'\u{17c}',
'\u{c0}',
'\u{c1}',
'\u{c2}',
char::REPLACEMENT_CHARACTER,
'\u{c4}',
'\u{10a}',
'\u{108}',
'\u{c7}',
'\u{c8}',
'\u{c9}',
'\u{ca}',
'\u{cb}',
'\u{cc}',
'\u{cd}',
'\u{ce}',
'\u{cf}',
char::REPLACEMENT_CHARACTER,
'\u{d1}',
'\u{d2}',
'\u{d3}',
'\u{d4}',
'\u{120}',
'\u{d6}',
'\u{d7}',
'\u{11c}',
'\u{d9}',
'\u{da}',
'\u{db}',
'\u{dc}',
'\u{16c}',
'\u{15c}',
'\u{df}',
'\u{e0}',
'\u{e1}',
'\u{e2}',
char::REPLACEMENT_CHARACTER,
'\u{e4}',
'\u{10b}',
'\u{109}',
'\u{e7}',
'\u{e8}',
'\u{e9}',
'\u{ea}',
'\u{eb}',
'\u{ec}',
'\u{ed}',
'\u{ee}',
'\u{ef}',
char::REPLACEMENT_CHARACTER,
'\u{f1}',
'\u{f2}',
'\u{f3}',
'\u{f4}',
'\u{121}',
'\u{f6}',
'\u{f7}',
'\u{11d}',
'\u{f9}',
'\u{fa}',
'\u{fb}',
'\u{fc}',
'\u{16d}',
'\u{15d}',
'\u{2d9}',
];
const UNICODE_TO_ISO_8859_3: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(163, 163),
(164, 164),
(167, 167),
(168, 168),
(173, 173),
(176, 176),
(178, 178),
(179, 179),
(180, 180),
(181, 181),
(183, 183),
(184, 184),
(189, 189),
(192, 192),
(193, 193),
(194, 194),
(196, 196),
(199, 199),
(200, 200),
(201, 201),
(202, 202),
(203, 203),
(204, 204),
(205, 205),
(206, 206),
(207, 207),
(209, 209),
(210, 210),
(211, 211),
(212, 212),
(214, 214),
(215, 215),
(217, 217),
(218, 218),
(219, 219),
(220, 220),
(223, 223),
(224, 224),
(225, 225),
(226, 226),
(228, 228),
(231, 231),
(232, 232),
(233, 233),
(234, 234),
(235, 235),
(236, 236),
(237, 237),
(238, 238),
(239, 239),
(241, 241),
(242, 242),
(243, 243),
(244, 244),
(246, 246),
(247, 247),
(249, 249),
(250, 250),
(251, 251),
(252, 252),
(264, 198),
(265, 230),
(266, 197),
(267, 229),
(284, 216),
(285, 248),
(286, 171),
(287, 187),
(288, 213),
(289, 245),
(292, 166),
(293, 182),
(294, 161),
(295, 177),
(304, 169),
(305, 185),
(308, 172),
(309, 188),
(348, 222),
(349, 254),
(350, 170),
(351, 186),
(364, 221),
(365, 253),
(379, 175),
(380, 191),
(728, 162),
(729, 255),
];
const ISO_8859_4_TO_UNICODE: [char; 128] = [
'\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{85}', '\u{86}', '\u{87}', '\u{88}',
'\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{8d}', '\u{8e}', '\u{8f}', '\u{90}', '\u{91}',
'\u{92}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{97}', '\u{98}', '\u{99}', '\u{9a}',
'\u{9b}', '\u{9c}', '\u{9d}', '\u{9e}', '\u{9f}', '\u{a0}', '\u{104}', '\u{138}', '\u{156}',
'\u{a4}', '\u{128}', '\u{13b}', '\u{a7}', '\u{a8}', '\u{160}', '\u{112}', '\u{122}', '\u{166}',
'\u{ad}', '\u{17d}', '\u{af}', '\u{b0}', '\u{105}', '\u{2db}', '\u{157}', '\u{b4}', '\u{129}',
'\u{13c}', '\u{2c7}', '\u{b8}', '\u{161}', '\u{113}', '\u{123}', '\u{167}', '\u{14a}',
'\u{17e}', '\u{14b}', '\u{100}', '\u{c1}', '\u{c2}', '\u{c3}', '\u{c4}', '\u{c5}', '\u{c6}',
'\u{12e}', '\u{10c}', '\u{c9}', '\u{118}', '\u{cb}', '\u{116}', '\u{cd}', '\u{ce}', '\u{12a}',
'\u{110}', '\u{145}', '\u{14c}', '\u{136}', '\u{d4}', '\u{d5}', '\u{d6}', '\u{d7}', '\u{d8}',
'\u{172}', '\u{da}', '\u{db}', '\u{dc}', '\u{168}', '\u{16a}', '\u{df}', '\u{101}', '\u{e1}',
'\u{e2}', '\u{e3}', '\u{e4}', '\u{e5}', '\u{e6}', '\u{12f}', '\u{10d}', '\u{e9}', '\u{119}',
'\u{eb}', '\u{117}', '\u{ed}', '\u{ee}', '\u{12b}', '\u{111}', '\u{146}', '\u{14d}', '\u{137}',
'\u{f4}', '\u{f5}', '\u{f6}', '\u{f7}', '\u{f8}', '\u{173}', '\u{fa}', '\u{fb}', '\u{fc}',
'\u{169}', '\u{16b}', '\u{2d9}',
];
const UNICODE_TO_ISO_8859_4: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(164, 164),
(167, 167),
(168, 168),
(173, 173),
(175, 175),
(176, 176),
(180, 180),
(184, 184),
(193, 193),
(194, 194),
(195, 195),
(196, 196),
(197, 197),
(198, 198),
(201, 201),
(203, 203),
(205, 205),
(206, 206),
(212, 212),
(213, 213),
(214, 214),
(215, 215),
(216, 216),
(218, 218),
(219, 219),
(220, 220),
(223, 223),
(225, 225),
(226, 226),
(227, 227),
(228, 228),
(229, 229),
(230, 230),
(233, 233),
(235, 235),
(237, 237),
(238, 238),
(244, 244),
(245, 245),
(246, 246),
(247, 247),
(248, 248),
(250, 250),
(251, 251),
(252, 252),
(256, 192),
(257, 224),
(260, 161),
(261, 177),
(268, 200),
(269, 232),
(272, 208),
(273, 240),
(274, 170),
(275, 186),
(278, 204),
(279, 236),
(280, 202),
(281, 234),
(290, 171),
(291, 187),
(296, 165),
(297, 181),
(298, 207),
(299, 239),
(302, 199),
(303, 231),
(310, 211),
(311, 243),
(312, 162),
(315, 166),
(316, 182),
(325, 209),
(326, 241),
(330, 189),
(331, 191),
(332, 210),
(333, 242),
(342, 163),
(343, 179),
(352, 169),
(353, 185),
(358, 172),
(359, 188),
(360, 221),
(361, 253),
(362, 222),
(363, 254),
(370, 217),
(371, 249),
(381, 174),
(382, 190),
(711, 183),
(729, 255),
(731, 178),
];
const ISO_8859_5_TO_UNICODE: [char; 128] = [
'\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{85}', '\u{86}', '\u{87}', '\u{88}',
'\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{8d}', '\u{8e}', '\u{8f}', '\u{90}', '\u{91}',
'\u{92}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{97}', '\u{98}', '\u{99}', '\u{9a}',
'\u{9b}', '\u{9c}', '\u{9d}', '\u{9e}', '\u{9f}', '\u{a0}', '\u{401}', '\u{402}', '\u{403}',
'\u{404}', '\u{405}', '\u{406}', '\u{407}', '\u{408}', '\u{409}', '\u{40a}', '\u{40b}',
'\u{40c}', '\u{ad}', '\u{40e}', '\u{40f}', '\u{410}', '\u{411}', '\u{412}', '\u{413}',
'\u{414}', '\u{415}', '\u{416}', '\u{417}', '\u{418}', '\u{419}', '\u{41a}', '\u{41b}',
'\u{41c}', '\u{41d}', '\u{41e}', '\u{41f}', '\u{420}', '\u{421}', '\u{422}', '\u{423}',
'\u{424}', '\u{425}', '\u{426}', '\u{427}', '\u{428}', '\u{429}', '\u{42a}', '\u{42b}',
'\u{42c}', '\u{42d}', '\u{42e}', '\u{42f}', '\u{430}', '\u{431}', '\u{432}', '\u{433}',
'\u{434}', '\u{435}', '\u{436}', '\u{437}', '\u{438}', '\u{439}', '\u{43a}', '\u{43b}',
'\u{43c}', '\u{43d}', '\u{43e}', '\u{43f}', '\u{440}', '\u{441}', '\u{442}', '\u{443}',
'\u{444}', '\u{445}', '\u{446}', '\u{447}', '\u{448}', '\u{449}', '\u{44a}', '\u{44b}',
'\u{44c}', '\u{44d}', '\u{44e}', '\u{44f}', '\u{2116}', '\u{451}', '\u{452}', '\u{453}',
'\u{454}', '\u{455}', '\u{456}', '\u{457}', '\u{458}', '\u{459}', '\u{45a}', '\u{45b}',
'\u{45c}', '\u{a7}', '\u{45e}', '\u{45f}',
];
const UNICODE_TO_ISO_8859_5: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(167, 253),
(173, 173),
(1025, 161),
(1026, 162),
(1027, 163),
(1028, 164),
(1029, 165),
(1030, 166),
(1031, 167),
(1032, 168),
(1033, 169),
(1034, 170),
(1035, 171),
(1036, 172),
(1038, 174),
(1039, 175),
(1040, 176),
(1041, 177),
(1042, 178),
(1043, 179),
(1044, 180),
(1045, 181),
(1046, 182),
(1047, 183),
(1048, 184),
(1049, 185),
(1050, 186),
(1051, 187),
(1052, 188),
(1053, 189),
(1054, 190),
(1055, 191),
(1056, 192),
(1057, 193),
(1058, 194),
(1059, 195),
(1060, 196),
(1061, 197),
(1062, 198),
(1063, 199),
(1064, 200),
(1065, 201),
(1066, 202),
(1067, 203),
(1068, 204),
(1069, 205),
(1070, 206),
(1071, 207),
(1072, 208),
(1073, 209),
(1074, 210),
(1075, 211),
(1076, 212),
(1077, 213),
(1078, 214),
(1079, 215),
(1080, 216),
(1081, 217),
(1082, 218),
(1083, 219),
(1084, 220),
(1085, 221),
(1086, 222),
(1087, 223),
(1088, 224),
(1089, 225),
(1090, 226),
(1091, 227),
(1092, 228),
(1093, 229),
(1094, 230),
(1095, 231),
(1096, 232),
(1097, 233),
(1098, 234),
(1099, 235),
(1100, 236),
(1101, 237),
(1102, 238),
(1103, 239),
(1105, 241),
(1106, 242),
(1107, 243),
(1108, 244),
(1109, 245),
(1110, 246),
(1111, 247),
(1112, 248),
(1113, 249),
(1114, 250),
(1115, 251),
(1116, 252),
(1118, 254),
(1119, 255),
(8470, 240),
];
const ISO_8859_6_TO_UNICODE: [char; 128] = [
'\u{80}',
'\u{81}',
'\u{82}',
'\u{83}',
'\u{84}',
'\u{85}',
'\u{86}',
'\u{87}',
'\u{88}',
'\u{89}',
'\u{8a}',
'\u{8b}',
'\u{8c}',
'\u{8d}',
'\u{8e}',
'\u{8f}',
'\u{90}',
'\u{91}',
'\u{92}',
'\u{93}',
'\u{94}',
'\u{95}',
'\u{96}',
'\u{97}',
'\u{98}',
'\u{99}',
'\u{9a}',
'\u{9b}',
'\u{9c}',
'\u{9d}',
'\u{9e}',
'\u{9f}',
'\u{a0}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{a4}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{60c}',
'\u{ad}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{61b}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{61f}',
char::REPLACEMENT_CHARACTER,
'\u{621}',
'\u{622}',
'\u{623}',
'\u{624}',
'\u{625}',
'\u{626}',
'\u{627}',
'\u{628}',
'\u{629}',
'\u{62a}',
'\u{62b}',
'\u{62c}',
'\u{62d}',
'\u{62e}',
'\u{62f}',
'\u{630}',
'\u{631}',
'\u{632}',
'\u{633}',
'\u{634}',
'\u{635}',
'\u{636}',
'\u{637}',
'\u{638}',
'\u{639}',
'\u{63a}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{640}',
'\u{641}',
'\u{642}',
'\u{643}',
'\u{644}',
'\u{645}',
'\u{646}',
'\u{647}',
'\u{648}',
'\u{649}',
'\u{64a}',
'\u{64b}',
'\u{64c}',
'\u{64d}',
'\u{64e}',
'\u{64f}',
'\u{650}',
'\u{651}',
'\u{652}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
];
const UNICODE_TO_ISO_8859_6: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(164, 164),
(173, 173),
(1548, 172),
(1563, 187),
(1567, 191),
(1569, 193),
(1570, 194),
(1571, 195),
(1572, 196),
(1573, 197),
(1574, 198),
(1575, 199),
(1576, 200),
(1577, 201),
(1578, 202),
(1579, 203),
(1580, 204),
(1581, 205),
(1582, 206),
(1583, 207),
(1584, 208),
(1585, 209),
(1586, 210),
(1587, 211),
(1588, 212),
(1589, 213),
(1590, 214),
(1591, 215),
(1592, 216),
(1593, 217),
(1594, 218),
(1600, 224),
(1601, 225),
(1602, 226),
(1603, 227),
(1604, 228),
(1605, 229),
(1606, 230),
(1607, 231),
(1608, 232),
(1609, 233),
(1610, 234),
(1611, 235),
(1612, 236),
(1613, 237),
(1614, 238),
(1615, 239),
(1616, 240),
(1617, 241),
(1618, 242),
];
const ISO_8859_7_TO_UNICODE: [char; 128] = [
'\u{80}',
'\u{81}',
'\u{82}',
'\u{83}',
'\u{84}',
'\u{85}',
'\u{86}',
'\u{87}',
'\u{88}',
'\u{89}',
'\u{8a}',
'\u{8b}',
'\u{8c}',
'\u{8d}',
'\u{8e}',
'\u{8f}',
'\u{90}',
'\u{91}',
'\u{92}',
'\u{93}',
'\u{94}',
'\u{95}',
'\u{96}',
'\u{97}',
'\u{98}',
'\u{99}',
'\u{9a}',
'\u{9b}',
'\u{9c}',
'\u{9d}',
'\u{9e}',
'\u{9f}',
'\u{a0}',
'\u{2018}',
'\u{2019}',
'\u{a3}',
'\u{20ac}',
'\u{20af}',
'\u{a6}',
'\u{a7}',
'\u{a8}',
'\u{a9}',
'\u{37a}',
'\u{ab}',
'\u{ac}',
'\u{ad}',
char::REPLACEMENT_CHARACTER,
'\u{2015}',
'\u{b0}',
'\u{b1}',
'\u{b2}',
'\u{b3}',
'\u{384}',
'\u{385}',
'\u{386}',
'\u{b7}',
'\u{388}',
'\u{389}',
'\u{38a}',
'\u{bb}',
'\u{38c}',
'\u{bd}',
'\u{38e}',
'\u{38f}',
'\u{390}',
'\u{391}',
'\u{392}',
'\u{393}',
'\u{394}',
'\u{395}',
'\u{396}',
'\u{397}',
'\u{398}',
'\u{399}',
'\u{39a}',
'\u{39b}',
'\u{39c}',
'\u{39d}',
'\u{39e}',
'\u{39f}',
'\u{3a0}',
'\u{3a1}',
char::REPLACEMENT_CHARACTER,
'\u{3a3}',
'\u{3a4}',
'\u{3a5}',
'\u{3a6}',
'\u{3a7}',
'\u{3a8}',
'\u{3a9}',
'\u{3aa}',
'\u{3ab}',
'\u{3ac}',
'\u{3ad}',
'\u{3ae}',
'\u{3af}',
'\u{3b0}',
'\u{3b1}',
'\u{3b2}',
'\u{3b3}',
'\u{3b4}',
'\u{3b5}',
'\u{3b6}',
'\u{3b7}',
'\u{3b8}',
'\u{3b9}',
'\u{3ba}',
'\u{3bb}',
'\u{3bc}',
'\u{3bd}',
'\u{3be}',
'\u{3bf}',
'\u{3c0}',
'\u{3c1}',
'\u{3c2}',
'\u{3c3}',
'\u{3c4}',
'\u{3c5}',
'\u{3c6}',
'\u{3c7}',
'\u{3c8}',
'\u{3c9}',
'\u{3ca}',
'\u{3cb}',
'\u{3cc}',
'\u{3cd}',
'\u{3ce}',
char::REPLACEMENT_CHARACTER,
];
const UNICODE_TO_ISO_8859_7: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(163, 163),
(166, 166),
(167, 167),
(168, 168),
(169, 169),
(171, 171),
(172, 172),
(173, 173),
(176, 176),
(177, 177),
(178, 178),
(179, 179),
(183, 183),
(187, 187),
(189, 189),
(890, 170),
(900, 180),
(901, 181),
(902, 182),
(904, 184),
(905, 185),
(906, 186),
(908, 188),
(910, 190),
(911, 191),
(912, 192),
(913, 193),
(914, 194),
(915, 195),
(916, 196),
(917, 197),
(918, 198),
(919, 199),
(920, 200),
(921, 201),
(922, 202),
(923, 203),
(924, 204),
(925, 205),
(926, 206),
(927, 207),
(928, 208),
(929, 209),
(931, 211),
(932, 212),
(933, 213),
(934, 214),
(935, 215),
(936, 216),
(937, 217),
(938, 218),
(939, 219),
(940, 220),
(941, 221),
(942, 222),
(943, 223),
(944, 224),
(945, 225),
(946, 226),
(947, 227),
(948, 228),
(949, 229),
(950, 230),
(951, 231),
(952, 232),
(953, 233),
(954, 234),
(955, 235),
(956, 236),
(957, 237),
(958, 238),
(959, 239),
(960, 240),
(961, 241),
(962, 242),
(963, 243),
(964, 244),
(965, 245),
(966, 246),
(967, 247),
(968, 248),
(969, 249),
(970, 250),
(971, 251),
(972, 252),
(973, 253),
(974, 254),
(8213, 175),
(8216, 161),
(8217, 162),
(8364, 164),
(8367, 165),
];
const ISO_8859_8_TO_UNICODE: [char; 128] = [
'\u{80}',
'\u{81}',
'\u{82}',
'\u{83}',
'\u{84}',
'\u{85}',
'\u{86}',
'\u{87}',
'\u{88}',
'\u{89}',
'\u{8a}',
'\u{8b}',
'\u{8c}',
'\u{8d}',
'\u{8e}',
'\u{8f}',
'\u{90}',
'\u{91}',
'\u{92}',
'\u{93}',
'\u{94}',
'\u{95}',
'\u{96}',
'\u{97}',
'\u{98}',
'\u{99}',
'\u{9a}',
'\u{9b}',
'\u{9c}',
'\u{9d}',
'\u{9e}',
'\u{9f}',
'\u{a0}',
char::REPLACEMENT_CHARACTER,
'\u{a2}',
'\u{a3}',
'\u{a4}',
'\u{a5}',
'\u{a6}',
'\u{a7}',
'\u{a8}',
'\u{a9}',
'\u{d7}',
'\u{ab}',
'\u{ac}',
'\u{ad}',
'\u{ae}',
'\u{af}',
'\u{b0}',
'\u{b1}',
'\u{b2}',
'\u{b3}',
'\u{b4}',
'\u{b5}',
'\u{b6}',
'\u{b7}',
'\u{b8}',
'\u{b9}',
'\u{f7}',
'\u{bb}',
'\u{bc}',
'\u{bd}',
'\u{be}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{2017}',
'\u{5d0}',
'\u{5d1}',
'\u{5d2}',
'\u{5d3}',
'\u{5d4}',
'\u{5d5}',
'\u{5d6}',
'\u{5d7}',
'\u{5d8}',
'\u{5d9}',
'\u{5da}',
'\u{5db}',
'\u{5dc}',
'\u{5dd}',
'\u{5de}',
'\u{5df}',
'\u{5e0}',
'\u{5e1}',
'\u{5e2}',
'\u{5e3}',
'\u{5e4}',
'\u{5e5}',
'\u{5e6}',
'\u{5e7}',
'\u{5e8}',
'\u{5e9}',
'\u{5ea}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{200e}',
'\u{200f}',
char::REPLACEMENT_CHARACTER,
];
const UNICODE_TO_ISO_8859_8: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(162, 162),
(163, 163),
(164, 164),
(165, 165),
(166, 166),
(167, 167),
(168, 168),
(169, 169),
(171, 171),
(172, 172),
(173, 173),
(174, 174),
(175, 175),
(176, 176),
(177, 177),
(178, 178),
(179, 179),
(180, 180),
(181, 181),
(182, 182),
(183, 183),
(184, 184),
(185, 185),
(187, 187),
(188, 188),
(189, 189),
(190, 190),
(215, 170),
(247, 186),
(1488, 224),
(1489, 225),
(1490, 226),
(1491, 227),
(1492, 228),
(1493, 229),
(1494, 230),
(1495, 231),
(1496, 232),
(1497, 233),
(1498, 234),
(1499, 235),
(1500, 236),
(1501, 237),
(1502, 238),
(1503, 239),
(1504, 240),
(1505, 241),
(1506, 242),
(1507, 243),
(1508, 244),
(1509, 245),
(1510, 246),
(1511, 247),
(1512, 248),
(1513, 249),
(1514, 250),
(8206, 253),
(8207, 254),
(8215, 223),
];
const ISO_8859_9_TO_UNICODE: [char; 128] = [
'\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{85}', '\u{86}', '\u{87}', '\u{88}',
'\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{8d}', '\u{8e}', '\u{8f}', '\u{90}', '\u{91}',
'\u{92}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{97}', '\u{98}', '\u{99}', '\u{9a}',
'\u{9b}', '\u{9c}', '\u{9d}', '\u{9e}', '\u{9f}', '\u{a0}', '\u{a1}', '\u{a2}', '\u{a3}',
'\u{a4}', '\u{a5}', '\u{a6}', '\u{a7}', '\u{a8}', '\u{a9}', '\u{aa}', '\u{ab}', '\u{ac}',
'\u{ad}', '\u{ae}', '\u{af}', '\u{b0}', '\u{b1}', '\u{b2}', '\u{b3}', '\u{b4}', '\u{b5}',
'\u{b6}', '\u{b7}', '\u{b8}', '\u{b9}', '\u{ba}', '\u{bb}', '\u{bc}', '\u{bd}', '\u{be}',
'\u{bf}', '\u{c0}', '\u{c1}', '\u{c2}', '\u{c3}', '\u{c4}', '\u{c5}', '\u{c6}', '\u{c7}',
'\u{c8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{cc}', '\u{cd}', '\u{ce}', '\u{cf}', '\u{11e}',
'\u{d1}', '\u{d2}', '\u{d3}', '\u{d4}', '\u{d5}', '\u{d6}', '\u{d7}', '\u{d8}', '\u{d9}',
'\u{da}', '\u{db}', '\u{dc}', '\u{130}', '\u{15e}', '\u{df}', '\u{e0}', '\u{e1}', '\u{e2}',
'\u{e3}', '\u{e4}', '\u{e5}', '\u{e6}', '\u{e7}', '\u{e8}', '\u{e9}', '\u{ea}', '\u{eb}',
'\u{ec}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{11f}', '\u{f1}', '\u{f2}', '\u{f3}', '\u{f4}',
'\u{f5}', '\u{f6}', '\u{f7}', '\u{f8}', '\u{f9}', '\u{fa}', '\u{fb}', '\u{fc}', '\u{131}',
'\u{15f}', '\u{ff}',
];
const UNICODE_TO_ISO_8859_9: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(161, 161),
(162, 162),
(163, 163),
(164, 164),
(165, 165),
(166, 166),
(167, 167),
(168, 168),
(169, 169),
(170, 170),
(171, 171),
(172, 172),
(173, 173),
(174, 174),
(175, 175),
(176, 176),
(177, 177),
(178, 178),
(179, 179),
(180, 180),
(181, 181),
(182, 182),
(183, 183),
(184, 184),
(185, 185),
(186, 186),
(187, 187),
(188, 188),
(189, 189),
(190, 190),
(191, 191),
(192, 192),
(193, 193),
(194, 194),
(195, 195),
(196, 196),
(197, 197),
(198, 198),
(199, 199),
(200, 200),
(201, 201),
(202, 202),
(203, 203),
(204, 204),
(205, 205),
(206, 206),
(207, 207),
(209, 209),
(210, 210),
(211, 211),
(212, 212),
(213, 213),
(214, 214),
(215, 215),
(216, 216),
(217, 217),
(218, 218),
(219, 219),
(220, 220),
(223, 223),
(224, 224),
(225, 225),
(226, 226),
(227, 227),
(228, 228),
(229, 229),
(230, 230),
(231, 231),
(232, 232),
(233, 233),
(234, 234),
(235, 235),
(236, 236),
(237, 237),
(238, 238),
(239, 239),
(241, 241),
(242, 242),
(243, 243),
(244, 244),
(245, 245),
(246, 246),
(247, 247),
(248, 248),
(249, 249),
(250, 250),
(251, 251),
(252, 252),
(255, 255),
(286, 208),
(287, 240),
(304, 221),
(305, 253),
(350, 222),
(351, 254),
];
const ISO_8859_10_TO_UNICODE: [char; 128] = [
'\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{85}', '\u{86}', '\u{87}', '\u{88}',
'\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{8d}', '\u{8e}', '\u{8f}', '\u{90}', '\u{91}',
'\u{92}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{97}', '\u{98}', '\u{99}', '\u{9a}',
'\u{9b}', '\u{9c}', '\u{9d}', '\u{9e}', '\u{9f}', '\u{a0}', '\u{104}', '\u{112}', '\u{122}',
'\u{12a}', '\u{128}', '\u{136}', '\u{a7}', '\u{13b}', '\u{110}', '\u{160}', '\u{166}',
'\u{17d}', '\u{ad}', '\u{16a}', '\u{14a}', '\u{b0}', '\u{105}', '\u{113}', '\u{123}',
'\u{12b}', '\u{129}', '\u{137}', '\u{b7}', '\u{13c}', '\u{111}', '\u{161}', '\u{167}',
'\u{17e}', '\u{2015}', '\u{16b}', '\u{14b}', '\u{100}', '\u{c1}', '\u{c2}', '\u{c3}', '\u{c4}',
'\u{c5}', '\u{c6}', '\u{12e}', '\u{10c}', '\u{c9}', '\u{118}', '\u{cb}', '\u{116}', '\u{cd}',
'\u{ce}', '\u{cf}', '\u{d0}', '\u{145}', '\u{14c}', '\u{d3}', '\u{d4}', '\u{d5}', '\u{d6}',
'\u{168}', '\u{d8}', '\u{172}', '\u{da}', '\u{db}', '\u{dc}', '\u{dd}', '\u{de}', '\u{df}',
'\u{101}', '\u{e1}', '\u{e2}', '\u{e3}', '\u{e4}', '\u{e5}', '\u{e6}', '\u{12f}', '\u{10d}',
'\u{e9}', '\u{119}', '\u{eb}', '\u{117}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{f0}', '\u{146}',
'\u{14d}', '\u{f3}', '\u{f4}', '\u{f5}', '\u{f6}', '\u{169}', '\u{f8}', '\u{173}', '\u{fa}',
'\u{fb}', '\u{fc}', '\u{fd}', '\u{fe}', '\u{138}',
];
const UNICODE_TO_ISO_8859_10: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(167, 167),
(173, 173),
(176, 176),
(183, 183),
(193, 193),
(194, 194),
(195, 195),
(196, 196),
(197, 197),
(198, 198),
(201, 201),
(203, 203),
(205, 205),
(206, 206),
(207, 207),
(208, 208),
(211, 211),
(212, 212),
(213, 213),
(214, 214),
(216, 216),
(218, 218),
(219, 219),
(220, 220),
(221, 221),
(222, 222),
(223, 223),
(225, 225),
(226, 226),
(227, 227),
(228, 228),
(229, 229),
(230, 230),
(233, 233),
(235, 235),
(237, 237),
(238, 238),
(239, 239),
(240, 240),
(243, 243),
(244, 244),
(245, 245),
(246, 246),
(248, 248),
(250, 250),
(251, 251),
(252, 252),
(253, 253),
(254, 254),
(256, 192),
(257, 224),
(260, 161),
(261, 177),
(268, 200),
(269, 232),
(272, 169),
(273, 185),
(274, 162),
(275, 178),
(278, 204),
(279, 236),
(280, 202),
(281, 234),
(290, 163),
(291, 179),
(296, 165),
(297, 181),
(298, 164),
(299, 180),
(302, 199),
(303, 231),
(310, 166),
(311, 182),
(312, 255),
(315, 168),
(316, 184),
(325, 209),
(326, 241),
(330, 175),
(331, 191),
(332, 210),
(333, 242),
(352, 170),
(353, 186),
(358, 171),
(359, 187),
(360, 215),
(361, 247),
(362, 174),
(363, 190),
(370, 217),
(371, 249),
(381, 172),
(382, 188),
(8213, 189),
];
const ISO_8859_11_TO_UNICODE: [char; 128] = [
'\u{80}',
'\u{81}',
'\u{82}',
'\u{83}',
'\u{84}',
'\u{85}',
'\u{86}',
'\u{87}',
'\u{88}',
'\u{89}',
'\u{8a}',
'\u{8b}',
'\u{8c}',
'\u{8d}',
'\u{8e}',
'\u{8f}',
'\u{90}',
'\u{91}',
'\u{92}',
'\u{93}',
'\u{94}',
'\u{95}',
'\u{96}',
'\u{97}',
'\u{98}',
'\u{99}',
'\u{9a}',
'\u{9b}',
'\u{9c}',
'\u{9d}',
'\u{9e}',
'\u{9f}',
'\u{a0}',
'\u{e01}',
'\u{e02}',
'\u{e03}',
'\u{e04}',
'\u{e05}',
'\u{e06}',
'\u{e07}',
'\u{e08}',
'\u{e09}',
'\u{e0a}',
'\u{e0b}',
'\u{e0c}',
'\u{e0d}',
'\u{e0e}',
'\u{e0f}',
'\u{e10}',
'\u{e11}',
'\u{e12}',
'\u{e13}',
'\u{e14}',
'\u{e15}',
'\u{e16}',
'\u{e17}',
'\u{e18}',
'\u{e19}',
'\u{e1a}',
'\u{e1b}',
'\u{e1c}',
'\u{e1d}',
'\u{e1e}',
'\u{e1f}',
'\u{e20}',
'\u{e21}',
'\u{e22}',
'\u{e23}',
'\u{e24}',
'\u{e25}',
'\u{e26}',
'\u{e27}',
'\u{e28}',
'\u{e29}',
'\u{e2a}',
'\u{e2b}',
'\u{e2c}',
'\u{e2d}',
'\u{e2e}',
'\u{e2f}',
'\u{e30}',
'\u{e31}',
'\u{e32}',
'\u{e33}',
'\u{e34}',
'\u{e35}',
'\u{e36}',
'\u{e37}',
'\u{e38}',
'\u{e39}',
'\u{e3a}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{e3f}',
'\u{e40}',
'\u{e41}',
'\u{e42}',
'\u{e43}',
'\u{e44}',
'\u{e45}',
'\u{e46}',
'\u{e47}',
'\u{e48}',
'\u{e49}',
'\u{e4a}',
'\u{e4b}',
'\u{e4c}',
'\u{e4d}',
'\u{e4e}',
'\u{e4f}',
'\u{e50}',
'\u{e51}',
'\u{e52}',
'\u{e53}',
'\u{e54}',
'\u{e55}',
'\u{e56}',
'\u{e57}',
'\u{e58}',
'\u{e59}',
'\u{e5a}',
'\u{e5b}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
];
const UNICODE_TO_ISO_8859_11: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(3585, 161),
(3586, 162),
(3587, 163),
(3588, 164),
(3589, 165),
(3590, 166),
(3591, 167),
(3592, 168),
(3593, 169),
(3594, 170),
(3595, 171),
(3596, 172),
(3597, 173),
(3598, 174),
(3599, 175),
(3600, 176),
(3601, 177),
(3602, 178),
(3603, 179),
(3604, 180),
(3605, 181),
(3606, 182),
(3607, 183),
(3608, 184),
(3609, 185),
(3610, 186),
(3611, 187),
(3612, 188),
(3613, 189),
(3614, 190),
(3615, 191),
(3616, 192),
(3617, 193),
(3618, 194),
(3619, 195),
(3620, 196),
(3621, 197),
(3622, 198),
(3623, 199),
(3624, 200),
(3625, 201),
(3626, 202),
(3627, 203),
(3628, 204),
(3629, 205),
(3630, 206),
(3631, 207),
(3632, 208),
(3633, 209),
(3634, 210),
(3635, 211),
(3636, 212),
(3637, 213),
(3638, 214),
(3639, 215),
(3640, 216),
(3641, 217),
(3642, 218),
(3647, 223),
(3648, 224),
(3649, 225),
(3650, 226),
(3651, 227),
(3652, 228),
(3653, 229),
(3654, 230),
(3655, 231),
(3656, 232),
(3657, 233),
(3658, 234),
(3659, 235),
(3660, 236),
(3661, 237),
(3662, 238),
(3663, 239),
(3664, 240),
(3665, 241),
(3666, 242),
(3667, 243),
(3668, 244),
(3669, 245),
(3670, 246),
(3671, 247),
(3672, 248),
(3673, 249),
(3674, 250),
(3675, 251),
];
const ISO_8859_13_TO_UNICODE: [char; 128] = [
'\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{85}', '\u{86}', '\u{87}', '\u{88}',
'\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{8d}', '\u{8e}', '\u{8f}', '\u{90}', '\u{91}',
'\u{92}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{97}', '\u{98}', '\u{99}', '\u{9a}',
'\u{9b}', '\u{9c}', '\u{9d}', '\u{9e}', '\u{9f}', '\u{a0}', '\u{201d}', '\u{a2}', '\u{a3}',
'\u{a4}', '\u{201e}', '\u{a6}', '\u{a7}', '\u{d8}', '\u{a9}', '\u{156}', '\u{ab}', '\u{ac}',
'\u{ad}', '\u{ae}', '\u{c6}', '\u{b0}', '\u{b1}', '\u{b2}', '\u{b3}', '\u{201c}', '\u{b5}',
'\u{b6}', '\u{b7}', '\u{f8}', '\u{b9}', '\u{157}', '\u{bb}', '\u{bc}', '\u{bd}', '\u{be}',
'\u{e6}', '\u{104}', '\u{12e}', '\u{100}', '\u{106}', '\u{c4}', '\u{c5}', '\u{118}', '\u{112}',
'\u{10c}', '\u{c9}', '\u{179}', '\u{116}', '\u{122}', '\u{136}', '\u{12a}', '\u{13b}',
'\u{160}', '\u{143}', '\u{145}', '\u{d3}', '\u{14c}', '\u{d5}', '\u{d6}', '\u{d7}', '\u{172}',
'\u{141}', '\u{15a}', '\u{16a}', '\u{dc}', '\u{17b}', '\u{17d}', '\u{df}', '\u{105}',
'\u{12f}', '\u{101}', '\u{107}', '\u{e4}', '\u{e5}', '\u{119}', '\u{113}', '\u{10d}', '\u{e9}',
'\u{17a}', '\u{117}', '\u{123}', '\u{137}', '\u{12b}', '\u{13c}', '\u{161}', '\u{144}',
'\u{146}', '\u{f3}', '\u{14d}', '\u{f5}', '\u{f6}', '\u{f7}', '\u{173}', '\u{142}', '\u{15b}',
'\u{16b}', '\u{fc}', '\u{17c}', '\u{17e}', '\u{2019}',
];
const UNICODE_TO_ISO_8859_13: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(162, 162),
(163, 163),
(164, 164),
(166, 166),
(167, 167),
(169, 169),
(171, 171),
(172, 172),
(173, 173),
(174, 174),
(176, 176),
(177, 177),
(178, 178),
(179, 179),
(181, 181),
(182, 182),
(183, 183),
(185, 185),
(187, 187),
(188, 188),
(189, 189),
(190, 190),
(196, 196),
(197, 197),
(198, 175),
(201, 201),
(211, 211),
(213, 213),
(214, 214),
(215, 215),
(216, 168),
(220, 220),
(223, 223),
(228, 228),
(229, 229),
(230, 191),
(233, 233),
(243, 243),
(245, 245),
(246, 246),
(247, 247),
(248, 184),
(252, 252),
(256, 194),
(257, 226),
(260, 192),
(261, 224),
(262, 195),
(263, 227),
(268, 200),
(269, 232),
(274, 199),
(275, 231),
(278, 203),
(279, 235),
(280, 198),
(281, 230),
(290, 204),
(291, 236),
(298, 206),
(299, 238),
(302, 193),
(303, 225),
(310, 205),
(311, 237),
(315, 207),
(316, 239),
(321, 217),
(322, 249),
(323, 209),
(324, 241),
(325, 210),
(326, 242),
(332, 212),
(333, 244),
(342, 170),
(343, 186),
(346, 218),
(347, 250),
(352, 208),
(353, 240),
(362, 219),
(363, 251),
(370, 216),
(371, 248),
(377, 202),
(378, 234),
(379, 221),
(380, 253),
(381, 222),
(382, 254),
(8217, 255),
(8220, 180),
(8221, 161),
(8222, 165),
];
const ISO_8859_14_TO_UNICODE: [char; 128] = [
'\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{85}', '\u{86}', '\u{87}', '\u{88}',
'\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{8d}', '\u{8e}', '\u{8f}', '\u{90}', '\u{91}',
'\u{92}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{97}', '\u{98}', '\u{99}', '\u{9a}',
'\u{9b}', '\u{9c}', '\u{9d}', '\u{9e}', '\u{9f}', '\u{a0}', '\u{1e02}', '\u{1e03}', '\u{a3}',
'\u{10a}', '\u{10b}', '\u{1e0a}', '\u{a7}', '\u{1e80}', '\u{a9}', '\u{1e82}', '\u{1e0b}',
'\u{1ef2}', '\u{ad}', '\u{ae}', '\u{178}', '\u{1e1e}', '\u{1e1f}', '\u{120}', '\u{121}',
'\u{1e40}', '\u{1e41}', '\u{b6}', '\u{1e56}', '\u{1e81}', '\u{1e57}', '\u{1e83}', '\u{1e60}',
'\u{1ef3}', '\u{1e84}', '\u{1e85}', '\u{1e61}', '\u{c0}', '\u{c1}', '\u{c2}', '\u{c3}',
'\u{c4}', '\u{c5}', '\u{c6}', '\u{c7}', '\u{c8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{cc}',
'\u{cd}', '\u{ce}', '\u{cf}', '\u{174}', '\u{d1}', '\u{d2}', '\u{d3}', '\u{d4}', '\u{d5}',
'\u{d6}', '\u{1e6a}', '\u{d8}', '\u{d9}', '\u{da}', '\u{db}', '\u{dc}', '\u{dd}', '\u{176}',
'\u{df}', '\u{e0}', '\u{e1}', '\u{e2}', '\u{e3}', '\u{e4}', '\u{e5}', '\u{e6}', '\u{e7}',
'\u{e8}', '\u{e9}', '\u{ea}', '\u{eb}', '\u{ec}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{175}',
'\u{f1}', '\u{f2}', '\u{f3}', '\u{f4}', '\u{f5}', '\u{f6}', '\u{1e6b}', '\u{f8}', '\u{f9}',
'\u{fa}', '\u{fb}', '\u{fc}', '\u{fd}', '\u{177}', '\u{ff}',
];
const UNICODE_TO_ISO_8859_14: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(163, 163),
(167, 167),
(169, 169),
(173, 173),
(174, 174),
(182, 182),
(192, 192),
(193, 193),
(194, 194),
(195, 195),
(196, 196),
(197, 197),
(198, 198),
(199, 199),
(200, 200),
(201, 201),
(202, 202),
(203, 203),
(204, 204),
(205, 205),
(206, 206),
(207, 207),
(209, 209),
(210, 210),
(211, 211),
(212, 212),
(213, 213),
(214, 214),
(216, 216),
(217, 217),
(218, 218),
(219, 219),
(220, 220),
(221, 221),
(223, 223),
(224, 224),
(225, 225),
(226, 226),
(227, 227),
(228, 228),
(229, 229),
(230, 230),
(231, 231),
(232, 232),
(233, 233),
(234, 234),
(235, 235),
(236, 236),
(237, 237),
(238, 238),
(239, 239),
(241, 241),
(242, 242),
(243, 243),
(244, 244),
(245, 245),
(246, 246),
(248, 248),
(249, 249),
(250, 250),
(251, 251),
(252, 252),
(253, 253),
(255, 255),
(266, 164),
(267, 165),
(288, 178),
(289, 179),
(372, 208),
(373, 240),
(374, 222),
(375, 254),
(376, 175),
(7682, 161),
(7683, 162),
(7690, 166),
(7691, 171),
(7710, 176),
(7711, 177),
(7744, 180),
(7745, 181),
(7766, 183),
(7767, 185),
(7776, 187),
(7777, 191),
(7786, 215),
(7787, 247),
(7808, 168),
(7809, 184),
(7810, 170),
(7811, 186),
(7812, 189),
(7813, 190),
(7922, 172),
(7923, 188),
];
const ISO_8859_15_TO_UNICODE: [char; 128] = [
'\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{85}', '\u{86}', '\u{87}', '\u{88}',
'\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{8d}', '\u{8e}', '\u{8f}', '\u{90}', '\u{91}',
'\u{92}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{97}', '\u{98}', '\u{99}', '\u{9a}',
'\u{9b}', '\u{9c}', '\u{9d}', '\u{9e}', '\u{9f}', '\u{a0}', '\u{a1}', '\u{a2}', '\u{a3}',
'\u{20ac}', '\u{a5}', '\u{160}', '\u{a7}', '\u{161}', '\u{a9}', '\u{aa}', '\u{ab}', '\u{ac}',
'\u{ad}', '\u{ae}', '\u{af}', '\u{b0}', '\u{b1}', '\u{b2}', '\u{b3}', '\u{17d}', '\u{b5}',
'\u{b6}', '\u{b7}', '\u{17e}', '\u{b9}', '\u{ba}', '\u{bb}', '\u{152}', '\u{153}', '\u{178}',
'\u{bf}', '\u{c0}', '\u{c1}', '\u{c2}', '\u{c3}', '\u{c4}', '\u{c5}', '\u{c6}', '\u{c7}',
'\u{c8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{cc}', '\u{cd}', '\u{ce}', '\u{cf}', '\u{d0}',
'\u{d1}', '\u{d2}', '\u{d3}', '\u{d4}', '\u{d5}', '\u{d6}', '\u{d7}', '\u{d8}', '\u{d9}',
'\u{da}', '\u{db}', '\u{dc}', '\u{dd}', '\u{de}', '\u{df}', '\u{e0}', '\u{e1}', '\u{e2}',
'\u{e3}', '\u{e4}', '\u{e5}', '\u{e6}', '\u{e7}', '\u{e8}', '\u{e9}', '\u{ea}', '\u{eb}',
'\u{ec}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{f0}', '\u{f1}', '\u{f2}', '\u{f3}', '\u{f4}',
'\u{f5}', '\u{f6}', '\u{f7}', '\u{f8}', '\u{f9}', '\u{fa}', '\u{fb}', '\u{fc}', '\u{fd}',
'\u{fe}', '\u{ff}',
];
const UNICODE_TO_ISO_8859_15: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(161, 161),
(162, 162),
(163, 163),
(165, 165),
(167, 167),
(169, 169),
(170, 170),
(171, 171),
(172, 172),
(173, 173),
(174, 174),
(175, 175),
(176, 176),
(177, 177),
(178, 178),
(179, 179),
(181, 181),
(182, 182),
(183, 183),
(185, 185),
(186, 186),
(187, 187),
(191, 191),
(192, 192),
(193, 193),
(194, 194),
(195, 195),
(196, 196),
(197, 197),
(198, 198),
(199, 199),
(200, 200),
(201, 201),
(202, 202),
(203, 203),
(204, 204),
(205, 205),
(206, 206),
(207, 207),
(208, 208),
(209, 209),
(210, 210),
(211, 211),
(212, 212),
(213, 213),
(214, 214),
(215, 215),
(216, 216),
(217, 217),
(218, 218),
(219, 219),
(220, 220),
(221, 221),
(222, 222),
(223, 223),
(224, 224),
(225, 225),
(226, 226),
(227, 227),
(228, 228),
(229, 229),
(230, 230),
(231, 231),
(232, 232),
(233, 233),
(234, 234),
(235, 235),
(236, 236),
(237, 237),
(238, 238),
(239, 239),
(240, 240),
(241, 241),
(242, 242),
(243, 243),
(244, 244),
(245, 245),
(246, 246),
(247, 247),
(248, 248),
(249, 249),
(250, 250),
(251, 251),
(252, 252),
(253, 253),
(254, 254),
(255, 255),
(338, 188),
(339, 189),
(352, 166),
(353, 168),
(376, 190),
(381, 180),
(382, 184),
(8364, 164),
];
const ISO_8859_16_TO_UNICODE: [char; 128] = [
'\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{85}', '\u{86}', '\u{87}', '\u{88}',
'\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{8d}', '\u{8e}', '\u{8f}', '\u{90}', '\u{91}',
'\u{92}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{97}', '\u{98}', '\u{99}', '\u{9a}',
'\u{9b}', '\u{9c}', '\u{9d}', '\u{9e}', '\u{9f}', '\u{a0}', '\u{104}', '\u{105}', '\u{141}',
'\u{20ac}', '\u{201e}', '\u{160}', '\u{a7}', '\u{161}', '\u{a9}', '\u{218}', '\u{ab}',
'\u{179}', '\u{ad}', '\u{17a}', '\u{17b}', '\u{b0}', '\u{b1}', '\u{10c}', '\u{142}', '\u{17d}',
'\u{201d}', '\u{b6}', '\u{b7}', '\u{17e}', '\u{10d}', '\u{219}', '\u{bb}', '\u{152}',
'\u{153}', '\u{178}', '\u{17c}', '\u{c0}', '\u{c1}', '\u{c2}', '\u{102}', '\u{c4}', '\u{106}',
'\u{c6}', '\u{c7}', '\u{c8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{cc}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{110}', '\u{143}', '\u{d2}', '\u{d3}', '\u{d4}', '\u{150}', '\u{d6}', '\u{15a}',
'\u{170}', '\u{d9}', '\u{da}', '\u{db}', '\u{dc}', '\u{118}', '\u{21a}', '\u{df}', '\u{e0}',
'\u{e1}', '\u{e2}', '\u{103}', '\u{e4}', '\u{107}', '\u{e6}', '\u{e7}', '\u{e8}', '\u{e9}',
'\u{ea}', '\u{eb}', '\u{ec}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{111}', '\u{144}', '\u{f2}',
'\u{f3}', '\u{f4}', '\u{151}', '\u{f6}', '\u{15b}', '\u{171}', '\u{f9}', '\u{fa}', '\u{fb}',
'\u{fc}', '\u{119}', '\u{21b}', '\u{ff}',
];
const UNICODE_TO_ISO_8859_16: &[(u16, u8)] = &[
(128, 128),
(129, 129),
(130, 130),
(131, 131),
(132, 132),
(133, 133),
(134, 134),
(135, 135),
(136, 136),
(137, 137),
(138, 138),
(139, 139),
(140, 140),
(141, 141),
(142, 142),
(143, 143),
(144, 144),
(145, 145),
(146, 146),
(147, 147),
(148, 148),
(149, 149),
(150, 150),
(151, 151),
(152, 152),
(153, 153),
(154, 154),
(155, 155),
(156, 156),
(157, 157),
(158, 158),
(159, 159),
(160, 160),
(167, 167),
(169, 169),
(171, 171),
(173, 173),
(176, 176),
(177, 177),
(182, 182),
(183, 183),
(187, 187),
(192, 192),
(193, 193),
(194, 194),
(196, 196),
(198, 198),
(199, 199),
(200, 200),
(201, 201),
(202, 202),
(203, 203),
(204, 204),
(205, 205),
(206, 206),
(207, 207),
(210, 210),
(211, 211),
(212, 212),
(214, 214),
(217, 217),
(218, 218),
(219, 219),
(220, 220),
(223, 223),
(224, 224),
(225, 225),
(226, 226),
(228, 228),
(230, 230),
(231, 231),
(232, 232),
(233, 233),
(234, 234),
(235, 235),
(236, 236),
(237, 237),
(238, 238),
(239, 239),
(242, 242),
(243, 243),
(244, 244),
(246, 246),
(249, 249),
(250, 250),
(251, 251),
(252, 252),
(255, 255),
(258, 195),
(259, 227),
(260, 161),
(261, 162),
(262, 197),
(263, 229),
(268, 178),
(269, 185),
(272, 208),
(273, 240),
(280, 221),
(281, 253),
(321, 163),
(322, 179),
(323, 209),
(324, 241),
(336, 213),
(337, 245),
(338, 188),
(339, 189),
(346, 215),
(347, 247),
(352, 166),
(353, 168),
(368, 216),
(369, 248),
(376, 190),
(377, 172),
(378, 174),
(379, 175),
(380, 191),
(381, 180),
(382, 184),
(536, 170),
(537, 186),
(538, 222),
(539, 254),
(8221, 181),
(8222, 165),
(8364, 164),
];
macro_rules! impl_iso8859_encoder_and_decoder {
( $name:ident, $namelit:literal, $docname:literal, $encoder:ident, $decoder:ident, $etable:ident, $dtable:ident ) => {
#[doc = concat!("Encoding name for ", $docname, ".")]
pub const $name: &str = $namelit;
#[doc = concat!("Encoder for ", $docname, ".")]
pub struct $encoder;
impl Encoder for $encoder {
fn name(&self) -> &'static str {
$name
}
fn encode(
&mut self,
src: &str,
dst: &mut [u8],
finish: bool,
) -> Result<(usize, usize), EncodeError> {
if src.is_empty() {
return if finish {
Ok((0, 0))
} else {
Err(EncodeError::InputIsEmpty)
};
}
if dst.is_empty() {
return Err(EncodeError::OutputTooShort);
}
let (mut read, mut write) = (0, 0);
for c in src.chars() {
let b = c as u32;
read += c.len_utf8();
if b < 128 {
dst[write] = b as u8;
} else if let Ok(pos) = $etable.binary_search_by_key(&b, |k| k.0 as u32) {
dst[write] = $etable[pos].1;
} else {
return Err(EncodeError::Unmappable { read, write, c });
}
write += 1;
if write == dst.len() {
break;
}
}
Ok((read, write))
}
}
#[doc = concat!("Decoder for ", $docname, ".")]
pub struct $decoder;
impl Decoder for $decoder {
fn name(&self) -> &'static str {
$name
}
fn decode(
&mut self,
src: &[u8],
dst: &mut String,
finish: bool,
) -> Result<(usize, usize), DecodeError> {
if src.is_empty() {
return if finish {
Ok((0, 0))
} else {
Err(DecodeError::InputIsEmpty)
};
}
let len = dst.capacity() - dst.len();
if len < 4 {
return Err(DecodeError::OutputTooShort);
}
let (mut read, mut write) = (0, 0);
for &b in src {
let c = if b < 128 {
b as char
} else {
$dtable[b as usize - 128]
};
let l = c.len_utf8();
if write + l > len {
break;
}
read += 1;
if c == char::REPLACEMENT_CHARACTER {
return Err(DecodeError::Malformed {
read,
write,
length: 1,
offset: 0,
});
}
dst.push(c);
write += l;
}
Ok((read, write))
}
}
};
}
impl_iso8859_encoder_and_decoder!(
ISO_8859_2_NAME,
"ISO_8859-2:1987",
"ISO_8859-2",
ISO8859_2Encoder,
ISO8859_2Decoder,
UNICODE_TO_ISO_8859_2,
ISO_8859_2_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_3_NAME,
"ISO_8859-3:1988",
"ISO_8859-3",
ISO8859_3Encoder,
ISO8859_3Decoder,
UNICODE_TO_ISO_8859_3,
ISO_8859_3_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_4_NAME,
"ISO_8859-4:1988",
"ISO_8859-4",
ISO8859_4Encoder,
ISO8859_4Decoder,
UNICODE_TO_ISO_8859_4,
ISO_8859_4_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_5_NAME,
"ISO_8859-5:1988",
"ISO_8859-5",
ISO8859_5Encoder,
ISO8859_5Decoder,
UNICODE_TO_ISO_8859_5,
ISO_8859_5_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_6_NAME,
"ISO_8859-6:1987",
"ISO_8859-6",
ISO8859_6Encoder,
ISO8859_6Decoder,
UNICODE_TO_ISO_8859_6,
ISO_8859_6_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_7_NAME,
"ISO_8859-7:1987",
"ISO_8859-7",
ISO8859_7Encoder,
ISO8859_7Decoder,
UNICODE_TO_ISO_8859_7,
ISO_8859_7_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_8_NAME,
"ISO_8859-8:1988",
"ISO_8859-8",
ISO8859_8Encoder,
ISO8859_8Decoder,
UNICODE_TO_ISO_8859_8,
ISO_8859_8_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_9_NAME,
"ISO_8859-9:1989",
"ISO_8859-9",
ISO8859_9Encoder,
ISO8859_9Decoder,
UNICODE_TO_ISO_8859_9,
ISO_8859_9_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_10_NAME,
"ISO-8859-10",
"ISO-8859-10",
ISO8859_10Encoder,
ISO8859_10Decoder,
UNICODE_TO_ISO_8859_10,
ISO_8859_10_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_11_NAME,
"TIS-620",
"ISO-8859-11",
ISO8859_11Encoder,
ISO8859_11Decoder,
UNICODE_TO_ISO_8859_11,
ISO_8859_11_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_13_NAME,
"ISO-8859-13",
"ISO-8859-13",
ISO8859_13Encoder,
ISO8859_13Decoder,
UNICODE_TO_ISO_8859_13,
ISO_8859_13_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_14_NAME,
"ISO-8859-14",
"ISO-8859-14",
ISO8859_14Encoder,
ISO8859_14Decoder,
UNICODE_TO_ISO_8859_14,
ISO_8859_14_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_15_NAME,
"ISO-8859-15",
"ISO-8859-15",
ISO8859_15Encoder,
ISO8859_15Decoder,
UNICODE_TO_ISO_8859_15,
ISO_8859_15_TO_UNICODE
);
impl_iso8859_encoder_and_decoder!(
ISO_8859_16_NAME,
"ISO-8859-16",
"ISO-8859-16",
ISO8859_16Encoder,
ISO8859_16Decoder,
UNICODE_TO_ISO_8859_16,
ISO_8859_16_TO_UNICODE
);