Перевернуть текст: задом наперёд, вверх ногами и зеркально
«Переверни мне текст» это запрос, под которым скрываются три разные операции, и все три называют себя одинаково. Один человек хочет «тевирп» из «привет», второй имел в виду буквы вверх ногами, третий ожидает отражения как в зеркале. Каждый вариант делается по-своему, и путаница между ними самое частое разочарование в теме: получил не то, что представлял, и решил, что «интернет так не умеет». Умеет, просто нужно знать, какой именно переворот требуется.
Три разных переворота
- реверс: символы идут в обратном порядке, «привет» превращается в «тевирп»;
- переворот вверх ногами: каждый символ заменяется на похожий символ, выглядящий повёрнутым на 180 градусов, и порядок тоже меняется;
- зеркальное отражение: символы не меняются вовсе, меняется отрисовка, буквы и строки отражаются как в зеркале.
Первый вариант делается в один шаг и работает с любым текстом. Второй требует таблицы замен и существует благодаря тому, что в Unicode нашлись похожие на перевёрнутые символы из разных письменностей. Третий вообще не делается заменой символов: зеркальных пар для букв в Unicode практически нет, и отражение достигается только на уровне отрисовки.
Реверс: текст задом наперёд
Реверс это строгая операция: строка читается с конца, каждый символ встаёт на зеркальную позицию. Буквы, пробелы и знаки препинания едут вместе, поэтому фраза не просто переворачивается по буквам, у неё меняется и порядок слов. Именно реверс используется в проверке на палиндром: если строка совпала со своим реверсом, она читается одинаково в обе стороны.
У реверса есть аккуратное математическое свойство: применённый дважды, он возвращает исходную строку, потому что каждый символ дважды встаёт на зеркальную позицию. Отсюда бесплатная проверка на симметрию: если результат реверса совпал с исходной строкой, текст читается одинаково в обе стороны. Переворот вверх ногами обратим так же, если таблица замен составлена парами, а зеркальное отражение обратно не требует ничего: сам текст при отражении никогда не менялся.
привет → тевирп
привет мир → рим тевирп
довод → довод (палиндром, совпал с собой)
hello, world → dlrow ,ollehГде реверс ломается
Реверс работает с символами по отдельности, а некоторые видимые знаки собраны из нескольких символов сразу. Эмодзи-семья из трёх человечков это три отдельных эмодзи, склеенных невидимыми разделителями; после реверса разваливается на бессвязные куски. Флаги устроены как пары специальных символов-букв: разворот рвёт пару, и вместо флага остаются два пустых квадратика. Буквы с надстрочными знаками в разобранной форме распадаются на букву и отдельный штрих, и штрих прилипает к соседней букве. Практический вывод: для строк с эмодзи и диакритикой результат реверса стоит проверять глазами, а не доверять его вслепую.
Отдельная тонкость с языками, которые пишутся справа налево. Арабский и иврит хранятся в логическом порядке и отображаются в обратном: реверс такой строки меняет направление отображения на противоположное, и текст, читавшийся нормально, перестаёт. В смешанных строках с латиницей и арабским реверс создаёт перестановки, которые глазами разобрать труднее, чем в чисто латинском тексте. Для переворота текста это ограничение честно указано: инструмент работает по символам, составные знаки и RTL-тексты он разворачивает без понимания их устройства.
Вверх ногами: таблица омоглифов
Переворот вверх ногами построен на омоглифах: символах из разных письменностей Unicode, которые выглядят как повёрнутые на 180 градусов. Латинской букве b соответствует q, букве d соответствует p, а e заменяется на ǝ, перевёрнутую латинскую e из МФА. Порядок при этом тоже меняется, потому что строка переворачивается целиком: перевернуть нужно и каждую букву, и их последовательность.
a → ɐ b → q c → ɔ d → p e → ǝ
f → ɟ h → ɥ i → ᴉ k → ʞ m → ɯ
n → u p → d r → ɹ t → ʇ u → n
v → ʌ y → ʎ w → w o → o x → x
Знаки: ! → ¡ ? → ¿ . → ˙ , → '
Цифры: 6 → 9 9 → 6 0 → 0 1 → Ɩ
hello → (по таблице) → ollǝɥКлючевая оговорка: не у всех букв есть пара. Латиница покрыта лучше всего, цифры частично, а кириллица хуже всех, потому что перевёрнутые начертания большинства русских букв в Unicode отсутствуют. Там, где пары нет, генератор либо пропускает букву, либо подбирает далёкое приближение. Отсюда правило честного описания: результат «похож, но не равен» исходному тексту. Это другой набор символов, и обычный поиск по странице не найдёт в перевёрнутой строке ни «hello», ни «привет», потому что ищет он совсем другие коды.
Из неполноты таблиц следует практическая деталь: разные генераторы перевёрнутого текста дают разные результаты на одной и той же строке. Один заменяет недостающие буквы далёкими приближениями, другой пропускает их, третий работает только с латиницей и оставляет кириллицу нетронутой. Перед тем как отправлять перевёрнутую подпись кому-то ещё, стоит взглянуть на неё на другом устройстве: шрифт получателя может не знать части символов таблицы и показать квадратики.
Как прочитать перевёрнутый текст обратно
Самый простой способ: применить то же преобразование ещё раз. Реверс возвращает реверс, а таблица замен построена парами, b меняется на q и q обратно на b, поэтому двойной переворот восстанавливает исходную строку, если замены составлялись взаимно. В копировании из мессенджеров есть ловушка: некоторые шрифты отображают редкие символы из таблицы квадратиками, хотя текст при этом остаётся корректным, и второй переворот всё равно вернёт читаемое.
Зеркальный текст
Зеркальный вариант устроен принципиально иначе: сами символы не меняются, меняется отрисовка. В браузере это делается свойством CSS transform: scaleX(-1), которое отражает блок по горизонтали, и в отражённом виде читается как раз то, что ожидают от «зеркального текста». Замена букв на зеркальные глифы через Unicode не работает: у большинства букв зеркальных пар нет, то, что на первый взгляд выглядит зеркальными буквами, оказывается омоглифами из других алфавитов, набранными задом наперёд.
- CSS transform: scaleX(-1): отражает любой блок с текстом, символы остаются обычными;
- поворот изображения: текст рисуется, картинка отражается, самый предсказуемый способ для картинок с подписями;
- RTL-символы и управляющие символы направления: меняют порядок строк и букв на противоположный, но не отражают сами начертания, поэтому результат зеркальностью не является.
Развитием этой темы являются шутки с невидимыми управляющими символами направления: вставленный в текст RTL-маркер делает следующую часть строки реверсивной, и слова выводятся задом наперёд, хотя копируются в нормальном порядке. Это реверс отображения, а не реверс хранения, и именно поэтому такие шутки путают: выделить и скопировать перевёрнутый кусок получается, а «наоборот» он не вставляется.
Где перевёрнутый текст применяется
- дружеские приколы и подписи в мессенджерах: перевёрнутые строки проходят как обычные символы;
- мемо-подсказки к паролям: подсказка пишется задом наперёд, чтобы случайный взгляд не прочитал её;
- проверка на палиндром: реверс показывает симметрию строки одним сравнением;
- тесты на внимательность и головоломки: читаемость перевёрнутого текста сама по себе упражнение;
- типографские эксперименты: зеркальные надписи для печати на прозрачных материалах.
Разницу между переворотом и отражением наглядно показывает детская забава с надписью на запотевшем стекле: буквы, написанные справа налево, с обратной стороны стекла выглядят зеркальными, но остаются обычными символами. Перевёрнутый вверх ногами текст устроен иначе: нужные начертания уже лежат в самих символах, и он выглядит одинаково на любом носителе, от экрана до тетрадного листа.
Перевёрнутые строки иногда используют и для обхода простых текстовых фильтров: замена символов на похожие сбивает поиск по ключевым словам. Для лингвистики и безопасности это рабочая тема, но правила конкретных площадок обычно это запрещают, и мы не будем на этом останавливаться: механика замен и так описана выше.
Для украшения перевёрнутых подписей рядом стоит эмодзи-конвертер, а если после переворота нужно привести регистр в порядок, выручит конвертер регистра. Про связь с палиндромами подробнее написано в статьях про проверку текста на палиндром и про слова-палиндромы: сравнение строки с её реверсом это определение палиндрома, сведённое к одной операции.
Типичные ошибки
- путают три операции: просят зеркальный текст, а получают реверс, или ожидают «вверх ногами», а им возвращают реверс символов;
- реверсируют строки с эмодзи-семьями и флагами и удивляются развалившимся квадратикам вместо признания ограничения;
- пытаются найти перевёрнутую строку поиском по странице: поиска нет, потому что это другие символы;
- вставляют перевёрнутый текст в формы с валидацией: проверщики имён, промокодов и ссылок отвергают посторонние символы;
- считают RTL-символы зеркальными: направление письма меняется, а начертания букв нет;
- реверсируют арабский или иврит без учёта направления письма и получают двойной переворот.
Частые вопросы
Как перевернуть большой текст быстро?
Вставить его в инструмент переворота текста и скопировать результат: реверс выполняется мгновенно при любом объёме, потому что операция линейна по длине строки. Для однократного переворота вручную ничего не подойдёт: человеческий мозг переворачивает слова, но не символы, и надёжнее делегировать машине.
Почему перевёрнутый текст выглядит как иностранный?
Потому что он им отчасти и является: таблица замен собирает символы из латиницы, МФА, греческого, армянского и других письменностей, где нашлись подходящие начертания. Набор символов в строке меняется, и шрифт показывает их начертаниями, незнакомыми глазу. Это следствие механики омоглифов, а не дефект.
Работает ли переворот вверх ногами с русскими буквами?
Частично. Симметричные буквы вроде О, Н и Ф выглядят приемлемо, но для большинства кириллических букв перевёрнутых пар в Unicode нет, поэтому результат получается с пропусками и приближениями. Латиница в этом смысле единственный полноценно покрытый алфавит, и самые аккуратные перевёрнутые строки собираются именно на ней.
Можно ли писать перевёрнутым текстом в мессенджерах?
Обычно да: перевёрнутые строки это обычные символы Unicode, и большинство мессенджеров отправляют их как обычное сообщение. Ограничения возникают на стороне шрифтов устройства получателя: редкие символы из таблицы замен могут отобразиться квадратиками. Сами символы при этом не теряются, и на устройстве с полным шрифтом тот же текст читается.
Как проверить палиндром через реверс?
Перевернуть строку и сравнить с исходной: совпадение означает, что текст читается одинаково в обе стороны. Для фраз перед сравнением убирают пробелы, знаки и регистр, иначе совпадение не проявится. Полный разбор с примерами и правилами нормализации есть в статье про палиндромы, а быстрая проверка занимает секунды в проверке на палиндром.
Реверс текста
Реверсируйте текст в трёх режимах: весь текст, по строкам или по словам
Текст в эмодзи
Конвертируйте текст в эмодзи-представления с помощью региональных индикаторов и клавишных символов
Конвертер регистра
Преобразуйте текст в ВЕРХНИЙ РЕГИСТР, нижний регистр, Заглавные Слова, предложение, camelCase, PascalCase, snake_case и kebab-case
Проверка на палиндром
Проверьте, читается ли слово или фраза одинаково с двух сторон