summaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/spacing.rs18
-rw-r--r--src/layout/text.rs22
2 files changed, 20 insertions, 20 deletions
diff --git a/src/layout/spacing.rs b/src/layout/spacing.rs
index 4b564a2b..2bcb7ac1 100644
--- a/src/layout/spacing.rs
+++ b/src/layout/spacing.rs
@@ -1,7 +1,6 @@
use std::fmt::{self, Debug, Formatter};
use super::*;
-use crate::exec::Softness;
/// A spacing node.
#[derive(Copy, Clone, PartialEq)]
@@ -10,13 +9,11 @@ pub struct NodeSpacing {
pub amount: Length,
/// Defines how spacing interacts with surrounding spacing.
///
- /// Hard spacing assures that a fixed amount of spacing will always be
- /// inserted. Soft spacing will be consumed by previous soft spacing or
- /// neighbouring hard spacing and can be used to insert overridable spacing,
- /// e.g. between words or paragraphs.
- ///
- /// This field is only used in evaluation, not in layouting.
- pub softness: Softness,
+ /// Hard spacing (`softness = 0`) assures that a fixed amount of spacing
+ /// will always be inserted. Soft spacing (`softness >= 1`) will be consumed
+ /// by other spacing with lower softness and can be used to insert
+ /// overridable spacing, e.g. between words or paragraphs.
+ pub softness: u8,
}
impl Layout for NodeSpacing {
@@ -27,10 +24,7 @@ impl Layout for NodeSpacing {
impl Debug for NodeSpacing {
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
- match self.softness {
- Softness::Soft => write!(f, "Soft({})", self.amount),
- Softness::Hard => write!(f, "Hard({})", self.amount),
- }
+ write!(f, "Spacing({}, {})", self.amount, self.softness)
}
}
diff --git a/src/layout/text.rs b/src/layout/text.rs
index 256a6e6d..7b4eb08e 100644
--- a/src/layout/text.rs
+++ b/src/layout/text.rs
@@ -4,35 +4,41 @@ use std::rc::Rc;
use fontdock::{FallbackTree, FontVariant};
use super::*;
-use crate::shaping;
+use crate::shaping::{shape, VerticalFontMetric};
/// A text node.
#[derive(Clone, PartialEq)]
pub struct NodeText {
+ /// The text.
+ pub text: String,
/// The text direction.
pub dir: Dir,
/// How to align this text node in its parent.
pub aligns: LayoutAligns,
- /// The text.
- pub text: String,
- /// The font size.
- pub font_size: Length,
/// The families used for font fallback.
pub families: Rc<FallbackTree>,
/// The font variant,
pub variant: FontVariant,
+ /// The font size.
+ pub font_size: Length,
+ /// The top end of the text bounding box.
+ pub top_edge: VerticalFontMetric,
+ /// The bottom end of the text bounding box.
+ pub bottom_edge: VerticalFontMetric,
}
impl Layout for NodeText {
fn layout(&self, ctx: &mut LayoutContext, _: &Areas) -> Layouted {
Layouted::Frame(
- shaping::shape(
+ shape(
&self.text,
self.dir,
- self.font_size,
- &mut ctx.env.fonts,
&self.families,
self.variant,
+ self.font_size,
+ self.top_edge,
+ self.bottom_edge,
+ &mut ctx.env.fonts,
),
self.aligns,
)