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.
This commit is contained in:
parent
751ea77c29
commit
2aaaf2cd0c
2 changed files with 14 additions and 4 deletions
|
|
@ -140,14 +140,14 @@ ouroboros = "0.17"
|
||||||
palette = "0.7"
|
palette = "0.7"
|
||||||
qrcode = { version = "0.12", default-features = false }
|
qrcode = { version = "0.12", default-features = false }
|
||||||
raw-window-handle = "0.5"
|
raw-window-handle = "0.5"
|
||||||
resvg = "0.35"
|
resvg = "0.36"
|
||||||
rustc-hash = "1.0"
|
rustc-hash = "1.0"
|
||||||
smol = "1.0"
|
smol = "1.0"
|
||||||
softbuffer = "0.2"
|
softbuffer = "0.2"
|
||||||
syntect = "5.1"
|
syntect = "5.1"
|
||||||
sysinfo = "0.28"
|
sysinfo = "0.28"
|
||||||
thiserror = "1.0"
|
thiserror = "1.0"
|
||||||
tiny-skia = "0.10"
|
tiny-skia = "0.11"
|
||||||
tokio = "1.0"
|
tokio = "1.0"
|
||||||
tracing = "0.1"
|
tracing = "0.1"
|
||||||
twox-hash = { version = "1.0", default-features = false }
|
twox-hash = { version = "1.0", default-features = false }
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
use crate::core::svg::{Data, Handle};
|
use crate::core::svg::{Data, Handle};
|
||||||
use crate::core::{Color, Rectangle, Size};
|
use crate::core::{Color, Rectangle, Size};
|
||||||
|
use crate::graphics::text;
|
||||||
|
|
||||||
use resvg::usvg;
|
use resvg::usvg::{self, TreeTextToPath};
|
||||||
use rustc_hash::{FxHashMap, FxHashSet};
|
use rustc_hash::{FxHashMap, FxHashSet};
|
||||||
|
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
|
|
@ -77,7 +78,7 @@ impl Cache {
|
||||||
let id = handle.id();
|
let id = handle.id();
|
||||||
|
|
||||||
if let hash_map::Entry::Vacant(entry) = self.trees.entry(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) => {
|
Data::Path(path) => {
|
||||||
fs::read_to_string(path).ok().and_then(|contents| {
|
fs::read_to_string(path).ok().and_then(|contents| {
|
||||||
usvg::Tree::from_str(
|
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);
|
let _ = entry.insert(svg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue