Wrong Automatic Placement (stacked) of overlapped text elements
Reported version
3.0
Priority
P1 - High
Type
Functional
Frequency
Many
Severity
S3 - Major
Reproducibility
Always
Status
active
Regression
Yes
Workaround
Yes
Project
All texts below are with automatic placement.
Tested in:
OS: Windows 10 (10.0), Arch.: x86_64, MuseScore version (32-bit): 3.0.0, revision: 44debd7
Comments
Working on a fix for this.
relates to #272132: [EPIC] Text positioning issues
PR: https://github.com/musescore/MuseScore/pull/3902
Fixed in branch master, commit 6df1506b78
Fix #274710: incorrect text autoplacement
Fixed in branch master, commit 1d1fbbefc1
Merge pull request #3902 from jthistle/274710-incorrect-text-autoplacement
Fix #274710: incorrect text autoplacement
Automatically closed -- issue fixed for 2 weeks with no activity.
OS: Windows 10 (10.0), Arch.: x86_64, MuseScore version (32-bit): 3.0.0, revision: e10cd82
Text aligning is broken after some changes in master. See discussion in https://github.com/musescore/MuseScore/pull/3902
Unexpected and alarming result:
Should be:
Per discussion on Telegram, the fix merged in https://github.com/musescore/MuseScore/pull/3902 is incompatible with the simplified "skyline" algorithm. A new approach is needed.
Tried to give better (specific) title
My suggestion for a fix would be a less "greedy algorithm. Currently, we lay out text elements left to right, and if an element intersects the current skyline, it is moved up. What we could consider instead is to "pass" on that element, go on to the next, and if the next can be placed without needing a bump up, then go back to the previous element and autoplace it. This would yield the desired result Isaac's example above - first placing "testing first", then passing on "testing second", then placing "testing third", then going back and placing "testing second".
Complicating this is the fact that different types of text are placed at different times, and this itself is kind of an important aspect (eg, tempo should always be above staff text). But this approach should work well within each type.