This layout is two characters wide although the ribbon width is 0.5 * 3 = 1.5, which IMHO should be rounded down since it is an upper bound:
> layoutSmart (LayoutOptions (AvailablePerLine 3 0.5)) ("a" <> softline' <> "b")
SChar 'a' ( SChar 'b' SEmpty )
This layout is two characters wide although the ribbon width is 0.5 * 3 = 1.5, which IMHO should be rounded down since it is an upper bound: