Recursive Calculations is one of the main reasons for devising a custom function.
// fnPaddedWord ( Word , Characters , Spaces )
// Word: the text to be padded
// Characters the number of characters from word to be padded. Remaining characters will be truncated
// Spaces: the number of spaces to insert between each nontruncated character
Case ( characters = 0 ; "" ;
IsEmpty ( Word ) ; "" ;
Left ( Word ; 1 ) & Substitute ( 10^Spaces - 1 ; 9 ; " " ) & Trim ( fnPaddedWord ( Right ( Word ; Length ( Word ) - 1 ; Characters - 1 ; Spaces ) )
How it works: 10^Spaces is 10 raised to the Spaces power. If Spaces = 2, this produces 100. Subtracting 1 produces a number with only the 9 digit and one such digit for every space (99 when spaces = 2, 999 when spaces = 3 and so forth). The substitute function replaces each 9 with a space to pad the characters.
The function has two conditions that will terminate the expression: If there are no more characters to Pad, or if the specified number of characters has been padded.
Also, since the function returns spaces after the last padded character, Trim is used to remove the trailing spaces.
... or you could use calculated repeating fields, so you will be able to center the chars into their respective boxes.
Middle ( Extend ( word ) ; Get ( CalculationRepeatitionNumber ) ; 1 )