Opened 22 months ago
Closed 22 months ago
#14412 closed defect (fixed)
Label not wide enough
| Reported by: | Eric Pettersen | Owned by: | Tom Goddard |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Depiction | Version: | |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
The following bug report has been submitted:
Platform: macOS-13.3.1-arm64-arm-64bit
ChimeraX Version: 1.8.dev202401172022 (2024-01-17 20:22:24 UTC)
Description
labels in certain fonts aren't wide enough
open pubchem:94988
Actions->Label->Atoms->IDATM Type
then the (central) Npl labels are not wide enough in Times or Arial
Log:
Startup Messages
---
warning | Replacing fetcher for 'pdb_nmr' and format NMRSTAR from NMRSTAR
bundle with that from NMRSTAR bundle
UCSF ChimeraX version: 1.8.dev202401172022 (2024-01-17)
© 2016-2024 Regents of the University of California. All rights reserved.
How to cite UCSF ChimeraX
> open pubchem:94988
Summary of feedback from opening 94988 fetched from pubchem
---
note | Fetching compressed PubChem 94988 from
https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/94988/SDF?record_type=3d
PubChem entry 94988
> label #1 atoms attribute idatm_type
> label font times
> label font helvetica
> label font arial
> label font copperplate
OpenGL version: 4.1 Metal - 83.1
OpenGL renderer: Apple M1 Max
OpenGL vendor: Apple
Python: 3.11.2
Locale: UTF-8
Qt version: PyQt6 6.6.1, Qt 6.6.1
Qt runtime version: 6.6.1
Qt platform: cocoa
Hardware:
Hardware Overview:
Model Name: Mac Studio
Model Identifier: Mac13,1
Model Number: Z14J0008FLL/A
Chip: Apple M1 Max
Total Number of Cores: 10 (8 performance and 2 efficiency)
Memory: 32 GB
System Firmware Version: 8422.100.650
OS Loader Version: 8422.100.650
Software:
System Software Overview:
System Version: macOS 13.3.1 (a) (22E772610a)
Kernel Version: Darwin 22.4.0
Time since boot: 155 days, 20 hours, 26 minutes
Graphics/Displays:
Apple M1 Max:
Chipset Model: Apple M1 Max
Type: GPU
Bus: Built-In
Total Number of Cores: 24
Vendor: Apple (0x106b)
Metal Support: Metal 3
Displays:
PHL 279P1:
Resolution: 5120 x 2880 (5K/UHD+ - Ultra High Definition Plus)
UI Looks like: 2560 x 1440 @ 60.00Hz
Main Display: Yes
Mirror: Off
Online: Yes
Rotation: Supported
Installed Packages:
alabaster: 0.7.16
appdirs: 1.4.4
appnope: 0.1.3
asttokens: 2.4.1
Babel: 2.14.0
backcall: 0.2.0
beautifulsoup4: 4.11.2
blockdiag: 3.0.0
blosc2: 2.0.0
build: 0.10.0
certifi: 2022.12.7
cftime: 1.6.3
charset-normalizer: 3.3.2
ChimeraX-AddCharge: 1.5.15
ChimeraX-AddH: 2.2.5
ChimeraX-AlignmentAlgorithms: 2.0.1
ChimeraX-AlignmentHdrs: 3.4.3
ChimeraX-AlignmentMatrices: 2.1
ChimeraX-Alignments: 2.12.3
ChimeraX-AlphaFold: 1.0
ChimeraX-AltlocExplorer: 1.1.1
ChimeraX-AmberInfo: 1.0
ChimeraX-Arrays: 1.1
ChimeraX-Atomic: 1.52
ChimeraX-AtomicLibrary: 12.1.4
ChimeraX-AtomSearch: 2.0.1
ChimeraX-AxesPlanes: 2.4
ChimeraX-BasicActions: 1.1.2
ChimeraX-BILD: 1.0
ChimeraX-BlastProtein: 2.1.2
ChimeraX-BondRot: 2.0.4
ChimeraX-BugReporter: 1.0.1
ChimeraX-BuildStructure: 2.11
ChimeraX-Bumps: 1.0
ChimeraX-BundleBuilder: 1.2.2
ChimeraX-ButtonPanel: 1.0.1
ChimeraX-CageBuilder: 1.0.1
ChimeraX-CellPack: 1.0
ChimeraX-Centroids: 1.4
ChimeraX-ChangeChains: 1.1
ChimeraX-CheckWaters: 1.3.2
ChimeraX-ChemGroup: 2.0.1
ChimeraX-Clashes: 2.2.4
ChimeraX-ColorActions: 1.0.3
ChimeraX-ColorGlobe: 1.0
ChimeraX-ColorKey: 1.5.5
ChimeraX-CommandLine: 1.2.5
ChimeraX-ConnectStructure: 2.0.1
ChimeraX-Contacts: 1.0.1
ChimeraX-Core: 1.8.dev202401172022
ChimeraX-CoreFormats: 1.2
ChimeraX-coulombic: 1.4.3
ChimeraX-Crosslinks: 1.0
ChimeraX-Crystal: 1.0
ChimeraX-CrystalContacts: 1.0.1
ChimeraX-DataFormats: 1.2.3
ChimeraX-Dicom: 1.2
ChimeraX-DistMonitor: 1.4
ChimeraX-DockPrep: 1.1.3
ChimeraX-Dssp: 2.0
ChimeraX-EMDB-SFF: 1.0
ChimeraX-ESMFold: 1.0
ChimeraX-FileHistory: 1.0.1
ChimeraX-FunctionKey: 1.0.1
ChimeraX-Geometry: 1.3
ChimeraX-gltf: 1.0
ChimeraX-Graphics: 1.1.1
ChimeraX-Hbonds: 2.4
ChimeraX-Help: 1.2.2
ChimeraX-HKCage: 1.3
ChimeraX-IHM: 1.1
ChimeraX-ImageFormats: 1.2
ChimeraX-IMOD: 1.0
ChimeraX-IO: 1.0.1
ChimeraX-ItemsInspection: 1.0.1
ChimeraX-IUPAC: 1.0
ChimeraX-Label: 1.1.9
ChimeraX-ListInfo: 1.2.2
ChimeraX-Log: 1.1.6
ChimeraX-LookingGlass: 1.1
ChimeraX-Maestro: 1.9.1
ChimeraX-Map: 1.1.4
ChimeraX-MapData: 2.0
ChimeraX-MapEraser: 1.0.1
ChimeraX-MapFilter: 2.0.1
ChimeraX-MapFit: 2.0
ChimeraX-MapSeries: 2.1.1
ChimeraX-Markers: 1.0.1
ChimeraX-Mask: 1.0.2
ChimeraX-MatchMaker: 2.1.2
ChimeraX-MCopy: 1.0
ChimeraX-MDcrds: 2.6.1
ChimeraX-MedicalToolbar: 1.0.2
ChimeraX-Meeting: 1.0.1
ChimeraX-MLP: 1.1.1
ChimeraX-mmCIF: 2.12.1
ChimeraX-MMTF: 2.2
ChimeraX-Modeller: 1.5.15
ChimeraX-ModelPanel: 1.5
ChimeraX-ModelSeries: 1.0.1
ChimeraX-Mol2: 2.0.3
ChimeraX-Mole: 1.0
ChimeraX-Morph: 1.0.2
ChimeraX-MouseModes: 1.2
ChimeraX-Movie: 1.0
ChimeraX-Neuron: 1.0
ChimeraX-Nifti: 1.1
ChimeraX-NMRSTAR: 1.0.1
ChimeraX-NRRD: 1.1
ChimeraX-Nucleotides: 2.0.3
ChimeraX-OpenCommand: 1.13.1
ChimeraX-PDB: 2.7.3
ChimeraX-PDBBio: 1.0.1
ChimeraX-PDBLibrary: 1.0.4
ChimeraX-PDBMatrices: 1.0
ChimeraX-PickBlobs: 1.0.1
ChimeraX-Positions: 1.0
ChimeraX-PresetMgr: 1.1
ChimeraX-PubChem: 2.1
ChimeraX-ReadPbonds: 1.0.1
ChimeraX-Registration: 1.1.2
ChimeraX-RemoteControl: 1.0
ChimeraX-RenderByAttr: 1.2.1
ChimeraX-RenumberResidues: 1.1
ChimeraX-ResidueFit: 1.0.1
ChimeraX-RestServer: 1.2
ChimeraX-RNALayout: 1.0
ChimeraX-RotamerLibMgr: 4.0
ChimeraX-RotamerLibsDunbrack: 2.0
ChimeraX-RotamerLibsDynameomics: 2.0
ChimeraX-RotamerLibsRichardson: 2.0
ChimeraX-SaveCommand: 1.5.1
ChimeraX-SchemeMgr: 1.0
ChimeraX-SDF: 2.0.2
ChimeraX-Segger: 1.0
ChimeraX-Segment: 1.0.1
ChimeraX-SelInspector: 1.0
ChimeraX-SeqView: 2.11.1
ChimeraX-Shape: 1.0.1
ChimeraX-Shell: 1.0.1
ChimeraX-Shortcuts: 1.1.1
ChimeraX-ShowSequences: 1.0.2
ChimeraX-SideView: 1.0.1
ChimeraX-Smiles: 2.1.2
ChimeraX-SmoothLines: 1.0
ChimeraX-SpaceNavigator: 1.0
ChimeraX-StdCommands: 1.15
ChimeraX-STL: 1.0.1
ChimeraX-Storm: 1.0
ChimeraX-StructMeasure: 1.1.2
ChimeraX-Struts: 1.0.1
ChimeraX-Surface: 1.0.1
ChimeraX-SwapAA: 2.0.1
ChimeraX-SwapRes: 2.2.2
ChimeraX-TapeMeasure: 1.0
ChimeraX-TaskManager: 1.0
ChimeraX-Test: 1.0
ChimeraX-Toolbar: 1.1.2
ChimeraX-ToolshedUtils: 1.2.4
ChimeraX-Topography: 1.0
ChimeraX-ToQuest: 1.0
ChimeraX-Tug: 1.0.1
ChimeraX-UI: 1.33.5
ChimeraX-uniprot: 2.3
ChimeraX-UnitCell: 1.0.1
ChimeraX-ViewDockX: 1.3.2
ChimeraX-VIPERdb: 1.0
ChimeraX-Vive: 1.1
ChimeraX-VolumeMenu: 1.0.1
ChimeraX-vrml: 1.0
ChimeraX-VTK: 1.0
ChimeraX-WavefrontOBJ: 1.0
ChimeraX-WebCam: 1.0.2
ChimeraX-WebServices: 1.1.3
ChimeraX-Zone: 1.0.1
colorama: 0.4.6
comm: 0.2.1
contourpy: 1.2.0
cxservices: 1.2.2
cycler: 0.12.1
Cython: 0.29.33
debugpy: 1.8.0
decorator: 5.1.1
docutils: 0.19
executing: 2.0.1
filelock: 3.9.0
fonttools: 4.47.2
funcparserlib: 2.0.0a0
glfw: 2.6.4
grako: 3.16.5
h5py: 3.10.0
html2text: 2020.1.16
idna: 3.6
ihm: 0.43
imagecodecs: 2024.1.1
imagesize: 1.4.1
ipykernel: 6.23.2
ipython: 8.14.0
ipython-genutils: 0.2.0
ipywidgets: 8.1.1
jedi: 0.18.2
Jinja2: 3.1.2
jupyter-client: 8.2.0
jupyter-core: 5.7.1
jupyterlab-widgets: 3.0.9
kiwisolver: 1.4.5
line-profiler: 4.0.2
lxml: 4.9.2
lz4: 4.3.3
MarkupSafe: 2.1.3
matplotlib: 3.8.2
matplotlib-inline: 0.1.6
msgpack: 1.0.7
ndindex: 1.7
nest-asyncio: 1.5.9
netCDF4: 1.6.5
networkx: 3.2.1
nibabel: 5.0.1
nptyping: 2.5.0
numexpr: 2.8.8
numpy: 1.26.3
openvr: 1.26.701
packaging: 21.3
ParmEd: 3.4.3
parso: 0.8.3
pep517: 0.13.0
pexpect: 4.9.0
pickleshare: 0.7.5
pillow: 10.2.0
pip: 23.0
pkginfo: 1.9.6
platformdirs: 4.1.0
prompt-toolkit: 3.0.43
psutil: 5.9.7
ptyprocess: 0.7.0
pure-eval: 0.2.2
py-cpuinfo: 9.0.0
pycollada: 0.8
pydicom: 2.3.0
Pygments: 2.16.1
pynmrstar: 3.3.2
pynrrd: 1.0.0
PyOpenGL: 3.1.7
PyOpenGL-accelerate: 3.1.7
pyopenxr: 1.0.3301
pyparsing: 3.1.1
pyproject-hooks: 1.0.0
PyQt6-commercial: 6.6.1
PyQt6-Qt6: 6.6.1
PyQt6-sip: 13.6.0
PyQt6-WebEngine-commercial: 6.6.0
PyQt6-WebEngine-Qt6: 6.6.1
python-dateutil: 2.8.2
pytz: 2023.3.post1
pyzmq: 25.1.2
qtconsole: 5.4.3
QtPy: 2.4.1
RandomWords: 0.4.0
requests: 2.31.0
scipy: 1.11.4
setuptools: 67.4.0
setuptools-scm: 7.0.5
sfftk-rw: 0.8.1
six: 1.16.0
snowballstemmer: 2.2.0
sortedcontainers: 2.4.0
soupsieve: 2.5
sphinx: 6.1.3
sphinx-autodoc-typehints: 1.22
sphinxcontrib-applehelp: 1.0.8
sphinxcontrib-blockdiag: 3.0.0
sphinxcontrib-devhelp: 1.0.6
sphinxcontrib-htmlhelp: 2.0.5
sphinxcontrib-jsmath: 1.0.1
sphinxcontrib-qthelp: 1.0.7
sphinxcontrib-serializinghtml: 1.1.10
stack-data: 0.6.3
superqt: 0.5.0
tables: 3.8.0
tcia-utils: 1.5.1
tifffile: 2023.12.9
tinyarray: 1.2.4
tomli: 2.0.1
tornado: 6.4
traitlets: 5.9.0
typing-extensions: 4.9.0
tzdata: 2023.4
urllib3: 2.1.0
wcwidth: 0.2.13
webcolors: 1.12
wheel: 0.38.4
wheel-filename: 1.4.1
widgetsnbextension: 4.0.9
Change History (4)
comment:1 by , 22 months ago
| Component: | Unassigned → Depiction |
|---|---|
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → Label not wide enough |
comment:2 by , 22 months ago
comment:3 by , 22 months ago
Fixed.
QFontMetrics are tricky. My code was using the width of the rectangle returned, but the whole rectangle for text Npl was shifted right 4 pixels from the the drawing origin 0,0 so the code really needed to use rectangle.right() which is 4 pixels larger than width. I doubt I've solved all the cases. And I did not investigate why Qt 6.3 and 6.4 give different rectangles. There are a bunch of font metrics issues (e.g. right/left bearing, horizontal advance, ...) I don't understand. I'll improve the code when cases that fail arise.
comment:4 by , 22 months ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
The Npl and HC labels appear clipped on the right edge in the daily build Qt 6.6 but are not clipped in ChimeraX 1.7 with Qt 6.3.
Printing the size reported by QFontMetrics() for the text being used to set the label texture size gives 65 x 54 in Qt 6.6 and 69 x 54 in Qt 6.3 for Npl, and 64 x 54 in Qt 6.6 and 67 x 54 in Qt 6.3 for HC. They are requesting identical fonts, and look the same.
There are countless reports of QFontMetrics() giving the wrong size online.
This clipping was reported before in Linux for ChimeraX #9263 in Qt 6.4 and I modified the code to just add 4 pixels in width to what QFontMetrics reports on Linux. This seems like a bad fix since if I ask for label size 100 pt (default is 48) then the width discrepancy is 8 pixels between Qt 6.6 and Qt 6.3.
I see the some of the problem. The font metrics returns a rectangle, left, right, top, bottom are (4,68,-43,10) in Qt 6.6 for text drawn at origin 0,0. But I was using the rectangle width 65 (= 68-4+1) when really we need 69 pixels to cover the rectangle 0-68 since we draw at x = 0 (not at x=-4). Using right+1 as the width should be fine as long as the left is not negative. If the left is negative I would need to use a different origin for the text or it would probably be clipped on the left. I don't have any case of that to test, so I'm going to just go with texture width right+1 for now.