W CSS chyba się nie da, przynajmniej ja nie umiem.
Jedyne co mi przychodzi na myśl tak na szybko to pobrać w JavaScript tekst i metodą String.prototype.replace dodać przed pojedynczymi literami twardą spację (U+00A0) w miejsce spacji zwykłej (U+0020). Wtedy może będzie to tak działać, ale pewny nie jestem. Jak znajdę chwilę to spróbuje coś zmalować na codepen i zobaczę.
EDIT:
Tak na szybko w codepen naskrobałem coś takiego:
https://codepen.io/anon/pen/BmXPqr?editors=1011
Mój zamysł był taki, aby użyć wzorca:
/\x20([a-z])\x20/gi
do wyszukania w ciągu liter otoczonych z obu stron spacją, i następnie zamienić to na tę samą literę, ale otoczoną dwoma twardymi spacjami:
'\u00A0$1\u00A0'
Teoretycznie można by wyłączyć flagę case insensitive bo w sumie te pojedyncze litery zawsze są małe. Nie ma też polskich znaków mogących być samodzielnymi dlatego wystarczy [a-z] albo wskazanie tych kilku możliwych.
Tak na szybko jak zmniejszam sobie okna codepen to nie zostają mi nigdy pojedyncze literki, ale potestuj sobie na jakiś innych tekstach jeszcze, bo to takie szybkie rozwiązanie, a nie chce mi się już dzisiaj przy sobocie siedzieć nad testowaniem tego.
Daj znać czy coś pomogło, czy pomysł do kosza :) ?
Pozdrawiam