CSSの制御では厳しいような気がしますのでもう大喜利レベルになりますがこんな感じでどうでしょう?
html
1<style>
2.wrap{
3width:200px;
4border:1px solid;
5position:relative;
6}
7.l{
8background-Color:lime;
9}
10.r{
11background-Color:yellow;
12position:absolute;
13right:0;
14bottom:0;
15}
16</style>
17<script>
18window.addEventListener('DOMContentLoaded', ()=>{
19 document.querySelectorAll('.l').forEach(element=>{
20 const range = document.createRange();
21 range.selectNodeContents(element);
22 const rects = range.getClientRects();
23 const p1 = rects[rects.length -1 ].right;
24 const rect = element.nextElementSibling.getBoundingClientRect();
25 const p2 = rect.left;
26 if(p1>p2) element.after(document.createElement('br'),document.createElement('br'));
27 });
28});
29</script>
30<div class="wrap">
31<span class="l">あああああああああああああああああああああああああああああああ</span>
32<span class="r">いいいいいい</span>
33</div>
34<div class="wrap">
35<span class="l">あああああああああああああああああああああああああああああああああ</span>
36<span class="r">いいいいいい</span>
37</div>
38<div class="wrap">
39<span class="l">ああああああああああああああああああああああああああああああああああああ</span>
40<span class="r">いいいいいい</span>
41</div>
42</div>
43<div class="wrap">
44<span class="l">ああああああああああああああああああああああああああああああああああああああああ</span>
45<span class="r">いいいいいい</span>
46</div>
47</div>
左要素の末尾のX座標と右要素の先頭のX座標をくらべて、食い込んでいたら2行改行する
追記
どうせなら動的に処理できるようにこんな感じ
(ブラウザの幅を変えると動的に避けてくれる)
html
1<style>
2.wrap{
3border:1px solid;
4position:relative;
5}
6.l{
7background-Color:lime;
8}
9.r{
10background-Color:yellow;
11position:absolute;
12right:0;
13bottom:0;
14}
15</style>
16<script>
17const crossing=()=>{
18 document.querySelectorAll('.l').forEach(element=>{
19 element.parentNode.querySelectorAll('br').forEach(x=>x.remove());
20 const range = document.createRange();
21 range.selectNodeContents(element);
22 const rects = range.getClientRects();
23 const p1 = rects[rects.length -1 ].right;
24 const rect = element.parentNode.querySelector('.r').getBoundingClientRect();
25 const p2 = rect.left;
26 if(p1>p2) element.after(document.createElement('br'),document.createElement('br'));
27 console.log([p1,p2]);
28
29 });
30}
31window.addEventListener('DOMContentLoaded',crossing);
32window.addEventListener('resize',crossing);
33
34</script>
35<div class="wrap">
36<span class="l">ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ</span>
37<span class="r">いいいいいい</span>
38</div>
39<div class="wrap">
40<span class="l">あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ</span>
41<span class="r">いいいいいい</span>
42</div>
43<div class="wrap">
44<span class="l">ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ</span>
45<span class="r">いいいいいい</span>
46</div>
47<div class="wrap">
48<span class="l">あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ</span>
49<span class="r">いいいいいい</span>
50</div>