private static String layout( AbstractButton b, FontMetrics fm, int width, int height ) {
		// compute view rectangle
		Insets insets = b.getInsets();
		viewR.setBounds( insets.left, insets.top,
			width - insets.left - insets.right,
			height - insets.top - insets.bottom );

		// reset rectangles
		textR.setBounds( 0, 0, 0, 0 );
		iconR.setBounds( 0, 0, 0, 0 );

		String text = b.getText();
		return SwingUtilities.layoutCompoundLabel( b, fm, text, b.getIcon(),
			b.getVerticalAlignment(), b.getHorizontalAlignment(),
			b.getVerticalTextPosition(), b.getHorizontalTextPosition(),
			viewR, iconR, textR,
			(text != null) ? b.getIconTextGap() : 0 );
	}
Similar to BasicButtonUI.layout(), but does not use zero insets for HTML text,
which is done in BasicButtonUI.layout() since Java 19.
See https://github.com/openjdk/jdk/pull/8407
and https://github.com/openjdk/jdk/pull/8407#issuecomment-1761583430
flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java