TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
commit -m "better"

21 Aug, 22:01

Открыть в Telegram Поделиться Пожаловаться

Запилить хороший рендер эмулятора терминала - продуктово весьма сложная задача. Не технически, потому что технически там каждый раз все понятно, а вот именно понять, что и когда надо делать - сложно.

Вот возьмем italic.

Если ты хочешь хорошо отрисовать текст в italic, то ты неизбежно придешь к тому, что левые ячейки налезают на правые, и ничего с этим не поделать - ну не помещается один italic символ в одну ячейку.

Ты начинаешь рендерить italic тем же способом, что и прочие лигатуры - отрисовываешь целые последовательности символов одним вызовом шрифтового движка, а потом пилишь результат на ячейки. В процессе некоторые ячейки начинают содержать кусочки нескольких символов, но это ровно то, что тебе надо для отрисовки italic.

Потом ты видишь, что по краям слов italic у тебя обрезан, и ты понимаешь, что это потому, что ты сделал границей последовательности пробельные символы. Это очень важно, потому что кешировать отрисовку слов - эффективно, а кешировать отрисовку линий - дорого.

Ты берешь, и добавляешь в последовательность самый правый пробельный символ после слова, и все становится хорошо и классно, потому что последней букве слова есть куда нависнуть, пока...

Пока ты не видишь, что если italic слово выделено болдом, то оно снова рисуется обрезанным. И все потому, что болд - это часть отрисовки шрифта, и тебе нужно обрывать последовательность, когда отрисовка шрифта меняется, потому что иначе получается дичь.

Кроме одного случая - если отрисовка шрифта меняется на пробельном символе, то и пофиг - неважно, болдом пробел рисуется, или нет, его можно включить в последовательность.

Такие дела.

Самое интересное в процессе, конечно, изучать, как это делают твои конкуренты, и на какие компромиссы идут.

#shitty

1.7k 0 4 146 51
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot