From 35302d20047c58baa99065a4574eafe1920e7be6 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 18 Apr 2023 19:04:46 +0200 Subject: [PATCH] Handle SVG with text --- Cargo.lock | 24 +++ Cargo.toml | 3 +- assets/files/diagram.svg | 14 ++ assets/fonts/InriaSerif-Bold.ttf | Bin 0 -> 95832 bytes assets/fonts/InriaSerif-Italic.ttf | Bin 0 -> 100352 bytes library/src/visualize/image.rs | 21 ++- src/export/pdf/image.rs | 2 +- src/export/render.rs | 2 +- src/font/book.rs | 19 ++- src/image.rs | 234 +++++++++++++++++++++++------ tests/ref/visualize/svg-text.png | Bin 0 -> 14244 bytes tests/typ/visualize/svg-text.typ | 9 ++ 12 files changed, 268 insertions(+), 60 deletions(-) create mode 100644 assets/files/diagram.svg create mode 100644 assets/fonts/InriaSerif-Bold.ttf create mode 100644 assets/fonts/InriaSerif-Italic.ttf create mode 100644 tests/ref/visualize/svg-text.png create mode 100644 tests/typ/visualize/svg-text.typ diff --git a/Cargo.lock b/Cargo.lock index b0bf355c4..1f66916a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -546,6 +546,17 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "fontdb" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52186a39c335aa6f79fc0bf1c3cf854870b6ad4e50a7bb8a59b4ba1331f478a" +dependencies = [ + "log", + "memmap2", + "ttf-parser 0.17.1", +] + [[package]] name = "form_urlencoded" version = "1.1.0" @@ -1597,6 +1608,7 @@ dependencies = [ "comemo", "ecow", "flate2", + "fontdb", "if_chain", "image", "indexmap", @@ -1807,6 +1819,12 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +[[package]] +name = "unicode-vo" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" + [[package]] name = "unicode-width" version = "0.1.10" @@ -1852,14 +1870,20 @@ dependencies = [ "data-url", "flate2", "float-cmp", + "fontdb", "kurbo", "log", "pico-args", "rctree", "roxmltree", + "rustybuzz", "simplecss", "siphasher", "svgtypes", + "ttf-parser 0.15.2", + "unicode-bidi", + "unicode-script", + "unicode-vo", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index ea4bde6ba..9c437fd46 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ bytemuck = "1" comemo = "0.2.2" ecow = "0.1" flate2 = "1" +fontdb = "0.9" if_chain = "1" image = { version = "0.24", default-features = false, features = ["png", "jpeg", "gif"] } log = "0.4" @@ -48,7 +49,7 @@ unicode-math-class = "0.1" unicode-segmentation = "1" unicode-xid = "0.2" unscanny = "0.1" -usvg = { version = "0.22", default-features = false } +usvg = { version = "0.22", default-features = false, features = ["text"] } xmp-writer = "0.1" indexmap = "1.9.3" diff --git a/assets/files/diagram.svg b/assets/files/diagram.svg new file mode 100644 index 000000000..dc42e068d --- /dev/null +++ b/assets/files/diagram.svg @@ -0,0 +1,14 @@ + + + + +Height +Height +Height +Height +Without family +With non-existing family +Time + +Curve + diff --git a/assets/fonts/InriaSerif-Bold.ttf b/assets/fonts/InriaSerif-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d0874eacf3e67751667431d955289a2bbea5fa15 GIT binary patch literal 95832 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%0Aj_j;LM`2QqBQ7=s>e86_ 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 UdNu^bI=SSO-xrh*xBf1D1Ms=*Q2+n{ literal 0 HcmV?d00001 diff --git a/assets/fonts/InriaSerif-Italic.ttf b/assets/fonts/InriaSerif-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b1bc8d4af818be18c88c51cf3b02e38946eda141 GIT binary patch literal 100352 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 literal 0 HcmV?d00001 diff --git a/library/src/visualize/image.rs b/library/src/visualize/image.rs index 473df4c18..4b8be5c7f 100644 --- a/library/src/visualize/image.rs +++ b/library/src/visualize/image.rs @@ -3,10 +3,9 @@ use std::path::Path; use typst::image::{Image, ImageFormat, RasterFormat, VectorFormat}; -use crate::{ - meta::{Figurable, LocalName}, - prelude::*, -}; +use crate::meta::{Figurable, LocalName}; +use crate::prelude::*; +use crate::text::families; /// A raster or vector graphic. /// @@ -33,7 +32,7 @@ pub struct ImageElem { let Spanned { v: path, span } = args.expect::>("path to image file")?; let path: EcoString = vm.locate(&path).at(span)?.to_string_lossy().into(); - let _ = load(vm.world(), &path).at(span)?; + let _ = load(vm.world(), &path, None).at(span)?; path )] pub path: EcoString, @@ -56,7 +55,9 @@ impl Layout for ImageElem { styles: StyleChain, regions: Regions, ) -> SourceResult { - let image = load(vt.world, &self.path()).unwrap(); + let first = families(styles).next(); + let fallback_family = first.as_ref().map(|f| f.as_str()); + let image = load(vt.world, &self.path(), fallback_family).unwrap(); let sizing = Axes::new(self.width(styles), self.height(styles)); let region = sizing .zip(regions.base()) @@ -158,7 +159,11 @@ pub enum ImageFit { /// Load an image from a path. #[comemo::memoize] -fn load(world: Tracked, full: &str) -> StrResult { +fn load( + world: Tracked, + full: &str, + fallback_family: Option<&str>, +) -> StrResult { let full = Path::new(full); let buffer = world.file(full)?; let ext = full.extension().and_then(OsStr::to_str).unwrap_or_default(); @@ -169,5 +174,5 @@ fn load(world: Tracked, full: &str) -> StrResult { "svg" | "svgz" => ImageFormat::Vector(VectorFormat::Svg), _ => return Err("unknown image format".into()), }; - Image::new(buffer, format) + Image::with_fonts(buffer, format, world, fallback_family) } diff --git a/src/export/pdf/image.rs b/src/export/pdf/image.rs index 906737dee..e6eaa9c99 100644 --- a/src/export/pdf/image.rs +++ b/src/export/pdf/image.rs @@ -17,7 +17,7 @@ pub fn write_images(ctx: &mut PdfContext) { // Add the primary image. // TODO: Error if image could not be encoded. - match image.decode().unwrap().as_ref() { + match image.decoded() { DecodedImage::Raster(dynamic, format) => { // TODO: Error if image could not be encoded. let (data, filter, has_color) = encode_image(*format, dynamic).unwrap(); diff --git a/src/export/render.rs b/src/export/render.rs index f3c72ba0f..3c2cea8dc 100644 --- a/src/export/render.rs +++ b/src/export/render.rs @@ -499,7 +499,7 @@ fn render_image( #[comemo::memoize] fn scaled_texture(image: &Image, w: u32, h: u32) -> Option> { let mut pixmap = sk::Pixmap::new(w, h)?; - match image.decode().unwrap().as_ref() { + match image.decoded() { DecodedImage::Raster(dynamic, _) => { let downscale = w < image.width(); let filter = diff --git a/src/font/book.rs b/src/font/book.rs index a6e41860f..5af2ccb2e 100644 --- a/src/font/book.rs +++ b/src/font/book.rs @@ -39,6 +39,11 @@ impl FontBook { self.infos.push(info); } + /// Get the font info for the given index. + pub fn info(&self, index: usize) -> Option<&FontInfo> { + self.infos.get(index) + } + /// An ordered iterator over all font families this book knows and details /// about the fonts that are part of them. pub fn families( @@ -53,8 +58,8 @@ impl FontBook { }) } - /// Try to find and load a font from the given `family` that matches - /// the given `variant` as closely as possible. + /// Try to find a font from the given `family` that matches the given + /// `variant` as closely as possible. /// /// The `family` should be all lowercase. pub fn select(&self, family: &str, variant: FontVariant) -> Option { @@ -62,6 +67,16 @@ impl FontBook { self.find_best_variant(None, variant, ids.iter().copied()) } + /// Iterate over all variants of a family. + pub fn select_family(&self, family: &str) -> impl Iterator + '_ { + self.families + .get(family) + .map(|vec| vec.as_slice()) + .unwrap_or_default() + .iter() + .copied() + } + /// Try to find and load a fallback font that /// - is as close as possible to the font `like` (if any) /// - is as close as possible to the given `variant` diff --git a/src/image.rs b/src/image.rs index 23ea60f58..09aaf24dc 100644 --- a/src/image.rs +++ b/src/image.rs @@ -1,74 +1,106 @@ //! Image handling. +use std::collections::BTreeSet; +use std::fmt::{self, Debug, Formatter}; +use std::hash::{Hash, Hasher}; use std::io; use std::sync::Arc; +use comemo::Tracked; use ecow::EcoString; use crate::diag::{format_xml_like_error, StrResult}; use crate::util::Buffer; +use crate::World; /// A raster or vector image. /// /// Values of this type are cheap to clone and hash. -#[derive(Debug, Clone, Eq, PartialEq, Hash)] -pub struct Image { +#[derive(Clone)] +pub struct Image(Arc); + +/// The internal representation. +struct Repr { /// The raw, undecoded image data. data: Buffer, /// The format of the encoded `buffer`. format: ImageFormat, - /// The width in pixels. - width: u32, - /// The height in pixels. - height: u32, + /// The decoded image. + decoded: DecodedImage, } impl Image { /// Create an image from a buffer and a format. - /// - /// Extracts the width and height. pub fn new(data: Buffer, format: ImageFormat) -> StrResult { - let (width, height) = determine_size(&data, format)?; - Ok(Self { data, format, width, height }) + match format { + ImageFormat::Raster(format) => decode_raster(data, format), + ImageFormat::Vector(VectorFormat::Svg) => decode_svg(data), + } + } + + /// Create a font-dependant image from a buffer and a format. + pub fn with_fonts( + data: Buffer, + format: ImageFormat, + world: Tracked, + fallback_family: Option<&str>, + ) -> StrResult { + match format { + ImageFormat::Raster(format) => decode_raster(data, format), + ImageFormat::Vector(VectorFormat::Svg) => { + decode_svg_with_fonts(data, world, fallback_family) + } + } } /// The raw image data. pub fn data(&self) -> &Buffer { - &self.data + &self.0.data } /// The format of the image. pub fn format(&self) -> ImageFormat { - self.format + self.0.format + } + + /// The decoded version of the image. + pub fn decoded(&self) -> &DecodedImage { + &self.0.decoded } /// The width of the image in pixels. pub fn width(&self) -> u32 { - self.width + self.decoded().width() } /// The height of the image in pixels. pub fn height(&self) -> u32 { - self.height + self.decoded().height() } +} - /// Decode the image. - #[comemo::memoize] - pub fn decode(&self) -> StrResult> { - Ok(Arc::new(match self.format { - ImageFormat::Vector(VectorFormat::Svg) => { - let opts = usvg::Options::default(); - let tree = usvg::Tree::from_data(&self.data, &opts.to_ref()) - .map_err(format_usvg_error)?; - DecodedImage::Svg(tree) - } - ImageFormat::Raster(format) => { - let cursor = io::Cursor::new(&self.data); - let reader = image::io::Reader::with_format(cursor, format.into()); - let dynamic = reader.decode().map_err(format_image_error)?; - DecodedImage::Raster(dynamic, format) - } - })) +impl Debug for Image { + fn fmt(&self, f: &mut Formatter) -> fmt::Result { + f.debug_struct("Image") + .field("format", &self.format()) + .field("width", &self.width()) + .field("height", &self.height()) + .finish() + } +} + +impl Eq for Image {} + +impl PartialEq for Image { + fn eq(&self, other: &Self) -> bool { + self.data() == other.data() && self.format() == other.format() + } +} + +impl Hash for Image { + fn hash(&self, state: &mut H) { + self.data().hash(state); + self.format().hash(state); } } @@ -131,28 +163,136 @@ pub enum DecodedImage { Svg(usvg::Tree), } -/// Determine the image size in pixels. -#[comemo::memoize] -fn determine_size(data: &Buffer, format: ImageFormat) -> StrResult<(u32, u32)> { - match format { - ImageFormat::Raster(format) => { - let cursor = io::Cursor::new(&data); - let reader = image::io::Reader::with_format(cursor, format.into()); - Ok(reader.into_dimensions().map_err(format_image_error)?) +impl DecodedImage { + /// The width of the image in pixels. + pub fn width(&self) -> u32 { + match self { + Self::Raster(dynamic, _) => dynamic.width(), + Self::Svg(tree) => tree.svg_node().size.width().ceil() as u32, } - ImageFormat::Vector(VectorFormat::Svg) => { - let opts = usvg::Options::default(); - let tree = - usvg::Tree::from_data(data, &opts.to_ref()).map_err(format_usvg_error)?; + } - let size = tree.svg_node().size; - let width = size.width().ceil() as u32; - let height = size.height().ceil() as u32; - Ok((width, height)) + /// The height of the image in pixels. + pub fn height(&self) -> u32 { + match self { + Self::Raster(dynamic, _) => dynamic.height(), + Self::Svg(tree) => tree.svg_node().size.height().ceil() as u32, } } } +/// Decode a raster image. +#[comemo::memoize] +fn decode_raster(data: Buffer, format: RasterFormat) -> StrResult { + let cursor = io::Cursor::new(&data); + let reader = image::io::Reader::with_format(cursor, format.into()); + let dynamic = reader.decode().map_err(format_image_error)?; + Ok(Image(Arc::new(Repr { + data, + format: ImageFormat::Raster(format), + decoded: DecodedImage::Raster(dynamic, format), + }))) +} + +/// Decode an SVG image. +#[comemo::memoize] +fn decode_svg(data: Buffer) -> StrResult { + let opts = usvg::Options::default(); + let tree = usvg::Tree::from_data(&data, &opts.to_ref()).map_err(format_usvg_error)?; + Ok(Image(Arc::new(Repr { + data, + format: ImageFormat::Vector(VectorFormat::Svg), + decoded: DecodedImage::Svg(tree), + }))) +} + +/// Decode an SVG image with access to fonts. +#[comemo::memoize] +fn decode_svg_with_fonts( + data: Buffer, + world: Tracked, + fallback_family: Option<&str>, +) -> StrResult { + // Parse XML. + let xml = std::str::from_utf8(&data) + .map_err(|_| format_usvg_error(usvg::Error::NotAnUtf8Str))?; + let document = roxmltree::Document::parse(xml) + .map_err(|err| format_xml_like_error("svg", err))?; + + // Parse SVG. + let mut opts = usvg::Options { + fontdb: load_svg_fonts(&document, world, fallback_family), + ..Default::default() + }; + + // Recover the non-lowercased version of the family because + // usvg is case sensitive. + let book = world.book(); + if let Some(family) = fallback_family + .and_then(|lowercase| book.select_family(lowercase).next()) + .and_then(|index| book.info(index)) + .map(|info| info.family.clone()) + { + opts.font_family = family; + } + + let tree = + usvg::Tree::from_xmltree(&document, &opts.to_ref()).map_err(format_usvg_error)?; + + Ok(Image(Arc::new(Repr { + data, + format: ImageFormat::Vector(VectorFormat::Svg), + decoded: DecodedImage::Svg(tree), + }))) +} + +/// Discover and load the fonts referenced by an SVG. +fn load_svg_fonts( + document: &roxmltree::Document, + world: Tracked, + fallback_family: Option<&str>, +) -> fontdb::Database { + // Find out which font families are referenced by the SVG. We simply do a + // search for `font-family` attributes. This won't help with CSS, but usvg + // 22.0 doesn't seem to support it anyway. Once we bump to the latest usvg, + // this can be replaced by a scan for text elements in the SVG: + // https://github.com/RazrFalcon/resvg/issues/555 + let mut referenced = BTreeSet::::new(); + traverse_xml(&document.root(), &mut |node| { + if let Some(list) = node.attribute("font-family") { + for family in list.split(',') { + referenced.insert(EcoString::from(family.trim()).to_lowercase()); + } + } + }); + + // Prepare font database. + let mut fontdb = fontdb::Database::new(); + for family in referenced.iter().map(|family| family.as_str()).chain(fallback_family) { + // We load all variants for the family, since we don't know which will + // be used. + for id in world.book().select_family(family) { + if let Some(font) = world.font(id) { + let source = Arc::new(font.data().clone()); + fontdb.load_font_source(fontdb::Source::Binary(source)); + } + } + } + + fontdb +} + +/// Search for all font families referenced by an SVG. +fn traverse_xml(node: &roxmltree::Node, f: &mut F) +where + F: FnMut(&roxmltree::Node), +{ + f(node); + for child in node.children() { + traverse_xml(&child, f); + } +} + /// Format the user-facing raster graphic decoding error message. fn format_image_error(error: image::ImageError) -> EcoString { match error { diff --git a/tests/ref/visualize/svg-text.png b/tests/ref/visualize/svg-text.png new file mode 100644 index 0000000000000000000000000000000000000000..fbaa85766003e8765f133356ed4cf6518ade3cc1 GIT binary patch literal 14244 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 RC_O