Updated Files
libbirdfont/OpenFontFormat/FontData.vala |
--- a/libbirdfont/OpenFontFormat/FontData.vala
+++ b/libbirdfont/OpenFontFormat/FontData.vala
@@ -345,15 +345,18 @@
}
public void add_str_utf16 (string s, bool little_endian = false) {
+
int index = 0;
unichar c;
uint8 c0;
uint8 c1;
int l = 0;
-
- // FIXME: gconvert it instead.
while (s.get_next_char (ref index, out c)) {
+ if (skip_terminating_null && c == '\0') {
+ continue;
+ }
+
if (c < 0xFFFF - (1 << 16)) {
c0 = (uint8) (c >> 8);
c1 = (uint8) (c - (c0 << 8));
@@ -401,6 +404,12 @@
}
assert (l == 2 * s.char_count ());
+ }
+
+ public void add_unichar_utf16 (unichar c) {
+ StringBuilder s = new StringBuilder ();
+ s.append_unichar (c);
+ add_str_utf16 (s.str);
}
public static uint utf16_strlen (string s) {
@@ -416,9 +425,136 @@
while (s.get_next_char (ref index, out c)) {
if (32 <= c <= 127) {
add ((uint8) c);
+ } else {
+ if (c == 128) add_unichar_utf16 ((unichar) 196);
+ if (c == 129) add_unichar_utf16 ((unichar) 197);
+ if (c == 130) add_unichar_utf16 ((unichar) 199);
+ if (c == 131) add_unichar_utf16 ((unichar) 201);
+ if (c == 132) add_unichar_utf16 ((unichar) 209);
+ if (c == 133) add_unichar_utf16 ((unichar) 214);
+ if (c == 134) add_unichar_utf16 ((unichar) 220);
+ if (c == 135) add_unichar_utf16 ((unichar) 225);
+ if (c == 136) add_unichar_utf16 ((unichar) 224);
+ if (c == 137) add_unichar_utf16 ((unichar) 226);
+ if (c == 138) add_unichar_utf16 ((unichar) 228);
+ if (c == 139) add_unichar_utf16 ((unichar) 227);
+ if (c == 140) add_unichar_utf16 ((unichar) 229);
+ if (c == 141) add_unichar_utf16 ((unichar) 231);
+ if (c == 142) add_unichar_utf16 ((unichar) 233);
+ if (c == 143) add_unichar_utf16 ((unichar) 232);
+ if (c == 144) add_unichar_utf16 ((unichar) 234);
+ if (c == 145) add_unichar_utf16 ((unichar) 235);
+ if (c == 146) add_unichar_utf16 ((unichar) 237);
+ if (c == 147) add_unichar_utf16 ((unichar) 236);
+ if (c == 148) add_unichar_utf16 ((unichar) 238);
+ if (c == 149) add_unichar_utf16 ((unichar) 239);
+ if (c == 150) add_unichar_utf16 ((unichar) 241);
+ if (c == 151) add_unichar_utf16 ((unichar) 243);
+ if (c == 152) add_unichar_utf16 ((unichar) 242);
+ if (c == 153) add_unichar_utf16 ((unichar) 244);
+ if (c == 154) add_unichar_utf16 ((unichar) 246);
+ if (c == 155) add_unichar_utf16 ((unichar) 245);
+ if (c == 156) add_unichar_utf16 ((unichar) 250);
+ if (c == 157) add_unichar_utf16 ((unichar) 249);
+ if (c == 158) add_unichar_utf16 ((unichar) 251);
+ if (c == 159) add_unichar_utf16 ((unichar) 252);
+ if (c == 160) add_unichar_utf16 ((unichar) 8224);
+ if (c == 161) add_unichar_utf16 ((unichar) 176);
+ if (c == 162) add_unichar_utf16 ((unichar) 162);
+ if (c == 163) add_unichar_utf16 ((unichar) 163);
+ if (c == 164) add_unichar_utf16 ((unichar) 167);
+ if (c == 165) add_unichar_utf16 ((unichar) 8226);
+ if (c == 166) add_unichar_utf16 ((unichar) 182);
+ if (c == 167) add_unichar_utf16 ((unichar) 223);
+ if (c == 168) add_unichar_utf16 ((unichar) 174);
+ if (c == 169) add_unichar_utf16 ((unichar) 169);
+ if (c == 170) add_unichar_utf16 ((unichar) 8482);
+ if (c == 171) add_unichar_utf16 ((unichar) 180);
+ if (c == 172) add_unichar_utf16 ((unichar) 168);
+ if (c == 173) add_unichar_utf16 ((unichar) 8800);
+ if (c == 174) add_unichar_utf16 ((unichar) 198);
+ if (c == 175) add_unichar_utf16 ((unichar) 216);
+ if (c == 176) add_unichar_utf16 ((unichar) 8734);
+ if (c == 177) add_unichar_utf16 ((unichar) 177);
+ if (c == 178) add_unichar_utf16 ((unichar) 8804);
+ if (c == 179) add_unichar_utf16 ((unichar) 8805);
+ if (c == 180) add_unichar_utf16 ((unichar) 165);
+ if (c == 181) add_unichar_utf16 ((unichar) 181);
+ if (c == 182) add_unichar_utf16 ((unichar) 8706);
+ if (c == 183) add_unichar_utf16 ((unichar) 8721);
+ if (c == 184) add_unichar_utf16 ((unichar) 8719);
+ if (c == 185) add_unichar_utf16 ((unichar) 960);
+ if (c == 186) add_unichar_utf16 ((unichar) 8747);
+ if (c == 187) add_unichar_utf16 ((unichar) 170);
+ if (c == 188) add_unichar_utf16 ((unichar) 186);
+ if (c == 189) add_unichar_utf16 ((unichar) 937);
+ if (c == 190) add_unichar_utf16 ((unichar) 230);
+ if (c == 191) add_unichar_utf16 ((unichar) 248);
+ if (c == 192) add_unichar_utf16 ((unichar) 191);
+ if (c == 193) add_unichar_utf16 ((unichar) 161);
+ if (c == 194) add_unichar_utf16 ((unichar) 172);
+ if (c == 195) add_unichar_utf16 ((unichar) 8730);
+ if (c == 196) add_unichar_utf16 ((unichar) 402);
+ if (c == 197) add_unichar_utf16 ((unichar) 8776);
+ if (c == 198) add_unichar_utf16 ((unichar) 8710);
+ if (c == 199) add_unichar_utf16 ((unichar) 171);
+ if (c == 200) add_unichar_utf16 ((unichar) 187);
+ if (c == 201) add_unichar_utf16 ((unichar) 8230);
+ if (c == 202) add_unichar_utf16 ((unichar) 160);
+ if (c == 203) add_unichar_utf16 ((unichar) 192);
+ if (c == 204) add_unichar_utf16 ((unichar) 195);
+ if (c == 205) add_unichar_utf16 ((unichar) 213);
+ if (c == 206) add_unichar_utf16 ((unichar) 338);
+ if (c == 207) add_unichar_utf16 ((unichar) 339);
+ if (c == 208) add_unichar_utf16 ((unichar) 8211);
+ if (c == 209) add_unichar_utf16 ((unichar) 8212);
+ if (c == 210) add_unichar_utf16 ((unichar) 8220);
+ if (c == 211) add_unichar_utf16 ((unichar) 8221);
+ if (c == 212) add_unichar_utf16 ((unichar) 8216);
+ if (c == 213) add_unichar_utf16 ((unichar) 8217);
+ if (c == 214) add_unichar_utf16 ((unichar) 247);
+ if (c == 215) add_unichar_utf16 ((unichar) 9674);
+ if (c == 216) add_unichar_utf16 ((unichar) 255);
+ if (c == 217) add_unichar_utf16 ((unichar) 376);
+ if (c == 218) add_unichar_utf16 ((unichar) 8260);
+ if (c == 219) add_unichar_utf16 ((unichar) 8364);
+ if (c == 220) add_unichar_utf16 ((unichar) 8249);
+ if (c == 221) add_unichar_utf16 ((unichar) 8250);
+ if (c == 222) add_unichar_utf16 ((unichar) 64257);
+ if (c == 223) add_unichar_utf16 ((unichar) 64258);
+ if (c == 224) add_unichar_utf16 ((unichar) 8225);
+ if (c == 225) add_unichar_utf16 ((unichar) 183);
+ if (c == 226) add_unichar_utf16 ((unichar) 8218);
+ if (c == 227) add_unichar_utf16 ((unichar) 8222);
+ if (c == 228) add_unichar_utf16 ((unichar) 8240);
+ if (c == 229) add_unichar_utf16 ((unichar) 194);
+ if (c == 230) add_unichar_utf16 ((unichar) 202);
+ if (c == 231) add_unichar_utf16 ((unichar) 193);
+ if (c == 232) add_unichar_utf16 ((unichar) 203);
+ if (c == 233) add_unichar_utf16 ((unichar) 200);
+ if (c == 234) add_unichar_utf16 ((unichar) 205);
+ if (c == 235) add_unichar_utf16 ((unichar) 206);
+ if (c == 236) add_unichar_utf16 ((unichar) 207);
+ if (c == 237) add_unichar_utf16 ((unichar) 204);
+ if (c == 238) add_unichar_utf16 ((unichar) 211);
+ if (c == 239) add_unichar_utf16 ((unichar) 212);
+ if (c == 240) add_unichar_utf16 ((unichar) 63743);
+ if (c == 241) add_unichar_utf16 ((unichar) 210);
+ if (c == 242) add_unichar_utf16 ((unichar) 218);
+ if (c == 243) add_unichar_utf16 ((unichar) 219);
+ if (c == 244) add_unichar_utf16 ((unichar) 217);
+ if (c == 245) add_unichar_utf16 ((unichar) 305);
+ if (c == 246) add_unichar_utf16 ((unichar) 710);
+ if (c == 247) add_unichar_utf16 ((unichar) 732);
+ if (c == 248) add_unichar_utf16 ((unichar) 175);
+ if (c == 249) add_unichar_utf16 ((unichar) 728);
+ if (c == 250) add_unichar_utf16 ((unichar) 729);
+ if (c == 251) add_unichar_utf16 ((unichar) 730);
+ if (c == 252) add_unichar_utf16 ((unichar) 184);
+ if (c == 253) add_unichar_utf16 ((unichar) 733);
+ if (c == 254) add_unichar_utf16 ((unichar) 731);
+ if (c == 255) add_unichar_utf16 ((unichar) 711);
}
-
- // FIXME: add other macroman characters
}
}