The simple answer is to use a space character with zero width ​ It is used to create gaps within words at specific points.
Is there a complete opposite of the inseparable space (well, actually word-joiner ⁠ ) (word-joiner is the width of the non-breaking space version)
(there are other non-violating codes, such as the inextricable hyphen ‑ ) (here is an extensive answer to the various "variants" of NBSP)
If you only want to use the HTML version (without CSS / JS), you could use a combination of space with zero width and non-breaking space, however it would be very dirty, and writing a readable version takes a bit of effort.
ctrl + c , ctrl + v helps
Example:
Honey Nut Cheerios,​Wheat Chex,​Grape‑Nuts,​Rice Krispies,​Some random cereal with a very long name,​Honey Bunches of Oats,​Wheaties,​Special K,​Froot Loops,​Apple Jacks
unreadable? this is the same HTML without comment tags:
Honey Nut Cheerios,​Wheat Chex,​Grape‑Nuts,​Rice Krispies,​Some random cereal with a very long name,​Honey Bunches of Oats,​Wheaties,​Special K,​Froot Loops,​Apple Jacks
However, since HTML html rendering is not fully standardized, it is useful for such use, as this solution does not use CSS / JS
Also, if you use this in conjunction with any of the <span> -based solutions, you will get full control over the line break algorithm
(editorial note :)
The only problem I could run into is if you want to dynamically change the points of preferred breaking. This will require constant JS manipulation with each proportional span and the need to process these HTML objects in the text.