diff options
| author | HampusM <hampus@hampusmat.com> | 2026-08-04 15:50:16 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-08-04 15:50:16 +0200 |
| commit | 6d275bd299736b8d5539f41a709d628dec14c478 (patch) | |
| tree | 05343c57476e696b926639272ef391277e6e1226 | |
| parent | 5bbc9b819c4e0afabe4d73d80f29cfef023716cd (diff) | |
feat(engine): use Fira Mono as default font for dear imgui
| -rw-r--r-- | Cargo.lock | 8 | ||||
| -rw-r--r-- | THIRD_PARTY | 97 | ||||
| -rw-r--r-- | engine/Cargo.toml | 1 | ||||
| -rw-r--r-- | engine/res/FiraMono-Regular.ttf | bin | 0 -> 170204 bytes | |||
| -rw-r--r-- | engine/src/ui/dear_imgui.rs | 24 |
5 files changed, 130 insertions, 0 deletions
@@ -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 Binary files differnew file mode 100644 index 0000000..67bbd42 --- /dev/null +++ b/engine/res/FiraMono-Regular.ttf 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() |
