Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The linenumber is not displayed properly #17319

Closed
ok97465 opened this issue Feb 9, 2022 · 17 comments
Closed

The linenumber is not displayed properly #17319

ok97465 opened this issue Feb 9, 2022 · 17 comments

Comments

@ok97465
Copy link
Contributor

ok97465 commented Feb 9, 2022

Description

What steps will reproduce the problem?

스크린샷, 2022-02-09 21-19-44

Hello!

Thank you for your efforts to speed up the editor.
However, The line number does not seem to be displayed normally in the latest version.

Please check it out.
Have a good day.

Versions

  • Spyder version: 5.3.0.dev0 15926c5
  • Python version: 3.9.7
  • Qt version: 5.12.9
  • PyQt5 version: 5.12.3
  • Operating System: Linux 5.4.0-97-generic

Dependencies

# Mandatory:
atomicwrites >=1.2.0                  :  1.4.0 (OK)
chardet >=2.0.0                       :  4.0.0 (OK)
cloudpickle >=0.5.0                   :  2.0.0 (OK)
cookiecutter >=1.6.0                  :  1.7.2 (OK)
diff_match_patch >=20181111           :  20200713 (OK)
intervaltree >=3.0.2                  :  3.1.0 (OK)
IPython >=7.6.0;<8.0.0                :  7.31.1 (OK)
jedi >=0.17.2;<0.19.0                 :  0.18.1 (OK)
jellyfish >=0.7                       :  0.8.9 (OK)
jsonschema >=3.2.0                    :  3.2.0 (OK)
keyring >=17.0.0                      :  23.4.0 (OK)
nbconvert >=4.0                       :  6.3.0 (OK)
numpydoc >=0.6.0                      :  1.2 (OK)
parso >=0.7.0;<0.9.0                  :  0.8.3 (OK)
pexpect >=4.4.0                       :  4.8.0 (OK)
pickleshare >=0.4                     :  0.7.5 (OK)
psutil >=5.3                          :  5.8.0 (OK)
pygments >=2.0                        :  2.10.0 (OK)
pylint >=2.5.0                        :  2.12.2 (OK)
pyls_spyder >=0.4.0                   :  0.4.0 (OK)
pylsp >=1.3.2;<1.4.0                  :  1.4.0.dev0 (OK)
pylsp_black >=1.0.0                   :  1.0.0 (OK)
qdarkstyle =3.0.2                     :  3.0.2 (OK)
qstylizer >=0.1.10                    :  0.1.10 (OK)
qtawesome >=1.0.2                     :  1.0.3 (OK)
qtconsole >=5.2.1;<5.3.0              :  5.2.1 (OK)
qtpy >=1.5.0                          :  1.11.2 (OK)
rtree >=0.9.7                         :  0.9.7 (OK)
setuptools >=49.6.0                   :  58.0.4 (OK)
sphinx >=0.6.6                        :  4.4.0 (OK)
spyder_kernels >=2.2.1;<2.3.0         :  2.3.0.dev0 (OK)
textdistance >=4.2.0                  :  4.2.1 (OK)
three_merge >=0.1.1                   :  0.1.1 (OK)
watchdog >=0.10.3                     :  2.1.6 (OK)
xdg >=0.26                            :  0.27 (OK)
zmq >=17                              :  22.3.0 (OK)

# Optional:
cython >=0.21                         :  0.29.25 (OK)
matplotlib >=2.0.0                    :  3.5.0 (OK)
numpy >=1.7                           :  1.20.3 (OK)
pandas >=1.1.1                        :  1.3.5 (OK)
scipy >=0.17.0                        :  1.7.3 (OK)
sympy >=0.7.3                         :  1.9 (OK)

# Spyder plugins:
spyder_okvim.spyder.plugin 0.0.1.dev0 :  0.0.1-dev0 (OK)
@ccordoba12
Copy link
Member

Hey @ok97465, thanks for reporting! I can confirm this problem on Linux and I was about to report it.

@impact27, could you take a look at it? It seems the computations to determine line height are a bit off on Linux.

@dalthviz, could you post a screenshot of what do you see on Windows?

@dalthviz
Copy link
Member

dalthviz commented Feb 9, 2022

This is what I'm seeing on Windows (seems like the line numbers are aligned there):

imagen

imagen

@ccordoba12
Copy link
Member

@dalthviz, could you put the cursor in a given line (not in the first ten) and upload another screenshot? I think the problem is with the current line.

@dalthviz
Copy link
Member

dalthviz commented Feb 9, 2022

imagen

@ccordoba12
Copy link
Member

Thanks @dalthviz! So things on Windows are working just fine.

@steff456, could post a similar screenshot on macOS?

@impact27
Copy link
Contributor

On mac:
Screenshot 2022-02-10 at 07 59 13

@impact27
Copy link
Contributor

If you zoom in and out, does it fix it?

@impact27
Copy link
Contributor

The font size appears to be the same. I think the issue is with the line spacing:
2

@impact27
Copy link
Contributor

You can check the height and leading by adding in LineNumberArea::draw_linenumbers below font.setWeight(font.Normal):

from qtpy.QtGui import QFontMetricsF
fm = QFontMetricsF(font)
print(fm.lineSpacing(), fm.height(), fm.leading())

On mac I get 12.796875 12.796875 0.0. Maybe the css sheet on linux adds 2px of leading to the editor?
There is a problem however that I can not find a way of adjusting the line spacing for QStaticText (see https://bugreports.qt.io/browse/QTBUG-3545).

Maybe using QTextDocument.drawContents would be more reliable? But this should be profiled.

@impact27
Copy link
Contributor

Could you try: #17321

@ok97465
Copy link
Contributor Author

ok97465 commented Feb 10, 2022

from qtpy.QtGui import QFontMetricsF
fm = QFontMetricsF(font)
print(fm.lineSpacing(), fm.height(), fm.leading())

The result of code is 16.0, 17.0, -1.0.

@impact27
Copy link
Contributor

The font is supposed to be the same. I tried to match the stylesheet as that might affect the line spacing.

@ok97465
Copy link
Contributor Author

ok97465 commented Feb 10, 2022

Could you try: #17321

I'm sorry but the result of #17321 is the same.

@impact27
Copy link
Contributor

I'm sorry but the result of #17321 is the same.

Thanks for checking! What if you change the font? Maybe there is an issue with negative leading? Could you select a font without negative leading?

@ok97465
Copy link
Contributor Author

ok97465 commented Feb 10, 2022

You're right. Linenumber is working well when using some font. But It is not working when I use "JetBrains Mono", "Ubuntu mono", "Fira Mono".

@impact27
Copy link
Contributor

From the picture above, the baseline to baseline disctance of the line number is 32px (=2 * 16) while the baseline to baseline distance of the text is 34px ( = 2 * 17). So it looks like the editor is somehow not respecting the leading of the font? One solution could be to remove the optimisation when the leading is negative. The editor will be slower but at least the line numbers will be aligned.

@impact27
Copy link
Contributor

#17321 should work now (but slower when the leading is not 0)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants