diff --git a/data/resources/StringResources.resx b/data/resources/StringResources.resx
index d9f7fd02b7..214ba99511 100644
--- a/data/resources/StringResources.resx
+++ b/data/resources/StringResources.resx
@@ -8445,5 +8445,11 @@ Press Esc to cancel this operation.
Enable App.xaml parsing
+
+
+ Enable anti-aliasing
+
+
+ Enable hinting
\ No newline at end of file
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/GeneralEditorOptions.xaml b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/GeneralEditorOptions.xaml
index 576ec15bef..0720da5ae0 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/GeneralEditorOptions.xaml
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/GeneralEditorOptions.xaml
@@ -4,7 +4,15 @@
-
+
+
+
+
+
diff --git a/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ZoomScrollViewer.cs b/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ZoomScrollViewer.cs
index 969c4812f7..bafd6a0e74 100644
--- a/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ZoomScrollViewer.cs
+++ b/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ZoomScrollViewer.cs
@@ -186,4 +186,124 @@ namespace ICSharpCode.SharpDevelop.Widgets
throw new NotImplementedException();
}
}
+
+ sealed class ZoomToTextFormattingModeConverter : IMultiValueConverter
+ {
+ public static readonly ZoomToTextFormattingModeConverter Instance = new ZoomToTextFormattingModeConverter();
+
+ public object Convert(object[] value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ var zoom = value[0] != null ? (double) value[0] : 1.0;
+ var antialiasing = value[1] != DependencyProperty.UnsetValue ? (bool) value[1] : true;
+ var hinting = value[2] != DependencyProperty.UnsetValue ? (bool) value[2] : true;
+
+ if (antialiasing)
+ {
+ if (hinting)
+ {
+ if (zoom == 1.0)
+ {
+ return TextFormattingMode.Display;
+ }
+ else
+ {
+ return TextFormattingMode.Ideal;
+ }
+ }
+ else
+ {
+ return TextFormattingMode.Ideal;
+ }
+ }
+ else
+ {
+ return TextFormattingMode.Display;
+ }
+ }
+
+ public object[] ConvertBack(object value, Type[] targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ sealed class ZoomToTextRenderingModeConverter : IMultiValueConverter
+ {
+ public static readonly ZoomToTextRenderingModeConverter Instance = new ZoomToTextRenderingModeConverter();
+
+ public object Convert(object[] value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ var zoom = value[0] != null ? (double) value[0] : 1.0;
+ var antialiasing = value[1] != DependencyProperty.UnsetValue ? (bool) value[1] : true;
+ var hinting = value[2] != DependencyProperty.UnsetValue ? (bool) value[2] : true;
+
+ if (antialiasing)
+ {
+ if (hinting)
+ {
+ if (zoom == 1.0)
+ {
+ return TextRenderingMode.ClearType;
+ }
+ else
+ {
+ return TextRenderingMode.Grayscale;
+ }
+ }
+ else
+ {
+ return TextRenderingMode.Grayscale;
+ }
+ }
+ else
+ {
+ return TextRenderingMode.Aliased;
+ }
+ }
+
+ public object[] ConvertBack(object value, Type[] targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ sealed class ZoomToTextHintingModeConverter : IMultiValueConverter
+ {
+ public static readonly ZoomToTextHintingModeConverter Instance = new ZoomToTextHintingModeConverter();
+
+ public object Convert(object[] value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ var zoom = value[0] != null ? (double) value[0] : 1.0;
+ var antialiasing = value[1] != DependencyProperty.UnsetValue ? (bool) value[1] : true;
+ var hinting = value[2] != DependencyProperty.UnsetValue ? (bool) value[2] : true;
+
+ if (antialiasing)
+ {
+ if (hinting)
+ {
+ if (zoom == 1.0)
+ {
+ return TextHintingMode.Fixed;
+ }
+ else
+ {
+ return TextHintingMode.Fixed;
+ }
+ }
+ else
+ {
+ return TextHintingMode.Animated;
+ }
+ }
+ else
+ {
+ return TextHintingMode.Fixed;
+ }
+ }
+
+ public object[] ConvertBack(object value, Type[] targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
}
diff --git a/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ZoomScrollViewer.xaml b/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ZoomScrollViewer.xaml
index 6034140ef0..674e076538 100644
--- a/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ZoomScrollViewer.xaml
+++ b/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ZoomScrollViewer.xaml
@@ -24,6 +24,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+