Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c91fa25b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Always suppress font error during resource loading"

parents f525cf00 96e93959
Loading
Loading
Loading
Loading
+17 −8
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import android.graphics.fonts.FontFamily;
import android.graphics.fonts.FontStyle;
import android.graphics.fonts.FontVariationAxis;
import android.net.Uri;
import android.os.Build.VERSION_CODES;
import android.os.CancellationSignal;
import android.os.Handler;
import android.os.HandlerThread;
@@ -642,26 +641,36 @@ public class FontsContract {
                continue;
            }
            try {
                final Font font = new Font.Builder(buffer)
                Font font = null;
                try {
                    font = new Font.Builder(buffer)
                        .setWeight(fontInfo.getWeight())
                        .setSlant(fontInfo.isItalic()
                                ? FontStyle.FONT_SLANT_ITALIC : FontStyle.FONT_SLANT_UPRIGHT)
                        .setTtcIndex(fontInfo.getTtcIndex())
                        .setFontVariationSettings(fontInfo.getAxes())
                        .build();
                } catch (IllegalArgumentException e) {
                    // The exception happens if the unsupported font is passed. We suppress this
                    // exception and just ignore this font here since there is no way of
                    // resolving this issue by users during inflating layout.
                    Log.w(TAG, "Ignoring font file since failed to create font object."
                            + " The font file is not supported on this platform.");
                    continue;
                }
                if (familyBuilder == null) {
                    familyBuilder = new FontFamily.Builder(font);
                } else {
                    try {
                        familyBuilder.addFont(font);
                    } catch (IllegalArgumentException e) {
                        if (context.getApplicationInfo().targetSdkVersion <= VERSION_CODES.P) {
                            // Surpress the IllegalArgumentException for keeping the backward
                            // compatibility.
                        // The exception happens if the same style font is added to the family.
                        // We suppress this exception and just ignore this font here since there is
                        // no way of resolving this issue by users during inflating layout.
                        Log.w(TAG,
                                "Ignoring font file since the same style font is already added.");
                        continue;
                    }
                        throw e;
                    }
                }
            } catch (IOException e) {
                continue;
+20 −10
Original line number Diff line number Diff line
@@ -33,12 +33,12 @@ import android.graphics.fonts.FontStyle;
import android.graphics.fonts.FontVariationAxis;
import android.graphics.fonts.SystemFonts;
import android.os.Build;
import android.os.Build.VERSION_CODES;
import android.os.ParcelFileDescriptor;
import android.provider.FontRequest;
import android.provider.FontsContract;
import android.text.FontConfig;
import android.util.Base64;
import android.util.Log;
import android.util.LongSparseArray;
import android.util.LruCache;
import android.util.SparseArray;
@@ -48,7 +48,6 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.Preconditions;

import dalvik.annotation.optimization.CriticalNative;
import dalvik.system.VMRuntime;

import libcore.util.NativeAllocationRegistry;

@@ -262,19 +261,30 @@ public class Typeface {
                            ?  FontStyle.FONT_SLANT_ITALIC : FontStyle.FONT_SLANT_UPRIGHT);
                }

                Font font = null;
                try {
                    font = fontBuilder.build();
                } catch (IllegalArgumentException e) {
                    // The exception happens if the unsupported font is passed. We suppress this
                    // exception and just ignore this font here since there is no way of
                    // resolving this issue by users during inflating layout.
                    Log.w(TAG, "Ignoring font file since failed to create font object."
                            + " The font file is not supported on this platform.");
                    continue;
                }
                if (familyBuilder == null) {
                    familyBuilder = new FontFamily.Builder(fontBuilder.build());
                    familyBuilder = new FontFamily.Builder(font);
                } else {
                    try {
                        familyBuilder.addFont(fontBuilder.build());
                        familyBuilder.addFont(font);
                    } catch (IllegalArgumentException e) {
                        if (VMRuntime.getRuntime().getTargetSdkVersion() <= VERSION_CODES.P) {
                            // Surpress the IllegalArgumentException for keeping the backward
                            // compatibility.
                        // The exception happens if the same style is added to the family.
                        // We suppress this exception and just ignore this font here since there is
                        // no way of resolving this issue by users during inflating layout.
                        Log.w(TAG,
                                "Ignoring font file since the same style font is already added.");
                        continue;
                    }
                        throw e;
                    }
                }
            }
            if (familyBuilder == null) {
+4 −0
Original line number Diff line number Diff line
@@ -354,6 +354,10 @@ public final class Font {

        /**
         * Creates the font based on the configured values.
         *
         * If the font is not supported by the platform, this function will fail with
         * {@link IllegalArgumentException}.
         *
         * @return the Font object
         */
        public @Nullable Font build() throws IOException {