diff --git a/epaint/src/text/font.rs b/epaint/src/text/font.rs index bac9401f0..4037a0a39 100644 --- a/epaint/src/text/font.rs +++ b/epaint/src/text/font.rs @@ -215,7 +215,7 @@ impl Font { fonts, characters: RwLock::new(None), replacement_glyph: Default::default(), - pixels_per_point: 0.0, + pixels_per_point: 1.0, row_height: 0.0, glyph_info_cache: Default::default(), }; @@ -318,10 +318,13 @@ impl Font { } #[inline] - pub(crate) fn glyph_info_and_font_impl(&self, c: char) -> (&FontImpl, GlyphInfo) { + pub(crate) fn glyph_info_and_font_impl(&self, c: char) -> (Option<&FontImpl>, GlyphInfo) { + if self.fonts.is_empty() { + return (None, self.replacement_glyph.1); + } let (font_index, glyph_info) = self.glyph_info(c); let font_impl = &self.fonts[font_index]; - (font_impl, glyph_info) + (Some(font_impl), glyph_info) } fn glyph_info_no_cache_or_fallback(&self, c: char) -> Option<(FontIndex, GlyphInfo)> { diff --git a/epaint/src/text/text_layout.rs b/epaint/src/text/text_layout.rs index 994440d17..bdcb1eef6 100644 --- a/epaint/src/text/text_layout.rs +++ b/epaint/src/text/text_layout.rs @@ -72,8 +72,10 @@ fn layout_section( paragraph.empty_paragraph_height = font_height; // TODO: replace this hack with actually including `\n` in the glyphs? } else { let (font_impl, glyph_info) = font.glyph_info_and_font_impl(chr); - if let Some(last_glyph_id) = last_glyph_id { - paragraph.cursor_x += font_impl.pair_kerning(last_glyph_id, glyph_info.id) + if let Some(font_impl) = font_impl { + if let Some(last_glyph_id) = last_glyph_id { + paragraph.cursor_x += font_impl.pair_kerning(last_glyph_id, glyph_info.id) + } } paragraph.glyphs.push(Glyph {