41619 back port
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.c
index fcc8ba4..86392bc 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/carbon/library/os.c
@@ -323,6 +323,18 @@
 }
 #endif
 
+#ifndef NO_ATSUSetTransientFontMatching
+JNIEXPORT jint JNICALL OS_NATIVE(ATSUSetTransientFontMatching)
+	(JNIEnv *env, jclass that, jint arg0, jboolean arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ATSUSetTransientFontMatching\n")
+	rc = (jint)ATSUSetTransientFontMatching((ATSUTextLayout)arg0, arg1);
+	NATIVE_EXIT(env, that, "ATSUSetTransientFontMatching\n")
+	return rc;
+}
+#endif
+
 #ifndef NO_ATSUTextDeleted
 JNIEXPORT jint JNICALL OS_NATIVE(ATSUTextDeleted)
 	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/carbon/OS.java b/bundles/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/carbon/OS.java
index 63446da..9f73208 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/carbon/OS.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/carbon/OS.java
@@ -607,6 +607,7 @@
 public static final native int ATSUSetLayoutControls(int iTextLayout, int iAttributeCount, int[] iTag, int[] iValueSize, int[] iValue);
 public static final native int ATSUSetRunStyle(int iTextLayout, int iStyle, int iRunStart, int iRunLength);
 public static final native int ATSUSetTextPointerLocation(int iTextLayout, int iText, int iTextOffset, int iTextLength, int iTextTotalLength);
+public static final native int ATSUSetTransientFontMatching(int iTextLayout, boolean iTransientFontMatching);
 public static final native int ATSUTextInserted(int iTextLayout, int iInsertionLocation, int iInsertionLength);
 public static final native int ATSUTextDeleted(int iTextLayout, int iInsertionLocation, int iInsertionLength);
 public static final native int AddDataBrowserItems(int cHandle, int containerID, int numItems, int[] itemIDs, int preSortProperty);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/GC.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/GC.java
index a99b7d2..c7b7e4a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/GC.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/GC.java
@@ -819,6 +819,7 @@
 			OS.ATSUSetRunStyle(data.layout, atsuiStyle, 0, length);
 			data.string = string;
 			data.stringPtr = ptr;
+			OS.ATSUSetTransientFontMatching(data.layout, true);
 		}
 		OS.ATSUDrawText(data.layout, 0, length, OS.X2Fix(x), OS.X2Fix(-(y + data.fontAscent)));
 	} else {
@@ -1871,6 +1872,7 @@
 			OS.ATSUSetRunStyle(data.layout, atsuiStyle, 0, length);
 			data.string = string;
 			data.stringPtr = ptr;
+			OS.ATSUSetTransientFontMatching(data.layout, true);
 		}	
 		ATSTrapezoid trapezoid = new ATSTrapezoid();
 		OS.ATSUGetGlyphBounds(data.layout, 0, 0, 0, length, (short)OS.kATSUseDeviceOrigins, 1, trapezoid, null);