@@ -102,3 +102,135 @@ float _stringshims_strtof_l(const char * _Nullable restrict nptr,
102
102
return result ;
103
103
#endif
104
104
}
105
+
106
+ const uint8_t _stringshims_macroman_mapping [_STRINGSHIMS_MACROMAN_MAP_SIZE ][3 ] = {
107
+ { 0xC2 , 0xA0 , 0x00 }, /* NO-BREAK SPACE */
108
+ { 0xC2 , 0xA1 , 0x00 }, /* INVERTED EXCLAMATION MARK */
109
+ { 0xC2 , 0xA2 , 0x00 }, /* CENT SIGN */
110
+ { 0xC2 , 0xA3 , 0x00 }, /* POUND SIGN */
111
+ { 0xC2 , 0xA5 , 0x00 }, /* YEN SIGN */
112
+ { 0xC2 , 0xA7 , 0x00 }, /* SECTION SIGN */
113
+ { 0xC2 , 0xA8 , 0x00 }, /* DIAERESIS */
114
+ { 0xC2 , 0xA9 , 0x00 }, /* COPYRIGHT SIGN */
115
+ { 0xC2 , 0xAA , 0x00 }, /* FEMININE ORDINAL INDICATOR */
116
+ { 0xC2 , 0xAB , 0x00 }, /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
117
+ { 0xC2 , 0xAC , 0x00 }, /* NOT SIGN */
118
+ { 0xC2 , 0xAE , 0x00 }, /* REGISTERED SIGN */
119
+ { 0xC2 , 0xAF , 0x00 }, /* MACRON */
120
+ { 0xC2 , 0xB0 , 0x00 }, /* DEGREE SIGN */
121
+ { 0xC2 , 0xB1 , 0x00 }, /* PLUS-MINUS SIGN */
122
+ { 0xC2 , 0xB4 , 0x00 }, /* ACUTE ACCENT */
123
+ { 0xC2 , 0xB5 , 0x00 }, /* MICRO SIGN */
124
+ { 0xC2 , 0xB6 , 0x00 }, /* PILCROW SIGN */
125
+ { 0xC2 , 0xB7 , 0x00 }, /* MIDDLE DOT */
126
+ { 0xC2 , 0xB8 , 0x00 }, /* CEDILLA */
127
+ { 0xC2 , 0xBA , 0x00 }, /* MASCULINE ORDINAL INDICATOR */
128
+ { 0xC2 , 0xBB , 0x00 }, /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
129
+ { 0xC2 , 0xBF , 0x00 }, /* INVERTED QUESTION MARK */
130
+ { 0xC3 , 0x80 , 0x00 }, /* LATIN CAPITAL LETTER A WITH GRAVE */
131
+ { 0xC3 , 0x81 , 0x00 }, /* LATIN CAPITAL LETTER A WITH ACUTE */
132
+ { 0xC3 , 0x82 , 0x00 }, /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
133
+ { 0xC3 , 0x83 , 0x00 }, /* LATIN CAPITAL LETTER A WITH TILDE */
134
+ { 0xC3 , 0x84 , 0x00 }, /* LATIN CAPITAL LETTER A WITH DIAERESIS */
135
+ { 0xC3 , 0x85 , 0x00 }, /* LATIN CAPITAL LETTER A WITH RING ABOVE */
136
+ { 0xC3 , 0x86 , 0x00 }, /* LATIN CAPITAL LIGATURE AE */
137
+ { 0xC3 , 0x87 , 0x00 }, /* LATIN CAPITAL LETTER C WITH CEDILLA */
138
+ { 0xC3 , 0x88 , 0x00 }, /* LATIN CAPITAL LETTER E WITH GRAVE */
139
+ { 0xC3 , 0x89 , 0x00 }, /* LATIN CAPITAL LETTER E WITH ACUTE */
140
+ { 0xC3 , 0x8A , 0x00 }, /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
141
+ { 0xC3 , 0x8B , 0x00 }, /* LATIN CAPITAL LETTER E WITH DIAERESIS */
142
+ { 0xC3 , 0x8C , 0x00 }, /* LATIN CAPITAL LETTER I WITH GRAVE */
143
+ { 0xC3 , 0x8D , 0x00 }, /* LATIN CAPITAL LETTER I WITH ACUTE */
144
+ { 0xC3 , 0x8E , 0x00 }, /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
145
+ { 0xC3 , 0x8F , 0x00 }, /* LATIN CAPITAL LETTER I WITH DIAERESIS */
146
+ { 0xC3 , 0x91 , 0x00 }, /* LATIN CAPITAL LETTER N WITH TILDE */
147
+ { 0xC3 , 0x92 , 0x00 }, /* LATIN CAPITAL LETTER O WITH GRAVE */
148
+ { 0xC3 , 0x93 , 0x00 }, /* LATIN CAPITAL LETTER O WITH ACUTE */
149
+ { 0xC3 , 0x94 , 0x00 }, /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
150
+ { 0xC3 , 0x95 , 0x00 }, /* LATIN CAPITAL LETTER O WITH TILDE */
151
+ { 0xC3 , 0x96 , 0x00 }, /* LATIN CAPITAL LETTER O WITH DIAERESIS */
152
+ { 0xC3 , 0x98 , 0x00 }, /* LATIN CAPITAL LETTER O WITH STROKE */
153
+ { 0xC3 , 0x99 , 0x00 }, /* LATIN CAPITAL LETTER U WITH GRAVE */
154
+ { 0xC3 , 0x9A , 0x00 }, /* LATIN CAPITAL LETTER U WITH ACUTE */
155
+ { 0xC3 , 0x9B , 0x00 }, /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
156
+ { 0xC3 , 0x9C , 0x00 }, /* LATIN CAPITAL LETTER U WITH DIAERESIS */
157
+ { 0xC3 , 0x9F , 0x00 }, /* LATIN SMALL LETTER SHARP S */
158
+ { 0xC3 , 0xA0 , 0x00 }, /* LATIN SMALL LETTER A WITH GRAVE */
159
+ { 0xC3 , 0xA1 , 0x00 }, /* LATIN SMALL LETTER A WITH ACUTE */
160
+ { 0xC3 , 0xA2 , 0x00 }, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */
161
+ { 0xC3 , 0xA3 , 0x00 }, /* LATIN SMALL LETTER A WITH TILDE */
162
+ { 0xC3 , 0xA4 , 0x00 }, /* LATIN SMALL LETTER A WITH DIAERESIS */
163
+ { 0xC3 , 0xA5 , 0x00 }, /* LATIN SMALL LETTER A WITH RING ABOVE */
164
+ { 0xC3 , 0xA6 , 0x00 }, /* LATIN SMALL LIGATURE AE */
165
+ { 0xC3 , 0xA7 , 0x00 }, /* LATIN SMALL LETTER C WITH CEDILLA */
166
+ { 0xC3 , 0xA8 , 0x00 }, /* LATIN SMALL LETTER E WITH GRAVE */
167
+ { 0xC3 , 0xA9 , 0x00 }, /* LATIN SMALL LETTER E WITH ACUTE */
168
+ { 0xC3 , 0xAA , 0x00 }, /* LATIN SMALL LETTER E WITH CIRCUMFLEX */
169
+ { 0xC3 , 0xAB , 0x00 }, /* LATIN SMALL LETTER E WITH DIAERESIS */
170
+ { 0xC3 , 0xAC , 0x00 }, /* LATIN SMALL LETTER I WITH GRAVE */
171
+ { 0xC3 , 0xAD , 0x00 }, /* LATIN SMALL LETTER I WITH ACUTE */
172
+ { 0xC3 , 0xAE , 0x00 }, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */
173
+ { 0xC3 , 0xAF , 0x00 }, /* LATIN SMALL LETTER I WITH DIAERESIS */
174
+ { 0xC3 , 0xB1 , 0x00 }, /* LATIN SMALL LETTER N WITH TILDE */
175
+ { 0xC3 , 0xB2 , 0x00 }, /* LATIN SMALL LETTER O WITH GRAVE */
176
+ { 0xC3 , 0xB3 , 0x00 }, /* LATIN SMALL LETTER O WITH ACUTE */
177
+ { 0xC3 , 0xB4 , 0x00 }, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */
178
+ { 0xC3 , 0xB5 , 0x00 }, /* LATIN SMALL LETTER O WITH TILDE */
179
+ { 0xC3 , 0xB6 , 0x00 }, /* LATIN SMALL LETTER O WITH DIAERESIS */
180
+ { 0xC3 , 0xB7 , 0x00 }, /* DIVISION SIGN */
181
+ { 0xC3 , 0xB8 , 0x00 }, /* LATIN SMALL LETTER O WITH STROKE */
182
+ { 0xC3 , 0xB9 , 0x00 }, /* LATIN SMALL LETTER U WITH GRAVE */
183
+ { 0xC3 , 0xBA , 0x00 }, /* LATIN SMALL LETTER U WITH ACUTE */
184
+ { 0xC3 , 0xBB , 0x00 }, /* LATIN SMALL LETTER U WITH CIRCUMFLEX */
185
+ { 0xC3 , 0xBC , 0x00 }, /* LATIN SMALL LETTER U WITH DIAERESIS */
186
+ { 0xC3 , 0xBF , 0x00 }, /* LATIN SMALL LETTER Y WITH DIAERESIS */
187
+ { 0xC4 , 0xB1 , 0x00 }, /* LATIN SMALL LETTER DOTLESS I */
188
+ { 0xC5 , 0x92 , 0x00 }, /* LATIN CAPITAL LIGATURE OE */
189
+ { 0xC5 , 0x93 , 0x00 }, /* LATIN SMALL LIGATURE OE */
190
+ { 0xC5 , 0xB8 , 0x00 }, /* LATIN CAPITAL LETTER Y WITH DIAERESIS */
191
+ { 0xC6 , 0x92 , 0x00 }, /* LATIN SMALL LETTER F WITH HOOK */
192
+ { 0xCB , 0x86 , 0x00 }, /* MODIFIER LETTER CIRCUMFLEX ACCENT */
193
+ { 0xCB , 0x87 , 0x00 }, /* CARON */
194
+ { 0xCB , 0x98 , 0x00 }, /* BREVE */
195
+ { 0xCB , 0x99 , 0x00 }, /* DOT ABOVE */
196
+ { 0xCB , 0x9A , 0x00 }, /* RING ABOVE */
197
+ { 0xCB , 0x9B , 0x00 }, /* OGONEK */
198
+ { 0xCB , 0x9C , 0x00 }, /* SMALL TILDE */
199
+ { 0xCB , 0x9D , 0x00 }, /* DOUBLE ACUTE ACCENT */
200
+ { 0xCE , 0xA9 , 0x00 }, /* OHM SIGN (Canonical ?) */
201
+ { 0xCF , 0x80 , 0x00 }, /* GREEK SMALL LETTER PI */
202
+ { 0xE2 , 0x80 , 0x93 }, /* EN DASH */
203
+ { 0xE2 , 0x80 , 0x94 }, /* EM DASH */
204
+ { 0xE2 , 0x80 , 0x98 }, /* LEFT SINGLE QUOTATION MARK */
205
+ { 0xE2 , 0x80 , 0x99 }, /* RIGHT SINGLE QUOTATION MARK */
206
+ { 0xE2 , 0x80 , 0x9A }, /* SINGLE LOW-9 QUOTATION MARK */
207
+ { 0xE2 , 0x80 , 0x9C }, /* LEFT DOUBLE QUOTATION MARK */
208
+ { 0xE2 , 0x80 , 0x9D }, /* RIGHT DOUBLE QUOTATION MARK */
209
+ { 0xE2 , 0x80 , 0x9E }, /* DOUBLE LOW-9 QUOTATION MARK */
210
+ { 0xE2 , 0x80 , 0xA0 }, /* DAGGER */
211
+ { 0xE2 , 0x80 , 0xA1 }, /* DOUBLE DAGGER */
212
+ { 0xE2 , 0x80 , 0xA2 }, /* BULLET */
213
+ { 0xE2 , 0x80 , 0xA6 }, /* HORIZONTAL ELLIPSIS */
214
+ { 0xE2 , 0x80 , 0xB0 }, /* PER MILLE SIGN */
215
+ { 0xE2 , 0x80 , 0xB9 }, /* SINGLE LEFT-POINTING ANGLE QUOTATION MARK */
216
+ { 0xE2 , 0x80 , 0xBA }, /* SINGLE RIGHT-POINTING ANGLE QUOTATION MARK */
217
+ { 0xE2 , 0x81 , 0x84 }, /* FRACTION SLASH */
218
+ { 0xE2 , 0x82 , 0xAC }, /* EURO SIGN */
219
+ { 0xE2 , 0x84 , 0xA2 }, /* TRADE MARK SIGN */
220
+ { 0xE2 , 0x84 , 0xA6 }, /* OHM SIGN */
221
+ { 0xE2 , 0x88 , 0x82 }, /* PARTIAL DIFFERENTIAL */
222
+ { 0xE2 , 0x88 , 0x86 }, /* INCREMENT */
223
+ { 0xE2 , 0x88 , 0x8F }, /* N-ARY PRODUCT */
224
+ { 0xE2 , 0x88 , 0x91 }, /* N-ARY SUMMATION */
225
+ { 0xE2 , 0x88 , 0x9A }, /* SQUARE ROOT */
226
+ { 0xE2 , 0x88 , 0x9E }, /* INFINITY */
227
+ { 0xE2 , 0x88 , 0xAB }, /* INTEGRAL */
228
+ { 0xE2 , 0x89 , 0x88 }, /* ALMOST EQUAL TO */
229
+ { 0xE2 , 0x89 , 0xA0 }, /* NOT EQUAL TO */
230
+ { 0xE2 , 0x89 , 0xA4 }, /* LESS-THAN OR EQUAL TO */
231
+ { 0xE2 , 0x89 , 0xA5 }, /* GREATER-THAN OR EQUAL TO */
232
+ { 0xE2 , 0x97 , 0x8A }, /* LOZENGE */
233
+ { 0xEF , 0xA3 , 0xBF }, /* Apple logo */
234
+ { 0xEF , 0xAC , 0x81 }, /* LATIN SMALL LIGATURE FI */
235
+ { 0xEF , 0xAC , 0x82 }, /* LATIN SMALL LIGATURE FL */
236
+ };
0 commit comments