Extend Text measurement to support includeFontPadding prop

Summary:
This diff exposes the Text.includeFontPadding prop to java, then it uses the prop to calculate the height of Text components correctly.

changelog: [Internal][Fabric] Internal change in Fabric to support Text.includeFontPadding prop in fabric

Reviewed By: shergin

Differential Revision: D21446737

fbshipit-source-id: efe73fb6b0d402c3275ac8c012fa8fa06b743bdd
This commit is contained in:
David Vacca
2020-05-07 17:11:48 -07:00
committed by Facebook GitHub Bot
parent 4e59508a8e
commit 561a97f699
2 changed files with 12 additions and 1 deletions
@@ -46,6 +46,7 @@ public class TextLayoutManager {
private static final String INLINE_VIEW_PLACEHOLDER = "0";
private static final Object sSpannableCacheLock = new Object();
private static final boolean DEFAULT_INCLUDE_FONT_PADDING = true;
private static LruCache<String, Spannable> sSpannableCache = new LruCache<>(spannableCacheSize);
public static boolean isRTL(ReadableMap attributedString) {
@@ -221,7 +222,10 @@ public class TextLayoutManager {
int textBreakStrategy =
TextAttributeProps.getTextBreakStrategy(paragraphAttributes.getString("textBreakStrategy"));
boolean includeFontPadding = true;
boolean includeFontPadding =
paragraphAttributes.hasKey("includeFontPadding")
? paragraphAttributes.getBoolean("includeFontPadding")
: DEFAULT_INCLUDE_FONT_PADDING;
if (preparedSpannableText == null) {
throw new IllegalStateException("Spannable element has not been prepared in onBeforeLayout");
@@ -448,6 +448,11 @@ inline ParagraphAttributes convertRawProp(
"maximumFontSize",
sourceParagraphAttributes.maximumFontSize,
defaultParagraphAttributes.maximumFontSize);
paragraphAttributes.includeFontPadding = convertRawProp(
rawProps,
"includeFontPadding",
sourceParagraphAttributes.includeFontPadding,
defaultParagraphAttributes.includeFontPadding);
return paragraphAttributes;
}
@@ -481,6 +486,8 @@ inline folly::dynamic toDynamic(
values("ellipsizeMode", toString(paragraphAttributes.ellipsizeMode));
values("textBreakStrategy", toString(paragraphAttributes.textBreakStrategy));
values("adjustsFontSizeToFit", paragraphAttributes.adjustsFontSizeToFit);
values("includeFontPadding", paragraphAttributes.includeFontPadding);
return values;
}