% Source Sans for LaTeX % % Silke Hofstra, tex@slxh.nl % % This file selects either the OTF or the TYPE1 fonts based on % the LaTeX engine used. % % Licenced under the LPPL v1.3 or higher. % \NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesPackage{sourcesans}[2025/04/06 v3.0 Adobe's Source Sans typeface] \RequirePackage{ifxetex,ifluatex,xkeyval} % Switches \newif\ifsourcesans@otf \newif\ifsourcesans@default \newif\ifsourcesans@sfdefault \newif\ifsourcesans@oldstyle \newif\ifsourcesans@tabular \newif\ifsourcesans@black \newif\ifsourcesans@semibold \newif\ifsourcesans@light \newif\ifsourcesans@extralight \newif\ifsourcesans@medium % Scaling command \newcommand*{\SourceSansThree@scale}{1} % Use OpenType fonts for XeTeX and LuaTeX. \ifxetex \sourcesans@otftrue \else \ifluatex \sourcesans@otftrue \fi \fi \DeclareOptionX{lining} {\sourcesans@oldstylefalse} \DeclareOptionX{nf} {\sourcesans@oldstylefalse} \DeclareOptionX{lf} {\sourcesans@oldstylefalse} \DeclareOptionX{oldstyle} {\sourcesans@oldstyletrue} \DeclareOptionX{osf} {\sourcesans@oldstyletrue} \DeclareOptionX{tabular} {\sourcesans@tabulartrue} \DeclareOptionX{proportional}{\sourcesans@tabularfalse} \DeclareOptionX{black} {\sourcesans@blacktrue \sourcesans@semiboldfalse} \DeclareOptionX{semibold} {\sourcesans@blackfalse\sourcesans@semiboldtrue} \DeclareOptionX{bold} {\sourcesans@blackfalse\sourcesans@semiboldfalse} \DeclareOptionX{light} {\sourcesans@lighttrue \sourcesans@extralightfalse} \DeclareOptionX{extralight} {\sourcesans@lightfalse\sourcesans@extralighttrue} \DeclareOptionX{regular} {\sourcesans@lightfalse\sourcesans@extralightfalse} \DeclareOptionX{medium} {\sourcesans@mediumtrue\sourcesans@lightfalse\sourcesans@extralightfalse} \DeclareOptionX{scale} {\renewcommand*{\SourceSansThree@scale}{#1}} \DeclareOptionX{scaled} {\renewcommand*{\SourceSansThree@scale}{#1}} \DeclareOptionX{default} {\sourcesans@defaulttrue} \DeclareOptionX{sfdefault} {\sourcesans@sfdefaulttrue} \DeclareOptionX{nosfdefault} {\sourcesans@sfdefaultfalse} \DeclareOptionX{type1} {\sourcesans@otffalse} \DeclareOptionX{t1} {\sourcesans@otffalse} \DeclareOptionX{opentype} {\sourcesans@otftrue} \DeclareOptionX{otf} {\sourcesans@otftrue} % Default options \ExecuteOptionsX{sfdefault,lining,tabular,bold,regular} \ProcessOptionsX\relax % Load OpenType files \ifsourcesans@otf \RequirePackage{fontspec} % Create a fixed liningnums command: \renewcommand*\liningnums[1]{{\addfontfeature{RawFeature=+lnum;-onum}#1}} % Oldstyle/Lining \ifsourcesans@oldstyle \def\sourcesans@figurestyle{OldStyle} \else \def\sourcesans@figurestyle{} \fi % Tabular/Proportional \ifsourcesans@tabular \def\sourcesans@figurealign{} \else \def\sourcesans@figurealign{Proportional} \fi % Black/Semibold/Bold \ifsourcesans@black \def\sourcesans@boldstyle{Black} \else \ifsourcesans@semibold \def\sourcesans@boldstyle{Semibold} \else \def\sourcesans@boldstyle{Bold} \fi \fi % Light/ExtraLight/Regular \ifsourcesans@light \def\sourcesans@regstyle{Light} \else \ifsourcesans@extralight \def\sourcesans@regstyle{ExtraLight} \else \ifsourcesans@medium \def\sourcesans@regstyle{Medium} \fi \def\sourcesans@regstyle{Regular} \fi \fi % Shared features \defaultfontfeatures{ Ligatures = TeX , Numbers = {\sourcesans@figurealign , \sourcesans@figurestyle } , Scale = \SourceSansThree@scale , Extension = .otf } % Sans serif font \ifsourcesans@sfdefault \setsansfont [ UprightFont = *-\sourcesans@regstyle , ItalicFont = *-\sourcesans@regstyle It , BoldFont = *-\sourcesans@boldstyle , BoldItalicFont = *-\sourcesans@boldstyle It] {SourceSans3} \fi % Font families % Regular/Bold \newfontfamily\sourcesans [ UprightFont = *-Regular , ItalicFont = *-RegularIt , BoldFont = *-Bold , BoldItalicFont = *-BoldIt ] {SourceSans3} % Medium/Bold \newfontfamily\sourcesansmedium [ UprightFont = *-Medium , ItalicFont = *-MediumIt , BoldFont = *-Bold , BoldItalicFont = *-BoldIt ] {SourceSans3} % Light/Semibold \newfontfamily\sourcesanslight [ UprightFont = *-Light , ItalicFont = *-LightIt , BoldFont = *-Semibold , BoldItalicFont = *-SemiboldIt ] {SourceSans3} % ExtraLight/Black \newfontfamily\sourcesansextreme [ UprightFont = *-ExtraLight , ItalicFont = *-ExtraLightIt , BoldFont = *-Black , BoldItalicFont = *-BlackIt ] {SourceSans3} % Lining figures \newfontfamily\sourcesanslf [ Numbers = \sourcesans@figurealign , UprightFont = *-\sourcesans@regstyle , ItalicFont = *-\sourcesans@regstyle It , BoldFont = *-\sourcesans@boldstyle , BoldItalicFont = *-\sourcesans@boldstyle It ] {SourceSans3} % Dont keep all default font features \defaultfontfeatures{} % Load type1 font. \else \RequirePackage[OT1,LY1,T1]{fontenc} \RequirePackage{mweights} % Oldstyle/Lining \ifsourcesans@oldstyle \def\sourcesans@figurestyle{OsF} \else \def\sourcesans@figurestyle{LF} \fi % Tabular/Proportional \ifsourcesans@tabular \def\sourcesans@figurealign{T} \else \def\sourcesans@figurealign{} \fi % Black/Semibold/Bold \ifsourcesans@black \def\bfseries@sf{black} \else \ifsourcesans@semibold \def\bfseries@sf{semibold} \else \def\bfseries@sf{bold} \fi \fi % Light/ExtraLight/Regular \ifsourcesans@light \def\mdseries@sf{light} \else \ifsourcesans@extralight \def\mdseries@sf{extralight} \else \ifsourcesans@medium \def\mdseries@sf{medium} \else \def\mdseries@sf{regular} \fi \fi \fi % Sans serif font \ifsourcesans@sfdefault \edef\sfdefault{SourceSansThree-\sourcesans@figurealign\sourcesans@figurestyle} \fi % If source sans pro is the default font \oldstylenums needs a new definition. \ifsourcesans@default \let\nativeoldstylenums\oldstylenums \renewcommand*\oldstylenums[1]{% \begingroup \ifmmode \mathgroup\symletters #1% \else \fontfamily{SourceSansThree-\sourcesans@figurealign OsF}\selectfont #1% \fi \endgroup } \edef\seriesdefault{\mdseries@sf} \fi \fi % Set default font family \ifsourcesans@default \edef\familydefault{\sfdefault} \fi \endinput