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
|
|
@ -12,7 +12,6 @@ geometry = ["iced_graphics/geometry"]
|
|||
raw-window-handle = "0.5"
|
||||
softbuffer = "0.2"
|
||||
tiny-skia = "0.9"
|
||||
cosmic-text = "0.8"
|
||||
bytemuck = "1"
|
||||
rustc-hash = "1.1"
|
||||
kurbo = "0.9"
|
||||
|
|
@ -23,6 +22,10 @@ version = "0.8"
|
|||
path = "../graphics"
|
||||
features = ["tiny-skia"]
|
||||
|
||||
[dependencies.cosmic-text]
|
||||
git = "https://github.com/hecrj/cosmic-text.git"
|
||||
rev = "ad111a1df10d5da503620f4b841de5d41ebd4e73"
|
||||
|
||||
[dependencies.twox-hash]
|
||||
version = "1.6"
|
||||
default-features = false
|
||||
|
|
|
|||
|
|
@ -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