diff --git a/RNTester/android/app/src/main/res/font/srisakdi.xml b/RNTester/android/app/src/main/res/font/srisakdi.xml
deleted file mode 100644
index c38d8f34a0e..00000000000
--- a/RNTester/android/app/src/main/res/font/srisakdi.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/RNTester/android/app/src/main/res/font/srisakdi_bold.ttf b/RNTester/android/app/src/main/res/font/srisakdi_bold.ttf
deleted file mode 100755
index 01a5bcb5d30..00000000000
Binary files a/RNTester/android/app/src/main/res/font/srisakdi_bold.ttf and /dev/null differ
diff --git a/RNTester/android/app/src/main/res/font/srisakdi_regular.ttf b/RNTester/android/app/src/main/res/font/srisakdi_regular.ttf
deleted file mode 100755
index 4db47aaad38..00000000000
Binary files a/RNTester/android/app/src/main/res/font/srisakdi_regular.ttf and /dev/null differ
diff --git a/RNTester/js/TextExample.android.js b/RNTester/js/TextExample.android.js
index 3101fabf7a1..a29fc01cb88 100644
--- a/RNTester/js/TextExample.android.js
+++ b/RNTester/js/TextExample.android.js
@@ -182,14 +182,6 @@ class TextExample extends React.Component<{}> {
NotoSerif Italic (Missing Font file)
- Srisakdi Regular
-
- Srisakdi Bold
-
diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomStyleSpan.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomStyleSpan.java
index f24fb72a36d..7b5f33cc32b 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomStyleSpan.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomStyleSpan.java
@@ -7,10 +7,8 @@
package com.facebook.react.views.text;
-import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Paint;
import android.graphics.Typeface;
@@ -31,30 +29,31 @@ public class CustomStyleSpan extends MetricAffectingSpan implements ReactSpan {
* Fonts are retrieved and cached using the {@link ReactFontManager}
*/
+ private final AssetManager mAssetManager;
+
private final int mStyle;
private final int mWeight;
private final @Nullable String mFontFamily;
- private final Context mContext;
public CustomStyleSpan(
int fontStyle,
int fontWeight,
@Nullable String fontFamily,
- @Nonnull Context context) {
+ AssetManager assetManager) {
mStyle = fontStyle;
mWeight = fontWeight;
mFontFamily = fontFamily;
- mContext = context;
+ mAssetManager = assetManager;
}
@Override
public void updateDrawState(TextPaint ds) {
- apply(ds, mStyle, mWeight, mFontFamily, mContext);
+ apply(ds, mStyle, mWeight, mFontFamily, mAssetManager);
}
@Override
- public void updateMeasureState(@Nonnull TextPaint paint) {
- apply(paint, mStyle, mWeight, mFontFamily, mContext);
+ public void updateMeasureState(TextPaint paint) {
+ apply(paint, mStyle, mWeight, mFontFamily, mAssetManager);
}
/**
@@ -83,7 +82,7 @@ public class CustomStyleSpan extends MetricAffectingSpan implements ReactSpan {
int style,
int weight,
@Nullable String family,
- Context context) {
+ AssetManager assetManager) {
int oldStyle;
Typeface typeface = paint.getTypeface();
if (typeface == null) {
@@ -104,7 +103,7 @@ public class CustomStyleSpan extends MetricAffectingSpan implements ReactSpan {
}
if (family != null) {
- typeface = ReactFontManager.getInstance().getTypeface(family, want, context);
+ typeface = ReactFontManager.getInstance().getTypeface(family, want, assetManager);
} else if (typeface != null) {
// TODO(t9055065): Fix custom fonts getting applied to text children with different style
typeface = Typeface.create(typeface, want);
@@ -117,4 +116,5 @@ public class CustomStyleSpan extends MetricAffectingSpan implements ReactSpan {
}
paint.setSubpixelText(true);
}
+
}
diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java
index ba3cb0c50ac..b935576c529 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java
@@ -188,7 +188,7 @@ public abstract class ReactBaseTextShadowNode extends LayoutShadowNode {
textShadowNode.mFontStyle,
textShadowNode.mFontWeight,
textShadowNode.mFontFamily,
- textShadowNode.getThemedContext())));
+ textShadowNode.getThemedContext().getAssets())));
}
if (textShadowNode.mIsUnderlineTextDecorationSet) {
ops.add(new SetSpanOperation(start, end, new ReactUnderlineSpan()));
diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactFontManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactFontManager.java
index ae680e0d882..41faa061a91 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactFontManager.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactFontManager.java
@@ -12,14 +12,10 @@ import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
-import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.util.SparseArray;
-import androidx.core.content.res.ResourcesCompat;
-
-
/**
* Class responsible to load and cache Typeface objects. It will first try to load typefaces inside
* the assets/fonts folder and if it doesn't find the right Typeface in that folder will fall back
@@ -41,11 +37,9 @@ public class ReactFontManager {
private static ReactFontManager sReactFontManagerInstance;
private Map mFontCache;
- private Map mTypeCache;
private ReactFontManager() {
mFontCache = new HashMap<>();
- mTypeCache = new HashMap<>();
}
public static ReactFontManager getInstance() {
@@ -55,7 +49,8 @@ public class ReactFontManager {
return sReactFontManagerInstance;
}
- private @Nullable Typeface getTypeface(
+ public
+ @Nullable Typeface getTypeface(
String fontFamilyName,
int style,
AssetManager assetManager) {
@@ -76,33 +71,6 @@ public class ReactFontManager {
return typeface;
}
- public @Nullable Typeface getTypeface(
- String fontFamilyName,
- int style,
- Context context) {
- Typeface font = mTypeCache.get(fontFamilyName);
-
- if (font != null) {
- return Typeface.create(
- font,
- style
- );
- }
-
- int fontId = context.getResources().getIdentifier(fontFamilyName, "font", context.getPackageName());
- if (fontId != 0) {
- font = ResourcesCompat.getFont(context, fontId);
- if (font != null) {
- mTypeCache.put(fontFamilyName, font);
- return Typeface.create(
- font,
- style
- );
- }
- }
- return getTypeface(fontFamilyName, style, context.getAssets());
- }
-
/**
* Add additional font family, or replace the exist one in the font memory cache.
* @param style
diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java
index e5344931068..2faecc18cff 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java
@@ -96,7 +96,7 @@ public class TextLayoutManager {
textAttributes.mFontStyle,
textAttributes.mFontWeight,
textAttributes.mFontFamily,
- context)));
+ context.getAssets())));
}
if (textAttributes.mIsUnderlineTextDecorationSet) {
ops.add(new SetSpanOperation(start, end, new ReactUnderlineSpan()));
diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java
index 43de84c019c..f20132ba0b0 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java
@@ -220,7 +220,7 @@ public class ReactTextInputManager extends BaseViewManager