@@ -165,7 +165,41 @@ void RecreateCachedElements()
165
165
cachedElements = new TextViewCachedElements ( ) ;
166
166
}
167
167
}
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
+
169
203
/// <inheritdoc cref="IWeakEventListener.ReceiveWeakEvent"/>
170
204
protected virtual bool ReceiveWeakEvent ( Type managerType , object sender , EventArgs e )
171
205
{
@@ -224,7 +258,8 @@ protected virtual void OnOptionChanged(PropertyChangedEventArgs e)
224
258
columnRulerRenderer . SetRuler ( Options . ColumnRulerPosition , ColumnRulerPen ) ;
225
259
else
226
260
columnRulerRenderer . SetRuler ( - 1 , ColumnRulerPen ) ;
227
-
261
+
262
+ SetupTextRendering ( ) ;
228
263
UpdateBuiltinElementGeneratorsFromOptions ( ) ;
229
264
Redraw ( ) ;
230
265
}
@@ -1424,7 +1459,26 @@ void SetScrollOffset(Vector vector)
1424
1459
}
1425
1460
1426
1461
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
+
1428
1482
void IScrollInfo . LineUp ( )
1429
1483
{
1430
1484
( ( IScrollInfo ) this ) . SetVerticalOffset ( scrollOffset . Y - DefaultLineHeight ) ;
@@ -2005,6 +2059,9 @@ public DocumentLine GetDocumentLineByVisualTop(double visualTop)
2005
2059
protected override void OnPropertyChanged ( DependencyPropertyChangedEventArgs e )
2006
2060
{
2007
2061
base . OnPropertyChanged ( e ) ;
2062
+ if ( e . Property == TextView . ActualHeightProperty ) {
2063
+ SetupTextRendering ( ) ;
2064
+ }
2008
2065
if ( TextFormatterFactory . PropertyChangeAffectsTextFormatter ( e . Property ) ) {
2009
2066
// first, create the new text formatter:
2010
2067
RecreateTextFormatter ( ) ;
@@ -2113,4 +2170,4 @@ public virtual double EmptyLineSelectionWidth
2113
2170
get { return 1 ; }
2114
2171
}
2115
2172
}
2116
- }
2173
+ }
0 commit comments