# Capital letter expanded letter space kerning

I am using the following code

\usepackage{microtype,textcase}
\textls*[110]{\textbf{\MakeUppercase{Specialties}}}


I would like to achieve even letter spacing. Unfortunately, the kerning of the "ALT" is not good. Is there any way to make this better (even spacing)?

Edit: One thing that improves the letter spacing between the L and T is to do

\usepackage{microtype,textcase}
\textls*[110]{\textbf{\MakeUppercase{Specia{l}{t}ies}}}


but the A and the L are still too far apart. Also, I am using this code as a command with the "Specialties" part being an argument. It would be nice to have a solution to make the letter spacing even without having to do tricks like this.

-
Something you could try is adjusting the kerning between L and T with SetExtraKerning as in mhp's answer here: tex.stackexchange.com/questions/4062/… – Philippe Goutet Aug 18 '11 at 13:02

Here I introduce the routine \spaceout[added space]{string} to indicate text to be spaced out. The optional argument can specify the extra space added between each letter of the argument (here I default it to 0.5pt). Spaces are properly parsed in the argument, using similar logic to my answer at How to bold custom calligraphic text.

In my MWE here, I show how \spaceout can be used both to compress or expand text spacing.

\documentclass{article}
\usepackage{tabto}
\def\theLetterSpace{0.5pt}
\newcommand\spaceout[2][\theLetterSpace]{%
\def\LocalLetterSpace{#1}\expandafter\spaceouthelpA#2 \relax\relax}
\def\spaceouthelpA#1 #2\relax{%
\spaceouthelpB#1\relax\relax%
\ifx\relax#2\else\ \kern\LocalLetterSpace\spaceouthelpA#2\relax\fi
}
\def\spaceouthelpB#1#2\relax{%
#1%
\ifx\relax#2\else
\kern\LocalLetterSpace\spaceouthelpB#2\relax%
\fi
}
\parskip 1ex
\usepackage{microtype,textcase}
\begin{document}

\textls*[110]{\textbf{\MakeUppercase{Specialties}}}  OP\#1

\textls*[110]{\textbf{\MakeUppercase{Specia{l}{t}ies}}}  OP\#2

\textls*[110]{\textbf{\MakeUppercase{Speci\spaceout[-.6pt]{alt}ies}}} \verb|\spaceout|

\vspace{3ex}
test test test test test test  no spacing

test \spaceout{test test test test} test  0.5pt added spacing

test \spaceout[1.5pt]{test test test test} test  1.5pt added spacing

test \spaceout[5pt]{test test test test} test  5pt added spacing
\end{document}


And below, we see an example on bold sans caps:

which uses the following code:

\documentclass{article}
\usepackage{tabto}
\def\theLetterSpace{0.5pt}
\newcommand\spaceout[2][\theLetterSpace]{%
\def\LocalLetterSpace{#1}\expandafter\spaceouthelpA#2 \relax\relax}
\def\spaceouthelpA#1 #2\relax{%
\spaceouthelpB#1\relax\relax%
\ifx\relax#2\else\ \kern\LocalLetterSpace\spaceouthelpA#2\relax\fi
}
\def\spaceouthelpB#1#2\relax{%
#1%
\ifx\relax#2\else
\kern\LocalLetterSpace\spaceouthelpB#2\relax%
\fi
}
\parskip 1ex
\begin{document}
\sffamily\bfseries

\end{document}

-

Although "not good" may be very subjective, I would suggest encompassing any faulty kerning letters with {.}. This should reduce or eliminate the automatic effects of kerning.

Another letter spacing alternative is provided by the soul package. The following minimal example illustrates the differences/similarities:

\documentclass{article}

\usepackage{microtype}
\usepackage{soul}

\sodef\myspace{}{.2em}{1em plus1em}{2em plus.1em minus.1em}% User-defined letter spacing

\begin{document}

\textls*[110]{\textbf{\MakeUppercase{Special{t}ies}}}

\so{\textbf{\MakeUppercase{Specialties}}}

\myspace{\textbf{\MakeUppercase{Special{t}ies}}}

\end{document}​


-
I was using the soul package initially but switched to microtype; they seem to give similar results. Putting a letter in {.} helps a lot. Out of curiosity, is there any way to take an argument specialties and convert it to {S}{P}{E}{C}{I}{A}{L}{T}{I}{E}{S}? – Justin J Stark Aug 5 '11 at 16:37