По категориям
Категории проверяются в этом порядке, и побеждает первое совпадение, поэтому пробел нулевой ширины попадает в отчёт как символ нулевой ширины, а не как общий форматирующий символ.
Нулевая ширина и невидимые
Управляющий параметр Базовый проход (всегда включено)
Символы без глифа и без ширины, которым в прозе не место нигде: пробел нулевой ширины, соединитель слов, мягкий перенос, метка порядка байтов, четыре невидимых математических оператора, устаревшие форматирующие символы, знаки межстрочных аннотаций, управляющие символы музыкальной нотации и навсегда зарезервированные несимволы Unicode.
Переопределения направления
Управляющий параметр Базовый проход (всегда включено)
Пять символов встраивания и переопределения. Они переставляют текст, который им не принадлежит: именно так имя файла можно показать не тем, чем оно является. Нет такого контекста, в котором Ghostchars оставил бы хоть один из них.
Метки направления
Управляющий параметр Bidi-метки --bidi
Подсказки о направлении: метки «слева направо» и «справа налево», метка арабской буквы и четыре изолята. Рядом с текстом справа налево они снимают настоящую неоднозначность и сохраняются; в английском абзаце это невидимая набивка и опубликованный носитель стеганографии, поэтому они удаляются.
Соединители, селекторы и заполнители
Управляющий параметр Агрессивно -a
Невидимые символы, которые связываются с соседом слева или справа: соединитель и разъединитель нулевой ширины, селекторы вариантов, теговые символы и заполнители монгольского письма, кхмерского и хангыля. Сохраняются, когда соседи заставляют их нести нагрузку, и удаляются, когда стоят сами по себе.
Любой другой форматирующий символ
Управляющий параметр Базовый проход (всегда включено)
Правило на всё остальное. Каждый оставшийся символ с общей категорией Unicode Cf удаляется, поэтому форматирующий символ, добавленный в будущей версии Unicode, будет пойман без изменения кода. Орфографические исключения (арабские знаки числа, сирийский знак сокращения, знак числа кайтхи) сопоставляются раньше и остаются нетронутыми.
Определяется по свойству Unicode, а не по списку, поэтому фиксированного набора кодовых позиций для перечисления нет.
Символы частного использования
Управляющий параметр Символы частного использования --pua
Кодовые позиции, которые Unicode никогда не назначит: их смысл задаёт частная договорённость между шрифтом и приложением. Здесь живут иконочные шрифты, поэтому удаление включается вручную: в текстах интерфейса такие символы и есть содержимое.
Экзотические пробелы
Управляющий параметр Пробелы -s
Пробелы, отличные от U+0020: неразрывный, узкий и средний, идеографический, огамический знак пробела и одиннадцать типографских пробелов фиксированной ширины. Их заменяют обычным пробелом, а не удаляют, потому что они разделяют слова.
Разделители строк
Управляющий параметр Концы строк -n
Разделители строк и абзацев Unicode и пришедший из EBCDIC NEL. Сводятся к обычному переводу строки, а не удаляются: удаление склеило бы две строки.
Управляющие символы
Управляющий параметр Управляющие символы --controls
Управляющие коды C0 и C1, кроме табуляции, перевода строки и возврата каретки. Их присутствие в тексте обычно означает сбой декодирования или намеренную проверку на прочность.
Типографская пунктуация
Управляющий параметр Пунктуация --punct
Типографские кавычки, длинное и среднее тире, многоточие, знак минуса и штрихи. Здесь ничего не спрятано, все эти символы видимы, но их кодовые позиции отличаются от ASCII-форм, а выбор между прямым и типографским апострофом даёт опубликованный канал в один бит на апостроф.
Полосы цитат из терминала
Управляющий параметр Полосы цитат --gutters
Полоса, которую терминал рисует слева от цитаты и которая при копировании попадает в текст в начале каждой строки. Полоса учитывается, только если она открывает строку и тот же символ больше не встречается дальше в этой строке, поэтому таблица, нарисованная символами рамок, остаётся нетронутой. Уходит вместе с одним пробелом после неё. Включается вручную, потому что дерево папок, выведенное в терминале, начинает строки с такой же полосы.
| Код | Имя | Базовый проход |
|---|
| U+2502 | │ BOX DRAWINGS LIGHT VERTICAL | Нет |
| U+2503 | ┃ BOX DRAWINGS HEAVY VERTICAL | Нет |
| U+258C | ▌ LEFT HALF BLOCK | Нет |
| U+258D | ▍ LEFT THREE EIGHTHS BLOCK | Нет |
| U+258E | ▎ LEFT ONE QUARTER BLOCK | Нет |
| U+258F | ▏ LEFT ONE EIGHTH BLOCK | Нет |
Буквы-двойники
Управляющий параметр Буквы-двойники --confusables
Кириллические, греческие, армянские, чероки, полноширинные и математические буквы, которые рисуются точно так же, как латинские. В таблице соответствий 1513 записей, собранных из данных Unicode о похожих символах, и двойник учитывается только внутри слова со смешанной письменностью, то есть цепочки букв, где вместе с ним есть хотя бы одна ASCII-буква или цифра, как в «Miсrosoft». Слово, целиком написанное кириллицей или по-гречески, никогда не станет находкой и не будет тронуто. И всё равно включается вручную, потому что меняет буквы, которые вы видите.