Make basic text shaping the default shaping strategy
This commit is contained in:
parent
57a276e165
commit
33b5a90019
24 changed files with 140 additions and 10 deletions
|
|
@ -219,6 +219,7 @@ impl Backend {
|
|||
font,
|
||||
horizontal_alignment,
|
||||
vertical_alignment,
|
||||
advanced_shape,
|
||||
} => {
|
||||
let physical_bounds =
|
||||
(primitive.bounds() + translation) * scale_factor;
|
||||
|
|
@ -238,6 +239,7 @@ impl Backend {
|
|||
*font,
|
||||
*horizontal_alignment,
|
||||
*vertical_alignment,
|
||||
*advanced_shape,
|
||||
pixels,
|
||||
clip_mask,
|
||||
);
|
||||
|
|
@ -626,8 +628,10 @@ impl backend::Text for Backend {
|
|||
size: f32,
|
||||
font: Font,
|
||||
bounds: Size,
|
||||
advanced_shape: bool,
|
||||
) -> (f32, f32) {
|
||||
self.text_pipeline.measure(contents, size, font, bounds)
|
||||
self.text_pipeline
|
||||
.measure(contents, size, font, bounds, advanced_shape)
|
||||
}
|
||||
|
||||
fn hit_test(
|
||||
|
|
@ -638,6 +642,7 @@ impl backend::Text for Backend {
|
|||
bounds: Size,
|
||||
point: Point,
|
||||
nearest_only: bool,
|
||||
advanced_shape: bool,
|
||||
) -> Option<text::Hit> {
|
||||
self.text_pipeline.hit_test(
|
||||
contents,
|
||||
|
|
@ -646,6 +651,7 @@ impl backend::Text for Backend {
|
|||
bounds,
|
||||
point,
|
||||
nearest_only,
|
||||
advanced_shape,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -114,6 +114,7 @@ impl Frame {
|
|||
font: text.font,
|
||||
horizontal_alignment: text.horizontal_alignment,
|
||||
vertical_alignment: text.vertical_alignment,
|
||||
advanced_shape: text.advanced_shape,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ impl Pipeline {
|
|||
font: Font,
|
||||
horizontal_alignment: alignment::Horizontal,
|
||||
vertical_alignment: alignment::Vertical,
|
||||
advanced_shape: bool,
|
||||
pixels: &mut tiny_skia::PixmapMut<'_>,
|
||||
clip_mask: Option<&tiny_skia::Mask>,
|
||||
) {
|
||||
|
|
@ -63,6 +64,7 @@ impl Pipeline {
|
|||
content,
|
||||
font,
|
||||
size,
|
||||
advanced_shape,
|
||||
};
|
||||
|
||||
let (_, buffer) = self.render_cache.allocate(font_system, key);
|
||||
|
|
@ -130,6 +132,7 @@ impl Pipeline {
|
|||
size: f32,
|
||||
font: Font,
|
||||
bounds: Size,
|
||||
advanced_shape: bool,
|
||||
) -> (f32, f32) {
|
||||
let mut measurement_cache = self.measurement_cache.borrow_mut();
|
||||
|
||||
|
|
@ -140,6 +143,7 @@ impl Pipeline {
|
|||
size,
|
||||
font,
|
||||
bounds,
|
||||
advanced_shape,
|
||||
},
|
||||
);
|
||||
|
||||
|
|
@ -161,6 +165,7 @@ impl Pipeline {
|
|||
bounds: Size,
|
||||
point: Point,
|
||||
_nearest_only: bool,
|
||||
advanced_shape: bool,
|
||||
) -> Option<Hit> {
|
||||
let mut measurement_cache = self.measurement_cache.borrow_mut();
|
||||
|
||||
|
|
@ -171,6 +176,7 @@ impl Pipeline {
|
|||
size,
|
||||
font,
|
||||
bounds,
|
||||
advanced_shape,
|
||||
},
|
||||
);
|
||||
|
||||
|
|
@ -390,6 +396,7 @@ impl Cache {
|
|||
.family(to_family(key.font.family))
|
||||
.weight(to_weight(key.font.weight))
|
||||
.stretch(to_stretch(key.font.stretch)),
|
||||
!key.advanced_shape,
|
||||
);
|
||||
|
||||
let _ = entry.insert(buffer);
|
||||
|
|
@ -420,6 +427,7 @@ struct Key<'a> {
|
|||
size: f32,
|
||||
font: Font,
|
||||
bounds: Size,
|
||||
advanced_shape: bool,
|
||||
}
|
||||
|
||||
type KeyHash = u64;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue