CSS: Pourquoi "vertical-align: middle" ne fonctionne pas?

Considérons l'exemple suivant: (démonstration en direct ici)

HTML:

<a><img src="http://img.brothersoft.com/icon/softimage/s/smiley.s_challenge-131939.jpeg" /></a>

CSS:

a {
    display: block;
    background: #000;
    line-height: 40px;  
}
img {
    vertical-align: middle;
}

La sortie est:

CSS: Pourquoi

Pourquoi l'image n'est pas centrée verticalement ?

Comment pourrais-je régler ce problème afin qu'il fonctionne dans tous les principaux navigateurs ?

Merci de ne pas assumer toute la taille de l'image (comme 32x32 dans ce cas), parce que dans le cas réel la taille de l'image est inconnue.

source d'informationauteur Misha Moroshko