@@ -165,7 +165,41 @@ void RecreateCachedElements()
165165 cachedElements = new TextViewCachedElements ( ) ;
166166 }
167167 }
168-
168+
169+ void SetupTextRendering ( )
170+ {
171+ if ( Options . EnableTextAntialiasing )
172+ {
173+ if ( Options . EnableTextHinting )
174+ {
175+ if ( CurrentZoom == 1.0 )
176+ {
177+ TextOptions . SetTextFormattingMode ( this , TextFormattingMode . Display ) ;
178+ TextOptions . SetTextRenderingMode ( this , TextRenderingMode . ClearType ) ;
179+ TextOptions . SetTextHintingMode ( this , TextHintingMode . Auto ) ;
180+ }
181+ else
182+ {
183+ TextOptions . SetTextFormattingMode ( this , TextFormattingMode . Ideal ) ;
184+ TextOptions . SetTextRenderingMode ( this , TextRenderingMode . Grayscale ) ;
185+ TextOptions . SetTextHintingMode ( this , TextHintingMode . Auto ) ;
186+ }
187+ }
188+ else
189+ {
190+ TextOptions . SetTextFormattingMode ( this , TextFormattingMode . Ideal ) ;
191+ TextOptions . SetTextRenderingMode ( this , TextRenderingMode . Grayscale ) ;
192+ TextOptions . SetTextHintingMode ( this , TextHintingMode . Animated ) ;
193+ }
194+ }
195+ else
196+ {
197+ TextOptions . SetTextFormattingMode ( this , TextFormattingMode . Display ) ;
198+ TextOptions . SetTextRenderingMode ( this , TextRenderingMode . Aliased ) ;
199+ TextOptions . SetTextHintingMode ( this , TextHintingMode . Auto ) ;
200+ }
201+ }
202+
169203 /// <inheritdoc cref="IWeakEventListener.ReceiveWeakEvent"/>
170204 protected virtual bool ReceiveWeakEvent ( Type managerType , object sender , EventArgs e )
171205 {
@@ -224,7 +258,8 @@ protected virtual void OnOptionChanged(PropertyChangedEventArgs e)
224258 columnRulerRenderer . SetRuler ( Options . ColumnRulerPosition , ColumnRulerPen ) ;
225259 else
226260 columnRulerRenderer . SetRuler ( - 1 , ColumnRulerPen ) ;
227-
261+
262+ SetupTextRendering ( ) ;
228263 UpdateBuiltinElementGeneratorsFromOptions ( ) ;
229264 Redraw ( ) ;
230265 }
@@ -1424,7 +1459,26 @@ void SetScrollOffset(Vector vector)
14241459 }
14251460
14261461 ScrollViewer IScrollInfo . ScrollOwner { get ; set ; }
1427-
1462+
1463+ /// <summary>
1464+ /// Gets the zoom level;
1465+ /// </summary>
1466+ public double CurrentZoom
1467+ {
1468+ get
1469+ {
1470+ dynamic scrollOwner = ( ( IScrollInfo ) this ) . ScrollOwner ;
1471+
1472+ if ( scrollOwner != null
1473+ && scrollOwner . GetType ( ) . GetProperty ( "CurrentZoom" ) != null )
1474+ {
1475+ return scrollOwner . CurrentZoom ;
1476+ }
1477+
1478+ return 1.0 ;
1479+ }
1480+ }
1481+
14281482 void IScrollInfo . LineUp ( )
14291483 {
14301484 ( ( IScrollInfo ) this ) . SetVerticalOffset ( scrollOffset . Y - DefaultLineHeight ) ;
@@ -2005,6 +2059,9 @@ public DocumentLine GetDocumentLineByVisualTop(double visualTop)
20052059 protected override void OnPropertyChanged ( DependencyPropertyChangedEventArgs e )
20062060 {
20072061 base . OnPropertyChanged ( e ) ;
2062+ if ( e . Property == TextView . ActualHeightProperty ) {
2063+ SetupTextRendering ( ) ;
2064+ }
20082065 if ( TextFormatterFactory . PropertyChangeAffectsTextFormatter ( e . Property ) ) {
20092066 // first, create the new text formatter:
20102067 RecreateTextFormatter ( ) ;
@@ -2113,4 +2170,4 @@ public virtual double EmptyLineSelectionWidth
21132170 get { return 1 ; }
21142171 }
21152172 }
2116- }
2173+ }
0 commit comments