Dzięki Johannes, ustawiłeś mnie na właściwej drodze. Kod z którymi mam go do pracy wygląda następująco:
public string ConvertSuperscript(string value)
{
string stringFormKd = value.Normalize(NormalizationForm.FormKD);
StringBuilder stringBuilder = new StringBuilder();
foreach (char character in stringFormKd)
{
UnicodeCategory unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(character);
if (unicodeCategory != UnicodeCategory.NonSpacingMark)
{
stringBuilder.Append(character);
}
}
return stringBuilder.ToString().Normalize(NormalizationForm.FormKC);
}
Próbowałem rozkład kanoniczny wcześniej, ale potrzebny rozkład zgodności działał poprawnie.
Należy zauważyć, że wszystkie super- i dolne indeksy w kodzie Unicode mają rozkład do swoich normalnych odpowiedników znakowych. Tak więc powinno to działać bez zakodowanej automatycznie instrukcji 'switch' z dowolnego wyboru znaków. – Joey