\NeedsTeXFormat{LaTeX2e} \ProvidesExplPackage{PrimeTeX/packages/Fonts}{2025-09-18}{1.0}{ Font definitions. } % Loading math fonts takes a long time, so skip it in draft mode. % \bool_if:NF \g_draft_bool { % \RequirePackage{notomath} % } \NewDocumentCommand{\fontpath}{}{./PrimeTeX/fonts} \def\sbfamily{} % Main font: Roboto Serif (Light), with symbols merged in from, in order of % priority, Noto Serif, Noto Emoji, Noto Sans Symbols, and Noto % Sans Symbols 2. % \setmainfont{RobotoSerif}[ % Path = {\fontpath/serif/}, % Extension = .ttf, % UprightFont = *-Light, % BoldFont = *-SemiBold, % ItalicFont = *-LightItalic, % BoldItalicFont = *-SemiBoldItalic, % SlantedFont = NotoSerif-Light, % BoldSlantedFont = NotoSerif-SemiBold, % ] % % Sans serif font: Roboto (Medium). % \setsansfont{Roboto}[ % Path = {\fontpath/sans/}, % Extension = .ttf, % UprightFont = *-Medium, % BoldFont = *-Bold, % ItalicFont = *-MediumItalic, % BoldItalicFont = *-BoldItalic, % SlantedFont = NotoSans-Medium, % BoldSlantedFont = NotoSans-Bold, % ] % Monospace font: Roboto Mono % \setmonofont{RobotoMono}[ % Path = {\fontpath/mono/}, % Extension = .ttf, % UprightFont = *-Regular, % BoldFont = *-Bold, % ItalicFont = *-Italic, % BoldItalicFont = *-BoldItalic, % ] % % Headings & Titles font: Roboto Slab (Semibold). % \newfontfamily{\sbfamily}{RobotoSlab}[ % Path = {\fontpath/serif/}, % Extension = .ttf, % UprightFont = *-SemiBold, % BoldFont = *-Black, % % Roboto Slab doesn't have any italic form, so use % % the Roboto Serif version. % ItalicFont = RobotoSerif-SemiBoldItalic, % BoldItalicFont = RobotoSerif-ExtraBoldItalic, % SlantedFont = NotoSerif-SemiBold, % BoldSlantedFont = NotoSerif-ExtraBold, % ] % Sans serif font with more symbols: Noto Sans % \newfontfamily{\notofamily}{NotoSans}[ % Path = {\fontpath/NotoSans/}, % Extension = .ttf, % UprightFont = *-Medium, % BoldFont = *-Bold, % ] % Emoji font: Noto Emoji % \newfontfamily{\emojifamily}{NotoEmoji}[ % Path = {\fontpath/}, % Extension = .ttf, % UprightFont = NotoEmoji/NotoEmoji-Regular, % BoldFont = NotoEmoji/NotoEmoji-Bold, % ItalicFont = NotoEmoji/NotoEmoji-Light, % BoldItalicFont = NotoEmoji/NotoEmoji-SemiBold, % ] % \newfontfamily{\mathfamily}{NotoSerif}[ % Path = {\fontpath/NotoSerif/}, % Extension = .ttf, % UprightFont = *-Regular, % BoldFont = *-Bold, % ItalicFont = *-Italic, % BoldItalicFont = *-BoldItalic, % ] % % Symbol font: Noto Sans Symbols 2 % \newfontfamily{\symbfamily}{NotoSansSymbols}[ % Path = {\fontpath/NotoSansSymbols/}, % Extension = .ttf, % UprightFont = *-Regular, % BoldFont = *-Bold, % ItalicFont = *-Light, % BoldItalicFont = *-SemiBold, % ] % \setmathrm{RobotoSerif} \NewDocumentCommand{\serif}{+m}{{\rmfamily#1}} \NewDocumentCommand{\sans}{+m}{{\sffamily#1}} \NewDocumentCommand{\mono}{+m}{{\ttfamily{#1}}} \NewDocumentCommand{\slab}{+m}{{\sbfamily{}#1}} \NewDocumentCommand{\code}{+m}{\mono{\small{}#1}} % \NewDocumentCommand{\emoji}{m}{{\emojifamily{}#1}} % \NewDocumentCommand{\maths}{m}{{\mathfamily{}#1}} % \NewDocumentCommand{\symb}{m}{{\symbfamily{}#1}} % \NewDocumentCommand{\noto}{s m}{ % \group_begin: % \bool_if:nTF {#1} { % \notosansfamily #2 % } { % \notofamily #2 % } % \group_end: % } %------------------------------- Symbol Commands ------------------------------- % Line-breaking zero-width space. \NewDocumentCommand{\zws}{}{\hspace{0pt}} % Line-breaking dot. \NewDocumentCommand{\bdot}{}{.\zws} % Text-mode angle bracket ornaments. \NewDocumentCommand{\ab}{s m}{\textsl{〈}#1\textsl{〉}} \NewDocumentCommand{\checkmark}{s O{PrimeGreen} O{PrimeBrightGreen}}{ \bool_if:nTF {#1} { \ColorText[#2][#3][]{\textsl{✓}} } { {\textsl{✓}} } } \NewDocumentCommand{\xmark}{s O{PrimeRed} O{PrimeBrightRed}}{ \bool_if:nTF {#1} { \ColorText[#2][#3][]{\textsl{✗}} } { {\textsl{✗}} } } \RenewDocumentCommand{\triangle}{m}{ \textsl{ \str_case:nn {#1} { {down} {▼} {left} {◀} {right} {▶} {up} {▲} } } } %--------------------------- MenuKeys Configuration ---------------------------- \newmenucolortheme{autoModeColor}{named}{pageColor}{textColor}{textColor}[pageColor][textColor][textColor] \changemenucolortheme{hyphenatepaths}{autoModeColor} \changemenucolortheme{shadowedroundedkeys}{autoModeColor} \changemenucolortheme{angularmenus}{autoModeColor} \cs_new:Nn \__MenuKeys_path_style: { \sffamily\color{\usemenucolor{txt}}\CurrentMenuElement } \changemenuelement*{hyphenatepaths}{first}{\__MenuKeys_path_style:} \changemenuelement*{hyphenatepaths}{middle}{\__MenuKeys_path_style:} \changemenuelement*{hyphenatepaths}{last}{\__MenuKeys_path_style:} \changemenuelement*{hyphenatepaths}{single}{\__MenuKeys_path_style:} \renewmenumacro{\directory}[/]{hyphenatepaths} \renewmenumacro{\keys}[+]{shadowedroundedkeys} \renewmenumacro{\menu}[>]{angularmenus} \RenewDocumentCommand{\ctrlname}{}{$\wedge$} \NewDocumentCommand{\ControlString}{}{Ctrl} \NewDocumentCommand{\EnterString}{}{Enter\,\return} \NewDocumentCommand{\ShiftString}{}{Shift\,\shift} \NewDocumentCommand{\AltString}{}{Alt\,\altmac} \NewDocumentCommand{\TabString}{}{Tab\,\tab} \NewDocumentCommand{\ControlKey}{}{\keys{\ControlString}} \NewDocumentCommand{\EnterKey}{}{\keys{\EnterString}} \NewDocumentCommand{\ShiftKey}{}{\keys{\ShiftString}} \NewDocumentCommand{\AltKey}{}{\keys{\AltString}} \NewDocumentCommand{\TabKey}{}{\keys{\TabString}} % Suppress warning about obsolete font encodings because we're using Unicode. \@tw@hyphenatepaths@warnigfalse %[sic]