+ long outchars;
+
+ /* Normalize the string */
+ char *utf8 = convert_ucs4_to_utf8(buf, numchars);
+ if(!utf8)
+ return numchars;
+ char *decomposed = g_utf8_normalize(utf8, -1, G_NORMALIZE_NFD);
+ g_free(utf8);
+ gunichar *outbuf = convert_utf8_to_ucs4(decomposed, &outchars);
+ g_free(decomposed);
+ if(!outbuf)
+ return numchars;
+
+ /* Copy the output buffer to the original buffer */
+ memcpy(buf, outbuf, MIN(outchars, len) * 4);
+ g_free(outbuf);
+
+ return outchars;