Append an  tag to entity field view hook On a field of field type = LINK and widget = LINK, I want to add an  tag on the rendered output. 

The reason is to be able to add a class, not to the whole  tag output, but to append a FontAwesome icon. 

Hook_page_alter, of course shows all of the rendered HTML. I really don't want to mess with that. 

I tried hook_entity_view_alter. That works in a clumsy fashion but two problems:

1) It only affects the output from the node displayed via a view
2) It appends the  tag in new  after the displayed link.

It appends the  tag in new  after the displayed link.
You can theme individual fields: https://api.drupal.org/api/drupal/modules!field!field.module/function/theme_field/7

You can either have a theme function in template.php or a tpl.php template file, the former is preferred for performance reasons.

Using a theme function you could do something like:

THEMENAME_field__link($vars) {
  $output = '';
  foreach ($vars['items'] as $delta =&gt; $item) {
    $link = l($item['#title'], $item['#href']);
    $output .= '&lt;div class="' . $vars['classes'] . '"' . $vars['item_attributes'][$delta] . '&gt;' . $link . '&lt;i class="fa fa-download"&gt;&amp;nbsp;&lt;/&gt;&lt;/div&gt;';
  }
  return $output;
}


Though you'll have to check $vars for specifics.  As for checking the widget I think you can get a clue from $vars['element']['#formatter']