С чего всё началось

Я читаю много технической документации. SDD (Specification Driven Development), RFC, спецификации — всё это приходится проглатывать в больших объёмах. Обычное чтение глазами упирается в скорость: вы всё равно тратите время на саккады (скачки глаза от слова к слову) и регрессии (возвраты назад по строке).

В какой-то момент я вспомнил про технику RSVP — Rapid Serial Visual Presentation. Это когда слова показываются одно за другим в одной точке экрана, а скорость задаётся количеством слов в минуту. Глазу не нужно двигаться — он просто смотрит в центр и схватывает слова.

Проблема существующих решений

Я погуглил готовые варианты. Есть веб-сервисы, есть мобильные приложения, есть плагины для браузеров. Но у всех одна и та же проблема:

  1. Не интегрируются с редактором — нельзя открыть файл из Zed и сразу читать
  2. Оверлей не настраивается — позиция на экране фиксированная
  3. Закрытый исходник — не добавить свою фичу
  4. Центральная буква не подсвечивается — а это, как оказалось, критически важно для скорости распознавания

Я решил написать свой. На Rust, конечно.

Почему Rust

Потому что:

  • RSVP-ридер должен быть быстрым — слова мелькают с частотой 300+ в минуту, никаких пауз на GC
  • Кроссплатформенность — Linux, macOS, Windows из одного кода
  • Без зависимостей — не хотелось тащить Electron или Python

Я собрал минимальный прототип за вечер: winit для окна, ab_glyph для рендеринга шрифта, pixels для отрисовки пикселей. Получилось ровно то, что нужно.

Как это работает

Программа читает текстовый файл, токенизирует его на слова и выводит по одному в центре экрана. Каждое слово рендерится с подсветкой центральной буквы (ORP — Optimal Recognition Point).

Исследования показывают: когда глаз видит слово, он фокусируется не на первой букве, а примерно на ⅓ от начала. Подсветка этой буквы помогает мозгу быстрее распознать слово целиком. Это не просто прикол — это научно обоснованный приём, который реально увеличивает скорость чтения без потери понимания.

Интеграция с редактором

Киллер-фича: нажимаете Space — чтение ставится на паузу, и редактор (Zed, VS Code, Vim или любой другой) открывается ровно на том слове, где вы остановились. Никакого поиска по тексту, никакой потери контекста. Сфокусировались, отредактировали спеку и пошли дальше читать.

Настроил хоткей Cmd+Shift+R в Zed — и читаю любой открытый файл одной кнопкой. SDD, логи, сниппеты кода — всё, что можно открыть, можно и прочитать через RSVP.

Что дальше

Проект открыт на GitHub: github.com/bimawa/SpeedReaderRust

Установка одной командой:

cargo install speed-reader

Сейчас это рабочий MVP. В планах:

  • Статистика чтения (средняя скорость, количество слов за сессию)
  • Профили с разной скоростью под разные типы текстов
  • Тёмная и светлая темы

Попробуйте — и пишите issue, если найдёте баг или придумаете фичу.