C++ Гайд Подключаем freetype в ImGui

Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,995
Реакции[?]
1,275
Поинты[?]
5K
Данный тред создан специально для тех, кто все еще не знает что такое фритайп или как его подключить.
Что такое freetype?
Это библиотека, которая позволит вам сохранить ваши нервные клетки при работе с шрифтами в имгуи. Данная библиотека скажем так на простом языке улучшает шрифты. У вас появляется уйма возможностей кастомизировать уже готовый шрифт. Например можно выключить сглаживание и тем самым сделать шрифты как на surface например. Также одними из явных плюсов можно посчитать то что при использовании freetype ваши шрифты будут корректного размера, шрифты мелкого размера не будут выглядеть как размыленное говно размером в 3 пикселя, а будут выглядеть как нормальный яркий и красивый шрифт.
Сравнение можно наблюдать здесь



Насколько очевидна разница я думаю речи не идет. Мы можем увидеть как стандартный трутайп ни то что делает шрифт тусклее, он становится замыленным и даже меньше по размеру, что доставляет проблем при верстке.
Как подключить?
Скачиваем freetype с гитхаба.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Создаем в своем проекте папку freetype и туда закидываем все скачанные файлы.
Открываем в настройках проекта пункт каталоги VC++. Добавляем во включаемые каталоги путь к freetype/include
Пример:
1659277002713.png
Скачиваем freetype.lib
Если лень компилировать, то вот уже скомпилированный вариант
Пожалуйста, авторизуйтесь для просмотра ссылки.
Подключаем данную библиотеку в наш сурс и добавляем в каталоги библиотек через все те же настройки проекта.
В файле imconfig прописываем
C++:
#define IMGUI_ENABLE_FREETYPE
Затем добавляем в свой проект файлы freetype с гитхаба ImGui.
Пожалуйста, авторизуйтесь для просмотра ссылки.
В только что скачанном .cpp файле прописываем где нибудь в начале
C++:
#pragma comment(lib, "freetype.lib")
Теперь переходим к созданию шрифта
C++:
ImFontConfig cfg;
cfg.FontBuilderFlags |= ImGuiFreeTypeBuilderFlags::ImGuiFreeTypeBuilderFlags_MonoHinting | ImGuiFreeTypeBuilderFlags_Monochrome; //отключает антиалиасинг и дает строгий алгоритм хинта
/*io.Fonts->AddFontFromMemoryTTF(&tahoma, sizeof tahoma, 14, &cfg, io.Fonts->GetGlyphRangesCyrillic());*/
io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\tahoma.ttf", 14, &cfg, io.Fonts->GetGlyphRangesCyrillic());
Обратите внимание на комментарии в коде.
Вот так выглядит Hint наглядно:
1659277327009.png
В примере кода выше я использовал отключение антиалиасинга и строгий алгоритм хинта.
Во фритайп также можно установить такие параметры фонтбилдера:
C++:
enum ImGuiFreeTypeBuilderFlags
{
    ImGuiFreeTypeBuilderFlags_NoHinting     = 1 << 0,   // Disable hinting. This generally generates 'blurrier' bitmap glyphs when the glyph are rendered in any of the anti-aliased modes.
    ImGuiFreeTypeBuilderFlags_NoAutoHint    = 1 << 1,   // Disable auto-hinter.
    ImGuiFreeTypeBuilderFlags_ForceAutoHint = 1 << 2,   // Indicates that the auto-hinter is preferred over the font's native hinter.
    ImGuiFreeTypeBuilderFlags_LightHinting  = 1 << 3,   // A lighter hinting algorithm for gray-level modes. Many generated glyphs are fuzzier but better resemble their original shape. This is achieved by snapping glyphs to the pixel grid only vertically (Y-axis), as is done by Microsoft's ClearType and Adobe's proprietary font renderer. This preserves inter-glyph spacing in horizontal text.
    ImGuiFreeTypeBuilderFlags_MonoHinting   = 1 << 4,   // Strong hinting algorithm that should only be used for monochrome output.
    ImGuiFreeTypeBuilderFlags_Bold          = 1 << 5,   // Styling: Should we artificially embolden the font?
    ImGuiFreeTypeBuilderFlags_Oblique       = 1 << 6,   // Styling: Should we slant the font, emulating italic style?
    ImGuiFreeTypeBuilderFlags_Monochrome    = 1 << 7,   // Disable anti-aliasing. Combine this with MonoHinting for best results!
    ImGuiFreeTypeBuilderFlags_LoadColor     = 1 << 8,   // Enable FreeType color-layered glyphs
    ImGuiFreeTypeBuilderFlags_Bitmap        = 1 << 9    // Enable FreeType bitmap glyphs
};
В комментариях все расписано.
Также не забудь прописать в аргументах при создании шрифта ваш ImFontConfig.
На этом всё.

 
Модератор раздела "Создание скриптов для читов"
Модератор
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
1,196
Реакции[?]
390
Поинты[?]
45K
давай потом гайд о том, как всё же скачать визуалку
 
Приватные читы: wh-satano.ru
Продавец
Статус
Оффлайн
Регистрация
16 Фев 2016
Сообщения
3,261
Реакции[?]
175
Поинты[?]
25K
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,995
Реакции[?]
1,275
Поинты[?]
5K
Femboy Access
Эксперт
Статус
Оффлайн
Регистрация
11 Ноя 2020
Сообщения
1,333
Реакции[?]
428
Поинты[?]
96K
Какие можно подрубить флаги, что бы максимально повторить вердану скита? Что только не пробовал, но вердана получается слишком жирная и нестрогая
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,995
Реакции[?]
1,275
Поинты[?]
5K
Какие можно подрубить флаги, что бы максимально повторить вердану скита? Что только не пробовал, но вердана получается слишком жирная и нестрогая
некоторые читы юзают немного измененный фритайп
 
Забаненный
Статус
Оффлайн
Регистрация
9 Фев 2021
Сообщения
181
Реакции[?]
97
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Затем добавляем в свой проект файлы freetype с гитхаба ImGui.
давай потом гайд о том, как всё же скачать визуалку
Чел если ты всезнайка то зачем пишешь сюда, мне лично помогло, и гайд стоит своего времени
 
Модератор раздела "Создание скриптов для читов"
Модератор
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
1,196
Реакции[?]
390
Поинты[?]
45K
Сверху Снизу