diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/DPIUtil.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/DPIUtil.java index eb0719a2104..808977073ba 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/DPIUtil.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/DPIUtil.java @@ -197,6 +197,12 @@ public static float pixelToPoint(float size, int zoom) { return (size / scaleFactor); } +public static double pixelToPoint(double size, int zoom) { + if (zoom == 100 || size == SWT.DEFAULT) return size; + double scaleFactor = getScalingFactor (zoom, 100); + return size / scaleFactor; +} + /** * Auto-scale image with ImageData diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontMetrics.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontMetrics.java index ae6298be4ce..f9250271b7e 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontMetrics.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontMetrics.java @@ -108,7 +108,7 @@ public int getAscent() { * @since 3.107 */ public double getAverageCharacterWidth() { - return getAverageCharWidth(); + return DPIUtil.pixelToPoint((double) handle.tmAveCharWidth, getZoom()); } /**