The inline box used to define backgrounds and borders for a given element only includes letter spacing between characters completely contained within that element:

p    { letter-spacing: 1em; }

<p>a<span>bb</span>c</p>

a b b c

Many current implementations instead include the letter spacing on the right or trailing edge of the element:

a b b c

Letter spacing is never done at the beginning or end of a line:

p    { letter-spacing: 1em; }

<p>abc</p>

a b c

a b c

Currently, implementations instead typically append letter spacing to the trailing edge of lines:

a b c

a b c

A given value of 'letter-spacing' only affects the spacing between characters completely contained within the element for which it is specified:

p    { letter-spacing: 1em; }
span { letter-spacing: 2em; }

<p>a<span>bb</span>c</p>

a b b c

This also means that applying 'letter-spacing' to an element containing only a single character has no effect on the rendered result:

p    { letter-spacing: 1em; }
span { letter-spacing: 2em; }

<p>a<span>b</span>c</p>

a b c

Letter spacing is inserted after RTL reordering, so the letter spacing applied to the inner span below has no effect, since after reordering the 'c' doesn't end up next to 'א':

p    { letter-spacing: 1em; }
span { letter-spacing: 2em; }

<!-- abc followed by Hebrew letters alef, bet and gimel
     reordering will display these in reverse order -->

<p>ab<span>c&#x5d0;</span>&#x5d1;&#x5d2;</p>

<span>b</span>c</p>

a b c א ב ג