Loading graphics/java/android/graphics/fonts/Font.java +22 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.graphics.fonts; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; import android.content.res.Resources; import android.os.LocaleList; Loading Loading @@ -219,6 +220,27 @@ public final class Font { Preconditions.checkNotNull(am, "assetManager can not be null"); Preconditions.checkNotNull(path, "path can not be null"); // Attempt to open as FD, which should work unless the asset is compressed AssetFileDescriptor assetFD; try { if (isAsset) { assetFD = am.openFd(path); } else if (cookie > 0) { assetFD = am.openNonAssetFd(cookie, path); } else { assetFD = am.openNonAssetFd(path); } try (FileInputStream fis = assetFD.createInputStream()) { final FileChannel fc = fis.getChannel(); long startOffset = assetFD.getStartOffset(); long declaredLength = assetFD.getDeclaredLength(); return fc.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength); } } catch (IOException e) { // failed to open as FD so now we will attempt to open as an input stream } try (InputStream assetStream = isAsset ? am.open(path, AssetManager.ACCESS_BUFFER) : am.openNonAsset(cookie, path, AssetManager.ACCESS_BUFFER)) { Loading Loading
graphics/java/android/graphics/fonts/Font.java +22 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.graphics.fonts; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; import android.content.res.Resources; import android.os.LocaleList; Loading Loading @@ -219,6 +220,27 @@ public final class Font { Preconditions.checkNotNull(am, "assetManager can not be null"); Preconditions.checkNotNull(path, "path can not be null"); // Attempt to open as FD, which should work unless the asset is compressed AssetFileDescriptor assetFD; try { if (isAsset) { assetFD = am.openFd(path); } else if (cookie > 0) { assetFD = am.openNonAssetFd(cookie, path); } else { assetFD = am.openNonAssetFd(path); } try (FileInputStream fis = assetFD.createInputStream()) { final FileChannel fc = fis.getChannel(); long startOffset = assetFD.getStartOffset(); long declaredLength = assetFD.getDeclaredLength(); return fc.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength); } } catch (IOException e) { // failed to open as FD so now we will attempt to open as an input stream } try (InputStream assetStream = isAsset ? am.open(path, AssetManager.ACCESS_BUFFER) : am.openNonAsset(cookie, path, AssetManager.ACCESS_BUFFER)) { Loading