There are several ways to accomplish your objective. One of them -- I trust additional methods will be posted by other readers -- is to employ LuaTeX's process_input_buffer
callback to replace all instances of ...
with \dots
. This approach ensures that text-style ellipses will be used in text mode and math-style ellipses will be used in math mode. If you want text-mode ellipses throughout the entire document, you should replace
s = s:gsub ( '%.%.%.', '\\dots{}' )
with
s = s:gsub ( '%.%.%.', '\\char"2026{}' )
in the Lua function shown below.
An advantage of this preprocessor-based approach is that you have to run the code just once, for the entire document. A potential disadvantage could be that you can't disable or enable this feature selectively for some fonts but not for others.

\documentclass{article}
\usepackage{fontspec} % 'Ligatures={TeX,Common}' is enabled by default
\setmainfont{Minion Pro}[Numbers={OldStyle,Proportional}]
\setsansfont{Myriad Pro}[Numbers={OldStyle,Proportional}, Scale=MatchLowercase]
\usepackage{luacode}
\begin{luacode}
function dots2ellipsis ( s )
s = s:gsub ( '%.%.%.', '\\dots{}' )
return s
end
\end{luacode}
\AtBeginDocument{\directlua{luatexbase.add_to_callback (
"process_input_buffer" , dots2ellipsis , "dots2ellipsis" )}}
\begin{document}
abc123 -- --- ... | $...$
\sffamily
abc123 -- --- ... | $...$
\end{document}
xelatex teckit
) which do regex replacement at font-level, for example, typingpuo
producesꁄ
. You can create your own maps. They are activated as afontspec
option. Alternatively, with utf-8 file format, unicode characters can be typed in (or input via the text editor) directly,æ ¾ ą — ℉ ℊ
and so on. Alternatively again, for small volumes, the charcode method can be used: ^^^^^13153 produces 𓅓, Egyptian hieroglyph G017 owl. Figure dash, en dash and em dash (‒ – —
) are U+2012, U+2013, U+2014.\newcommand\mydots{^^^^2026}
and use it:X \mydots Y
. Does it have to be Tex ligatures?