diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineGeometryRegionDefinition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineGeometryRegionDefinition.java index 7cf9d4b2d..01ceb66b2 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineGeometryRegionDefinition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineGeometryRegionDefinition.java @@ -21,6 +21,8 @@ import com.mapbox.turf.TurfMeasurement; * tiles from minZoom up to the maximum zoom level provided by that source. *
* pixelRatio must be ≥ 0 and should typically be 1.0 or 2.0. + *
+ * if includeIdeographs is false, offline region will not include CJK glyphs */ public class OfflineGeometryRegionDefinition implements OfflineRegionDefinition, Parcelable { @@ -35,6 +37,8 @@ public class OfflineGeometryRegionDefinition implements OfflineRegionDefinition, private double maxZoom; @Keep private float pixelRatio; + @Keep + private boolean includeIdeographs; /** * Constructor to create an OfflineGeometryRegionDefinition from parameters. @@ -47,13 +51,31 @@ public class OfflineGeometryRegionDefinition implements OfflineRegionDefinition, */ @Keep public OfflineGeometryRegionDefinition( - String styleURL, Geometry geometry, double minZoom, double maxZoom, float pixelRatio) { + String styleURL, Geometry geometry, double minZoom, double maxZoom, float pixelRatio) { + this(styleURL, geometry, minZoom, maxZoom, pixelRatio, true); + } + + /** + * Constructor to create an OfflineGeometryRegionDefinition from parameters. + * + * @param styleURL the style + * @param geometry the geometry + * @param minZoom min zoom + * @param maxZoom max zoom + * @param pixelRatio pixel ratio of the device + * @param includeIdeographs include glyphs for CJK languages + */ + @Keep + public OfflineGeometryRegionDefinition( + String styleURL, Geometry geometry, double minZoom, double maxZoom, float pixelRatio, + boolean includeIdeographs) { // Note: Also used in JNI this.styleURL = styleURL; this.geometry = geometry; this.minZoom = minZoom; this.maxZoom = maxZoom; this.pixelRatio = pixelRatio; + this.includeIdeographs = includeIdeographs; } /** @@ -110,6 +132,11 @@ public class OfflineGeometryRegionDefinition implements OfflineRegionDefinition, return pixelRatio; } + @Override + public boolean getIncludeIdeographs() { + return includeIdeographs; + } + @NonNull @Override public String getType() { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegionDefinition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegionDefinition.java index 473d905f1..782968fb0 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegionDefinition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegionDefinition.java @@ -48,7 +48,20 @@ public interface OfflineRegionDefinition { float getPixelRatio(); /** - * Gest the type of the OfflineRegionDefinition for telemetry ("tileregion", "shaperegion"). + * Specifies whether to include ideographic glyphs in downloaded font data. + * Ideographic glyphs make up the majority of downloaded font data, but + * it is possible to configure the renderer to use locally installed fonts + * instead of relying on fonts downloaded as part of the offline pack. + * + * Defaults to `true` + * + * @return true if offline region will include ideographic glyphs + * @see MapboxMapOptions localIdeographFontFamily + */ + boolean getIncludeIdeographs(); + + /** + * Gets the type of the OfflineRegionDefinition for telemetry ("tileregion", "shaperegion"). * * @return The type of the OfflineRegionDefinition. */ diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java index 8649c70ac..a5339fcac 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineTilePyramidRegionDefinition.java @@ -18,6 +18,8 @@ import com.mapbox.mapboxsdk.geometry.LatLngBounds; * tiles from minZoom up to the maximum zoom level provided by that source. *
* pixelRatio must be ≥ 0 and should typically be 1.0 or 2.0. + *
+ * if includeIdeographs is false, offline region will not include CJK glyphs
*/
public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefinition, Parcelable {
@@ -31,6 +33,8 @@ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefiniti
private double maxZoom;
@Keep
private float pixelRatio;
+ @Keep
+ private boolean includeIdeographs;
/**
* Constructor to create an OfflineTilePyramidDefinition from parameters.
@@ -43,13 +47,31 @@ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefiniti
*/
@Keep
public OfflineTilePyramidRegionDefinition(
- String styleURL, LatLngBounds bounds, double minZoom, double maxZoom, float pixelRatio) {
+ String styleURL, LatLngBounds bounds, double minZoom, double maxZoom, float pixelRatio) {
+ this(styleURL, bounds, minZoom, maxZoom, pixelRatio, true);
+ }
+
+ /**
+ * Constructor to create an OfflineTilePyramidDefinition from parameters.
+ *
+ * @param styleURL the style
+ * @param bounds the bounds
+ * @param minZoom min zoom
+ * @param maxZoom max zoom
+ * @param pixelRatio pixel ratio of the device
+ * @param includeIdeographs include glyphs for CJK languages
+ */
+ @Keep
+ public OfflineTilePyramidRegionDefinition(
+ String styleURL, LatLngBounds bounds, double minZoom, double maxZoom, float pixelRatio,
+ boolean includeIdeographs) {
// Note: Also used in JNI
this.styleURL = styleURL;
this.bounds = bounds;
this.minZoom = minZoom;
this.maxZoom = maxZoom;
this.pixelRatio = pixelRatio;
+ this.includeIdeographs = includeIdeographs;
}
/**
@@ -94,6 +116,11 @@ public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefiniti
return pixelRatio;
}
+ @Override
+ public boolean getIncludeIdeographs() {
+ return includeIdeographs;
+ }
+
@NonNull
@Override
public String getType() {
diff --git a/platform/android/src/offline/offline_region_definition.cpp b/platform/android/src/offline/offline_region_definition.cpp
index 23e5b7466..bb9dfc8dd 100644
--- a/platform/android/src/offline/offline_region_definition.cpp
+++ b/platform/android/src/offline/offline_region_definition.cpp
@@ -29,14 +29,15 @@ mbgl::OfflineRegionDefinition OfflineRegionDefinition::getDefinition(JNIEnv& env
jni::Local