Перейти к содержимому
LeedyBox
Поддержать

Полноширинные и полуширинные символы

ABC123 и ABC123 выглядят почти одинаково, но для компьютера это разные символы. Это руководство объясняет, откуда взялись полноширинные (full-width) и полуширинные (half-width) символы, почему на них спотыкаются формы и поиск, как полуширинная катакана записывает ガ двумя символами и какие похожие знаки вовсе не образуют пару.

Почему ширины две

В японских, китайских и корейских текстах каждый знак занимает квадратную клетку. У первых японских компьютеров было два вида наборов символов: однобайтовый JIS X 0201 с латинскими буквами, цифрами и небольшим набором катаканы, занимавшей полклетки, и двухбайтовые, такие как JIS X 0208, с иероглифами, каной и второй копией букв и цифр на всю клетку. Корейский стандарт KS X 1001 тоже содержит полноширинную копию латинского алфавита.

Unicode сохранил обе копии, чтобы старые тексты можно было преобразовать без потерь. Полноширинные формы символов ASCII (U+FF01–FF5E) и полуширинная катакана (U+FF61–FF9F) находятся в блоке «Halfwidth and Fullwidth Forms», а база данных символов Unicode указывает, какому обычному символу соответствует каждый. Именно это использует конвертер.

У каких символов есть полноширинная и полуширинная форма

ВидПолноширинныеПолуширинные
Латинские буквыABC abcABC abc
Цифры01230123
Знаки ASCII!?@#()-/!?@#()-/
ПробелU+3000 (идеографический пробел)U+0020
Знаки валют и др.¥ ¢ £¥ ¢ £
Катаканаカタカナ ガ パカタカナ ガ パ
Японская пунктуация。「」、・ー。「」、・ー

У иероглифов, хираганы и слогов хангыля только одна ширина. Полуширинной хираганы нет, как нет полуширинной формы и у маленьких ヵ, ヶ, ヮ и старых знаков ヰ и ヱ. Кириллица в этом блоке не представлена.

Где разница создаёт проблемы

  • Формы. Поле, которое принимает только цифры, отклонит 090, а индекс или номер карты, скопированный с японского сайта, часто оказывается полноширинным. Преобразование в полуширинные символы решает проблему.
  • Поиск и дубликаты. Поиск ABC не всегда находит ABC, а в списке клиентов одно и то же имя может оказаться дважды в двух ширинах.
  • Внешний вид. Полноширинные буквы в русском тексте выглядят разреженными, полуширинная катакана в японском тексте — сжатой.
  • Системы со своими правилами. Одни японские формы требуют чтение имени (フリガナ) полноширинной катаканой, другие — хираганой, а некоторые старые системы принимают только полуширинную катакану. Следуйте указаниям формы.

Полуширинная катакана и знаки озвончения

В полуширинной катакане нет отдельных звонких букв. ガ записывается двумя символами — カ и знаком озвончения ゙, а パ — ハ и знаком ゚. Хороший конвертер соединяет пару в одну полноширинную букву и снова разделяет её при обратном преобразовании. Поэтому число символов меняется: в ガッコウ пять символов, в ガッコウ четыре.

Знак, который не может соединиться с предыдущей буквой, как в ア゙, остаётся отдельным (ア゛). ヴ становится ヴ, а ヷ и ヺ — ヷ и ヺ.

Похожие символы, которые не образуют пару

СимволЧто этоЕсть полуширинная пара?
~ (U+FF5E)Полноширинная тильдаДа: ~
〜 (U+301C)Волнистое тире, японский знак препинанияНет
- (U+FF0D)Полноширинный дефис-минусДа: -
ー (U+30FC)Знак долготы в катаканеТолько ー (полуширинная катакана)
" 'Полноширинные прямые кавычкиДа: " '
« » “ ”Типографские кавычкиНет

Обратная косая черта — особый случай. В JIS X 0201 на месте, где в ASCII стоит обратная косая черта, был знак иены, поэтому некоторые японские шрифты до сих пор рисуют её как ¥. Символ тот же, отличается только изображение.

Хирагана и катакана

У каждого знака хираганы от ぁ до ゖ есть знак катаканы с тем же названием, и Unicode располагает их ровно в 96 позициях друг от друга, поэтому преобразование точное: やまだ たろう становится ヤマダ タロウ. Знак долготы ー используется в обеих азбуках и не меняется. Знаки катаканы без пары в хирагане, например ヷ, остаются катаканой.

Программистам: нормализация меняет больше

Форма нормализации Unicode NFKC тоже делает полноширинные буквы полуширинными и соединяет ガ в ガ, но одновременно меняет многие другие символы: ① становится 1, № — No, ㈱ — (株), а ㍻ — 平成. Используйте её, когда вам нужно всё это, например для сравнения поисковых ключей. Чтобы изменить только ширину, преобразуйте лишь пары по ширине и оставьте остальное как есть.

Частые вопросы

Почему форма считает мой номер неверным, хотя он выглядит правильно?

Скорее всего, в нём полноширинные цифры, скопированные с другой страницы. Пропустите его через конвертер с режимом «Полуширинные» и вставьте снова.

Меняются ли иероглифы при переводе в полуширинные символы?

Нет. У иероглифов, хираганы и хангыля нет полуширинной формы, они остаются без изменений.

Идеографический пробел равен двум пробелам?

Нет. Это один символ (U+3000) шириной в иероглиф. После преобразования получается один обычный пробел, а не два.

Почему японская форма не принимает мою катакану?

Возможно, она ждёт полноширинную катакану, а вы ввели полуширинную, или наоборот, либо не принимает маленькие знаки вроде ァ и ッ. Прочитайте подсказку у поля.