| 270 | /////////////////////////////////////////// |
| 271 | |
| 272 | char* utf_advance_chars(char* from_utf8, int32_t codepoint_count) { |
| 273 | if (!from_utf8) return nullptr; |
| 274 | |
| 275 | char* curr = from_utf8; |
| 276 | for (size_t i = 0; i < codepoint_count; i++) { |
| 277 | if (*curr == '\0') break; |
| 278 | else if ((*curr & 0b10000000) == 0 ) curr += 1; |
| 279 | else if ((*curr & 0b11100000) == 0b11000000) curr += 2; |
| 280 | else if ((*curr & 0b11110000) == 0b11100000) curr += 3; |
| 281 | else if ((*curr & 0b11111000) == 0b11110000) curr += 4; |
| 282 | } |
| 283 | return curr; |
| 284 | } |
| 285 | |
| 286 | /////////////////////////////////////////// |
| 287 | |