-
Notifications
You must be signed in to change notification settings - Fork 0
/
TypefaceCompatBaseImpl.java
145 lines (131 loc) · 5.65 KB
/
TypefaceCompatBaseImpl.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
package android.support.v4.graphics;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.os.CancellationSignal;
import android.support.v4.content.res.FontResourcesParserCompat;
import android.support.v4.graphics.TypefaceCompat;
import android.support.v4.provider.FontsContractCompat;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
class TypefaceCompatBaseImpl implements TypefaceCompat.TypefaceCompatImpl {
private static final String CACHE_FILE_PREFIX = "cached_font_";
private static final String TAG = "TypefaceCompatBaseImpl";
private interface StyleExtractor<T> {
int getWeight(T t);
boolean isItalic(T t);
}
TypefaceCompatBaseImpl() {
}
private static <T> T findBestFont(T[] tArr, int i, StyleExtractor<T> styleExtractor) {
int i2 = (i & 1) == 0 ? 400 : 700;
boolean z = (i & 2) != 0;
T t = null;
int i3 = Integer.MAX_VALUE;
for (T t2 : tArr) {
int abs = (Math.abs(styleExtractor.getWeight(t2) - i2) * 2) + (styleExtractor.isItalic(t2) == z ? 0 : 1);
if (t == null || i3 > abs) {
t = t2;
i3 = abs;
}
}
return t;
}
/* access modifiers changed from: protected */
public FontsContractCompat.FontInfo findBestInfo(FontsContractCompat.FontInfo[] fontInfoArr, int i) {
return (FontsContractCompat.FontInfo) findBestFont(fontInfoArr, i, new StyleExtractor<FontsContractCompat.FontInfo>() {
public int getWeight(FontsContractCompat.FontInfo fontInfo) {
return fontInfo.getWeight();
}
public boolean isItalic(FontsContractCompat.FontInfo fontInfo) {
return fontInfo.isItalic();
}
});
}
/* access modifiers changed from: protected */
public Typeface createFromInputStream(Context context, InputStream inputStream) {
File tempFile = TypefaceCompatUtil.getTempFile(context);
if (tempFile == null) {
return null;
}
try {
if (!TypefaceCompatUtil.copyToFile(tempFile, inputStream)) {
return null;
}
Typeface createFromFile = Typeface.createFromFile(tempFile.getPath());
tempFile.delete();
return createFromFile;
} catch (RuntimeException unused) {
return null;
} finally {
tempFile.delete();
}
}
public Typeface createFromFontInfo(Context context, CancellationSignal cancellationSignal, FontsContractCompat.FontInfo[] fontInfoArr, int i) {
InputStream inputStream;
InputStream inputStream2 = null;
if (fontInfoArr.length < 1) {
return null;
}
try {
inputStream = context.getContentResolver().openInputStream(findBestInfo(fontInfoArr, i).getUri());
try {
Typeface createFromInputStream = createFromInputStream(context, inputStream);
TypefaceCompatUtil.closeQuietly(inputStream);
return createFromInputStream;
} catch (IOException unused) {
TypefaceCompatUtil.closeQuietly(inputStream);
return null;
} catch (Throwable th) {
th = th;
inputStream2 = inputStream;
TypefaceCompatUtil.closeQuietly(inputStream2);
throw th;
}
} catch (IOException unused2) {
inputStream = null;
TypefaceCompatUtil.closeQuietly(inputStream);
return null;
} catch (Throwable th2) {
th = th2;
TypefaceCompatUtil.closeQuietly(inputStream2);
throw th;
}
}
private FontResourcesParserCompat.FontFileResourceEntry findBestEntry(FontResourcesParserCompat.FontFamilyFilesResourceEntry fontFamilyFilesResourceEntry, int i) {
return (FontResourcesParserCompat.FontFileResourceEntry) findBestFont(fontFamilyFilesResourceEntry.getEntries(), i, new StyleExtractor<FontResourcesParserCompat.FontFileResourceEntry>() {
public int getWeight(FontResourcesParserCompat.FontFileResourceEntry fontFileResourceEntry) {
return fontFileResourceEntry.getWeight();
}
public boolean isItalic(FontResourcesParserCompat.FontFileResourceEntry fontFileResourceEntry) {
return fontFileResourceEntry.isItalic();
}
});
}
public Typeface createFromFontFamilyFilesResourceEntry(Context context, FontResourcesParserCompat.FontFamilyFilesResourceEntry fontFamilyFilesResourceEntry, Resources resources, int i) {
FontResourcesParserCompat.FontFileResourceEntry findBestEntry = findBestEntry(fontFamilyFilesResourceEntry, i);
if (findBestEntry == null) {
return null;
}
return TypefaceCompat.createFromResourcesFontFile(context, resources, findBestEntry.getResourceId(), findBestEntry.getFileName(), i);
}
public Typeface createFromResourcesFontFile(Context context, Resources resources, int i, String str, int i2) {
File tempFile = TypefaceCompatUtil.getTempFile(context);
if (tempFile == null) {
return null;
}
try {
if (!TypefaceCompatUtil.copyToFile(tempFile, resources, i)) {
return null;
}
Typeface createFromFile = Typeface.createFromFile(tempFile.getPath());
tempFile.delete();
return createFromFile;
} catch (RuntimeException unused) {
return null;
} finally {
tempFile.delete();
}
}
}