Я разрабатываю некоторый код для представления символов валюты как части метки в моем приложении, и у меня есть справочный список символов валюты в шестнадцатеричном формате Unicode.В моем коде я форматирую валюту следующим образом:
(символ валюты) (десятичная строка) (описание валюты)
Этот подход прекрасно работает для большинства символов, однако я заметил, что некоторыесимволов автоматически сдвигаются вправо от десятичного значения, даже если явно размещены слева.Используя отладчик, я вижу это поведение даже на самом фундаментальном уровне в самих строках, так что это не случай каких-либо манипуляций на более высоких уровнях при рендеринге на уровне представления.Следующий код представляет простой случай, демонстрирующий проблему:
string rialSymbol = "\ufdfc";
string amount = "123.45";
string description = "Rials";
string plainConcat = rialSymbol + " " + amount + " " + description;
Debug.WriteLine(plainConcat);
Вывод отладки (который также соответствует тому, что видно в пользовательском интерфейсе приложения) выглядит следующим образом:
123.45 (символ риала) Rials
(Примечание: символ находится справа от десятичного знака, а не слева, как указано)
Я пробовал много подходов и вариантов форматирования строк, культурного форматирования и т. Д., Но, похоже, ничего не происходитрешить эту проблему.Как я могу принудительно установить расположение символа Юникод, не заставляя каркас определять размещение символа относительно десятичного значения?Это работает с большинством других символов, почему Rial (и некоторые другие) вызывают этот тип фундаментального поведения строки?