3636import javax .swing .event .ChangeEvent ;
3737import javax .swing .event .ChangeListener ;
3838import javax .swing .plaf .ComponentUI ;
39+ import javax .swing .plaf .UIResource ;
3940import javax .swing .text .*;
4041
4142import com .github .weisj .darklaf .components .text .IconListener ;
@@ -190,7 +191,7 @@ protected void drawNumbering(final Graphics g, final int startLine, final int en
190191 GraphicsContext config = GraphicsUtil .setupAntialiasing (g );
191192 g .setColor (numberingPane .getForeground ());
192193
193- Font font = getNumberingFont (numberingPane .getTextComponent (), g );
194+ Font font = getNumberingFont (numberingPane .getTextComponent (), g , numberingPane . getFont () );
194195 g .setFont (font );
195196 FontMetrics fm = numberingPane .getFontMetrics (font );
196197
@@ -201,20 +202,23 @@ protected void drawNumbering(final Graphics g, final int startLine, final int en
201202 String numberStr = String .valueOf (i );
202203 Rectangle lineRect = textComponent .modelToView (off );
203204 g .setColor (lineRect .y == yCur ? foregroundHighlight : numberingPane .getForeground ());
204- g .drawString (numberStr , width - OUTER_PAD - fm .stringWidth (numberStr ),
205+ g .drawString (numberStr , width - OUTER_PAD - fm .stringWidth (numberStr ) - maxIconWidth ,
205206 lineRect .y + lineRect .height - descent );
206207 } catch (final BadLocationException ignored ) {
207208 }
208209 }
209210 config .restore ();
210211 }
211212
212- private Font getNumberingFont (final JComponent c , final Graphics g ) {
213- Font font = c .getFont ();
214- if (font != null ) {
215- float newSize = (float ) font .getSize () - 1 ;
213+ private Font getNumberingFont (final JComponent c , final Graphics g , final Font f ) {
214+ Font baseFont = c .getFont ();
215+ Font font = f ;
216+ if (font instanceof UIResource ) {
217+ int newSize = baseFont .getSize () - 1 ;
216218 if (newSize > 0 ) {
217- font = font .deriveFont (newSize );
219+ font = font .deriveFont ((float ) newSize );
220+ } else {
221+ font = font .deriveFont (baseFont .getSize2D ());
218222 }
219223 } else {
220224 font = g .getFont ();
@@ -355,9 +359,6 @@ public void propertyChange(final PropertyChangeEvent evt) {
355359 ((Caret ) newCaret ).addChangeListener (currentLinePainter );
356360 }
357361 }
358- } else if (PropertyKey .FONT .equals (key )) {
359- Font font = textComponent .getFont ();
360- numberingPane .setFont (font .deriveFont (Math .max (font .getSize () - 1 , 1.0f )));
361362 } else if (NumberingPane .KEY_EDITOR .equals (key )) {
362363 Object newPane = evt .getNewValue ();
363364 if (textComponent != null ) {
@@ -378,8 +379,6 @@ public void propertyChange(final PropertyChangeEvent evt) {
378379 }
379380 textComponent .addPropertyChangeListener (getPropertyChangeListener ());
380381 textComponent .getCaret ().addChangeListener (getChangeListener ());
381- Font font = textComponent .getFont ();
382- numberingPane .setFont (font .deriveFont (Math .max (font .getSize () - 1 , 1.0f )));
383382 oldBackground = textComponent .getBackground ();
384383 textComponent .setBackground (UIManager .getColor ("NumberingPane.textBackground" ));
385384 }
0 commit comments