Opened 21 months ago
Closed 21 months ago
#14412 closed defect (fixed)
Label not wide enough
Reported by: | pett | 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 , 21 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 , 21 months ago
comment:3 by , 21 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 , 21 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.