summaryrefslogtreecommitdiff
path: root/src/export/pdf.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2020-09-30 13:18:42 +0200
committerLaurenz <laurmaedje@gmail.com>2020-09-30 13:18:42 +0200
commit7143e10afccc7beef22646f6c7355075f97afb2c (patch)
tree6713e1c732fb47ec3ef439f0b90df489398df201 /src/export/pdf.rs
parentee11f871756b1a17cf34b3ed5549eaddddc70f5e (diff)
Streamline font handling a bit 📜
Diffstat (limited to 'src/export/pdf.rs')
-rw-r--r--src/export/pdf.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/export/pdf.rs b/src/export/pdf.rs
index c4c12713..b87b3181 100644
--- a/src/export/pdf.rs
+++ b/src/export/pdf.rs
@@ -13,10 +13,10 @@ use tide::font::{
use tide::{PdfWriter, Rect, Ref, Trailer, Version};
use ttf_parser::{name_id, GlyphId};
+use crate::font::FontLoader;
use crate::layout::elements::LayoutElement;
use crate::layout::BoxLayout;
use crate::length::Length;
-use crate::SharedFontLoader;
/// Export a list of layouts into a _PDF_ document.
///
@@ -28,7 +28,7 @@ use crate::SharedFontLoader;
/// bytes written.
pub fn export<W: Write>(
layout: &[BoxLayout],
- loader: &SharedFontLoader,
+ loader: &FontLoader,
target: W,
) -> io::Result<usize> {
PdfExporter::new(layout, loader, target)?.write()
@@ -37,7 +37,7 @@ pub fn export<W: Write>(
struct PdfExporter<'a, W: Write> {
writer: PdfWriter<W>,
layouts: &'a [BoxLayout],
- loader: &'a SharedFontLoader,
+ loader: &'a FontLoader,
/// We need to know exactly which indirect reference id will be used for
/// which objects up-front to correctly declare the document catalogue, page
/// tree and so on. These offsets are computed in the beginning and stored
@@ -61,7 +61,7 @@ const NUM_OBJECTS_PER_FONT: u32 = 5;
impl<'a, W: Write> PdfExporter<'a, W> {
fn new(
layouts: &'a [BoxLayout],
- loader: &'a SharedFontLoader,
+ loader: &'a FontLoader,
target: W,
) -> io::Result<Self> {
let (to_pdf, to_fontdock) = remap_fonts(layouts);
@@ -168,8 +168,8 @@ impl<'a, W: Write> PdfExporter<'a, W> {
let mut id = self.offsets.fonts.0;
for &face_id in &self.to_layout {
- let loader = self.loader.borrow();
- let face = loader.get_loaded(face_id);
+ let owned_face = self.loader.get_loaded(face_id);
+ let face = owned_face.get();
let name = face
.names()
@@ -269,7 +269,7 @@ impl<'a, W: Write> PdfExporter<'a, W> {
.write_obj(id + 3, &CMap::new("Custom", system_info, mapping))?;
// Write the face's bytes.
- self.writer.write_obj(id + 4, &FontStream::new(face.data()))?;
+ self.writer.write_obj(id + 4, &FontStream::new(owned_face.data()))?;
id += NUM_OBJECTS_PER_FONT;
}