@NickD provided a good answer: use a face.
OP's comment to Nick's answer says that he'll try to write a function that, given a string, returns a propertized string. Such functions already exist: propertize does that, and so does add-face-text-property.
(setq ss (propertize "abcde" 'face '(:foreground "red")))
(setq ss &...
You need to create a string with the appropriate face. You do that by attaching a face text property to the string, giving it value of some face (predefined or defined for the specific purpose - you can look at all the predefined faces with M-x list-faces-display and pick one from there, or you can define your own face).
E.g. here's a snippet to use a ...
Edit: I've added some Elisp code at the end of the answer that performs all of the changes mentioned and then evaluates the buffer it is run in.
One way to get this effect is by making some simple modifications to Steve Purcell's page-break-lines.el. (To future-proof this answer as much as possible, I am referring specifically to this version of the file ...