Hey,
keep in mind that height: line-height: and font-size: are three completely different things. The reason why you have a gap is because the layer box dimensions are taller (bigger in height) than the line-height value. It's effectively adding a padding value by making the layer box bigger than its contents require.
If you actually delete the whole height:20px; line, it should dynamically calculate the box dimensions from the line-height automatically and use a default.
In good theory, if you're only dealing with text in the inner HTML of a tag (like span, div, a, etc) it's best to leave height: at a small value and leave it up to line-height. Only if there are img tags or other non-text content that might overflow the line-height calculated automatically would you make height: bigger than line-height:.
All that is good and well, that's a personal rule I've always stuck to and it works for me in every case. So in conclusion, changing the height: attribute to a superfluous value like 1px or even removing the height: attribute entirely will not destroy this text-only element because line-height: is still effective for the text.
height: shouldn't even be there in my opinion - I'm convinced it's just left over from a baseline canvas template that YooTheme use internally. height: is only really needed if you have a custom icon graphic on readon class in the template (some YooTheme's do, some don't).
Anyway, it can't hurt to play with the values of height: and line-height: for the a.readon styling though. Try removing height: entirely. If you need a little more space and they are too close (looks fine in my opinion though) then you can use padding-top:5px; or something to add a little space to the top. You can also experiment with height:1px;line-height:100px; and then try height:100px;line-height:1px; and see the difference between the two - all that theoretical and "in practice" rambling will make more sense seeing it in action