42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
size_t length, bool lossy)
{
size_t i;
for (i = 0; i < length; i++) {
of_unichar_t c = input[i];
if OF_UNLIKELY (c == 0xA4 || c == 0xA6 || c == 0xA8 ||
c == 0xB4 || c == 0xB8 || c == 0xBC || c == 0xBD ||
c == 0xBE || c > 0xFFFF) {
if (lossy)
output[i] = '?';
else
return false;
}
if OF_UNLIKELY (c > 0xFF) {
switch ((of_char16_t)c) {
case 0x20AC:
output[i] = 0xA4;
break;
case 0x160:
output[i] = 0xA6;
break;
|
|
<
|
|
|
>
|
|
|
<
|
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
size_t length, bool lossy)
{
size_t i;
for (i = 0; i < length; i++) {
of_unichar_t c = input[i];
if OF_UNLIKELY (c > 0xFF) {
if OF_UNLIKELY (c > 0xFFFF) {
if (lossy) {
output[i] = '?';
continue;
} else
return false;
}
switch ((of_char16_t)c) {
case 0x20AC:
output[i] = 0xA4;
break;
case 0x160:
output[i] = 0xA6;
break;
|
85
86
87
88
89
90
91
92
93
94
95
96
97
|
if (lossy)
output[i] = '?';
else
return false;
break;
}
} else
output[i] = (uint8_t)c;
}
return true;
}
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
|
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
if (lossy)
output[i] = '?';
else
return false;
break;
}
} else {
switch (c) {
case 0xA4:
case 0xA6:
case 0xA8:
case 0xB4:
case 0xB8:
case 0xBC:
case 0xBD:
case 0xBE:
if (lossy)
output[i] = '?';
else
return false;
break;
default:
output[i] = (uint8_t)c;
break;
}
}
}
return true;
}
|