23

Letter spacing is a special kind of emphasis often used in combination with blackletter fonts. A letter spaced has 0.125 em spaces between its characters, but some ligatures are preserved. For example: »B ä ck e r ſt r a ß e« How can I get letter spacing with (La)TeX?

FUZxxl
  • 2,414
  • 5
    The soul package has some features along these lines, but I don't know if it's quite what you are looking for. – Lev Bishop May 02 '11 at 13:10
  • 3
    Just for clarity: Sperrsatz (German) = Letter spacing – Martin Scharrer May 02 '11 at 13:40
  • 2
    Frederic Goudy: "A man who would letter space blackletter would steal sheep." – Phil Hirschhorn May 02 '11 at 17:27
  • @Martin Scharrer: Thank you for the correct term. – FUZxxl May 02 '11 at 18:09
  • 3
    While I'm not a native speaker, I'm not sure if "letter spacing" can be used to refer to this markup specifically, although it undoubtedly describes it appropriately. I find the "spacing out" mentioned in the Wikipedia article more precise. "Letter spacing" sounds like "Buchstabenabstand" ("distance between letters") of any kind, including the normal, unaltered. Any native speaker opinion on this (potentially with blackletter typography experience)? (And thanks for the hint on the Wiki article, the part about the mandatory and optional ligatures is quite interesting!) – doncherry May 03 '11 at 15:37

4 Answers4

30

With the microtype package and pdfTeX, you just need to enclose the text which you want to emphasize in a \textls command. You can adjust the amount of letterspacing (Sperrsatz) globally by adding letterspace=125 to the package options or, alternatively, locally by providing it as an optional argument to the \textls command (in multiples of 1/1000 em).

\documentclass{article}

\usepackage{yfonts}
\usepackage[letterspace=125]{microtype}

\begin{document}
\frakfamily
\textls{B\"ackerstra\ss e}
\textls[50]{B\"ackerstra\ss e}
\end{document}

If you are not interested in the other features of microtype such as margin kerning, you can instead load the letterspace package with the same option.

Michael Ummels
  • 8,604
  • 3
  • 36
  • 27
4

This page from the UniFraktur project goes into detail about letterspacing and shows what to do for XeLaTeX.

3

You can use the soulutf8 package and its \sodef command to define a new command to get the desired letter spacing; to mantain a ligature you can use \mbox inside the argument of the newly defined command:

\documentclass{article} 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{soulutf8}

\sodef\Sp{}{.125em}{1em plus1em}{2em plus.1em minus.1em}


\begin{document}
\Sp{Bäcker\mbox{ßt}raße}
\end{document}
Gonzalo Medina
  • 505,128
  • 2
    The advantage of using the microtype package in the case of letterspacing with Fraktur is that it preserves the special German ligatures automatically. No need to remember to place various letter combinations inside mbox-es. – Mico Aug 17 '11 at 09:05
3

LuaLaTeX solution.

\documentclass{article}
\usepackage{fontspec}
\newfontfamily\letterspaced{Latin Modern Roman}[LetterSpace=50]
\begin{document}
Hello world

{\letterspaced Hello world}

Hello world \end{document}

Output:

output


There's an alternative solution that does not require defining a font family, but it's much slower.

\documentclass{article}
\usepackage{fontspec}
\begin{document}
\fontspec{Latin Modern Roman}  % set the default font https://tex.stackexchange.com/q/643918/250119

Hello world fi

{ \addfontfeature{LetterSpace=50} Hello world fi }

{ \addfontfeature{LetterSpace=50,Ligatures={NoCommon, NoDiscretionary}} % https://tex.stackexchange.com/a/103242/250119 Hello world fi }

Hello world fi

\end{document}

Output:

Output

  • First line is normal text,
  • second line is LetterSpace,
  • third line is LetterSpace with ligatures disabled,
  • forth line is back to normal text.

How much slower?

I compare two documents with the following changes:

\csname prg_replicate:nn\endcsname{200}{
{\letterspaced Hello world}

}

versus

\csname prg_replicate:nn\endcsname{200}{
{\addfontfeature{LetterSpace=50} Hello world}

}

The time taken are 0m4.137s and 0m1.254s respectively. So that evaluates to 14ms per usage, or: for every 70 usages of \addfontfeature, your compilation time slows down by a second.

user202729
  • 7,143
  • Cool idea! Note that for proper letter spacing in German, only some ligatures are preserved while others are split. Specifically, ligatures ſt, ch, ck, and tz are preserved, others are lost. – FUZxxl Feb 13 '24 at 10:17