summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-08-04 15:50:16 +0200
committerHampusM <hampus@hampusmat.com>2026-08-04 15:50:16 +0200
commit6d275bd299736b8d5539f41a709d628dec14c478 (patch)
tree05343c57476e696b926639272ef391277e6e1226
parent5bbc9b819c4e0afabe4d73d80f29cfef023716cd (diff)
feat(engine): use Fira Mono as default font for dear imgui
-rw-r--r--Cargo.lock8
-rw-r--r--THIRD_PARTY97
-rw-r--r--engine/Cargo.toml1
-rw-r--r--engine/res/FiraMono-Regular.ttfbin0 -> 170204 bytes
-rw-r--r--engine/src/ui/dear_imgui.rs24
5 files changed, 130 insertions, 0 deletions
diff --git a/Cargo.lock b/Cargo.lock
index c46c55e..0b24fcb 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -503,6 +503,8 @@ version = "0.15.1"
source = "git+https://github.com/Latias94/dear-imgui-rs?rev=cd2425b699e746852757e9290257bbf09129cfa7#cd2425b699e746852757e9290257bbf09129cfa7"
dependencies = [
"cc",
+ "pkg-config",
+ "vcpkg",
]
[[package]]
@@ -2461,6 +2463,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
name = "version_check"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/THIRD_PARTY b/THIRD_PARTY
new file mode 100644
index 0000000..05887c8
--- /dev/null
+++ b/THIRD_PARTY
@@ -0,0 +1,97 @@
+
+Fira Mono
+===============================================================================
+
+Copyright (c) 2012-2013, The Mozilla Corporation and Telefonica S.A.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+https://openfontlicense.org
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/engine/Cargo.toml b/engine/Cargo.toml
index df29fd3..0c1f5c3 100644
--- a/engine/Cargo.toml
+++ b/engine/Cargo.toml
@@ -46,6 +46,7 @@ git = "https://github.com/Latias94/dear-imgui-rs"
# This commit has a fix for linking with libstdc++ on non-msvc Windows targets. When a
# release with this fix is available, it should be used instead
rev = "cd2425b699e746852757e9290257bbf09129cfa7"
+features = ["freetype"]
[build-dependencies]
build-rs = "0.3.4"
diff --git a/engine/res/FiraMono-Regular.ttf b/engine/res/FiraMono-Regular.ttf
new file mode 100644
index 0000000..67bbd42
--- /dev/null
+++ b/engine/res/FiraMono-Regular.ttf
Binary files differ
diff --git a/engine/src/ui/dear_imgui.rs b/engine/src/ui/dear_imgui.rs
index b571cee..4bf34c9 100644
--- a/engine/src/ui/dear_imgui.rs
+++ b/engine/src/ui/dear_imgui.rs
@@ -160,6 +160,25 @@ impl ecs::extension::Extension for Extension
tracing::error!("Failed to set path of imgui settings ini file: {err}");
}
+ assert!(
+ dear_imgui_rs::HAS_FREETYPE,
+ "Freetype font rasterizer support is not enabled"
+ );
+
+ context.ctx.font_atlas_mut().add_font_from_memory_ttf(
+ include_bytes!("../../res/FiraMono-Regular.ttf"),
+ 14.0,
+ Some(
+ &dear_imgui_rs::FontConfig::default()
+ .name("FiraMono-Regular.ttf")
+ .font_loader_flags(
+ dear_imgui_rs::FontLoaderFlags::BITMAP
+ | dear_imgui_rs::FontLoaderFlags::FORCE_AUTOHINT,
+ ),
+ ),
+ None,
+ );
+
collector.add_sole(context).ok();
collector.add_system(
@@ -983,6 +1002,11 @@ mod inner_context_wrapper
self.ctx.io_mut()
}
+ pub fn font_atlas_mut(&mut self) -> dear_imgui_rs::FontAtlas
+ {
+ self.ctx.font_atlas_mut()
+ }
+
pub fn render(&mut self) -> &mut dear_imgui_rs::DrawData
{
self.ctx.render()