Стаття
Слова, символи та регістр: як насправді працює підрахунок тексту
Підрахунок тексту звучить як єдина справа, в якій комп'ютер не може помилитися, і все ж два інструменти можуть спокійно видати різні числа для того самого абзацу, одне емодзі здатне коштувати вам 70 символів SMS, а "280 символів" у X означають не зовсім те, чим здаються. За буденними справами на кшталт написання тексту в межах ліміту, перейменування змінних чи заповнення макета ховається кілька правил, які варто знати. Ця стаття розглядає їх по черзі, використовуючи невеликі текстові інструменти цього сайту як робочі приклади.
Що вважається словом
Більшість лічильників, включно з нашим, визначають слово так само, як це робили друкарки: послідовність видимих символів між пробілами або переносами рядка. Уже саме це правило пояснює більшість розбіжностей. "State-of-the-art" англійською це одне слово чи чотири? Якщо розбивати за пробілами, то одне. Числа, URL-адреси та адреси електронної пошти також рахуються кожна як одне слово. Ця умовність не працює для мов, які пишуться без пробілів: у китайській чи японській немає пробілів, за якими можна ділити текст, тож "кількість слів" втрачає сенс і варто орієнтуватися на кількість символів. Оцінка часу читання додає ще одну умовність поверх цього: наш лічильник слів ділить кількість слів на 200 слів за хвилину, звичайну середню швидкість мовчазного читання у дорослих, тож результат варто сприймати як орієнтир для планування, а не як обіцянку.
Символ не завжди дорівнює одному знаку
Підрахунок символів ще заплутаніший, бо текст у Unicode має шари. Те, що ви сприймаєте як один символ (графему), насправді може складатися з кількох кодових точок, а кожна кодова точка займає одну або дві з 16-бітних одиниць, які рахує властивість length у JavaScript. Емодзі широкої усмішки це одна графема, але дві таких одиниці, тож наївний лічильник покаже 2. Емодзі родини, зібране з кількох емодзі людей, це одна графема, п'ять кодових точок і вісім одиниць. Навіть звичайний текст стикається з цією проблемою: "café" можна зберігати або з é як однією кодовою точкою, або як e з наступним комбінувальним акцентом, на екрані однаково, але в підрахунку по-різному. Саме тому два лічильники розходяться: вони вимірюють різні шари. Правила об'єднання кодових точок у символи, які сприймає користувач, стандартизовані у додатку Unicode щодо сегментації тексту (UAX #29), і коректно реалізовані лічильники дотримуються його.

Ліміти, заради яких ви насправді рахуєте
Саме на обмеженнях символів підрахунок перетворюється на гроші. Одне SMS вміщує 160 символів у компактному алфавіті GSM-7, але лише один символ поза ним (емодзі або літера, якої немає в цьому алфавіті) перемикає все повідомлення на UCS-2, і ліміт падає до 70; довгі повідомлення діляться на частини по 153 або 67 символів, кожна тарифікується окремо. X дозволяє 280 символів на пост, але зважує їх: будь-яке посилання рахується як 23 символи незалежно від реальної довжини, а більшість емодзі та символів CJK (китайських, японських, корейських) рахуються як 2. У пошукових сніпетах обмеження м'які: Google обрізає заголовки й описи за шириною в пікселях, тож звичні цифри 60 символів для заголовка і 155 для опису це радше робоча умовність, ніж гарантія. Коли ліміт справді важливий, рахуйте за тими самими правилами, що й платформа, і залишайте запас.
Регістр це умовність, і кожен стиль має своє місце
Зміна регістру здається дрібницею, поки ви не натрапите на умовності, надбудовані поверх неї. Тут ідеться про текст на латиниці: ідентифікатори в коді або заголовки англійською. У прозі є Title Case, який полюбляють заголовки в США, і sentence case, якому надають перевагу більшість європейських стильових посібників. У коді свої родини: camelCase для змінних у JavaScript і Java, PascalCase для назв класів і компонентів, snake_case у Python і базах даних, SCREAMING_SNAKE_CASE для констант і kebab-case для CSS-класів, назв файлів і URL-слагів, де нижній регістр рятує від класичної пастки з посиланнями, що різняться лише регістром. Вручну перетворити десяток ідентифікаторів не проблема; перетворити список із вісімдесяти це певний спосіб наробити одруків. Конвертер регістру застосовує це перетворення механічно, включно з тонкощами на кшталт того, що робити з абревіатурами та наявними роздільниками.

Текст-заповнювач і файли, які телефон відмовляється відкривати
Ще дві справи завершують цей перелік. Макети оцінюють на текстах-заповнювачах, бо справжні речення відволікають увагу на свій зміст; lorem ipsum працює саме тому, що це майже, але не зовсім, читабельна латина. Наш генератор створює її абзацами, реченнями або словами, тож макет можна заповнити до реалістичної довжини замість повторення того самого вставленого блоку. А коли хтось надсилає файл .md, .json, .csv або .log, який телефон відмовляється відкривати, текстовий переглядач просто у браузері показує його без встановлення редактора і без пересилання файлу на якийсь сервіс конвертації. Усе перелічене вище, включно з підрахунком, працює повністю у вашому браузері: текст ніколи не залишає вашого пристрою, а це особливо важливо, коли ви вимірюєте чернетку, договір або лог, повний внутрішніх шляхів.
Інструменти з цієї статті
- Лічильник слівПідраховуйте слова, символи, речення, абзаци та оцінюйте час читання. У реальному часі, без завантаження.
- Перетворювач регіструПеретворюйте текст між camelCase, snake_case, kebab-case, Title Case та іншими. Без завантаження на сервер.
- Генератор Lorem IpsumГенеруйте текст-заповнювач lorem ipsum за абзацами, реченнями чи словами. Копіюйте одним кліком. Без завантаження.
- Переглядач тексту / кодуВідкривайте текстові та кодові файли, які ваш телефон відмовляється показувати, Markdown, HTML, JSON, CSV, XML та інші.
Поширені запитання
Скільки слів вміщується на сторінці?
Видавничі умовності говорять приблизно про 500 слів для сторінки з одинарним інтервалом і близько 250 для сторінки з подвійним інтервалом, за умови стандартного 12-пунктового шрифту на папері формату A4 або letter. Реальні документи відхиляються від цих цифр за кожної зміни шрифту, полів чи заголовків, тому в завданнях і роботах на подання дедалі частіше вказують саме кількість слів, а не сторінок. Якщо текст уже є, порахуйте його напряму і пропустіть оцінку; умовності про сторінки корисні лише до того, як текст існує.
Що насправді означає lorem ipsum?
Це перемішана латина, а не безглуздя. Стандартний уривок вирізаний і перетасований із трактату Цицерона De finibus bonorum et malorum, філософського тексту 45 року до н. е.; фрагмент "dolorem ipsum" означає "біль сам по собі". Перетасування це і є суть: текст виглядає як природна мова, з правдоподібною довжиною слів і ритмом речень, але опирається прочитанню, тож глядач оцінює макет, а не зміст. Його сучасне поширення зазвичай пов'язують із переказними аркушами Letraset у 1960-х роках і настільними видавничими програмами у 1980-х.
Чому платформа рахує менше символів, ніж мій лічильник?
Бо платформи рахують за власними вагами. X відштовхується від 280, але тарифікує кожне посилання як 23 символи, а більшість емодзі та символів CJK як 2 кожен. SMS-шлюзи перемикають усе повідомлення зі 160-символьного алфавіту GSM-7 на 70-символьний режим UCS-2, щойно цього вимагає бодай один символ. І будь-яка платформа може рахувати кодові одиниці, а не графеми, тож одне сімейне емодзі здатне з'їсти 8 символів ліміту. Коли цифра на кнопці не збігається з вашим лічильником, перемагають правила платформи; складайте текст із запасом або перевіряйте вбудованим лічильником платформи перед надсиланням.