Размер текста imgui

Letovo

Участник
Автор темы
95
12
Версия MoonLoader
.026-beta
Здравствуйте, можете на живом примере показать как поменять размер текста в одном imgui.Text() ?

Вот есть код:
Lua:
function imgui.OnDrawFrame()
    imgui.Text(u8"Этот текст маленький")
    imgui.Text(u8"А этот текст большой")
end

Заранее спасибо.
 
Решение
Lua:
local fontsize = nil
function imgui.BeforeDrawFrame()
    if fontsize == nil then
        fontsize = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14) .. '\\trebucbd.ttf', 30.0, nil, imgui.GetIO().Fonts:GetGlyphRangesCyrillic()) -- вместо 30 любой нужный размер
    end
end

function imgui.OnDrawFrame()
    imgui.PushFont(fontsize)
        imgui.Text('Текст размером 30')
    imgui.PopFont()
end

Cosmo

Известный
Друг
656
2,744
Lua:
local fontsize = nil
function imgui.BeforeDrawFrame()
    if fontsize == nil then
        fontsize = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14) .. '\\trebucbd.ttf', 30.0, nil, imgui.GetIO().Fonts:GetGlyphRangesCyrillic()) -- вместо 30 любой нужный размер
    end
end

function imgui.OnDrawFrame()
    imgui.PushFont(fontsize)
        imgui.Text('Текст размером 30')
    imgui.PopFont()
end
 

Letovo

Участник
Автор темы
95
12
Lua:
local fontsize = nil
function imgui.BeforeDrawFrame()
    if fontsize == nil then
        fontsize = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14) .. '\\trebucbd.ttf', 30.0, nil, imgui.GetIO().Fonts:GetGlyphRangesCyrillic()) -- вместо 30 любой нужный размер
    end
end

function imgui.OnDrawFrame()
    imgui.PushFont(fontsize)
        imgui.Text('Текст размером 30')
    imgui.PopFont()
end
Всё получилось, огромное спасибо тебе! <3
 

Vintik

Через тернии к звёздам
Проверенный
1,556
1,027
Lua:
local fontsize = nil
function imgui.BeforeDrawFrame()
    if fontsize == nil then
        fontsize = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14) .. '\\trebucbd.ttf', 30.0, nil, imgui.GetIO().Fonts:GetGlyphRangesCyrillic()) -- вместо 30 любой нужный размер
    end
end

function imgui.OnDrawFrame()
    imgui.PushFont(fontsize)
        imgui.Text('Текст размером 30')
    imgui.PopFont()
end
не знаешь как сделать такое же для mimgui?
 

James Saula

Активный
98
26
Lua:
local fontsize = nil
function imgui.BeforeDrawFrame()
    if fontsize == nil then
        fontsize = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14) .. '\\trebucbd.ttf', 30.0, nil, imgui.GetIO().Fonts:GetGlyphRangesCyrillic()) -- вместо 30 любой нужный размер
    end
end

function imgui.OnDrawFrame()
    imgui.PushFont(fontsize)
        imgui.Text('Текст размером 30')
    imgui.PopFont()
end
скажи как на mimgui сделать? у меня не робит))
 

Cosmo

Известный
Друг
656
2,744
Для mimgui
Lua:
local font = {}
imgui.OnInitialize(function()
    local glyph_ranges = imgui.GetIO().Fonts:GetGlyphRangesCyrillic()
    local path = getFolderPath(0x14) .. '\\trebucbd.ttf'
    imgui.GetIO().Fonts:Clear() -- Удаляем стандартный шрифт на 14
    imgui.GetIO().Fonts:AddFontFromFileTTF(path, 15.0, nil, glyph_ranges) -- этот шрифт на 15 будет стандартным
    -- дополнительные шриты:
    font[25] = imgui.GetIO().Fonts:AddFontFromFileTTF(path, 25.0, nil, glyph_ranges)
    font[40] = imgui.GetIO().Fonts:AddFontFromFileTTF(path, 40.0, nil, glyph_ranges)
end)

imgui.OnFrame(
    function() return true end,
    function(self)
        imgui.Begin('Test')
            imgui.PushFont(font[25])
                imgui.Text('Шрифт размером 25!')
            imgui.PopFont()
        imgui.End()
    end
)
 

Double Tap Inside

Известный
Проверенный
1,916
1,256
Lua:
local fontsize = nil
function imgui.BeforeDrawFrame()
    if fontsize == nil then
        fontsize = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14) .. '\\trebucbd.ttf', 30.0, nil, imgui.GetIO().Fonts:GetGlyphRangesCyrillic()) -- вместо 30 любой нужный размер
    end
end

function imgui.OnDrawFrame()
    imgui.PushFont(fontsize)
        imgui.Text('Текст размером 30')
    imgui.PopFont()
end

Привет, стоит задача сделать весь шрифт больше. По твоему примеру сделал, но как минимум один символ "№" ( 0x2116 ) не печатается в имгуи окнах, а вместо него знаки вопроса.

В чем проеб?
или
Как дополнить imgui.GetIO().Fonts:GetGlyphRangesCyrillic() + imgui.ImGlyphRanges( {0x2116, 0x2116} ) этим сиволом (мб ещё какими-то)
 
Последнее редактирование:
  • Эм
Реакции: qdIbp

Double Tap Inside

Известный
Проверенный
1,916
1,256
Привет, стоит задача сделать весь шрифт больше. По твоему примеру сделал, но как минимум один символ "№" ( 0x2116 ) не печатается в имгуи окнах, а вместо него знаки вопроса.

В чем проеб?
или
Как дополнить imgui.GetIO().Fonts:GetGlyphRangesCyrillic() + imgui.ImGlyphRanges( {0x2116, 0x2116} ) этим сиволом (мб ещё какими-то)

@#Northn памаги.​

 
  • Вау
Реакции: qdIbp

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,656
2,542
Lua:
local builder = imgui.ImFontGlyphRangesBuilder()
builder:AddRanges(imgui.GetIO().Fonts:GetGlyphRangesCyrillic())
builder:AddText([[‚„…†‡€‰‹‘’“”•–—™›№]])
defaultGlyphRanges = imgui.ImVector_ImWchar()
builder:BuildRanges(defaultGlyphRanges)
imgui.GetIO().Fonts:AddFontFromFileTTF(fontFile, 14, nil, defaultGlyphRanges[0].Data)
вот на мимгуи. не знаю как в случае со старым мунимгуи
 
  • Влюблен
  • Клоун
Реакции: Fott и Double Tap Inside

Double Tap Inside

Известный
Проверенный
1,916
1,256
Lua:
local builder = imgui.ImFontGlyphRangesBuilder()
builder:AddRanges(imgui.GetIO().Fonts:GetGlyphRangesCyrillic())
builder:AddText([[‚„…†‡€‰‹‘’“”•–—™›№]])
defaultGlyphRanges = imgui.ImVector_ImWchar()
builder:BuildRanges(defaultGlyphRanges)
imgui.GetIO().Fonts:AddFontFromFileTTF(fontFile, 14, nil, defaultGlyphRanges[0].Data)
вот на мимгуи. не знаю как в случае со старым мунимгуи


Спосибо, вот на старом Moon Imgui

Lua:
local fontsize = nil

function imgui.BeforeDrawFrame()
    if fontsize == nil then
        local font_path = getFolderPath(0x14) .. '\\trebucbd.ttf'
        assert(doesFileExist(font_path), 'WTF: Font "' .. font_path .. '" doesn\'t exist')
        imgui.SwitchContext()
        local builder = imgui.ImFontAtlasGlyphRangesBuilder()
        builder:AddRanges(imgui.GetIO().Fonts:GetGlyphRangesCyrillic())
        builder:AddText(u8'‚„…†‡€‰‹‘’“”•–—™›№')
        glyph_ranges = builder:BuildRanges() --  сделай глобальным, чтобы сборщик мусора его не почистил, документация имгуи требует этого
        fontsize = imgui.GetIO().Fonts:AddFontFromFileTTF(font_path, 14.0, nil, glyph_ranges)
    end
end

function imgui.OnDrawFrame()
    imgui.PushFont(fontsize)
    ............
    ............
    ............
    imgui.PopFont()
end
 
Последнее редактирование:
  • Нравится
Реакции: #Northn

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,656
2,542
Спосибо, вот на старом Moon Imgui

Lua:
local fontsize = nil

function imgui.BeforeDrawFrame()
    if fontsize == nil then
        local font_path = getFolderPath(0x14) .. '\\trebucbd.ttf'
        assert(doesFileExist(font_path), 'WTF: Font "' .. font_path .. '" doesn\'t exist')
        imgui.SwitchContext()
        local builder = imgui.ImFontAtlasGlyphRangesBuilder()
        builder:AddRanges(imgui.GetIO().Fonts:GetGlyphRangesCyrillic())
        builder:AddText(u8'‚„…†‡€‰‹‘’“”•–—™›№')
        local glyph_ranges = builder:BuildRanges()
        fontsize = imgui.GetIO().Fonts:AddFontFromFileTTF(font_path, 14.0, nil, glyph_ranges)
    end
end

function imgui.OnDrawFrame()
    imgui.PushFont(fontsize)
    ............
    ............
    ............
    imgui.PopFont()
end
всё правильно, только glyph_ranges сделай глобальным, чтобы сборщик мусора его не почистил, документация имгуи требует этого
 
  • Нравится
  • Клоун
Реакции: Fott и Double Tap Inside

Double Tap Inside

Известный
Проверенный
1,916
1,256
всё правильно, только glyph_ranges сделай глобальным, чтобы сборщик мусора его не почистил, документация имгуи требует этого
Lua:
local fontsize = nil
local fontsize2 = nil

function imgui.BeforeDrawFrame()
    if fontsize == nil then
        local font_path = getFolderPath(0x14) .. '\\trebucbd.ttf'
        assert(doesFileExist(font_path), 'WTF: Font "' .. font_path .. '" doesn\'t exist')
        imgui.SwitchContext()
        local builder = imgui.ImFontAtlasGlyphRangesBuilder()
        builder:AddRanges(imgui.GetIO().Fonts:GetGlyphRangesCyrillic())
        builder:AddText(u8'‚„…†‡€‰‹‘’“”•–—™›№')
        glyph_ranges = builder:BuildRanges()
        fontsize = imgui.GetIO().Fonts:AddFontFromFileTTF(font_path, 14.0, nil, glyph_ranges)
    end
 
    if fontsize2 == nil then
        local font_path = getFolderPath(0x14) .. '\\trebucbd.ttf'
        assert(doesFileExist(font_path), 'WTF: Font "' .. font_path .. '" doesn\'t exist')
        imgui.SwitchContext()
        local builder = imgui.ImFontAtlasGlyphRangesBuilder()
        builder:AddRanges(imgui.GetIO().Fonts:GetGlyphRangesCyrillic())
        builder:AddText(u8'‚„…†‡€‰‹‘’“”•–—™›№')
        glyph_ranges2 = builder:BuildRanges()
        fontsize2 = imgui.GetIO().Fonts:AddFontFromFileTTF(font_path, 20.0, nil, glyph_ranges2)
    end
end

function imgui.OnDrawFrame()
    imgui.PushFont(fontsize)
    ............
    ............
    ............
    imgui.PopFont()

    imgui.PushFont(fontsize2)
    ............
    ............
    ............
    imgui.PopFont()
end

1. Правильно ли я загрузил один и тот же шрифт разных размеров?
2. А как по ходу исполнения поменять размер одного из уже загруженных шрифтов?

 Dear Imgui
 
Последнее редактирование: