Improve ATS legibility of header social icons
Some checks are pending
Integration / changed (push) Waiting to run
Integration / yaml (push) Blocked by required conditions
Compile PDFs / build (push) Waiting to run

This commit is contained in:
Oliver Ford 2025-12-29 01:35:28 +00:00
parent 404d6065fe
commit 669ac14d92
No known key found for this signature in database
GPG key ID: 15CCFACF010F70D2

View file

@ -76,6 +76,7 @@
\RequirePackage{unicode-math} \RequirePackage{unicode-math}
% Needed to use icons from font-awesome % Needed to use icons from font-awesome
\RequirePackage{fontawesome6} \RequirePackage{fontawesome6}
\RequirePackage{accsupp}
\defaultfontfeatures{ \defaultfontfeatures{
Renderer=HarfBuzz, Renderer=HarfBuzz,
} }
@ -434,7 +435,7 @@
\newcommand{\acvHeaderAfterPositionSkip}{.4mm} \newcommand{\acvHeaderAfterPositionSkip}{.4mm}
\newcommand{\acvHeaderAfterAddressSkip}{-.5mm} \newcommand{\acvHeaderAfterAddressSkip}{-.5mm}
\newcommand{\acvHeaderIconSep}{\space} \newcommand{\acvHeaderIconSep}{\space}
\newcommand{\acvHeaderSocialSep}{\quad\textbar\quad} \newcommand{\acvHeaderSocialSep}{\BeginAccSupp{ActualText={}}\quad\textbar\quad\EndAccSupp{}}
\newcommand{\acvHeaderAfterSocialSkip}{6mm} \newcommand{\acvHeaderAfterSocialSkip}{6mm}
\newcommand{\acvHeaderAfterQuoteSkip}{5mm} \newcommand{\acvHeaderAfterQuoteSkip}{5mm}
@ -457,6 +458,11 @@
% Use to execute conditional statements by checking empty string % Use to execute conditional statements by checking empty string
\newcommand*{\ifempty}[3]{\ifthenelse{\isempty{#1}}{#2}{#3}} \newcommand*{\ifempty}[3]{\ifthenelse{\isempty{#1}}{#2}{#3}}
\newcommand{\faAlt}[3]{%
\BeginAccSupp{ActualText={#1}}%
\mbox{#2\acvHeaderIconSep#3}%
\EndAccSupp{}%
}
%------------------------------------------------------------------------------- %-------------------------------------------------------------------------------
% Commands for elements of CV structure % Commands for elements of CV structure
@ -502,135 +508,134 @@
\ifthenelse{\isundefined{\@mobile}}% \ifthenelse{\isundefined{\@mobile}}%
{}% {}%
{% {%
\href{\@teluri}{\faMobile\acvHeaderIconSep\@mobile}% \href{\@teluri}{\faAlt{tel:\@mobile}{\faMobile}{\@mobile}}%
\setbool{isstart}{false}% \setbool{isstart}{false}%
}% }%
\ifthenelse{\isundefined{\@email}}% \ifthenelse{\isundefined{\@email}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{mailto:\@email}{\faEnvelope\acvHeaderIconSep\@email}% \href{mailto:\@email}{\faAlt{mailto:\@email}{\faEnvelope}{\@email}}%
}% }%
\ifthenelse{\isundefined{\@dateofbirth}}% \ifthenelse{\isundefined{\@dateofbirth}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
% \mbox prevents wrapping of elements% \faAlt{DoB: \@dateofbirth}{\faCakeCandles}{\@dateofbirth}%
\mbox{\faCakeCandles\acvHeaderIconSep\@dateofbirth}%
}% }%
\ifthenelse{\isundefined{\@homepage}}% \ifthenelse{\isundefined{\@homepage}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{\@homepage}{\faHouseChimney\acvHeaderIconSep\@homepage}% \href{\@homepage}{\faAlt{homepage: \@homepage}{\faHouseChimney}{\@homepage}}%
}% }%
\ifthenelse{\isundefined{\@github}}% \ifthenelse{\isundefined{\@github}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://github.com/\@github}{\faSquareGithub\acvHeaderIconSep\@github}% \href{https://github.com/\@github}{\faAlt{GitHub: @\@github}{\faSquareGithub}{\@github}}%
}% }%
\ifthenelse{\isundefined{\@gitlab}}% \ifthenelse{\isundefined{\@gitlab}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://gitlab.com/\@gitlab}{\faGitlab\acvHeaderIconSep\@gitlab}% \href{https://gitlab.com/\@gitlab}{\faAlt{GitLab: @\@gitlab}{\faGitlab}{\@gitlab}}%
}% }%
\ifthenelse{\isundefined{\@bitbucket}}% \ifthenelse{\isundefined{\@bitbucket}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://bitbucket.com/\@bitbucket}{\faBitbucket\acvHeaderIconSep\@bitbucket}% \href{https://bitbucket.com/\@bitbucket}{\faAlt{BitBucket: @\@bitbucket}{\faBitbucket}{\@bitbucket}}%
}% }%
\ifthenelse{\isundefined{\@stackoverflowid}}% \ifthenelse{\isundefined{\@stackoverflowid}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://stackoverflow.com/users/\@stackoverflowid}{\faStackOverflow\acvHeaderIconSep\@stackoverflowname}% \href{https://stackoverflow.com/users/\@stackoverflowid}{\faAlt{StackOverflow: @\@stackoverflowname}{\faStackOverflow}{\@stackoverflowname}}%
}% }%
\ifthenelse{\isundefined{\@linkedin}}% \ifthenelse{\isundefined{\@linkedin}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://www.linkedin.com/in/\@linkedin}{\faLinkedin\acvHeaderIconSep\@linkedin}% \href{https://www.linkedin.com/in/\@linkedin}{\faAlt{LinkedIn: /in/\@linkedin}{\faLinkedin}{\@linkedin}}%
}% }%
\ifthenelse{\isundefined{\@orcid}}% \ifthenelse{\isundefined{\@orcid}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://orcid.org/\@orcid}{\faOrcid\acvHeaderIconSep\@orcid}% \href{https://orcid.org/\@orcid}{\faAlt{OrcID: \@orcid}{\faOrcid}{\@orcid}}%
}% }%
\ifthenelse{\isundefined{\@twitter}}% \ifthenelse{\isundefined{\@twitter}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://twitter.com/\@twitter}{\faTwitter\acvHeaderIconSep\@twitter}% \href{https://twitter.com/\@twitter}{\faAlt{Twitter: @\@twitter}{\faTwitter}{\@twitter}}%
}% }%
\ifthenelse{\isundefined{\@x}}% \ifthenelse{\isundefined{\@x}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://x.com/\@x}{\faXTwitter\acvHeaderIconSep\@x}% \href{https://x.com/\@x}{\faAlt{X: @\@x}{\faXTwitter}{\@x}}%
}% }%
\ifthenelse{\isundefined{\@mastodonname}}% \ifthenelse{\isundefined{\@mastodonname}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://\@mastodoninstance/@\@mastodonname}{\faMastodon\acvHeaderIconSep\@mastodonname}% \href{https://\@mastodoninstance/@\@mastodonname}{\faAlt{Mastodon: \@mastodonname{}@\@mastodoninstance}{\faMastodon}{\@mastodonname}}%
}% }%
\ifthenelse{\isundefined{\@skype}}% \ifthenelse{\isundefined{\@skype}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\faSkype\acvHeaderIconSep\@skype% \faAlt{Skype: \@skype}{\faSkype}{\@skype}%
}% }%
\ifthenelse{\isundefined{\@reddit}}% \ifthenelse{\isundefined{\@reddit}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://www.reddit.com/user/\@reddit}{\faReddit\acvHeaderIconSep\@reddit}% \href{https://www.reddit.com/user/\@reddit}{\faAlt{Reddit: /u/\@reddit}{\faReddit}{\@reddit}}%
}% }%
\ifthenelse{\isundefined{\@researchgate}}% \ifthenelse{\isundefined{\@researchgate}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://www.researchgate.net/profile/\@researchgate}{\faResearchgate\acvHeaderIconSep\@researchgate}% \href{https://www.researchgate.net/profile/\@researchgate}{\faAlt{ResearchGate: \@researchgate}{\faResearchgate}{\@researchgate}}%
}% }%
\ifthenelse{\isundefined{\@xing}}% \ifthenelse{\isundefined{\@xing}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://www.xing.com/profile/\@xing}{\faSquareXing\acvHeaderIconSep\@xing} \href{https://www.xing.com/profile/\@xing}{\faAlt{Xing: \@xing}{\faSquareXing}{\@xing}}
}% }%
\ifthenelse{\isundefined{\@medium}}% \ifthenelse{\isundefined{\@medium}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://medium.com/@\@medium}{\faMedium\acvHeaderIconSep\@medium}% \href{https://medium.com/@\@medium}{\faAlt{Medium: @\@medium}{\faMedium}{\@medium}}%
}% }%
\ifthenelse{\isundefined{\@kaggle}}% \ifthenelse{\isundefined{\@kaggle}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://kaggle.com/\@kaggle}{\faKaggle\acvHeaderIconSep\@kaggle}% \href{https://kaggle.com/\@kaggle}{\faAlt{Kaggle: \@kaggle}{\faKaggle}{\@kaggle}}%
}% }%
\ifthenelse{\isundefined{\@hackerrank}}% \ifthenelse{\isundefined{\@hackerrank}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://www.hackerrank.com/\@hackerrank}{\faHackerrank\acvHeaderIconSep\@hackerrank}% \href{https://www.hackerrank.com/\@hackerrank}{\faAlt{HackerRank: \@hackerrank}{\faHackerrank}{\@hackerrank}}%
}% }%
\ifthenelse{\isundefined{\@telegram}}% \ifthenelse{\isundefined{\@telegram}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://t.me/\@telegram}{\faTelegram\acvHeaderIconSep\@telegram}% \href{https://t.me/\@telegram}{\faAlt{Telegram: \@telegram}{\faTelegram}{\@telegram}}%
}% }%
\ifthenelse{\isundefined{\@googlescholarid}}% \ifthenelse{\isundefined{\@googlescholarid}}%
{}% {}%
{% {%
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
\href{https://scholar.google.com/citations?user=\@googlescholarid}{\faGraduationCap\acvHeaderIconSep\@googlescholarname}% \href{https://scholar.google.com/citations?user=\@googlescholarid}{\faAlt{Google Scholar: \@googlescholarid}{\faGraduationCap}{\@googlescholarname}}%
}% }%
\ifthenelse{\isundefined{\@extrainfo}}% \ifthenelse{\isundefined{\@extrainfo}}%
{}% {}%