I know what you mean about the weird breaking on spaces & stretching beyond the window -- that's why I ended up doing what I did, changing the form field to be multi-values. I'll give your solution a shot the next time I bump into this -- thanks!
But I wonder if you couldn't just use the converters & instead of doing:
<xp:this.converter>
<xp:customConverter>
<xp:this.getAsObject><![CDATA[#{javascript:@Explode(value,"\n");}]]></xp:this.getAsObject>
<xp:this.getAsString><![CDATA[#{javascript:@Implode(value,"\n");}]]></xp:this.getAsString>
</xp:customConverter>
</xp:this.converter>
you could do something like this:
<xp:this.converter>
<xp:customConverter>
<xp:this.getAsObject><![CDATA[#{javascript:@Explode(value,"\n");}]]></xp:this.getAsObject>
<xp:this.getAsString><![CDATA[#{javascript:@Replace(@Implode(value,"\n");" ";" ");}]]></xp:this.getAsString>
</xp:customConverter>
</xp:this.converter>
Not sure if you'd have to alter the getAsObject part as well to get it back into the Notes field properly. Haven't tried this so I don't know if it would work.