The way highlighting works is that a language specific lexer (C in your case) analyses the input according to the rules of its language. So "words" (keywords, identifiers, etc depending on the language) are first identified by the lexer, then compared to one or more of the keyword lists.
C keywords and identifiers began with ASCII alphabetic or underscore until recently when the ability to use Unicode escape sequences was introduced [see](https://en.cppreference.com/w/c/language/identifier).
Note that actually allowing unescaped Unicode in identifiers is implementation defined, not standard C. It appears that the lexer is lenient about trailing characters, but has not been updated to allow escape sequences or Unicode as leading characters.
Lexers come from the [Lexilla](https://github.com/ScintillaOrg/lexilla) project, so patches should be provided there first.