The definition of \@acf
which prints the acronym as Full (Short)
is coded as
\newcommand*{\@acf}[1]{%
\ifAC@footnote
\acsfont{\AC@acs{#1}}%
\footnote{\AC@placelabel{#1}\AC@acl{#1}{}}%
\else
\acffont{%
\AC@placelabel{#1}\AC@acl{#1}%
\nolinebreak[3] %
\acfsfont{(\acsfont{\AC@acs{#1}})}%
}%
\fi
\ifAC@starred\else\AC@logged{#1}\fi}
The \nolinebreak[3]
already discourages spacing but does not forbid it (see What is the difference between \nobreak and \nolinebreak?). To forbid breaking, \nolinebreak[4]
or simply ~
can be used instead in the definition.
\documentclass{article}
\usepackage{acronym}
\makeatletter
\renewcommand*{\@acf}[1]{%
\ifAC@footnote
\acsfont{\AC@acs{#1}}%
\footnote{\AC@placelabel{#1}\AC@acl{#1}{}}%
\else
\acffont{%
\AC@placelabel{#1}\AC@acl{#1}%
\nolinebreak[3] %
\acfsfont{(\acsfont{\AC@acs{#1}})}%
}%
\fi
\ifAC@starred\else\AC@logged{#1}\fi}
\makeatother
\newacro{PDF}{Portable Document Format}
\begin{document}
Foooooooooooooooooooooooooooooooooooooo \ac{PDF}
\end{document}
Or to follow clemens' approach and do it a little less invasively
\usepackage{etoolbox}
\makeatletter
\patchcmd\@acf
{\AC@acl{#1}\nolinebreak[3] \acfsfont{(\acsfont{\AC@acs{#1}})}} % search
{\AC@acl{#1}\nolinebreak[4] \acfsfont{(\acsfont{\AC@acs{#1}})}} % replace
{} % success
{} % failure
\makeatother