Fonts: add new ProggyForever font!

Amend f006400
This commit is contained in:
ocornut
2026-02-05 16:03:19 +01:00
parent a8bf659143
commit 041cdddf35
7 changed files with 306 additions and 374 deletions

View File

@@ -116,15 +116,23 @@ Breaking Changes:
Other Changes:
- Fonts:
- Added AddFontDefaultVector(): a new embedded scalable font!
Based on ProggyVector by Tristan Grimmer, the same author as our good-old ProggyClean.
The font data was carefully subsetted, trimmed and compressed so the embedded
data is ~18 KB. Embedding a scalable default font ensures that Dear ImGui can
be easily and readily used in all contexts, even without file system access.
As always you can opt-out of the embedded font data if desired. A sizing tweak
was also applied to ensure the new font is a closer match to the classic font.
- Added AddFontDefaultVector(): a new embedded monospace scalable font: ProggyForever!
From https://github.com/ocornut/proggyforever:
"ProggyForever is an MIT-licensed partial reimplementation of the ProggyVector
font (originally by Tristan Grimmer), which itself is a vector-based
reinterpretation of the ProggyClean bitmap font that happily served as
Dear ImGui default font for over 10 years." [...]
"I commissioned Thiebault Courot to recreate this, applied various minor tweaks
and fixes, and reworked his editing pipeline toward shipping FontForge source
files so we can allow and track future changes."
- TL;DR; there was no strictly MIT-licensed matching font. We made it!
- The font data was carefully subsetted, trimmed and compressed so the embedded
data is ~14 KB. Embedding a scalable default font ensures that Dear ImGui can
be easily and readily used in all contexts, even without file system access.
- As always you can opt-out of the embedded font data if desired.
- AddFontDefault() now automatically selects an embedded font between
the classic pixel-looking one and the new scalable one.
Prefer calling AddFontDefaultVector() or AddFontDefaultBitmap() explicitely.
- Fixed an issue related to EllipsisChar handling, while changing
font loader or font loader flags dynamically in Style->Fonts menus.
- imgui_freetype: fixed overwriting ImFontConfig::PixelSnapH when hinting

View File

@@ -5,13 +5,16 @@ _(You may browse this at https://github.com/ocornut/imgui/blob/master/docs/FONTS
The code in Dear ImGui embeds a copy of [ProggyClean.ttf](https://github.com/bluescan/proggyfonts) by Tristan Grimmer,
a 13 pixels high, pixel-perfect font used by default. ProggyClean does not scale very nicely.
The code in Dear ImGui embeds a partial copy of [ProggyVector.ttf](https://github.com/bluescan/proggyfonts) by Tristan Grimmer and Source Foundry Authors,
a font mimicking ProggyClean which does scale nicely.
The code in Dear ImGui embeds a partial copy of [ProggyForever.ttf](https://github.com/ocornut/proggyforever) by Disco Hello & Tristan Grimmer,
a new font mimicking ProggyClean which does scale nicely.
We embed fonts in the code so you can use Dear ImGui without any file system access.
If you use either of those fonts in your shipping product you should include their license as part of your software (see below for links).
If you don't use them you can set `IMGUI_DISABLE_DEFAULT_FONT` in your [imconfig.h](https://github.com/ocornut/imgui/blob/master/imconfig.h) file to ship binaries without the fonts and save about ~26 KB.
Calling io.Fonts->AddFontDefaultBitmap() loads ProggyClean.
Calling io.Fonts->AddFontDefaultVector() loads ProggyForever.
Calling io.Fonts->AddFontDefault() selects one based on the expected default font size (when `style.FontSizeBase * style.FontScaleMain * style.FontSizeDpi >= 15` we use ProggyForever).
You may also load external .TTF/.OTF files, see instructions on this page.
In the [misc/fonts/](https://github.com/ocornut/imgui/tree/master/misc/fonts) folder you can find a few suggested fonts, provided as a convenience.
@@ -561,7 +564,20 @@ You can use the `UTF-8 Encoding viewer` in `Metrics/Debugger` to verify the cont
## Credits/Licenses For Fonts Included In Repository
Some fonts files are available in the `misc/fonts/` folder:
Embedded in source code:
**ProggyClean.ttf**, by Tristan Grimmer
<br>MIT License
<br>(recommended loading setting: Size = 13.0, GlyphOffset.y = +1, PixelSnapH = true)
<br>https://github.com/bluescan/proggyfonts
**ProggyForever.ttf**, by Disco Hello, Tristan Grimmer
<BR>MIT License
<BR>https://github.com/ocornut/proggyforever
Extra fonts files are available in the `misc/fonts/` folder.
Compared to 2014 when they were first introduced, we now have better font support and we embed ProggyForever.
I believe all the files here are unnecessary nowadays. You can find font yourself. They might eventually be removed.
**Roboto-Medium.ttf**, by Christian Robetson
<br>Apache License 2.0
@@ -576,20 +592,11 @@ Some fonts files are available in the `misc/fonts/` folder:
<br>Apache License 2.0
<br>https://www.fontsquirrel.com/fonts/droid-sans
**ProggyClean.ttf**, by Tristan Grimmer
<br>MIT License
<br>(recommended loading setting: Size = 13.0, GlyphOffset.y = +1)
<br>https://github.com/bluescan/proggyfonts
**ProggyTiny.ttf**, by Tristan Grimmer
<br>MIT License
<br>(recommended loading setting: Size = 10.0, GlyphOffset.y = +1)
<br>https://github.com/bluescan/proggyfonts
**ProggyVector.ttf**, by Tristan Grimmer, Source Foundry Authors
<BR>MIT License + Bitstream Vera License
<BR>https://github.com/bluescan/proggyfonts
**Karla-Regular.ttf**, by Jonathan Pinhorn
<br>SIL OPEN FONT LICENSE Version 1.1

View File

@@ -217,7 +217,8 @@ Maintenance/support contracts, sponsoring invoices and other B2B transactions ar
Omar: "I first discovered the IMGUI paradigm at [Q-Games](https://www.q-games.com) where Atman Binstock had dropped his own simple implementation in the codebase, which I spent quite some time improving and thinking about. It turned out that Atman was exposed to the concept directly by working with Casey. When I moved to Media Molecule I rewrote a new library trying to overcome the flaws and limitations of the first one I've worked with. It became this library and since then I have spent an unreasonable amount of time iterating and improving it."
Embeds [ProggyClean.ttf, ProggyVector.ttf](https://www.proggyfonts.net) fonts by Tristan Grimmer (MIT license).
Embeds [ProggyClean](https://www.proggyfonts.net) font by Tristan Grimmer (MIT license).
<br>Embeds [ProggyForever](https://github.com/ocornut/proggyforever) fonts by Disco Hello, Tristan Grimmer (MIT license).
<br>Embeds [stb_textedit.h, stb_truetype.h, stb_rect_pack.h](https://github.com/nothings/stb/) by Sean Barrett (public domain).
Inspiration, feedback, and testing for early versions: Casey Muratori, Atman Binstock, Mikko Mononen, Emmanuel Briney, Stefan Kamoda, Anton Mikhailov, Matt Willis. Special thanks to Alex Evans, Patrick Doane, Marco Koegler for kindly helping. Also thank you to everyone posting feedback, questions and patches on GitHub.