The long s (ſ)

1,204 views
Skip to first unread message

j. 'mach' wust

unread,
Sep 26, 2011, 12:56:30 PM9/26/11
to LaTeX Users Group
Hi all

There has been a thread for this topic quite a while ago. They
recommended the kpfonts font package. Somewhere else, I have found a
recommendation of the oldlatin font package. Both solutions seem
overly complicated since the long s (ſ) already figures in the Latin
Modern font. I have not found any documentation of how to access it,
though.

I have figured out a way of accessing Latin Modern's long s (ſ) in
XeLaTeX: Load the fontspec package; type an actual «ſ» (long s); run
xelatex. Here is a minimal document for it:

\documentclass{article}
\usepackage{fontspec}
\begin{document}
ſ
\end{document}

Is there a way of accessing the Latin Modern long s (ſ) in LaTeX, too?
Also, I am surprised that the fontspec package is required. I thought
that XeTeX (and XeLaTeX) allowed straightforward Unicode input. For
the record, I have no idea what the fontspec package does.

--
grüess
mach

jon

unread,
Sep 29, 2011, 2:43:39 PM9/29/11
to LaTeX Users Group
On Sep 26, 12:56 pm, "j. 'mach' wust" <j_mach_w...@shared-files.de>
wrote:
i think you have found the best way to access it: xe(la)tex. or use
lua(la)tex. fontspec is the package you need to use in either case if
you want 'straightforward' unicode input (*tex requires the loading of
packages in pretty much all cases...). you should read the fontspec
documentation: texdoc fontspec --- if you're on a *nix system.

cheers,
jon.

Mico Loretan

unread,
Oct 4, 2011, 6:31:39 AM10/4/11
to LaTeX Users Group
What's "overly complicated" about issuing the command
\usepackage[veryoldstyle]{kpfonts}
in your document's preamble? Sincerely, Mico

On Sep 26, 12:56 pm, "j. 'mach' wust" <j_mach_w...@shared-files.de>
wrote:

j. 'mach' wust

unread,
Oct 6, 2011, 7:03:21 AM10/6/11
to LaTeX Users Group
Sure, you can use kpfonts, and sure, "overly complicated" may have
been a bit too harsh.

However, when I use kpfonts and I do not want every single "s" to show
up as "ſ", then I have to do the following:

\documentclass{article}
\usepackage{kpfonts}
\begin{document}
{\fontfamily{jkpvos}\selectfont{}s}
\end{document}

I for one think that typing "{\fontfamily{jkpvos}\selectfont{}s}" is
considerably more complicated than typing "ſ", especially if it is "ſ"
that I want, and more especially in the age of Unicode and stuff.
Unless – of course – there is another way to produce "ſ" with kpfonts
that I do not know (is there?).

Additionally, why should I have to recur to another font given that
Latin Modern already features the long s (ſ) character? That seems
unnecessary.

Granted, by using kpfonts, the long s (ſ) character can be produced in
plain latex, while the method from my first post requires xelatex.
Then again, the kpfonts method (as in this post) does not work in
xelatex (why?). So if for some reason you do not want to use xelatex
(or lualatex), then kpfonts seems to be the way to go:


1. xe/lua(la)tex method for producing "ſ"
Font: default (Latin Modern)
Packages: \usepackage{fontspec}
Input that will produce "ſ": ſ


2. (la)tex method for producing "ſ"
Font: Kp-Fonts
Packages: \usepackage{kpfonts}
Input that will produce "ſ": {\fontfamily{jkpvos}\selectfont{}s}

--
grüess
mach

jon

unread,
Oct 6, 2011, 10:08:02 AM10/6/11
to LaTeX Users Group
On Oct 6, 7:03 am, "j. 'mach' wust" <j_mach_w...@shared-files.de>
wrote:
> Sure, you can use kpfonts, and sure, "overly complicated" may have
> been a bit too harsh.
>
> However, when I use kpfonts and I do not want every single "s" to show
> up as "ſ", then I have to do the following:
>
> \documentclass{article}
> \usepackage{kpfonts}
> \begin{document}
> {\fontfamily{jkpvos}\selectfont{}s}
> \end{document}
>
> I for one think that typing "{\fontfamily{jkpvos}\selectfont{}s}" is
> considerably more complicated than typing "ſ", especially if it is "ſ"
> that I want, and more especially in the age of Unicode and stuff.
> Unless – of course – there is another way to produce "ſ" with kpfonts
> that I do not know (is there?).

if you want to use kpfonts, wrap it in a command called, say, \longs.
(assuming that's not defined elsewhere.)

cheers,
jon.

Peter Flynn

unread,
Oct 6, 2011, 4:01:01 PM10/6/11
to latexus...@googlegroups.com
On Thu, Oct 6, 2011 at 3:08 PM, jon <jonwro...@gmail.com> wrote:
On Oct 6, 7:03 am, "j. 'mach' wust" <j_mach_w...@shared-files.de>
wrote:
> Sure, you can use kpfonts, and sure, "overly complicated" may have
> been a bit too harsh.
>
> However, when I use kpfonts and I do not want every single "s" to show
> up as "ſ", then I have to do the following:
>
> \documentclass{article}
> \usepackage{kpfonts}
> \begin{document}
> {\fontfamily{jkpvos}\selectfont{}s}
> \end{document}
>
> I for one think that typing "{\fontfamily{jkpvos}\selectfont{}s}" is
> considerably more complicated than typing "ſ", especially if it is "ſ"
> that I want, and more especially in the age of Unicode and stuff.

You should just be able to type the character nowadays (with some help from messieurs Alt, Shift, and Control).
 
> Unless – of course – there is another way to produce "ſ" with kpfonts
> that I do not know (is there?).

if you want to use kpfonts, wrap it in a command called, say, \longs.
(assuming that's not defined elsewhere.)

This puzzles me too. The definition for the long s is in uni-1.def:

\uc@dclc{383}{autogenerated}{\unichar{115}}%

but it's not clear to me where the autogenerated option is supposed to go.

\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\begin{document}
This is a long `ſ'
\end{document}

gives me the error below, and typing 'h' does indeed tell me that it needs the autogenerated option:

! Package ucs Error: Unknown Unicode character 383 = U+017F,
(ucs)                possibly declared in uni-1.def.
(ucs)                Type H to see if it is available with options.

See the ucs package documentation for explanation.
Type  H <return>  for immediate help.
...                                             
                                                 
l.6 This is a long `ſ
                      '
? h
Unicode character 383 = U+017F:
LATIN SMALL LETTER LONG S
Character available with following options:
   autogenerated.
Enter I!<RET> to define the glyph.
?

So if I add (as a new line 2 in my file)

\usepackage[autogenerated]{ucs}

(because utf8x preloads ucs, so putting this before it makes it preload with the autogenerated option). This now runs without error, but creates a PDF with the normal lowercase curly 's' instead.

I think this needs the expertise of comp.text.tex

///Peter

Peter Flynn

unread,
Oct 7, 2011, 6:30:22 PM10/7/11
to latexus...@googlegroups.com
A swift answer from Ulrike Fischer over on comp.text.tex: the character ſ is encoded in TS1, not T1, so you need to do it like this:

\documentclass{article}
\usepackage[autogenerated]{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[TS1,T1]{fontenc}
\usepackage{lmodern}
\begin{document}
This is a long `{\fontencoding{TS1}\selectfont ſ}'
\end{document}

It should be possible to rewrite the appropriate line in uni-1.def so that the character invokes the right encoding, but I don't have an answer to that yet.

///Peter



Mico Loretan

unread,
Oct 8, 2011, 10:16:56 AM10/8/11
to LaTeX Users Group
Building on Ulrike's and Peter's code, the following commands show how
one might define a new macro, "\s", to access the "long s" if you
can't input it directly:
\usepackage[T1,TS1]{fontenc}
\usepackage{lmodern}
\newcommand{\s}{\fontencoding{TS1}\char115} % "long" s
... and later on in the document ...
This \s illy discu\s sion about the long \s\ is \s imply ab\s
urd. :-)

Cheers, Mico

j. 'mach' wust

unread,
Oct 9, 2011, 5:56:01 AM10/9/11
to LaTeX Users Group
On Oct 8, 4:16 pm, Mico Loretan wrote:
>     \newcommand{\s}{\fontencoding{TS1}\char115} % "long" s

That seems not to work. Put it like this:

\newcommand{\s}{{\fontencoding{TS1}\selectfont\char115}}

>     This \s illy discu\s sion about the long \s\ is \s imply ab\s
> urd. :-)

:)

--
grüess
mach
Reply all
Reply to author
Forward
0 new messages