diff options
author | Norbert Preining <norbert@preining.info> | 2024-01-06 03:01:33 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-01-06 03:01:33 +0000 |
commit | 949a85bb8707bf1aaa2b23b018e24d5001d38e52 (patch) | |
tree | c5af6ca7487e0e439195d0308276267088b67352 /macros/luatex/latex/autotype | |
parent | 387961768f65ec00d171b3781d4b87ea94bb19f5 (diff) |
CTAN sync 202401060301
Diffstat (limited to 'macros/luatex/latex/autotype')
-rw-r--r-- | macros/luatex/latex/autotype/README | 4 | ||||
-rw-r--r-- | macros/luatex/latex/autotype/autotype-de.pdf | bin | 333903 -> 424355 bytes | |||
-rw-r--r-- | macros/luatex/latex/autotype/autotype-de.tex | 590 | ||||
-rw-r--r-- | macros/luatex/latex/autotype/autotype.lua | 28 | ||||
-rw-r--r-- | macros/luatex/latex/autotype/autotype.sty | 4 |
5 files changed, 413 insertions, 213 deletions
diff --git a/macros/luatex/latex/autotype/README b/macros/luatex/latex/autotype/README index 8037418468..dfe3ca6291 100644 --- a/macros/luatex/latex/autotype/README +++ b/macros/luatex/latex/autotype/README @@ -5,8 +5,8 @@ German (old and new orthography). Package authors: S. Hennig and K. Wehr Current maintainer: K. Wehr -Version: 0.4 -Date: 30 October 2023 +Version: 0.5 +Date: 5 January 2024 Bug tracker: https://codeberg.org/wehr/autotype/issues The files of the autotype package are subject to different licences as diff --git a/macros/luatex/latex/autotype/autotype-de.pdf b/macros/luatex/latex/autotype/autotype-de.pdf Binary files differindex 83f0597650..7356d988d8 100644 --- a/macros/luatex/latex/autotype/autotype-de.pdf +++ b/macros/luatex/latex/autotype/autotype-de.pdf diff --git a/macros/luatex/latex/autotype/autotype-de.tex b/macros/luatex/latex/autotype/autotype-de.tex index 8ac83287e7..db99e7f55f 100644 --- a/macros/luatex/latex/autotype/autotype-de.tex +++ b/macros/luatex/latex/autotype/autotype-de.tex @@ -1,24 +1,14 @@ % autotype package: German manual -% Version 0.4 -% Date: 30. Oktober 2023 +% Version 0.5 +% Date: 5. Januar 2024 \PassOptionsToPackage{hyphens}{url} \documentclass{scrartcl} \usepackage[german,ngerman]{babel} \usepackage{autotype} \usepackage{fontspec} \usepackage{biblatex} -% Vermeide einen Konflikt zwischen biblatex und musixtex. -% Siehe https://tex.stackexchange.com/questions/443853/biblatex-and-musixtex-clash -\makeatletter -\let\blx@imc@addspace\addspace -\blx@regimcs{\addspace} -\makeatother \usepackage{csquotes} -\usepackage{cnltx-example} -\usepackage{musixtex} -\input musixlyr -\usepackage{yfonts-otf} -\usepackage{suetterl} +\usepackage{hvextern} \usepackage{paracol} \usepackage[right]{lineno} \usepackage[colorlinks=true, @@ -35,16 +25,7 @@ \addbibresource{blackletter.bib} \addbibresource{dtk-bibliography.bib} -\setcnltx{ - add-cmds = {autotypelangoptions,autotypefontoptions,noligbreak,frakfamily,addfontfeature,suetterlin}, - color-scheme = blue, - add-listings-options = {numbers=none}, -} - -\makeatletter -\setlength{\cnltx@before@skip}{5pt plus1pt minus1pt} -\setlength{\cnltx@after@skip}{5pt plus1pt minus1pt} -\makeatother +\setkeys{hv}{compiler=lualatex,force=true,crop=true,code=true,aboveskip=0.7ex,belowpreambleskip=1ex,lstOptions={basicstyle=\ttfamily,breaklines=true},BGbody=blue!20,BObody=blue!20,mpvalign=c} \setmonofont{Deja Vu Sans Mono}[Scale=MatchLowercase] \autotypelangoptions{ngerman}{ligbreak,hyphenation=weighted} @@ -57,14 +38,14 @@ \newcommand\EMailDomain{dante} \newcommand*\file[1]{\texttt{#1}} \newcommand*\package[1]{\textsc{#1}} -\newcommand\autotype{\textcolor{cnltx}{\package{auto\-type}}} +\newcommand\autotype{\textcolor{blue!50!black}{\package{auto\-type}}} \newcommand\TrennmusterWiki{\url{https://wiki.dante.de/doku.php?id=trennmuster:trennmuster}} \newcommand\TrennmusterMailingList{\texttt{\EMail@\EMailDomain.de}} -\newcommand\FrakturSize{\Large} -\newcommand\FrakturFont{\fontspec{yfrak.otf}} -\newcommand\SuetterlinSize{\LARGE} -\newcommand\fraktur{\FrakturSize\FrakturFont} -\newcommand\BspFrak[1]{\bgroup\FrakturFont #1\egroup} +\newcommand*\command[1]{\mbox{\texttt{\textbackslash\textcolor{red!40!black}{#1}}}} +\newcommand*\meta[1]{\bgroup\rmfamily$\langle$\emph{#1}$\rangle$\egroup} +\newcommand*\marg[1]{\texttt{\{}\meta{#1}\texttt{\}}} +\newcommand*\option[1]{\texttt{\textcolor{green!40!black}{#1}}} +\newcommand*\BspFrak[1]{\bgroup\fontspec{yfrak.otf}#1\egroup} \newenvironment{commandlist}{% \begin{list}{}{% @@ -89,7 +70,7 @@ \NewDocumentCommand \commanddescription {mo} { \item - \cs {#1} + \command {#1} \IfValueT {#2} {#2} \\ } @@ -116,7 +97,7 @@ Automatische sprachspezifische Typographie mit Lua\LaTeX \medskip -Version 0.4 +Version 0.5 \medskip \normalsize @@ -167,7 +148,7 @@ Seit Version 0.4 ist \autotype\ auf dem CTAN verfügbar.\footnote{\url{https://c \begin{commandlist} \commanddescription{autotypelangoptions}[\marg{Sprache}\marg{Optionen}] Legt sprachspezifische Optionen fest. -Die \meta{Sprache} ist dabei die vom Sprachpaket verwendete Sprachbezeichnung. Für das Deutsche ist dies mit \package{polyglossia} immer \code{german}, mit \package{babel} \code{ngerman}, \code{naustrian} oder anders, je nach gewählter Varietät. Die Beispiele in dieser Anleitung setzen die Verwendung von \package{babel} voraus. Die folgenden Optionen stehen zur Verfügung: +Die \meta{Sprache} ist dabei die vom Sprachpaket verwendete Sprachbezeichnung. Für das Deutsche ist dies mit \package{polyglossia} immer \texttt{german}, mit \package{babel} \texttt{ngerman}, \texttt{naustrian} oder anders, je nach gewählter Varietät. Die Beispiele in dieser Anleitung setzen die Verwendung von \package{babel} voraus. Die folgenden Optionen stehen zur Verfügung: \begin{optionlist} \optiondescription{hyphenation}{default,primary,weighted}[default] Silbentrennverfahren: \texttt{default} ist des Standardverfahren von \TeX, \texttt{primary} bedeutet eine Trennung nur an den Wortfugen mit der geringsten Bindungsstärke (Primärtrennstellen), \texttt{weighted} aktiviert einen Trennalgorithmus, der günstigere Trennstellen bevorzugt. Für das Nähere siehe Abschnitt \ref{hyphenation}. @@ -201,7 +182,7 @@ Das gewöhnliche \TeX-Verfahren zur Silbentrennung behandelt alle Trennstellen i \autotype\ unterscheidet zwischen Primär-, Sekundär- und Tertiärtrennstellen. Primärtrennstellen liegen in zusammengesetzten Wörtern sowie Wörtern mit Vor- oder Nachsilben an den Fugen mit der geringsten Bindungsstärke. Sekundärtrennstellen liegen an Fugen der nächstgrößeren Bindungsstärke und Tertiärtrennstellen sind alle übrigen. Die Unterscheidung zwischen den Trennstellenarten erfolgt auf der Grundlage von drei verschiedenen Trennmustersätzen, die vom deutschsprachigen Trennmusterprojekt\footnote{\TrennmusterWiki} zur Verfügung gestellt werden. -In den folgenden Beispielwörtern sind Primärtrennstellen grün, Sekundärtrennstellen blau und Tertiärtrennstellen orange markiert: +In den folgenden Beispielwörtern sind Primärtrennstellen durch einen langen grünen Strich, Sekundärtrennstellen durch einen kurzen blauen Strich unten und Tertiärtrennstellen durch einen kurzen orangen Strich oben markiert: \bgroup \autotypelangoptions{ngerman}{mark-hyph}% Mineralwasser, @@ -210,15 +191,23 @@ Müdigkeit, Bilderbuchsommer, Botaniklehrbuch, Dienstaufsichtsbeschwerde, -Bäckereien. +Bäckereien, +Bedeutung, +Philosophiestudium. \egroup -%\autotypelangoptions{ngerman}{mark-hyph=off} \subsection{Auswahl des Trennverfahrens} Mit der Sprachoption \option{hyphenation=weighted} wird ein gewichtetes Trennverfahren aktiviert. -\begin{sourcecode} - \autotypelangoptions{ngerman}{hyphenation=weighted} -\end{sourcecode} +\begin{externalDocument}[showoutput=false]{hyphenation} +\documentclass{article} +\usepackage[ngerman]{babel} +\usepackage{autotype} +\begin{document} +\autotypelangoptions{ngerman}{hyphenation=weighted} +\end{document} +\end{externalDocument} + +\medskip Dabei stehen alle Trennstellen des gewöhnlichen Trennverfahrens zur Verfügung; sie erhalten jedoch unterschiedlich viele Strafpunkte (\emph{penalties}) und werden daher mit unterschiedlichen Wahrscheinlichkeiten zur Trennung ausgewählt. Während beim Standardtrennverfahren alle Trennstellen mit 50 Strafpunkten versehen werden, wichtet \autotype\ Primärtrennstellen mit \directlua{tex.print(autotype.get_penalty(1))}, Sekundärtrennstellen mit \directlua{tex.print(autotype.get_penalty(2))} und Tertiärtrennstellen mit \directlua{tex.print(autotype.get_penalty(3))} Strafpunkten. In Wörtern mit Bindestrichen (z.\,B. »Konrad-Adenauer-Allee«) gelten die Bindestriche als Primärtrennstellen. Anders als beim Standardtrennverfahren werden auch innerhalb der Teilwörter Trennstellen eingefügt, die unterschiedslos als Tertiärtrennstellen behandelt werden. @@ -226,41 +215,79 @@ In Wörtern mit Bindestrichen (z.\,B. »Konrad-Adenauer-Allee«) gelten die Bind Der Anhang \ref{Kant} stellt die Ergebnisse des gewichteten Trennalgorithmus denen des Standardtrennalgorithmus anhand eines philosophischen Textes von Immanuel Kant gegenüber. Mit \option{hyphenation=primary} werden die möglichen Trennstellen auf die Primärtrennstellen beschränkt. Das erhöht die Lesbarkeit, ist aber nur in Texten mit hinreichend langen Zeilen empfehlenswert. -\begin{sourcecode} - \autotypelangoptions{ngerman}{hyphenation=primary} -\end{sourcecode} +\begin{externalDocument}[showoutput=false]{hyphenation} +\documentclass{article} +\usepackage[ngerman]{babel} +\usepackage{autotype} +\begin{document} +\autotypelangoptions{ngerman}{hyphenation=primary} +\end{document} +\end{externalDocument} +\medskip Außerdem ist es möglich, wieder zum Standardtrennverfahren zurückzukehren. -\begin{sourcecode} - \autotypelangoptions{ngerman}{hyphenation=default} -\end{sourcecode} +\begin{externalDocument}[showoutput=false]{hyphenation} +\documentclass{article} +\usepackage[ngerman]{babel} +\usepackage{autotype} +\begin{document} +\autotypelangoptions{ngerman}{hyphenation=default} +\end{document} +\end{externalDocument} +\medskip Wenn für die Option \option{hyphenation} innerhalb des Dokuments ein neuer Wert gewählt wird, gilt dieser immer rückwirkend ab dem Anfang des Absatzes. \subsection{Anzeige der Trennstellen} Zum Anzeigen von Trennstellen existieren die Pakete \package{showhyphens}\footnote{\url{https://ctan.org/pkg/showhyphens}} und \package{showhyphenation}\footnote{\url{https://ctan.org/pkg/showhyphenation}}. Mit beiden ist es aber nicht möglich, die Trennstellenanzeige innerhalb des Dokuments ein- und auszuschalten und die Trennstellen nach Strafpunkten (\emph{penalties}) differenziert anzuzeigen. -Daher bietet \autotype\ die Option \option{mark-hyph}, mit der Primärtrennstellen grün, Sekundärtrennstellen blau, Tertiärtrennstellen orange und sonstige Trennstellen rot markiert werden. \option{mark-hyph} kann auch für andere Sprachen als Deutsch verwendet werden. -\begin{example}[pre-code={\raggedright}] - \autotypelangoptions{ngerman}{hyphenation=weighted,mark-hyph} - Bundesausbildungsförderungsgesetz Konrad-Adenauer-Allee\par - \autotypelangoptions{ngerman}{hyphenation=default} - Bundesausbildungsförderungsgesetz Konrad-Adenauer-Allee\\ - \autotypelangoptions{ngerman}{mark-hyph=off} - Bundesausbildungsförderungsgesetz Konrad-Adenauer-Allee -\end{example} - +Daher bietet \autotype\ die Option \option{mark-hyph}, mit der Primärtrennstellen grün (langer Strich), Sekundärtrennstellen blau (kurzer Strich unten), Tertiärtrennstellen orange und sonstige Trennstellen rot markiert werden (jeweils kurzer Strich oben). \option{mark-hyph} kann auch für andere Sprachen als Deutsch verwendet werden.% +\begin{externalDocument}{hyphenation} +\documentclass[11pt]{article} +\usepackage[ngerman]{babel} +\usepackage{autotype} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +\autotypelangoptions{ngerman}{hyphenation=weighted,mark-hyph} +Sozialhilferegelsatz Konrad-Adenauer-Allee\par +\autotypelangoptions{ngerman}{hyphenation=default} +Sozialhilferegelsatz Konrad-Adenauer-Allee\\ +\autotypelangoptions{ngerman}{mark-hyph=off} +Sozialhilferegelsatz Konrad-Adenauer-Allee +\end{document} +\end{externalDocument} \subsection{Bekannte Probleme} \begin{itemize} \item Die Übersetzung des Dokuments verlangsamt sich bei Verwendung des gewichteten Trennalgorithmus (Option \option{hyphenation=weighted}) erheblich. -\item Die Werte von \cs{lefthyphenmin} und \cs{righthyphenmin} liegen mit \option{hyphenation=weighted} und \option{hyphenation=primary} konstant bei \texttt{2}. Sie sollten besser aus dem Sprachpaket übernommen werden, um anpassbar zu sein. +\item Die Werte von \command{lefthyphenmin} und \command{righthyphenmin} liegen mit \option{hyphenation=\mbox{weighted}} und \option{hyphenation=primary} konstant bei \texttt{2}. Sie sollten besser aus dem Sprachpaket übernommen werden, um anpassbar zu sein. +\item Mit \option{hyphenation=weighted} und \option{hyphenation=primary} werden auch Textteile in Schreibmaschinenschrift getrennt, was in \LaTeX\ eigentlich nicht vorgesehen ist, da für solche Schriften der Wert von \command{hyphenchar} auf \texttt{-1} gesetzt wird. +\begin{externalDocument}{hyphenation} +\documentclass[11pt]{article} +\usepackage[ngerman]{babel} +\usepackage{autotype} +\pagestyle{empty} +\begin{document} +\autotypelangoptions{ngerman}{mark-hyph=on} +Botaniklehrbuch \texttt{Botaniklehrbuch}\par +\autotypelangoptions{ngerman}{hyphenation=weighted} +Botaniklehrbuch \texttt{Botaniklehrbuch} +\end{document} +\end{externalDocument} \item Nach einem explizit eingegebenen Gedankenstrich/Streckenstrich (\texttt{U+2013}) wird bei allen Trennverfahren keine Trennstelle eingefügt. Falls hier ein Umbruch gewünscht wird, muss der \package{babel}-Shorthand \verb:"": oder die alternative Eingabe \verb:--: verwendet werden. -\begin{sidebyside} - Freitag ist auf der Strecke Hamburg–Berlin mit Stau zu rechnen.\\ - Freitag ist auf der Strecke Hamburg–""Berlin mit Stau zu rechnen.\\ - Freitag ist auf der Strecke Hamburg--Berlin mit Stau zu rechnen. -\end{sidebyside} +\begin{externalDocument}{hyphenation} +\documentclass[11pt]{article} +\usepackage[ngerman]{babel} +\pagestyle{empty} +\begin{document} +\begin{minipage}{6cm} +Heute ist auf der Strecke Hamburg–Berlin mit Stau zu rechnen.\\ +Heute ist auf der Strecke Hamburg–""Berlin mit Stau zu rechnen.\\ +Heute ist auf der Strecke Hamburg--Berlin mit Stau zu rechnen. +\end{minipage} +\end{document} +\end{externalDocument} \end{itemize} \section{Ligaturaufbruch\label{ligbreak}} @@ -270,34 +297,62 @@ Die Pseudotrennmuster für den Ligaturaufbruch werden vom deutschsprachigen Tren \subsection{Anwendung} Der automatische Ligaturaufbruch wird durch die Option \option{ligbreak} aktiviert. -\begin{example}[pre-code={\raggedright\autotypelangoptions{ngerman}{ligbreak=off}}] - Auffahrt Auflage Tarifinformation Kunststoffindustrie\\ - \autotypelangoptions{ngerman}{ligbreak} - Auffahrt Auflage Tarifinformation Kunststoffindustrie -\end{example} +\begin{externalDocument}{ligbreak} +\documentclass[11pt]{article} +\usepackage[ngerman]{babel} +\usepackage{autotype} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +Auffahrt Auflage Tarifinformation Kunststoffindustrie\\ +\autotypelangoptions{ngerman}{ligbreak} +Auffahrt Auflage Tarifinformation Kunststoffindustrie +\end{document} +\end{externalDocument} Zwar kommen Ligaturen mit \emph{f} als erstem Buchstaben am häufigsten vor, doch sind die verwendeten Muster nicht auf solche beschränkt, sondern verhindern auch exotischere Ligaturen. -\begin{example}[pre-code={\raggedright\autotypelangoptions{ngerman}{ligbreak=off}}] - \setmainfont{Libertinus Serif}[Ligatures=Rare,Ligatures=Historic] - Abgastest Tagestourist Besetztzeichen Leitzinssatz\\ - \autotypelangoptions{ngerman}{ligbreak} - Abgastest Tagestourist Besetztzeichen Leitzinssatz -\end{example} - -Falls eine Ligatur nicht wie erwartet aufgebrochen wird, steht der herkömmliche \package{babel}-Shorthand \verb:"|: für diesen Zweck zur Verfügung. Falls eine Ligatur fälschlich aufgebrochen wird, kann mit dem Befehl \cs{noligbreak}, der als Argument ein Wort oder eine Buchstabengruppe erwartet, der Aufbruch verhindert werden; alternativ ist es möglich, an der Wortfuge einen der \package{babel}-Shorthands \verb:"|: oder \verb:"-: zu setzen. -\begin{example}[pre-code={\raggedright}] - \autotypelangoptions{ngerman}{ligbreak} - Graufliege \noligbreak{Graufliege} Grau"|fliege Grau"-fliege -\end{example} +\begin{externalDocument}{ligbreak} +\documentclass[11pt]{article} +\usepackage[ngerman]{babel} +\usepackage{fontspec} +\usepackage{autotype} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +\fontspec{Libertinus Serif}[Ligatures=Rare,Ligatures=Historic] +Abgastest Tagestourist Besetztzeichen Leitzinssatz\\ +\autotypelangoptions{ngerman}{ligbreak} +Abgastest Tagestourist Besetztzeichen Leitzinssatz +\end{document} +\end{externalDocument} + +Falls eine Ligatur nicht wie erwartet aufgebrochen wird, steht der herkömmliche \package{babel}-Shorthand \verb:"|: für diesen Zweck zur Verfügung. Falls eine Ligatur fälschlich aufgebrochen wird, kann mit dem Befehl \command{noligbreak}, der als Argument ein Wort oder eine Buchstabengruppe erwartet, der Aufbruch verhindert werden; alternativ ist es möglich, an der Wortfuge einen der \package{babel}-Shorthands \verb:"|: oder \verb:"-: zu setzen. +\begin{externalDocument}{ligbreak} +\documentclass[11pt]{article} +\usepackage[ngerman]{babel} +\usepackage{autotype} +\pagestyle{empty} +\begin{document} +\autotypelangoptions{ngerman}{ligbreak} +Graufliege \noligbreak{Graufliege} Grau"|fliege Grau"-fliege +\end{document} +\end{externalDocument} Betroffene Wörter sollten in beiden Fällen an das deutschsprachige Trennmusterprojekt\footnote{\TrennmusterMailingList} gemeldet werden, damit die Muster verbessert werden können. Um den automatischen Ligaturaufbruch gänzlich wieder abzuschalten, gibt es die Option \option{ligbreak=off}. -\begin{example}[pre-code={\raggedright}] - \autotypelangoptions{ngerman}{ligbreak} - Schaffell Zupfinstrument Topflappen\\ - \autotypelangoptions{ngerman}{ligbreak=off} - Schaffell Zupfinstrument Topflappen -\end{example} +\begin{externalDocument}{ligbreak} +\documentclass[11pt]{article} +\usepackage[ngerman]{babel} +\usepackage{autotype} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +\autotypelangoptions{ngerman}{ligbreak} +Schaffell Zupfinstrument Topflappen\\ +\autotypelangoptions{ngerman}{ligbreak=off} +Schaffell Zupfinstrument Topflappen +\end{document} +\end{externalDocument} \subsection{Bekannte Probleme und offene Fragen} \begin{itemize} @@ -313,11 +368,19 @@ Es wäre ein Leichtes für \autotype, an solchen Stellen einen kleinen Zusatzabs \item Wenn eine Dreierligatur (zu denken ist in erster Linie an \emph{ffi}, \emph{ſſi} und \emph{ffl}) möglich ist, die Schrift aber nur Zweierligaturen kennt, werden die ersten beiden Buchstaben ligiert. Wenn allerdings nach dem ersten Buchstaben der Dreiergruppe eine Silbentrennstelle vorliegt, sollten stattdessen der zweite und dritte Buchstabe ligiert werden. Beispiele hierfür wären \emph{Offizier, Meſſias, Soufflé}. Da die meisten Digitalschriften über die Dreierligatur verfügen, wenn auch die entsprechenden Zweierligaturen vorhanden sind, ergibt sich das Problem nur selten. Das einzige bekannte Beispiel ist die recht spezielle Schrift \emph{Missaali}, eine spätmittelalterliche gotische Druckschrift (vgl. auch Abschnitt \ref{missaali}). -\begin{sidebyside}[pre-output={\FrakturSize}] - \fontspec{Missaali} - Offizier Meſſias Soufflé\\ - Of"|fizier Meſ"|ſias Souf"|flé -\end{sidebyside} + +\begin{externalDocument}[mpwidth=0.5\textwidth]{long-s} +\documentclass[DIV=8,fontsize=16pt]{scrartcl} +\usepackage[german]{babel} +\usepackage{fontspec} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +\fontspec{Missaali} +Offizier Meſſias Soufflé\\ +Of"|fizier Meſ"|ſias Souf"|flé +\end{document} +\end{externalDocument} \end{itemize} \section{Lang-s und Rund-s\label{long-s}} @@ -329,38 +392,76 @@ In der frühen Neuzeit war das Lang-s auch in Antiqua-Schriften üblich, wenn au \subsection{Anwendung} Die automatische Lang- und Rund-s-Schreibung wird durch die Option \option{long-s} aktiviert. Diese sollte immer mit der Option \option{ligbreak} kombiniert werden, da die korrekte Verwendung der Ligaturen im Fraktursatz noch wichtiger ist als im Antiquasatz. Für die folgenden Beispiele verwenden wir die Schrift \texttt{yfrak.otf} (vgl. Abschnitt \ref{yfonts}). -\begin{example}[pre-output={\selectlanguage{german}\fraktur\raggedright}] - aussichtslos Abschiedsbesuch Atemschutzmaske Massenarbeitslosigkeit\\ - \autotypelangoptions{german}{ligbreak,long-s} - aussichtslos Abschiedsbesuch Atemschutzmaske Massenarbeitslosigkeit -\end{example} - -Falls die automatische Ersetzung nicht zum richtigen Ergebnis führt, können die Befehle \cs{autotypelongs} und \cs{autotyperounds} verwendet werden, um manuell ein Lang- bzw. Rund-s einzufügen. Das ist etwa im folgenden Beispiel nützlich, wenn es sich um eine \emph{Wachs-Tube} und keine \emph{Wach-Stube} handelt. Alternativ helfen hier auch die \package{babel}-Shorthands \verb:"|: und \verb:"-: an der Wortfuge. -\begin{sidebyside}[pre-output={\autotypelangoptions{ngerman}{long-s}\fraktur}] - Wachstube\\ - Wach\autotyperounds tube\\ - Wachs"|tube\\ - Wachs"-tube -\end{sidebyside} +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=15pt]{scrartcl} +\usepackage[german]{babel} +\usepackage{fontspec} +\usepackage{autotype} +\setmainfont{yfrak.otf} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +aussichtslos Abschiedsbesuch Atemschutzmaske Massenarbeitslosigkeit\\ +\autotypelangoptions{german}{ligbreak,long-s} +aussichtslos Abschiedsbesuch Atemschutzmaske Massenarbeitslosigkeit +\end{document} +\end{externalDocument} + +Falls die automatische Ersetzung nicht zum richtigen Ergebnis führt, können die Befehle \command{autotypelongs} und \command{autotyperounds} verwendet werden, um manuell ein Lang- bzw. Rund-s einzufügen. Das ist etwa im folgenden Beispiel nützlich, wenn es sich um eine \emph{Wachs-Tube} und keine \emph{Wach-Stube} handelt. Alternativ helfen hier auch die \package{babel}-Shorthands \verb:"|: und \verb:"-: an der Wortfuge.\\ +\begin{externalDocument}[mpwidth=0.5\textwidth]{long-s} +\documentclass[DIV=8,fontsize=15pt]{scrartcl} +\usepackage[german]{babel} +\usepackage{fontspec} +\usepackage{autotype} +\setmainfont{yfrak.otf} +\autotypelangoptions{german}{long-s} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +Wachstube\\ +Wach\autotyperounds tube\\ +Wachs"|tube\\ +Wachs"-tube +\end{document} +\end{externalDocument} +\\ Betroffene Wörter sollten außer bei Homographen wie den oben genannten an das deutschsprachige Trennmusterprojekt\footnote{\TrennmusterMailingList} gemeldet werden, damit die Muster verbessert werden können. -Die automatische Ersetzung kann mit der Option \option{long-s=off} wieder abgeschaltet werden. Die Befehle \cs{autotypelongs} und \cs{autotyperounds} bleiben auch dann verfügbar. +Die automatische Ersetzung kann mit der Option \option{long-s=off} wieder abgeschaltet werden. Die Befehle \command{autotypelongs} und \command{autotyperounds} bleiben auch dann verfügbar. Falls keine weiteren Einstellungen vorgenommen wurden, geht \autotype\ davon aus, dass sich Lang- und Rund-s auf den durch Unicode definierten Codepositionen befinden, nämlich 383 (\texttt{U+017F}) für das Lang-s und 115 (\texttt{U+0073}) für das Rund-s. Für Opentype-Schriften ist diese Annahme zutreffend, für andere Schriftformate typischerweise nicht. Für solche Schriften müssen die Codepositionen daher mit Hilfe der Schriftoptionen \option{long-s-codepoint} und \option{round-s-codepoint} angegeben werden. Beispielsweise lautet für die Sütterlinschrift \texttt{schwell} (vgl. Abschnitt \ref{suetterlin}) der nötige Befehl: -\begin{sourcecode} - \autotypefontoptions{schwell}{long-s-codepoint=115,round-s-codepoint=28} -\end{sourcecode} +\begin{externalDocument}[showoutput=false]{long-s} +\documentclass{article} +\usepackage{autotype} +\begin{document} +\autotypefontoptions{schwell}{long-s-codepoint=115,round-s-codepoint=28} +\end{document} +\end{externalDocument} + +\medskip Alternativ ist die hexadezimale Schreibweise möglich. -\begin{sourcecode} - \autotypefontoptions{schwell}{long-s-codepoint=0x73,round-s-codepoint=0x1C} -\end{sourcecode} +\begin{externalDocument}[showoutput=false]{long-s} +\documentclass{article} +\usepackage{autotype} +\begin{document} +\autotypefontoptions{schwell}{long-s-codepoint=0x73,round-s-codepoint=0x1C} +\end{document} +\end{externalDocument} Für spezielle Anwendungen wird zusätzlich noch die Option \option{final-round-s-codepoint} benötigt, siehe Abschnitt \ref{suetterlin}. Für den Satz mit gebrochenen Schriften ist generell die deutsche Rechtschreibregelung von 1901 (»alte Rechtschreibung«) vorzuziehen, da die Schreibung der s-Laute hier besser ins Schriftbild passt. Bei Verwendung der Konventionen von 1996 (»neue Rechtschreibung«) wird ein Doppel-s am Wortende als \BspFrak{\autotypelongs\autotyperounds} wiedergegeben. -\begin{example}[pre-output={\fraktur\raggedright}] - \autotypelangoptions{ngerman}{ligbreak,long-s} - Abschiedskuss Kongressbeschluss Messstelle -\end{example} +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=15pt]{scrartcl} +\usepackage[ngerman]{babel} +\usepackage{fontspec} +\usepackage{autotype} +\setmainfont{yfrak.otf} +\pagestyle{empty} +\begin{document} +\autotypelangoptions{ngerman}{ligbreak,long-s} +Abschiedskuss Kongressbeschluss Messstelle +\end{document} +\end{externalDocument} \subsection{Beispiele} Wir stellen die konkrete Anwendung der Option \option{long-s} mit verschiedenen frei verfügbaren gebrochenen Schriften vor. @@ -369,119 +470,210 @@ Wir stellen die konkrete Anwendung der Option \option{long-s} mit verschiedenen Diese Schriften von Yannis Haralambous -- ursprünglich mit Metafont entworfen \cite{haralambous}, dann nach Type1 konvertiert \cite{dtk03.2:bronger:einfaches,dtk03.3:hoffmann-axthelm:fraktur} -- liegen seit 2022 auch im Opentype-Format\footnote{\url{https://ctan.org/pkg/yfonts-otf}} vor. Bei \texttt{ygoth} handelt es sich um eine gotische Schrift nach dem Vorbild der Schrift Gutenbergs und anderer Druckschriften des 15. Jahrhunderts. -\begin{example}[pre-output={\selectlanguage{german}\FrakturSize\raggedright}] - \autotypelangoptions{german}{ligbreak,long-s} - \fontspec{ygoth.otf} - Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. -\end{example} +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=15pt]{scrartcl} +\usepackage[german]{babel} +\usepackage{fontspec} +\usepackage{autotype} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +\autotypelangoptions{german}{ligbreak,long-s} +\fontspec{ygoth.otf} +Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. +\end{document} +\end{externalDocument} \texttt{yswab} ist eine Schwabacher Schrift nach Vorlagen des 18. Jahrhunderts. -\begin{example}[pre-output={\selectlanguage{german}\FrakturSize\raggedright}] - \autotypelangoptions{german}{ligbreak,long-s} - \fontspec{yswab.otf} - Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. -\end{example} +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=15pt]{scrartcl} +\usepackage[german]{babel} +\usepackage{fontspec} +\usepackage{autotype} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +\autotypelangoptions{german}{ligbreak,long-s} +\fontspec{yswab.otf} +Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. +\end{document} +\end{externalDocument} Die Schrift \texttt{yfrak} ist eine digitalisierte Variante der Breitkopf-Fraktur aus der Mitte des 18. Jahrhunderts, einer bis ins 20. Jahrhundert vielfach genutzten Frakturschrift. -\begin{example}[pre-output={\selectlanguage{german}\FrakturSize\raggedright}] - \autotypelangoptions{german}{ligbreak,long-s} - \fontspec{yfrak.otf} - Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. -\end{example} - -Das Paket \package{yfonts-otf.sty} stellt zur Schriftauswahl die Befehle \cs{gothfamily}, \cs{swabfamily} und \cs{frakfamily} zur Verfügung. Zur Verwendung mit \autotype\ sind diese aber weniger geeignet, da mit ihnen auch das Opentype-Merkmal \texttt{ss11} aktiviert wird, hinter dem sich ein eigener Algorithmus zum Lang- und Rund-s-Satz verbirgt, dessen Fehler \autotype\ nicht in allen Fällen korrigieren kann. Wenn jene Befehle gemeinsam mit \autotype\ verwendet werden sollen, muss anschließend jeweils das Merkmal \texttt{ss11} deaktivert werden. -\begin{example}[pre-output={\selectlanguage{german}\FrakturSize\raggedright}] - \autotypelangoptions{german}{ligbreak,long-s} - \frakfamily - % falsche s-Schreibung mit ss11 - Aischylos Couscous Disco Eschatologie Ischias Ismaning Sanskrit \\ - \addfontfeature{RawFeature=-ss11} - % richtige s-Schreibung mit autotype - Aischylos Couscous Disco Eschatologie Ischias Ismaning Sanskrit -\end{example} +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=15pt]{scrartcl} +\usepackage[german]{babel} +\usepackage{fontspec} +\usepackage{autotype} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +\autotypelangoptions{german}{ligbreak,long-s} +\fontspec{yfrak.otf} +Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. +\end{document} +\end{externalDocument} + +Das Paket \package{yfonts-otf.sty} stellt zur Schriftauswahl die Befehle \command{gothfamily}, \command{swabfamily} und \command{frakfamily} zur Verfügung. Zur Verwendung mit \autotype\ sind diese aber weniger geeignet, da mit ihnen auch das Opentype-Merkmal \texttt{ss11} aktiviert wird, hinter dem sich ein eigener Algorithmus zum Lang- und Rund-s-Satz verbirgt, dessen Fehler \autotype\ nicht in allen Fällen korrigieren kann. Wenn jene Befehle gemeinsam mit \autotype\ verwendet werden sollen, muss anschließend jeweils das Merkmal \texttt{ss11} deaktiviert werden.% +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=15pt]{scrartcl} +%StartVisiblePreamble +\usepackage[german]{babel} +\usepackage{yfonts-otf} +\usepackage{autotype} +%StopVisiblePreamble +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +\autotypelangoptions{german}{ligbreak,long-s} +\frakfamily % falsche s-Schreibung mit ss11 +Aischylos Couscous Disco Eschatologie Ischias Ismaning Sanskrit \\ +\addfontfeature{RawFeature=-ss11} % richtige s-Schreibung mit autotype +Aischylos Couscous Disco Eschatologie Ischias Ismaning Sanskrit +\end{document} +\end{externalDocument} \subsubsection{Missaali\label{missaali}} \emph{Missaali} von Tommi Syrjänen ist eine freie gebrochene Schrift im Opentype-Format. Vorlage ist die gotische Schrift eines im späten Mittelalter für Finnland gedruckten Messbuchs. Eine umfangreiche Dokumentation liegt vor.\footnote{\url{https://ctan.org/pkg/missaali}} Nach historischem Vorbild setzt \emph{Missaali} ein Lang-s im Wortinnern und ein Rund"~s am Wortende, wofür das Opentype-Merkmal \texttt{calt} (Contextual Alternates) genutzt wird. Sollen Lang- und Rund-s stattdessen nach den komplexeren deutschen Regeln gesetzt werden, muss dieses Merkmal mit Hilfe der entsprechenden \package{fontspec}-Option ausgeschaltet werden. Dadurch geht allerdings auch die automatische Einfügung des Rund-r an bestimmten Stellen\footnote{Vgl. \package{Missaali}-Anleitung, Abschnitt 3, S. 21 unten.} verloren. -\begin{example}[pre-output={\selectlanguage{german}\FrakturSize\raggedright}] - \fontspec{Missaali}[Contextuals=AlternateOff] - \autotypelangoptions{german}{ligbreak,long-s} - Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. -\end{example} +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=16pt]{scrartcl} +\usepackage[german]{babel} +\usepackage{fontspec} +\usepackage{autotype} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +\fontspec{Missaali}[Contextuals=AlternateOff] +\autotypelangoptions{german}{ligbreak,long-s} +Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. +\end{document} +\end{externalDocument} \subsubsection{Ligafaktur-Schriften\label{ligafaktur}} Auf der Seite \url{https://www.ligafaktur.de} wird eine Reihe von Frakturschriften in drei unterschiedlichen Varianten bezüglich der vorhandenen Ligaturen angeboten: LUC, LOB und LOV. Für die Verwendung mit \autotype\ sind die LOB-Schriften am besten geeignet. -\begin{example}[pre-code={\raggedright\selectlanguage{german}\FrakturSize}] - \autotypelangoptions{german}{ligbreak,long-s} - \fontspec{LOB.TheuerdankFraktur} - Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. -\end{example} +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=15pt]{scrartcl} +\usepackage[german]{babel} +\usepackage{fontspec} +\usepackage{autotype} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +\autotypelangoptions{german}{ligbreak,long-s} +\fontspec{LOB.TheuerdankFraktur} +Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. +\end{document} +\end{externalDocument} \subsubsection{Sütterlinschrift\label{suetterlin}} Auf dem CTAN findet man verschiedene Varianten der Sütterlinschrift, die in der ersten Hälfte des 20. Jahrhunderts als Schulausgangsschrift verwendet wurde. Sie wurden von Walter Entenmann\footnote{\url{https://ctan.org/pkg/schulschriften}} und Berthold Ludewig\footnote{\url{https://ctan.org/pkg/sueterlin}} bereitgestellt. Es handelt sich in beiden Fällen um T1-codierte Metafont-Schriften, die ausnahmsweise nicht mit der Option \option{ligbreak} benutzt werden sollten, da diese die Buchstabenverbindungen an den Wortfugen zerstört. Das Paket \package{schulschriften} von W. Entenmann \cite{dtk12.4:entenmann:schulschriften} stellt eine ganze Sippe von zwölf Sütterlinschriften zur Verfügung, die sich durch die Strichstärke, die Neigung und die Art der Feder unterscheiden. Wir führen im folgenden Beispiel zwei dieser Schriften vor und verweisen für die übrigen auf die Paketanleitung. Die Schriften haben zwei verschiedene Rund-s-Formen: eine Binnenform mit Anschluss an den Folgebuchstaben und eine Schlussform. Die Schlussform muss \autotype\ mit der Schriftoption \option{final-round-s-codepoint} bekannt gemacht werden. Die Codepositionen der s-Formen sind für alle Schriften gleich, müssen aber für jede verwendete Variante separat angegeben werden, da alle Varianten unterschiedliche \TeX-Namen tragen. Die Verdopplung des Doppelpunkts bei Wörtern, die auf \emph{s} enden (vgl. Paketanleitung), entfällt bei Verwendung der \autotype-Option \option{long-s}. -\begin{example}[pre-output={\selectlanguage{german}\SuetterlinSize\raggedright}] - \usefont{T1}{wesu}{m}{n} - \autotypefontoptions{wesu14}{long-s-codepoint=115,round-s-codepoint=24,final-round-s-codepoint=25} - \autotypelangoptions{german}{long-s} - Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk.\\ - \usefont{T1}{wesu}{b}{sl} - \autotypefontoptions{wesubsl14}{long-s-codepoint=115,round-s-codepoint=24,final-round-s-codepoint=25} - Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. -\end{example} - -Die Sütterlinschrift von B. Ludewig gibt es in zwei Varianten: einer aufrechten mit dem Namen \texttt{suet14} und einer geneigten mit dem Namen \texttt{schwell} (siehe auch \cite[39\psqq]{dtk96.1:neugebauer:krakelig}). Die Verwendung wird durch das Hilfspaket \package{suetterl}\footnote{\url{https://ctan.org/pkg/fundus-sueterlin}} erleichtert, das den Schriftauswahlbefehl \cs{suetterlin} bereitstellt und \texttt{schwell} als Kursive von \texttt{suet14} definiert. -\begin{sourcecode} - \usepackage{suetterl} -\end{sourcecode} -\begin{example}[pre-output={\selectlanguage{german}\huge\raggedright}] - \autotypefontoptions{suet14}{long-s-codepoint=115,round-s-codepoint=28} - \autotypefontoptions{schwell}{long-s-codepoint=115,round-s-codepoint=28} - \autotypelangoptions{german}{long-s} - \suetterlin - Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk.\\ - \itshape - Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. -\end{example} +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=17pt]{scrartcl} +\setlength\parindent{0pt} +%StartVisiblePreamble +\usepackage[german]{babel} +\usepackage{autotype} +\autotypefontoptions{wesu14}{long-s-codepoint=115,round-s-codepoint=24,final-round-s-codepoint=25} +\autotypefontoptions{wesubsl14}{long-s-codepoint=115,round-s-codepoint=24,final-round-s-codepoint=25} +%StopVisiblePreamble +\pagestyle{empty} +\begin{document} +\autotypelangoptions{german}{long-s} +\usefont{T1}{wesu}{m}{n} +Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk.\\ +\usefont{T1}{wesu}{b}{sl} +Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. +\end{document} +\end{externalDocument} + +Die Sütterlinschrift von B. Ludewig gibt es in zwei Varianten: einer aufrechten mit dem Namen \texttt{suet14} und einer geneigten mit dem Namen \texttt{schwell} (siehe auch \cite[39\psqq]{dtk96.1:neugebauer:krakelig}). Die Verwendung wird durch das Hilfspaket \package{suetterl}\footnote{\url{https://ctan.org/pkg/fundus-sueterlin}} erleichtert, das den Schriftauswahlbefehl \command{suetterlin} bereitstellt und \texttt{schwell} als Kursive von \texttt{suet14} definiert. +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=20pt]{scrartcl} +\setlength\parindent{0pt} +%StartVisiblePreamble +\usepackage[german]{babel} +\usepackage{autotype} +\usepackage{suetterl} +\autotypefontoptions{suet14}{long-s-codepoint=115,round-s-codepoint=28} +\autotypefontoptions{schwell}{long-s-codepoint=115,round-s-codepoint=28} +%StopVisiblePreamble +\pagestyle{empty} +\begin{document} +\autotypelangoptions{german}{long-s} +\suetterlin +Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk.\\ +\itshape +Oskar entschied sich angesichts des aussichtslosen Wassermangels zur Umsiedlung von Moskau nach Minsk. +\end{document} +\end{externalDocument} \subsection{Bekannte Probleme und offene Fragen} \begin{itemize} +\parskip=\dimexpr\baselineskip-3mm-\parsep \item Die zur Zeit vorliegenden Pseudotrennmuster für die s-Schreibung berücksichtigen zwar die alte und neue deutsche Rechtschreibung, nicht jedoch die Schweizer Orthographie. Bei Wörtern wie »ausser« oder »Stoss« führt dies zu falschen s-Schreibungen (\BspFrak{\autotypelangoptions{ngerman}{long-s}ausser, Stoss}). Fraglich ist, ob die Schreibung mit Doppel-s im Fraktursatz bei solchen Wörtern überhaupt jemals praktiziert wurde oder ob auch in der Schweiz hier das ß genutzt wurde. \item Bei Verwendung von Gesangstexten in \package{musixtex}/\package{musixlyr} muss der Text mit expliziten Trennstellen eingegeben werden. Dies kann zu falschen s-Schreibungen führen, insbesondere am Silbenende. -\begin{example}[pre-output={\autotypelangoptions{ngerman}{long-s}\FrakturFont}] - \begin{music} - \nobarnumbers - \generalsignature{1} - \generalmeter{\meterfrac{2}{4}} - \setlyrics{Text}{Ging ein Weib-lein Nüs-se schüt-teln} - \assignlyrics{1}{Text} - \startextract - \Notes\ca{g}\ca{g}\ca{f}\ca{e}\en\bar - \Notes\ca{d}\ca{d}\ca{g}\ca{g}\en - \endextract - \end{music} -\end{example} +\begin{externalDocument}{long-s} +\documentclass[12pt]{article} +%StartVisiblePreamble +\usepackage[german]{babel} +\usepackage{fontspec} +\usepackage{autotype} +\usepackage{musixtex} +\input{musixlyr} +\setmainfont{yfrak.otf} +\autotypelangoptions{german}{long-s} +%StopVisiblePreamble +\pagestyle{empty} +\begin{document} +\begin{music} +\nobarnumbers +\generalsignature{1} +\generalmeter{\meterfrac{2}{4}} +\setlyrics{Text}{Ging ein Weib-lein Nüs-se schüt-teln} +\assignlyrics{1}{Text} +\startextract +\Notes\ca{g}\ca{g}\ca{f}\ca{e}\en\bar +\Notes\ca{d}\ca{d}\ca{g}\ca{g}\en +\endextract +\end{music} +\end{document} +\end{externalDocument} \item Bei Opentype-Schriften, die das Merkmal \texttt{calt} (Contextual Alternates) oder ein anderes Opentype-Merkmal nutzen, um Rund- und Lang-s nach eigenen Regeln zu setzen, funktioniert die s-Ersetzung durch \autotype\ nicht. Das Merkmal muss daher ausgeschaltet werden; siehe den Abschnitt \ref{missaali} für ein Beispiel. \item Falls in einer Abkürzung ein Lang-s am Wortende stehen soll, kann dieses nicht automatisch gesetzt werden, da die Trennmuster immer nur Stellen zwischen zwei Buchstaben bezeichnen und sich die Markierung im Falle der s-Schreibung vereinbarungsgemäß auf den vorangehenden Buchstaben bezieht. Am Wortende setzt der Algorithmus unabhängig von den Mustern stets ein Rund-s. Ein Beispiel wäre die Abkürzung »StAss« für »Studienassessor«. Fraglich ist, ob solche Abkürzungen überhaupt in Fraktur zu setzen sind. \item Falls eine Schriftart eine Ligatur aus Rund-s und einem weiteren Buchstaben definiert, deren Glyphe ein Lang-s enthält, führt dies zu falscher s-Schreibung. Zwar wird von \autotype\ zunächst ein Rund-s eingefügt, doch verschwindet dieses anschließend wieder durch die Ligatur. Auch die Option \option{ligbreak} verhindert das in einigen Fällen nicht. -\begin{example}[pre-output={\selectlanguage{german}\FrakturSize}] - \fontspec{Missaali}[Contextuals=AlternateOff] - \autotypelangoptions{german}{long-s} - Eislauf Auslosung Haustier Breslau Moslem\\ - \autotypelangoptions{german}{ligbreak,long-s} - Eislauf Auslosung Haustier Breslau Moslem -\end{example} +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=16pt]{scrartcl} +\usepackage[german]{babel} +\usepackage{fontspec} +\usepackage{autotype} +\pagestyle{empty} +\setlength\parindent{0pt} +\begin{document} +\fontspec{Missaali}[Contextuals=AlternateOff] +\autotypelangoptions{german}{long-s} +Eislauf Auslosung Haustier Breslau Moslem\\ +\autotypelangoptions{german}{ligbreak,long-s} +Eislauf Auslosung Haustier Breslau Moslem +\end{document} +\end{externalDocument} \item Bei einer Nicht-Opentype-Schriftfamilie mit mehreren Schriften (z.\,B. die Sütterlinschrift aus dem Paket \package{schulschriften}, siehe Abschnitt \ref{suetterlin}) müssen die Codepositionen der s-Glyphen für alle Einzelschriften separat festgelegt werden, da die Schriften unterschiedliche \TeX-Namen haben. Besser wäre eine pauschale Festlegung für die ganze Schriftfamilie. Deren Name ist im \LaTeX-Makro\ \verb:\f@family: abgelegt. Wie er in Lua\TeX\ abgefragt werden kann, muss noch untersucht werden. -\item Bei den im Abschnitt \ref{suetterlin} beschriebenen Sütterlinschriften wird ein Lang-s vor einem Trennstrich durch ein Rund-s ersetzt. Die geschieht auch ohne die \autotype-Option \option{long-s} und liegt an einer entsprechenden Definition in den Ligaturtabellen der Schriften, die wohl eigentlich für Wörter mit Bindestrich gedacht war. -\begin{example}[pre-output={\selectlanguage{german}\SuetterlinSize}] - \usefont{T1}{wesu}{m}{n} - \autotypefontoptions{wesu14}{long-s-codepoint=115,round-s-codepoint=24,final-round-s-codepoint=25} - \autotypelangoptions{german}{long-s} - Wasser Wasser Wasser Wasser Wasser Wasser Wasser -\end{example} - +\item Bei den im Abschnitt \ref{suetterlin} beschriebenen Sütterlinschriften wird ein Lang-s vor einem Trennstrich durch ein Rund-s ersetzt. Die geschieht auch ohne die \autotype-Option \option{long-s} und liegt an einer entsprechenden Definition in den Ligaturtabellen der Schriften, die wohl eigentlich für Wörter mit Bindestrich gedacht war.% +\begin{externalDocument}{long-s} +\documentclass[DIV=8,fontsize=17pt]{scrartcl} +\usepackage[german]{babel} +\usepackage{autotype} +\pagestyle{empty} +\begin{document} +\usefont{T1}{wesu}{m}{n} +\autotypefontoptions{wesu14}{long-s-codepoint=115,round-s-codepoint=24,final-round-s-codepoint=25} +\autotypelangoptions{german}{long-s} +\parbox{6cm}{Wasser Wasser Wasser Wasser} +\end{document} +\end{externalDocument} \end{itemize} \printbibliography[heading=subbibnumbered,title={Literatur zum Satz gebrochener Schriften mit \TeX}] diff --git a/macros/luatex/latex/autotype/autotype.lua b/macros/luatex/latex/autotype/autotype.lua index b75bc26b64..e7ea16404d 100644 --- a/macros/luatex/latex/autotype/autotype.lua +++ b/macros/luatex/latex/autotype/autotype.lua @@ -1,5 +1,5 @@ -- autotype.lua --- Copyright 2020-2023 Stephan Hennig and Keno Wehr +-- Copyright 2020-2024 Stephan Hennig and Keno Wehr --[[ This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 @@ -14,8 +14,8 @@ version 2005/12/01 or later. luatexbase.provides_module({ name = "autotype", - version = "0.4", - date = "2023-10-30", + version = "0.5", + date = "2024-01-05", description = "automatic language-specific typography" }) @@ -52,7 +52,7 @@ local final_round_s_codepoint = {} local function normalize_font(TeX_font_name) -- We have to do some normalization of the name of the current font. -- Examples: The yfrak font at 11pt is called "yfrak at 10.95pt" by TeX, but we need only "yfrak". - -- The yfrak font becomes something like "yfont+100ls" if it is letterspaced (e.g. with microtype's \textls commmand), + -- The yfrak font becomes something like "yfrak+100ls" if it is letterspaced (e.g. with microtype's \textls commmand), -- but again, we only need "yfrak". return string.gsub(TeX_font_name, "[ :%+].*", "") end @@ -159,11 +159,13 @@ end local function insert_tertiary_hyphenation_points(head, original_word, start_number, end_number, scan_node_list) local node_list = NLcopy(original_word.nodes[start_number], original_word.nodes[end_number].next) local words = scan_node_list(node_list) - for i, level in ipairs(words[1].levels) do - local j = start_number + i - 1 - -- Spot with surrounding top-level nodes? - if (level % 2 == 1) and not original_word.parents[j-1] and not original_word.parents[j] then - insert_discretionary(head, original_word.nodes[j-1], original_word.nodes[j], PENALTY_III, HYPHEN) + if #words > 0 then + for i, level in ipairs(words[1].levels) do + local j = start_number + i - 1 + -- Spot with surrounding top-level nodes? + if (level % 2 == 1) and not original_word.parents[j-1] and not original_word.parents[j] then + insert_discretionary(head, original_word.nodes[j-1], original_word.nodes[j], PENALTY_III, HYPHEN) + end end end end @@ -264,7 +266,13 @@ local function mark_hyphenation_points(head, lang_name) else local n = node.new("whatsit", "pdf_literal") n.mode = 0 - n.data = "q "..colour.." RG 0.7 w 0 2 m 0 8 l S Q" + if current.penalty == PENALTY_I then + n.data = "q "..colour.." RG 0.7 w 0 -1 m 0 8 l S Q" + elseif current.penalty == PENALTY_II then + n.data = "q "..colour.." RG 0.7 w 0 -1 m 0 3 l S Q" + else + n.data = "q "..colour.." RG 0.7 w 0 4 m 0 8 l S Q" + end n.next = current.next current.next.prev = n n.prev = current diff --git a/macros/luatex/latex/autotype/autotype.sty b/macros/luatex/latex/autotype/autotype.sty index 6275a771d9..245098ff20 100644 --- a/macros/luatex/latex/autotype/autotype.sty +++ b/macros/luatex/latex/autotype/autotype.sty @@ -1,5 +1,5 @@ %% autotype.sty -%% Copyright 2020-2023 Stephan Hennig and Keno Wehr +%% Copyright 2020-2024 Stephan Hennig and Keno Wehr % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -8,7 +8,7 @@ % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. -\ProvidesExplPackage {autotype} {2023-10-30} {0.4} {automatic language-specific typography} +\ProvidesExplPackage {autotype} {2024-01-05} {0.5} {automatic language-specific typography} % Variables \str_new:N \l_autotype_lang_str % for storing a language name |