[mimgui] FontAwesome 6.0.0 Pro Thin, Light, Regular, Solid, Duotone by Police Helper » Reborn

#Northn

Police Helper «Reborn» — уже с «Диалоги»!
Автор темы
Всефорумный модератор
2,463
2,045
спустя пол года в данной теме наконец то смогли сделать поддержку fawesome 6, но почему-то слишком туго и скучно, ничего нового не смогли придумать. не порядок!
держите царский подгон от Police Helper Reborn, который мы ( кто мы то, я тут один... привет @RTD ) сделали сразу после выхода шестой версии Font Awesome
привет @SADFI2259X и @chapo
принцип применения почти не изменился, просто во время инициализации нужно указать тип шрифта, который собираетесь юзать
Lua:
faicons.get_font_data_base85('тип') -- например faicons.get_font_data_base85('light')
-- ну и для ленивых:
local config = imgui.ImFontConfig()
config.MergeMode = true
config.PixelSnapH = true
-- iconRanges следуя документации имгуи ВСЕГДА ДОЛЖЕН БЫТЬ ГЛОБАЛЬНЫМ
iconRanges = imgui.new.ImWchar[3](faicons.min_range, faicons.max_range, 0)
imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(faicons.get_font_data_base85('light'), 14, config, iconRanges)
не обязательно грузить один шрифт. можно несколько одновременно и в зависимости от ситуации использовать конкретный, как в Police Helper Reborn
используйте на здоровье, жду mimgui pie, он вообще в 2020 уже был готов
 
Последнее редактирование модератором:

#Northn

Police Helper «Reborn» — уже с «Диалоги»!
Автор темы
Всефорумный модератор
2,463
2,045
насчёт белых квадратных букв на некоторых компах -- они возникают из-за переполнения видеопамяти и невозможности текстуры загрузиться в память
решается она загрузкой исключительно нужных глифов шрифтов. делается это примерно вот так:
Lua:
local builder = imgui.ImFontGlyphRangesBuilder()
local list = {
    "square_rss",
    "keyboard",
    "coins",
    "square_poll_horizontal",
    "gear",
    "WRENCH",
    "arrow_left"
}
for _, b in ipairs(list) do
    builder:AddText(faicons(b))
end
defaultGlyphRanges1 = imgui.ImVector_ImWchar()
builder:BuildRanges(defaultGlyphRanges1)
fonts[1] = imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(faicons.get_font_data_base85('light'), 28, config2, defaultGlyphRanges1[0].Data)
минусом данного подхода является то, что при желании использовать какую-то новую иконку -- вам нужно его заносить в таблицу и только после этого её использовать.
пример подходит в том числе и для обычных шрифтов, только там лучше использовать:
Lua:
builder:AddText([[ABCD И ДРУГИЕ НУЖНЫЕ СИМВОЛЫ]])
узнав об этой приколюхе я и @RTD смогли уменьшить вес текстуры глифов со 120 мб до 5 мб (это только в Police Helper Reborn, и с 32МБ до 0.5МБ или 1МБ у SnailMatic)
 

chapo

Известный
Модератор
7,160
6,913
норм, только я чет немного не вдупляю как это юзать, где сам файл?
 

chapo

Известный
Модератор
7,160
6,913
так там только список иконок, нужны же вроде сами шрифты thin, regular и тд, не?
я кстати пытался сделать не только solid, но еще и regular, но у меня ничего не получилось
1663700681333.png


@#Northn а, все, прост на гитхабе файл "обрезается"
1663700769968.png
1663700783656.png


могу в своей теме свой файл на твой поменять?
 
  • Грустно
Реакции: Yondime

#Northn

Police Helper «Reborn» — уже с «Диалоги»!
Автор темы
Всефорумный модератор
2,463
2,045
так там только список иконок
нет, они возвращают на сами файлы шрифтов в base65
список иконок не нужен, простой вызов faicons() с нужным названием иконки делает магию
я кстати пытался сделать не только solid, но еще и regular, но у меня ничего не получилось
ты не сможешь грузить их всех одновременно в общем пространстве. нужно в отдельный шрифт пушить и по необходимости PushFont/PopFont использовать. в глобальное пространство только один тип группы иконок можно загрузить
 

chapo

Известный
Модератор
7,160
6,913
ты не сможешь грузить их всех одновременно в общем пространстве. нужно в отдельный шрифт пушить и по необходимости PushFont/PopFont использовать.
я так и пробовал, но не получалось
1663701023044.png

Можно добавить функцию Init (как в моем варианте) и выложить файл в мою тему?
 

chapo

Известный
Модератор
7,160
6,913
можешь залить куда-нибудь сам файлик? Прост если его будут юзать то проще кидать ссылку на скачивание, а то хер кому объяснишь что надо текст из ссылки в луашку впихнуть или нажать ctrl + s
p.s. тему лучше почистить :)
 

#Northn

Police Helper «Reborn» — уже с «Диалоги»!
Автор темы
Всефорумный модератор
2,463
2,045
This is not working for me.

Это не работает для меня.

faicons is not a usual table, it's metatable that you can't use pairs/ipairs on
you have to:
1. save the return value of imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(faicons.get_font_data_base85('light'), 14, config, defaultGlyphRanges1[0].Data)
2. use imgui.PushFont() imgui.PopFont() whenever you need font awesome icon
2.1 or enable mergemode and you'll be able to use with with usual text