This article covers some of the ways in which user initials are calculated in the platform.
When calculating Initials for the Navigation Frame or Service Portal header, we take the following steps to process the name into initials.
(1) Remove everything wrapped in non-word characters like: David "Danger" Loo (NOW) -> David Loo (2) Remove multiple spaces: David Loo -> David Loo (3) Remove leading and trailing spaces (4) Remove leading period characters (5) Remove leftover spaces
(6) Split the leftover names into an array: ['David', 'Loo']
(7) Get the first element of the array, and the first letter in that string and capitalize it: David -> D
(8) Get the last element of the array and the first letter of that string and Capitalize it: Loo -> L
(9) Add those two initials together: D + L -> DL
Will use the name James Lee Jones as an example of how this would be processed with three names.
There is no way to change this functionality since it is done in the backend Java Layer.
While there is not a way to directly change this platform level behavior you could workaround it to get the right initials one of two ways.
1) You can add a hyphen to the name: James Lee-Jones -> JL
2) You can put an initial or middle name at the end of the name: James Jones, Lee -> JL