How do I use custom Smarty functions in a Form?
Use the config hook instead of pageRun.  I originally had this hook in place, as per the example at "Extending Smarty":

function civicrm_pageRun(&amp;$page) {
  $template = $page-&gt;getTemplate(); // retrieve Smarty template object
  array_push($template-&gt;plugins_dir, '/path/to/civi_custom/plugins');
}


I replaced that with:

function civicrm_config( &amp;$config ) {
  $template =&amp; CRM_Core_Smarty::singleton( );
  array_push($template-&gt;plugins_dir, '/path/to/civi_custom/plugins');
}


and now I can use my custom Smarty functions from both Pages and Forms.