summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2020-01-01 19:37:55 +0100
committerLaurenz <laurmaedje@gmail.com>2020-01-01 19:37:55 +0100
commit5dfaffc5bdfa811c135f0140c0a0ba917eb8c70f (patch)
treed460a8516cf064048fdfa067ac56e85349ee6993 /src
parent7de92193212b655dca01217bd798b6566a438249 (diff)
Add basic font family function ✏
Diffstat (limited to 'src')
-rw-r--r--src/library/mod.rs34
1 files changed, 29 insertions, 5 deletions
diff --git a/src/library/mod.rs b/src/library/mod.rs
index 9c7cc7ce..7f7a0411 100644
--- a/src/library/mod.rs
+++ b/src/library/mod.rs
@@ -40,6 +40,7 @@ pub fn std() -> Scope {
std.add_with_metadata::<StyleChange>("italic", FontClass::Italic);
std.add_with_metadata::<StyleChange>("mono", FontClass::Monospace);
+ std.add::<FontFamily>("font.family");
std.add::<FontSize>("font.size");
std
@@ -79,17 +80,18 @@ function! {
/// words, lines or paragraphs as a multiple of the font size.
#[derive(Debug, PartialEq)]
pub struct ContentSpacing {
- spacing: f32,
+ body: Option<SyntaxTree>,
content: ContentKind,
+ spacing: f32,
}
type Meta = ContentKind;
- parse(args, body, _, meta) {
- parse!(forbidden: body);
+ parse(args, body, ctx, meta) {
ContentSpacing {
+ body: parse!(optional: body, ctx),
+ content: meta,
spacing: args.get_pos::<f64>()? as f32,
- content: meta
}
}
@@ -100,7 +102,7 @@ function! {
ContentKind::Line => style.line_spacing_scale = self.spacing,
ContentKind::Paragraph => style.paragraph_spacing_scale = self.spacing,
}
- vec![SetTextStyle(style)]
+ styled(&self.body, &ctx, style)
}
}
@@ -240,6 +242,28 @@ function! {
}
function! {
+ /// `font.family`: Set the font family.
+ #[derive(Debug, PartialEq)]
+ pub struct FontFamily {
+ body: Option<SyntaxTree>,
+ family: String,
+ }
+
+ parse(args, body, ctx) {
+ FontFamily {
+ body: parse!(optional: body, ctx),
+ family: args.get_pos::<String>()?,
+ }
+ }
+
+ layout(self, ctx) {
+ let mut style = ctx.style.text.clone();
+ style.fallback.insert(0, FontClass::Family(self.family.clone()));
+ styled(&self.body, &ctx, style)
+ }
+}
+
+function! {
/// `font.size`: Sets the font size.
#[derive(Debug, PartialEq)]
pub struct FontSize {