Text-frame word wrap

• Feb 14, 2020 - 13:04
Reported version
S5 - Suggestion

There should be a command, perhaps in the text toolbar, that word-wrap-fills text in an open text or horizontal frame. This is not the same as justify (see #292362: Justify text feature ). This would not be a mode or frame attribute, but a one-shot command. The effect would be to insert "soft" line breaks before, and only before, words that overflow the right margin, and preserve "hard" (user-entered "Return") line breaks. As in all such implementations, words longer than the width of the box would stay unaltered.

Manual text-filling of text in text frames, required now when frames are resized, is difficult and extremely time-consuming. How to define this usefully for text-boxes, which expand to fit what you type, is an issue.


It could (and maybe even should) also be automatically, like for example for text frames, which already change their height automatically to fit the text, but do require manual word-wrap

In reply to by jrpear


Word-wrap would be a wonderful addition to Musescore! Are you making progress on this?

I'm wondering if you're envisioning:

   • Horizontal text frames with a "column number" property that determines a specific number of "virtual" vertical frames
   • a "gutter width" property that governs the space between virtual vertical frames
   • frame margins and padding (top, right, bottom, left)
   • the option of a) distinct unlinked "separate columns" or b) linked "column flow"
   • an option for linking overflow to another frame

The following options would be icing on the cake!

   • a line height/leading property
   • hypenation toggle (on/off)

I'm really enjoying writing educational materials in MuseScore. But MuseScore does not yet offer an elegant option for narrow word-wrap columns ... and this is important because people don't easily read wide columns.

   • Word wrap on text frames and Measure text would allow me to easily present text in narrower more readable columns.

   • Additionally word-wrap and column-flow would keep my attention on creating content and relieve me from managing line breaks when rewording and editing.

The ultimate ideal would be Vertical frames with a "native" text column feature. Currently it appears that a vertical frame doesn't actually "contain" anything, but just creates a block of open space. That's handy, but the option for Frames to natively contain text and columns (beyond the Add>Text feature, which merely anchors a text object to a frame) that would be a remarkable addition and the user could change the frame width and the child columns would change width and height accordingly.



Control for line spacing is already present in 3.6.

Also, you can add horizontal frames within vertical frames if you want, which doesn't really solve anything here but is worth noting as a possible design consideration should any sort of word wrap feature be implemented and the question of setting columns comes up.

In reply to by scorster

Hello scorster,

I implemented word wrapping for text boxes here: https://github.com/jpear1/MuseScore/tree/implementWordWrap, but it has a couple of bugs caused by the bad approach I took that I couldn't find a fix for. One of them was that it's impossible to put your cursor in front of the first character of a word wrapped line.

So right now if you wanted you could build that version of the project, then draw text boxes to fake the frames feature you're talking about, and have text wrap (I didn't implement justified text or hyphenation however).

Right now, as far as I know, most of the core MuseScore devs are working on MuseScore 4, so MuseScore 3 is no longer getting new features and there isn't a clear way for what I've written to be used in MuseScore 4. Maybe my wrapping algorithm could be reused: https://github.com/jpear1/MuseScore/blob/41e24bbafd474c977d9b6bd685b8f1….

I may take another crack at this once MuseScore 4 comes out and try to implement some the fancier features you've listed as well, but that won't be for a while.

No, it's still on a long list of features that would be nice to have someday, but no specific word on when someone might begin to work on it. The experiments referenced above may well prove a good starting point.