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

Commit 0a2786cc authored by Seigo Nonaka's avatar Seigo Nonaka Committed by Android (Google) Code Review
Browse files

Merge "Refactor Typeface construction logic"

parents f2c351ab ee4b6d85
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -14771,8 +14771,7 @@ package android.graphics {
    ctor public Typeface.CustomFallbackBuilder(android.graphics.fonts.FontFamily);
    method public android.graphics.Typeface build();
    method public android.graphics.Typeface.CustomFallbackBuilder setFallback(java.lang.String);
    method public android.graphics.Typeface.CustomFallbackBuilder setItalic(boolean);
    method public android.graphics.Typeface.CustomFallbackBuilder setWeight(int);
    method public android.graphics.Typeface.CustomFallbackBuilder setStyle(android.graphics.fonts.FontStyle);
  }
  public class Xfermode {
@@ -15417,9 +15416,8 @@ package android.graphics.fonts {
    method public java.nio.ByteBuffer getBuffer();
    method public java.io.File getFile();
    method public android.os.LocaleList getLocaleList();
    method public int getSlant();
    method public android.graphics.fonts.FontStyle getStyle();
    method public int getTtcIndex();
    method public int getWeight();
  }
  public static class Font.Builder {
+5 −1
Original line number Diff line number Diff line
@@ -76,6 +76,10 @@ public class FontResourcesParser {

    // A class represents font element in xml file which points a file in resource.
    public static final class FontFileResourceEntry {
        public static final int RESOLVE_BY_FONT_TABLE = Typeface.RESOLVE_BY_FONT_TABLE;
        public static final int UPRIGHT = 0;
        public static final int ITALIC = 1;

        private final @NonNull String mFileName;
        private int mWeight;
        private int mItalic;
@@ -216,7 +220,7 @@ public class FontResourcesParser {
        int weight = array.getInt(R.styleable.FontFamilyFont_fontWeight,
                Typeface.RESOLVE_BY_FONT_TABLE);
        int italic = array.getInt(R.styleable.FontFamilyFont_fontStyle,
                Typeface.RESOLVE_BY_FONT_TABLE);
                FontFileResourceEntry.RESOLVE_BY_FONT_TABLE);
        String variationSettings = array.getString(
                R.styleable.FontFamilyFont_fontVariationSettings);
        int ttcIndex = array.getInt(R.styleable.FontFamilyFont_ttcIndex, 0);
+2 −1
Original line number Diff line number Diff line
@@ -944,7 +944,8 @@ public class ResourcesImpl {
                }
                return Typeface.createFromResources(familyEntry, mAssets, file);
            }
            return Typeface.createFromResources(mAssets, file, value.assetCookie);
            return new Typeface.Builder(mAssets, file, false /* isAsset */, value.assetCookie)
                    .build();
        } catch (XmlPullParserException e) {
            Log.e(TAG, "Failed to parse xml resource " + file, e);
        } catch (IOException e) {
+34 −10
Original line number Diff line number Diff line
@@ -15,8 +15,6 @@
 */
package android.provider;

import static java.lang.annotation.RetentionPolicy.SOURCE;

import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
@@ -25,22 +23,22 @@ import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ProviderInfo;
import android.content.pm.Signature;
import android.database.Cursor;
import android.graphics.Typeface;
import android.graphics.fonts.Font;
import android.graphics.fonts.FontFamily;
import android.graphics.fonts.FontStyle;
import android.graphics.fonts.FontVariationAxis;
import android.net.Uri;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.ParcelFileDescriptor;
import android.os.Process;
import android.os.ResultReceiver;
import android.util.ArraySet;
import android.util.Log;
import android.util.LruCache;

@@ -49,7 +47,6 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.Preconditions;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -64,11 +61,11 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;

/**
 * Utility class to deal with Font ContentProviders.
@@ -636,7 +633,34 @@ public class FontsContract {
        if (uriBuffer.isEmpty()) {
            return null;
        }
        return new Typeface.Builder(fonts, uriBuffer).build();

        FontFamily.Builder familyBuilder = null;
        for (FontInfo fontInfo : fonts) {
            final ByteBuffer buffer = uriBuffer.get(fontInfo.getUri());
            if (buffer == null) {
                continue;
            }
            try {
                final Font 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();
                if (familyBuilder == null) {
                    familyBuilder = new FontFamily.Builder(font);
                } else {
                    familyBuilder.addFont(font);
                }
            } catch (IOException e) {
                continue;
            }
        }
        if (familyBuilder == null) {
            return null;
        }
        return new Typeface.CustomFallbackBuilder(familyBuilder.build()).build();
    }

    /**
+133 −219

File changed.

Preview size limit exceeded, changes collapsed.

Loading