2025-11-27 23:18:30 +01:00
use cosmic_text ::{ Attrs , Buffer , FontSystem , Metrics , Shaping , Wrap } ;
2024-02-01 21:06:54 -05:00
// Tests the ability to fallback to glyph wrapping when a word can't fit on a line by itself.
// No line should ever overflow the buffer size.
#[ test ]
fn wrap_word_fallback ( ) {
2024-06-06 15:31:31 -06:00
let mut font_system =
FontSystem ::new_with_locale_and_db ( " en-US " . into ( ) , fontdb ::Database ::new ( ) ) ;
let font = std ::fs ::read ( " fonts/Inter-Regular.ttf " ) . unwrap ( ) ;
font_system . db_mut ( ) . load_font_data ( font ) ;
2024-02-01 21:06:54 -05:00
let metrics = Metrics ::new ( 14.0 , 20.0 ) ;
2025-11-27 23:18:30 +01:00
let mut buffer = Buffer ::new ( & mut font_system , metrics ) ;
2024-02-01 21:06:54 -05:00
let mut buffer = buffer . borrow_with ( & mut font_system ) ;
2024-02-01 21:51:36 -05:00
buffer . set_wrap ( Wrap ::WordOrGlyph ) ;
2024-06-12 09:04:04 -06:00
buffer . set_size ( Some ( 50.0 ) , Some ( 1000.0 ) ) ;
2026-02-25 23:14:56 -07:00
buffer . set_text ( " Lorem ipsum dolor sit amet, qui minim labore adipisicing minim sint cillum sint consectetur cupidatat. " , & Attrs ::new ( ) . family ( cosmic_text ::Family ::Name ( " Inter " ) ) , Shaping ::Advanced , None ) ;
2024-02-01 21:06:54 -05:00
2026-02-25 23:14:56 -07:00
let measured_size = buffer
. layout_runs ( )
. fold ( 0.0 f32 , | width , run | width . max ( run . line_w ) ) ;
2024-02-01 21:06:54 -05:00
assert! (
2024-06-12 09:04:04 -06:00
measured_size < = buffer . size ( ) . 0. unwrap_or ( 0.0 ) ,
2024-02-01 21:06:54 -05:00
" Measured width is larger than buffer width \n {} <= {} " ,
measured_size ,
2024-06-12 09:04:04 -06:00
buffer . size ( ) . 0. unwrap_or ( 0.0 )
2024-02-01 21:06:54 -05:00
) ;
}