У меня есть пользовательские функции печати, которые я использую для печати номеров. Я сделал версию ASCII и версию UTF-16LE. Версия UTF-16LE использует коды / символы полной ширины для 0-9 и A-F для шестнадцатеричного. При отладке своих функций я заметил, что персонажи выглядят немного иначе в визуальной студии, чем персонажи ASCII, и хотя это не беспокоило меня, это заставило меня задуматься об этом. Поэтому я решил сделать быстрый поиск в Google «Unicode Halfwidth против Fullwidth»
… И я нашел несколько страниц, которые говорят о форме «Fullwidth», ссылающейся на визуальную ширину символов, в то время как я думал, что «Fullwidth» относится к ширине кодировки (2 байта или больше) …
Вот несколько страниц и цитаты из них:
https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms
ICU Unicode Normal против Fullwidth
«Чтобы все выстраивалось аккуратно, IBM определила набор букв и цифр полной ширины (лучше было бы двойной ширины)».
https://en.wikipedia.org/wiki/Half-width_kana
«Полуширина каны — это символы катаканы, отображаемые наполовину от их нормальной ширины (соотношение сторон 1: 2) вместо обычного квадратного (1: 1) соотношения сторон. Например, обычная форма катаканы (полная ширина) ka равно カ, а полуширина формы カ. «
Для меня не имеет смысла, что «полная ширина» будет относиться к визуальной ширине, когда у нас есть разные шрифты для размера и выравнивания.
Так:
— Может ли кто-нибудь дать мне хороший ответ, почему «полная ширина» относится к визуальной ширине. Где в спецификации Unicode UTF-16 это сказано?
В — Является ли разработчик / программист желательным ли иметь выбор для вывода в виде Halfwidth или Fullwidth с использованием флагов?
Вы нашли свои собственные ответы на вопрос о происхождении полной и половинной, поэтому я не буду вдаваться в подробности. Да, обозначение относится к визуальной ширине символов. Извините, но у меня нет официальной ссылки на это.
Одной из целей Unicode является обработка конверсии в оба конца из / в любой устаревший набор символов без потерь. Поскольку существуют устаревшие наборы символов с символами полной ширины, они также должны быть частью Юникода, иначе они будут преобразованы неправильно.
Мне трудно представить себе ситуацию в современном коде, когда вы захотите сделать выбор между обычными и полнофункциональными символами. Это действительно только для устаревшей поддержки.
Kana полуширины, как вы обнаружили, является лишь подмножеством Полуширины и полные полосы, и это свойство кодовой точки / глифа, а не кодировки. UTF-16 является одной из кодировок для Unicode.
Причина существования этих персонажей в том, что Unicode был разработан для преобразования без потерь назад и вперед между устаревшими наборами символов. Если вы посмотрите ближе на Юникод блоки вы увидите, что есть много избыточных символов, таких как Ⅶ Ⅷ Ⅸ ㎆ ㎇ ㎎ ㎏ ㎐ Dz dz NJ …. Они все исключительно для совместимости, потому что они использовались в некоторых наборах символов.
Смотрите также Какие проблемы заставляют людей использовать специфичные для Японии кодировки, а не Unicode?
Является ли разработчик / программист желательным ли иметь выбор для вывода в виде Halfwidth или Fullwidth с использованием флагов?
Лично я не вижу причин для их использования, за исключением некоторых редких случаев, таких как отображение символов на квадратной сетке. Хуже всего то, что эти японские иероглифы часто отображаются без четкого типа и сглаживания (в небольших размерах), так что читать глаза — боль. Если вы находитесь в Японии, вы заметите некоторые формы, которые требуют использования символов половинной или полной ширины без автоматического преобразования, что плохо.