Исходник Гайд [mimgui] NerdIcons - пак иконок

GORYCH

Известный
Автор темы
63
77
sankey-glyphs-combined-diagram.png

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

Автор идеи таких шрифтов очевидно не я. Я просто собрал названия и коды иконок, добавил их в файлик lua. Затем взял шрифт Trebuchet MS, пропатчил его с помощью Nerd Fonts Patcher. Полученный шрифт перенес в lua утилитой @FYP'a и, в принципе, готово.

Сделал я эту "либу", т.к. лично у меня была необходимость использовать как solid иконки Font Awesome, так и brand. Может тут кому-то тоже будет полезно.

NerdFonts:​

- Официальный сайт
- Все иконки

Паки иконок:​

- Seti-UI + Custom (184 иконки)
- Devicons (198 иконок)
- Font Awesome (675 иконок)
- Font Awesome Extension (170 иконок)
- Weather (228 иконок)
- Octicons (309 иконок)
- Powerline Symbols (7 иконок)
- Powerline Extra Symbols (38 иконок)
- IEC Power Symbols (5 иконок)
- Font-logos (Font Linux) (115 иконок)
- Pomicons (11 иконок)
- Codicons (387 иконок)
6к+ иконок Material Design в шрифт не добавлял, т.к. они превышают значение 0x10000. Если вдруг кто-то знает как это решить - добавлю.

Использование:​

Из понравившейся иконки, например nf-oct-trash убираем nf и символы - (тире) заменяем на _ (нижнее подчёркивание).
Вызываем как icons('oct_trash') или как icons.oct_trash. Либо можно скопировать UTF-16 код иконки и вставить его текстом, добавляя всё после \u в фигурные скобки. Например \u{f48e}

Установка:​

  1. Скачать файл nerdicons.lua
  2. Перенести в moonloader/lib/

Пример:
icons('oct_trash')
icons.oct_trash
imgui.Button('\u{f48e}'..u8"Очистить поле")

imgui:
local font = nil
local glyph_ranges = imgui.ImGlyphRanges({ icons.min_range, icons.max_range})
function imgui.BeforeDrawFrame()
    if font == nil then
        local font_config = imgui.ImFontConfig()
        font_config.MergeMode = true

        font = imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(icons.base85, 16.0, font_config, glyph_ranges)
    end
end
mimgui:
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    local config = imgui.ImFontConfig()
    config.MergeMode = true
    config.PixelSnapH = true
    iconRanges = imgui.new.ImWchar[3](icons.min_range, icons.max_range, 0)
    imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(icons.base85, 18, config, iconRanges)
end)
 

Вложения

  • nerdicons.lua
    865.2 KB · Просмотры: 31