Это проблема XY? Если вы хотите сравнить / сопоставить 2 строки юникода и беспокоитесь о том, что различные способы кодирования акцентированных символов могут создать ложные отрицания, то лучший способ сделать это - нормализовать 2 строки, используя одну из функций нормализации из Unicode :: Нормализовать, прежде чем делать сравнение или сопоставление.
В противном случае становится немного грязно.
Вы могли бы получить полное имя персонажа, используя charnames::viacode(0x1EAD);
(для U + 1EAD это было бы МАЛЕНЬКОЕ ПИСЬМО А С CIRCUMFLEX И DOT НИЖЕ ), и получить различные сочинения разделив имя на WITH | AND. Затем вы можете сгенерировать все комбинации (проверяя, что они существуют!) Из базового символа + модификаторы и другие модификаторы. На этом этапе вы столкнетесь с проблемой сопоставления имен объединяющих символов в полном имени (например, CIRCUMFLEX ) с действительным именем объединяющего символа ( ACCENT ACCENT . Наверное, есть правила для этого, но я их не знаю.
Это была бы моя наивная попытка, возможно, есть лучшие способы сделать это, но, поскольку до сих пор никто не предлагал информацию ...