Draft metrics hinting support

This commit is contained in:
Héctor Ramón Jiménez 2025-11-23 06:22:24 +01:00 committed by Jeremy Soller
parent 9339446cfa
commit 48eda6bd7d
15 changed files with 41 additions and 22 deletions

View file

@ -85,7 +85,7 @@ impl DrawTestCfg {
let mut font_system = FontSystem::new_with_locale_and_db("En-US".into(), font_db);
let mut swash_cache = SwashCache::new();
let metrics = Metrics::new(self.font_size, self.line_height);
let mut buffer = Buffer::new(&mut font_system, metrics);
let mut buffer = Buffer::new(&mut font_system, metrics, false);
let mut buffer = buffer.borrow_with(&mut font_system);
let margins = 5;
buffer.set_size(

View file

@ -13,7 +13,7 @@ fn editor() -> ViEditor<'static, 'static> {
let line_height = (font_size * 1.4).ceil();
let metrics = Metrics::new(font_size, line_height);
let buffer = Buffer::new_empty(metrics);
let buffer = Buffer::new_empty(metrics, false);
let editor = SyntaxEditor::new(
buffer,
SYNTAX_SYSTEM.get_or_init(SyntaxSystem::new),

View file

@ -23,14 +23,15 @@ fn stable_wrap() {
let mut check_wrap = |text: &_, wrap, align_opt, start_width_opt| {
let line = ShapeLine::new(&mut font_system, text, &attrs, Shaping::Advanced, 8);
let layout_unbounded = line.layout(font_size, start_width_opt, wrap, align_opt, None);
let layout_unbounded =
line.layout(font_size, start_width_opt, wrap, align_opt, None, false);
let max_width = layout_unbounded.iter().map(|l| l.w).fold(0.0, f32::max);
let new_limit = match start_width_opt {
Some(start_width) => f32::min(start_width, max_width),
None => max_width,
};
let layout_bounded = line.layout(font_size, Some(new_limit), wrap, align_opt, None);
let layout_bounded = line.layout(font_size, Some(new_limit), wrap, align_opt, None, false);
let bounded_max_width = layout_bounded.iter().map(|l| l.w).fold(0.0, f32::max);
// For debugging:
@ -99,7 +100,7 @@ fn wrap_extra_line() {
let mut font_system = FontSystem::new();
let metrics = Metrics::new(14.0, 20.0);
let mut buffer = Buffer::new(&mut font_system, metrics);
let mut buffer = Buffer::new(&mut font_system, metrics, false);
let mut buffer = buffer.borrow_with(&mut font_system);

View file

@ -10,7 +10,7 @@ fn wrap_word_fallback() {
font_system.db_mut().load_font_data(font);
let metrics = Metrics::new(14.0, 20.0);
let mut buffer = Buffer::new(&mut font_system, metrics);
let mut buffer = Buffer::new(&mut font_system, metrics, false);
let mut buffer = buffer.borrow_with(&mut font_system);