8

When I compile the code below with XeLaTeX (using TeXworks), ligatures for Times New Roman do not show. Instead, I just get singular characters.

\documentclass{article}

\usepackage{fontspec}

\setmainfont[Mapping=tex-text,Ligatures=TeX,Scale=1.05]{Times New Roman}

\begin{document}

Ligatures: fi fl ffl

\end{document}

I have tried Ligatures={Common} and Ligatures={Common, TeX} instead of Ligatures=TeX (found in this answer), but there is no difference. I've checked the font map for Times New Roman (v.6.85) and the Unicode characters FB01 and FB02 are present with the expected ligatures.

However, when I do not specify the font, the above (thus set in Computer Modern) does have ligatures.

It is not terribly important for me to use Times New Roman, but it has IPA characters (which I need for my linguistics thesis), and old style numerals and small caps (which I like).

Is there a way for me to get Times New Roman to show these ligatures?

5
  • 2
    Imho they are not activated and can't be accessed by the ligature option. But if the glyphs are there then it should be possible to create a mapping file to use them. tex.stackexchange.com/questions/227341/… Feb 25, 2015 at 15:53
  • 2
    Linux Libertine O is a good alternative with old style numerals, small caps (even bold small caps), full IPA coverage (except for the labiodental flap [ⱱ]), and decent diacritic placement. It has the ligatures you want, plus several more, and they work fine with XeLaTeX, even decomposing correctly in the PDF for searching and copy-and-pasting. I use fontspec to access the lining numerals in glosses and example numbers and the old style numerals elsewhere in my thesis. Feb 25, 2015 at 16:55
  • That is a beautiful-looking font, Jason Zentz. I might just try it. Regarding your last sentence: how did you make fontspec use lining numerals in glosses and examples but not elsewhere? I looked at the documention but I'm still unsure. Feb 25, 2015 at 21:43
  • Sorry, didn't know about the author-tag function. How did you set up fontspec the way you described @JasonZentz ? Mar 2, 2015 at 8:25
  • @P.deRijke, I can't really fit my code for that in a comment, and I think it would be better suited as an answer to a follow-up question, anyway. So feel free to ask that in a new question and I'd be happy to answer. Mar 2, 2015 at 17:33

2 Answers 2

11

Prepare a new map file, I called it rijke.map

; TECkit mapping for TeX input conventions <-> Unicode characters

LHSName "TeX-text"
RHSName "UNICODE"

pass(Unicode)

; ligatures from Knuth's original CMR fonts
U+002D U+002D           <>  U+2013  ; -- -> en dash
U+002D U+002D U+002D    <>  U+2014  ; --- -> em dash

U+0027          <>  U+2019  ; ' -> right single quote
U+0027 U+0027   <>  U+201D  ; '' -> right double quote
U+0022           >  U+201D  ; " -> right double quote

U+0060          <>  U+2018  ; ` -> left single quote
U+0060 U+0060   <>  U+201C  ; `` -> left double quote

U+0021 U+0060   <>  U+00A1  ; !` -> inverted exclam
U+003F U+0060   <>  U+00BF  ; ?` -> inverted question

; additions supported in T1 encoding
U+002C U+002C   <>  U+201E  ; ,, -> DOUBLE LOW-9 QUOTATION MARK
U+003C U+003C   <>  U+00AB  ; << -> LEFT POINTING GUILLEMET
U+003E U+003E   <>  U+00BB  ; >> -> RIGHT POINTING GUILLEMET

; additions for f ligatures
;U+0066 U+0066 U+0069 <> U+FB03 ; LATIN SMALL LIGATURE FFI
;U+0066 U+0066 U+006C <> U+FB04 ; LATIN SMALL LIGATURE FFL
;U+0066 U+0066        <> U+FB00 ; LATIN SMALL LIGATURE FF
U+0066 U+0069        <> U+FB01 ; LATIN SMALL LIGATURE FI
U+0066 U+006C        <> U+FB02 ; LATIN SMALL LIGATURE FL

The basis is the standard tex-text.map file found in TeX Live. The “ff” ligatures are commented out, because my copy of Times New Roman doesn't support them.

Now compile it

teckit_compile rijke.map

This will produce a rijke.tec file; if you keep it along your document, the input

\documentclass{article}

\usepackage{fontspec}

\setmainfont[Mapping=rijke,Scale=1.05]{Times New Roman}

\begin{document}

Ligatures: ff ffi ffl fi fl 

\end{document}

will produce

enter image description here

7
  • Thanks for the detailed solution. I did not know this was possible. Feb 25, 2015 at 21:39
  • 1
    It worked for me. However, my copy of Times New Roman also does not support "ff" ligatures. Any idea where and how to get one that does? May 18, 2016 at 22:32
  • @FrankEjbyPoulsen Try TeX Gyre Termes
    – egreg
    May 19, 2016 at 5:54
  • How do I create a .map file?
    – ahorn
    Apr 28, 2017 at 9:39
  • @ahorn I usually copy tex-text.map in a working directory, with a different name, and modify it like in the example above. The base file is found in the TeX tree; in TeX Live it is at /usr/local/texlive/<year>/texmf-dist/fonts/misc/xetex/fontmapping/base/tex-text.map (use the proper value for <year>, such as 2016).
    – egreg
    Apr 28, 2017 at 9:50
5

In Windows 10 1803, it seems Times New Roman has been updated to version 7.00, and some (more) ligatures have been added (but into dlig lookup, rather than the more widely-used liga). We can then use fontspec to turn on this feature:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\begin{document}
\verb|Default:                  |
fi fj fl ff ffi ffj ffl Th

\verb|Ligatures=Discretionary:  |
{\fontspec{Times New Roman}[Ligatures=Discretionary] % or `Ligatures=Rare`
fi fj fl ff ffi ffj ffl Th}
\end{document}

image

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .