Кто может рассказать о том, как проходит сжатие какого-то формата
Открывается файл в бинарном виде, производится "лингвистический" анализ - строится дерево с ранжированием по частоте употребления. Исходя из количества нод в дереве выбирается битность кодирования. И по частоте "слова" выбирается код. Чем чаще, тем короче. К итоговому закодированному файлу прилагается карта соответствий закодированных "слов" и кодов. Более подробно можешь узнать, изучив код Хаффмана.