Skip to content

Commit

Permalink
Merge branch 'hotfix/fontspec'
Browse files Browse the repository at this point in the history
  • Loading branch information
mrpiggi committed Nov 29, 2015
2 parents ca611d2 + 3ad80af commit 17102f4
Show file tree
Hide file tree
Showing 4 changed files with 164 additions and 96 deletions.
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ Das Bundle beinhaltet:
Versionen
---------

**v2.04c** (2015/11/29)

+ Bugfix für fehlenden Schriften bei Verwendung von Paket `fontspec`


**v2.04b** (2015/10/06)

+ Bugfix für KOMA-Script v3.19
Expand Down Expand Up @@ -177,6 +182,11 @@ The bundle offers:
Versions
--------

**v2.04c** (2015/11/29)

+ bug fix for missing fonts when using package `fontspec`


**v2.04b** (2015/10/06)

+ bug fix for KOMA-Script v3.19
Expand Down
2 changes: 1 addition & 1 deletion source/doc/tudscr.tex
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
\endgroup%
}
\faculty{\protect\cdurl}
\date{06.10.2015}
\date{29.11.2015}
\author{Falk Hanisch\thanks{\noexpand\Email{\tudscrmail}}}
\subject{\TUDScript{} \vTUDScript{} basierend auf \KOMAScript{}}
\title{%
Expand Down
246 changes: 152 additions & 94 deletions source/tudscr-fonts.dtx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
% \CheckSum{1300}
% \CheckSum{1323}
% \iffalse meta-comment
%
% ============================================================================
Expand Down Expand Up @@ -51,7 +51,7 @@
%<*driver>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\ProvidesFile{tudscr-fonts.dtx}[%
2015/06/12 v2.04 TUD-KOMA-Script\space%
2015/11/29 v2.04c TUD-KOMA-Script\space%
%</driver>
%<package&identify>\NeedsTeXFormat{LaTeX2e}
%<package&identify>\ProvidesPackage{%
Expand Down Expand Up @@ -91,6 +91,8 @@
% \changes{v2.02}{2014/08/29}{Unterstützung für \pkg{fontspec}}^^A
% \changes{v2.04}{2015/02/27}{Interaktion mit Paketen insbesondere für
% den Mathematiksatz verbessert}^^A
% \changes{v2.04c}{2015/11/29}{Bugfix für \pkg{fontspec} bei fehlenden
% Schriften}^^A
%
% \section{Schriften des \CDs}
%
Expand Down Expand Up @@ -453,19 +455,64 @@
% \end{macro}^^A \tud@font@check
% \begin{macro}{\tud@font@init}
% \changes{v2.04}{2014/03/10}{neu}^^A
% \begin{macro}{\textuln}
% \begin{macro}{\texturn}
% \begin{macro}{\textubn}
% \begin{macro}{\textuxn}
% \begin{macro}{\textuls}
% \begin{macro}{\texturs}
% \begin{macro}{\textubs}
% \begin{macro}{\textuxs}
% \begin{macro}{\textdbn}
% Das Makro \cs{tud@font@init} wird für die Defintion aller Befehle zur Auswahl
% der Schriften des \CDs verwendet. Er wird als Hook genutzt und abhängig vom
% Schalter \cs{if@tud@fontspec} entweder für die Verwendung von \pkg{fontspec}
% oder des NFSS-Schemas mit \cs{preto}\cs{tud@font@init}\marg{Makro} angepasst.
% \begin{macrocode}
\newcommand*\tud@font@init{%
% \end{macrocode}
% Außerdem werden für die Schriften noch die entsprechenden Textauswahlbefehle
% bereitgestellt.
% \begin{macrocode}
\newcommand*\textuln{}%
\newcommand*\texturn{}%
\newcommand*\textubn{}%
\newcommand*\textuxn{}%
\newcommand*\textuls{}%
\newcommand*\texturs{}%
\newcommand*\textubs{}%
\newcommand*\textuxs{}%
\newcommand*\textdbn{}%
\DeclareTextFontCommand{\textuln}{\univln}%
\DeclareTextFontCommand{\texturn}{\univrn}%
\DeclareTextFontCommand{\textubn}{\univbn}%
\DeclareTextFontCommand{\textuxn}{\univxn}%
\DeclareTextFontCommand{\textuls}{\univls}%
\DeclareTextFontCommand{\texturs}{\univrs}%
\DeclareTextFontCommand{\textubs}{\univbs}%
\DeclareTextFontCommand{\textuxs}{\univxs}%
\DeclareTextFontCommand{\textdbn}{\dinbn}%
% \end{macrocode}
% Nach der optionsabhängigen Definition der Schriftauswahlbefehle werden die
% Initialisierungsbefehle undefiniert gesetzt.
% \begin{macrocode}
\newcommand*\tud@font@init{%
\undef\tud@font@init@fontspec%
\undef\tud@fontface%
\undef\tud@fontspec@flag%
\undef\tud@fontspec@error%
\undef\tud@font@init@nfss%
\undef\tud@font@init%
}
% \end{macrocode}
% \end{macro}^^A \textdbn
% \end{macro}^^A \textuxs
% \end{macro}^^A \textubs
% \end{macro}^^A \texturs
% \end{macro}^^A \textuls
% \end{macro}^^A \textuxn
% \end{macro}^^A \textubn
% \end{macro}^^A \texturn
% \end{macro}^^A \textuln
% \end{macro}^^A \tud@font@init
% \begin{macro}{\univln}
% \begin{macro}{\univrn}
Expand All @@ -475,136 +522,147 @@
% \begin{macro}{\univrs}
% \begin{macro}{\univbs}
% \begin{macro}{\univxs}
% \begin{macro}{\textuln}
% \begin{macro}{\texturn}
% \begin{macro}{\textubn}
% \begin{macro}{\textuxn}
% \begin{macro}{\textuls}
% \begin{macro}{\texturs}
% \begin{macro}{\textubs}
% \begin{macro}{\textuxs}
% \begin{macro}{\dinbn}
% \begin{macro}{\@dinbn}
% \begin{macro}{\textdbn}
% Es werden mehrere Schalter zur expliziten Auswahl für die Schriftschnitte
% Univers~45~Light, Univers~55~Regular, Univers~65~Bold, Univers~75~Black,
% Univers~45~Light~Oblique, Univers~55~Regular~Oblique, Univers~65~Bold~Oblique
% sowie Univers~75~Black~Oblique und DIN~Bold definiert. Diese können so im
% Dokument unabhängig von der Option \opt{cdfont} genutzt werden. Bei der
% Schriftauswahl der DIN~Bold wird neben dieser noch die entsprechende
% Mathematikschrift aktiviert.
% Mathematikschrift aktiviert. Dabei ist zu beachten, dass die Schriften evtl.
% gar nicht installiert sind und für diesen Fall eine Rückfallebene notwendig
% ist.
% \begin{macro}{\tud@font@init@fontspec}
% \changes{v2.04}{2014/03/10}{neu}^^A
% Zuerst wird das Makro für die Defintion nach \pkg{fontspec}-Manier definiert,
% danach .
% \begin{macrocode}
\newcommand*\tud@font@init@fontspec{%
% \end{macrocode}
% Für die Schriften werden hierfür feste NFSS-Namen vergeben, um diese unter
% anderem auch beim Setzen des Kopfes im \CD der \TnUD explizit auswählen zu
% können.
% \begin{macrocode}
\newfontface\univln{Univers Light}[NFSSFamily=UniversLight]%
\newfontface\univrn{Univers}[NFSSFamily=UniversRegular]%
\newfontface\univbn{Univers Bold}[NFSSFamily=UniversBold]%
\newfontface\univxn{Univers Black}[NFSSFamily=UniversBlack]%
\newfontface\univls{Univers Light Oblique}[NFSSFamily=UniversLightOblique]%
\newfontface\univrs{Univers Oblique}[NFSSFamily=UniversRegularOblique]%
\newfontface\univbs{Univers Bold Oblique}[NFSSFamily=UniversBoldOblique]%
\newfontface\univxs{Univers Black Oblique}[NFSSFamily=UniversBlackOblique]%
\newcommand*\textuln[1]{{\univln##1}}%
\newcommand*\texturn[1]{{\univrn##1}}%
\newcommand*\textubn[1]{{\univbn##1}}%
\newcommand*\textuxn[1]{{\univxn##1}}%
\newcommand*\textuls[1]{{\univls##1}}%
\newcommand*\texturs[1]{{\univrs##1}}%
\newcommand*\textubs[1]{{\univbs##1}}%
\newcommand*\textuxs[1]{{\univxs##1}}%
% \begin{macro}{\if@tud@fontspec@missing}
% \changes{v2.04c}{2015/11/29}{neu}^^A
% \begin{macro}{\tud@fontface}
% \changes{v2.04c}{2015/11/29}{neu}^^A
% \begin{macro}{\tud@fontspec@flag}
% \changes{v2.04c}{2015/11/29}{neu}^^A
% \begin{macro}{\tud@fontspec@error}
% \changes{v2.04c}{2015/11/29}{neu}^^A
% Leider exisitiert im Paket \pkg{fontspec} keine einfache Möglichkeit, auf das
% Vorhandensein von Schriften zu testen. Deshalb wird hier etwa getrickst, um
% die Schriften nur zu laden, falls diese auch tatsächlich existieren und die
% ggf. auftrtende Fehlermeldung zu unterdrücken.
% \begin{macrocode}
\newif\if@tud@fontspec@missing
\newcommand*\tud@font@init@fontspec{}
% \end{macrocode}
% Alles etwas umständlich, aber leider geht es nicht anders. Um die Fehler
% zu unterdrücken, ist die Syntax von \LaTeX{}3 notwendig. Es wird mit
% dem Paket \pkg{xparse} der Befehl \cs{tud@fontface} welcher eigentlch den
% Befehl \cs{newfontface} nutzt und für denn Fall, dass keine Schrift
% exisitiert, den entsprechenden Befehl leer definiert.
% \begin{macrocode}
\IfFileExists{xparse.sty}{\@tempswatrue}{\@tempswafalse}%
\if@tempswa
\RequirePackage{xparse}
\newcommand*\tud@fontspec@flag{\global\@tud@fontspec@missingtrue\@gobbletwo}%
\NewDocumentCommand\tud@fontface{mmo}{%
\global\@tud@fontspec@missingfalse%
\newfontface#1{#2}[#3]%
\if@tud@fontspec@missing%
\renewrobustcmd*#1{}%
\fi%
}%
% \end{macrocode}
% Nach der Univers-Schriftfamilie wird für DIN~Bold äquivalent verfahren.
% Um die Fehler bei dem Laden der Schrift zu unterdrücken, wird der dafür
% verantwortliche Befehl gesichertr und anschließend passend neu definiert.
% \begin{macrocode}
\ExplSyntaxOn
\renewcommand*\tud@font@init@fontspec{%
\cs_set_eq:NN \tud@fontspec@error \__fontspec_error:nx
\cs_set_eq:NN \__fontspec_error:nx \tud@fontspec@flag
% \end{macrocode}
% Für die Schriften werden feste NFSS-Namen vergeben, um diese unter anderem
% auch beim Setzen des Kopfes im \CD der \TnUD explizit auswählen zu können.
% \begin{macrocode}
\tud@fontface\univln{Univers Light}[NFSSFamily=UniversLight]%
\tud@fontface\univrn{Univers}[NFSSFamily=UniversRegular]%
\tud@fontface\univbn{Univers Bold}[NFSSFamily=UniversBold]%
\tud@fontface\univxn{Univers Black}[NFSSFamily=UniversBlack]%
\tud@fontface\univls{Univers Light Oblique}[NFSSFamily=UniversLightOblique]%
\tud@fontface\univrs{Univers Oblique}[NFSSFamily=UniversRegularOblique]%
\tud@fontface\univbs{Univers Bold Oblique}[NFSSFamily=UniversBoldOblique]%
\tud@fontface\univxs{Univers Black Oblique}[NFSSFamily=UniversBlackOblique]%
% \end{macrocode}
% Nach der Univers-Schriftfamilie wird für DIN~Bold äquivalent verfahren. Da
% dieser Schriftschnitt zwingend für die Überschriften benötigt wird, sollte
% dieser zumindest auch auf deren Stil schalten.
% \begin{macrocode}
\tud@fontface\@dinbn{DIN Bold}[NFSSFamily=DINBold,BoldFont = DIN Bold]%
\if@tud@fontspec@missing%
\newrobustcmd*\dinbn{\sectfont}%
\else%
\if@tud@dinbold%
\newrobustcmd*\dinbn{\@dinbn\mathversion{dinbold}}%
\else%
\newrobustcmd*\dinbn{\@dinbn}%
\fi%
\fi%
% \end{macrocode}
% Zum Schluss wird noch die Fehlermeldungen auf ihre ursprüngliche Definition
% gesetzt und damit ist der ganze Zauber vorbei.
% \begin{macrocode}
\newfontface\@dinbn{DIN Bold}[NFSSFamily=DINBold,BoldFont = DIN Bold]%
\newcommand*\dinbn{\@dinbn\if@tud@dinbold\mathversion{dinbold}\fi}%
\newcommand*\textdbn[1]{{\dinbn##1}}%
}
\cs_set_eq:NN \__fontspec_error:nx \tud@fontspec@error
}%
\ExplSyntaxOff
\fi%
% \end{macrocode}
% \end{macro}^^A \tud@fontspec@error
% \end{macro}^^A \tud@fontspec@flag
% \end{macro}^^A \tud@fontface
% \end{macro}^^A \if@tud@fontspec@missing
% \end{macro}^^A \tud@font@init@fontspec
% \begin{macro}{\tud@font@init@nfss}
% \changes{v2.04}{2014/03/10}{neu}^^A
% Falls \opt{fontspec} nicht aktiv ist, werden die Schriften klassisch nach dem
% NFSS definiert.
% NFSS definiert. Sind die Univer-Schriften installiert, dann werden dazu
% passende Schalter erstellt.
% \begin{macrocode}
\newcommand*\tud@font@init@nfss{%
\if@tud@univers%
\newcommand*\univln{\usefont{\encodingdefault}{\tud@univers}{l}{n}}%
\newcommand*\univrn{\usefont{\encodingdefault}{\tud@univers}{m}{n}}%
\newcommand*\univbn{\usefont{\encodingdefault}{\tud@univers}{b}{n}}%
\newcommand*\univxn{\usefont{\encodingdefault}{\tud@univers}{eb}{n}}%
\newcommand*\univls{\usefont{\encodingdefault}{\tud@univers}{l}{sl}}%
\newcommand*\univrs{\usefont{\encodingdefault}{\tud@univers}{m}{sl}}%
\newcommand*\univbs{\usefont{\encodingdefault}{\tud@univers}{b}{sl}}%
\newcommand*\univxs{\usefont{\encodingdefault}{\tud@univers}{eb}{sl}}%
\newrobustcmd*\univln{\usefont{\encodingdefault}{\tud@univers}{l}{n}}%
\newrobustcmd*\univrn{\usefont{\encodingdefault}{\tud@univers}{m}{n}}%
\newrobustcmd*\univbn{\usefont{\encodingdefault}{\tud@univers}{b}{n}}%
\newrobustcmd*\univxn{\usefont{\encodingdefault}{\tud@univers}{eb}{n}}%
\newrobustcmd*\univls{\usefont{\encodingdefault}{\tud@univers}{l}{sl}}%
\newrobustcmd*\univrs{\usefont{\encodingdefault}{\tud@univers}{m}{sl}}%
\newrobustcmd*\univbs{\usefont{\encodingdefault}{\tud@univers}{b}{sl}}%
\newrobustcmd*\univxs{\usefont{\encodingdefault}{\tud@univers}{eb}{sl}}%
% \end{macrocode}
% Ansonsten werden die Schalter für die Rückfallebene so definert, dass diese
% einfach nichts machen.
% \begin{macrocode}
\else%
\newcommand*\univln{}%
\newcommand*\univrn{}%
\newcommand*\univbn{}%
\newcommand*\univxn{}%
\newcommand*\univls{}%
\newcommand*\univrs{}%
\newcommand*\univbs{}%
\newcommand*\univxs{}%
\newrobustcmd*\univln{}%
\newrobustcmd*\univrn{}%
\newrobustcmd*\univbn{}%
\newrobustcmd*\univxn{}%
\newrobustcmd*\univls{}%
\newrobustcmd*\univrs{}%
\newrobustcmd*\univbs{}%
\newrobustcmd*\univxs{}%
\fi%
% \end{macrocode}
% Außerdem werden für die Schriften noch die entsprechenden Textauswahlbefehle
% bereitgestellt.
% \begin{macrocode}
\newcommand*\textuln{}%
\newcommand*\texturn{}%
\newcommand*\textubn{}%
\newcommand*\textuxn{}%
\newcommand*\textuls{}%
\newcommand*\texturs{}%
\newcommand*\textubs{}%
\newcommand*\textuxs{}%
\DeclareTextFontCommand{\textuln}{\univln}%
\DeclareTextFontCommand{\texturn}{\univrn}%
\DeclareTextFontCommand{\textubn}{\univbn}%
\DeclareTextFontCommand{\textuxn}{\univxn}%
\DeclareTextFontCommand{\textuls}{\univls}%
\DeclareTextFontCommand{\texturs}{\univrs}%
\DeclareTextFontCommand{\textubs}{\univbs}%
\DeclareTextFontCommand{\textuxs}{\univxs}%
% \end{macrocode}
% Nach der Univers-Schriftfamilie wird für DIN~Bold äquivalent verfahren.
% \begin{macrocode}
\if@tud@dinbold%
\newcommand*\dinbn{%
\newrobustcmd*\dinbn{%
\usefont{\encodingdefault}{\tud@dinbold}{b}{n}%
\mathversion{dinbold}%
}%
\else%
\let\dinbn\sectfont%
\newrobustcmd*\dinbn{\sectfont}%
\fi%
\newcommand*\textdbn{}%
\DeclareTextFontCommand{\textdbn}{\dinbn}%
}
% \end{macrocode}
% \end{macro}^^A \tud@font@init@fontspec
% \end{macro}^^A \textdbn
% \end{macro}^^A \tud@font@init@nfss
% \end{macro}^^A \@dinbn
% \end{macro}^^A \dinbn
% \end{macro}^^A \textuxs
% \end{macro}^^A \textubs
% \end{macro}^^A \texturs
% \end{macro}^^A \textuls
% \end{macro}^^A \textuxn
% \end{macro}^^A \textubn
% \end{macro}^^A \texturn
% \end{macro}^^A \textuln
% \end{macro}^^A \univxs
% \end{macro}^^A \univbs
% \end{macro}^^A \univrs
Expand Down
2 changes: 1 addition & 1 deletion source/tudscr-version.dtx
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@
%<*!(package|class)>
\fi%
%</!(package|class)>
\@TUDVersion{2015/10/06 v2.04b TUD-KOMA-Script}%
\@TUDVersion{2015/11/29 v2.04c TUD-KOMA-Script}%
\endgroup%
% \end{macrocode}
% \ToDo{Version eintragen}[Release]
Expand Down

0 comments on commit 17102f4

Please sign in to comment.