# How to force text condensation

I have a title, that's written in font family with no condensed face. But I still want to bring letters closer to each other due to typographical reason.

I find couple of ways to change letterspacing:

1. Use a soulutf8 package:

\sodef\cond{}{.01em}{.01em}{.01em}

2. Use fontenc and redefine font parameters:

\newfontfamily\headingfontcond[LetterSpace=.01]{MyFont-Bold}


Both of this ways works if letter space is greater than one. But if I try to make text narrower, but not wider, it just doesn't change anything.

BTW, I unable to use microtype package because I render text with XeLaTeX.

-
Did you try a negative value instead of a .01? But I doubt this is good typographic practice – condensed fonts are crafted especially for this, and they have a design that is very different from normal fonts in order to accommodate the shrinking. If it is for a title, why not use a font that has a condensed version? It is fine to use 2-3 different fonts in a document. – ienissei May 16 '14 at 18:59
Condensing using a negative letter spacing is a very bad idea as the example in David's answer shows. – egreg May 16 '14 at 19:28
@egreg as I posted my answer I was in fear of a backlash from you :-) – David Carlisle May 16 '14 at 19:44

LetterSpace works also with negative values:

\documentclass{article}
\usepackage{fontspec}

\setmainfont[Ligatures=TeX]{Alegreya}
\newfontface{\titlingfont}[LetterSpace=-10]{Alegreya Bold}

\begin{document}
{\Large\titlingfont A HIDEOUS TITLE}

\Large\bfseries A HIDEOUS TITLE
\end{document}


You can also use \scalebox from graphicx:

\documentclass{article}
\usepackage{fontspec}
\usepackage{graphicx}

\setmainfont[Ligatures=TeX]{Alegreya}
\newfontface{\titlingfont}[LetterSpace=-10]{Alegreya Bold}

\begin{document}
{\Large\titlingfont A HIDEOUS TITLE\par}

\scalebox{0.85}[1]{\Large\bfseries A HIDEOUS TITLE}
\end{document}


-
Oh, that's so obvious, why I just even don't twig to use negative numbers? ) Thanks! – TeXNewbie May 17 '14 at 12:02

If it is just a one-off title, and you are sure you want to do this, just position it all manually (which you should do anyway if you are hand lettering a title)

\documentclass{article}

\begin{document}

\huge
This

T\hspace{-.09em}h\hspace{-.05em}i\hspace{-.06em}s

\end{document}

-
Why don’t you use \kern? I thought it was made for such cases … – Tobi May 16 '14 at 19:09
@Tobi 'cause I reprimanded someone on a question the other day for using TeX primitives in a latex document:-) (presumably there is no automatic line breaking in this title so it makes no difference, so why not use the latex syntax?) – David Carlisle May 16 '14 at 19:17
So assuming the OP didn't reprimand anybody for using TeX primitives in a LaTeX document recently, the reason doesn't not apply to them? ;) – cfr May 16 '14 at 19:31
“so why not use the latex syntax?” hm … for me \kern feels right to kern letters ;-) – Tobi May 16 '14 at 20:01

The letter spacing is very bad typographical practice. I recommend to use slightly linear deformation in the wide.

The LaTeX was not specified as necessary in this question, so I use the plainTeX solution. Of course, XeTeX is used as you wish.

\input opmac

\def\titlefont{\typosize[20/25]\bf}

\def\narrowerto #1\hbox#2{\hbox{\pdfsave
\pdfscale{#1}{1}\rlap{#2}\pdfrestore}}

\hbox{\titlefont This is text}
\bigskip
\narrowerto 0.95 \hbox{\titlefont This is text}

\end


You can try to run xetex document.

But if you exactly need to use this bad typographical practice then you can try the following code:

\input opmac

\def\letterspaced #1 #2{\def\tmpb{#2}%
\replacestrings{ }{\ }\replacestrings{}{\kern#1}\tmpb}

\def\titlefont{\typosize[20/25]\bf}

{\titlefont \letterspaced -1pt {This is text}}

\end


You can try to run xetex document.

-
Just a short note that if opmac builds upon plain.tex, then \narrower is already defined. – morbusg May 16 '14 at 19:41
@morbusg: you are right. The original Knuth's \narrower is blocked by the code above. If you need it then use another name. – wipet May 16 '14 at 19:47
The OP is using soul and fontspec, so Plain XeTeX is out of the question. But the attempt is good anyway. – egreg May 16 '14 at 20:09