diff options
| author | 2023-11-11 04:03:25 +0100 | |
|---|---|---|
| committer | 2023-11-11 04:03:25 +0100 | |
| commit | 2aaaf2cd0cb56f9efc946159a0232270f8d37eeb (patch) | |
| tree | d375c5fce3953403475a483fef747469eb65cb15 /tiny_skia | |
| parent | 751ea77c29f6eb3d00f45f0a04c833a1d03a425c (diff) | |
| download | iced-2aaaf2cd0cb56f9efc946159a0232270f8d37eeb.tar.gz iced-2aaaf2cd0cb56f9efc946159a0232270f8d37eeb.tar.bz2 iced-2aaaf2cd0cb56f9efc946159a0232270f8d37eeb.zip | |
Call `convert_text` on `svg` node before rendering
`tiny-skia` does not support text rendering, so we
convert the text nodes to path nodes prior to that.
Diffstat (limited to '')
| -rw-r--r-- | tiny_skia/src/vector.rs | 14 | 
1 files changed, 12 insertions, 2 deletions
| diff --git a/tiny_skia/src/vector.rs b/tiny_skia/src/vector.rs index a1cd269d..9c2893a2 100644 --- a/tiny_skia/src/vector.rs +++ b/tiny_skia/src/vector.rs @@ -1,7 +1,8 @@  use crate::core::svg::{Data, Handle};  use crate::core::{Color, Rectangle, Size}; +use crate::graphics::text; -use resvg::usvg; +use resvg::usvg::{self, TreeTextToPath};  use rustc_hash::{FxHashMap, FxHashSet};  use std::cell::RefCell; @@ -77,7 +78,7 @@ impl Cache {          let id = handle.id();          if let hash_map::Entry::Vacant(entry) = self.trees.entry(id) { -            let svg = match handle.data() { +            let mut svg = match handle.data() {                  Data::Path(path) => {                      fs::read_to_string(path).ok().and_then(|contents| {                          usvg::Tree::from_str( @@ -92,6 +93,15 @@ impl Cache {                  }              }; +            if let Some(svg) = &mut svg { +                if svg.has_text_nodes() { +                    let mut font_system = +                        text::font_system().write().expect("Read font system"); + +                    svg.convert_text(font_system.raw().db_mut()); +                } +            } +              let _ = entry.insert(svg);          } | 
