diff --git a/core/java/android/gesture/GestureUtilities.java b/core/java/android/gesture/GestureUtilities.java index 0f9253da5095c..4a3144c2f0b74 100755 --- a/core/java/android/gesture/GestureUtilities.java +++ b/core/java/android/gesture/GestureUtilities.java @@ -58,10 +58,10 @@ final class GestureUtilities { float sy = targetPatchSize / rect.height(); float scale = sx < sy ? sx : sy; - Matrix trans = new Matrix(); - trans.setScale(scale, scale); - trans.preTranslate(-rect.centerX(), -rect.centerY()); - trans.postTranslate(targetPatchSize / 2, targetPatchSize / 2); + float preDx = -rect.centerX(); + float preDy = -rect.centerY(); + float postDx = targetPatchSize / 2; + float postDy = targetPatchSize / 2; final ArrayList strokes = gesture.getStrokes(); final int count = strokes.size(); @@ -72,11 +72,16 @@ final class GestureUtilities { for (int index = 0; index < count; index++) { final GestureStroke stroke = strokes.get(index); - size = stroke.points.length; + float[] strokepoints = stroke.points; + size = strokepoints.length; final float[] pts = new float[size]; - - trans.mapPoints(pts, 0, stroke.points, 0, size / 2); + + for (int i = 0; i < size; i += 2) { + pts[i] = (strokepoints[i] + preDx) * scale + postDx; + pts[i + 1] = (strokepoints[i + 1] + preDy) * scale + postDy; + } + float segmentEndX = -1; float segmentEndY = -1; diff --git a/core/res/res/raw/latin_lowercase b/core/res/res/raw/latin_lowercase index fd67333e769cf..17cfaf00bf3e2 100644 Binary files a/core/res/res/raw/latin_lowercase and b/core/res/res/raw/latin_lowercase differ