EDIT
I created a codepen to demonstrate a lead created using different values . Hope this gives a better explanation.
I can answer your questions, but only theorize (at the moment) about the extra distance that you see (and provide potential work).
Your questions
Is there an intentional semantic difference in CSS between 1.5 and 150%, which explains the difference in behavior?
Yes, actually!
A numerical coefficient (1.5 in this case) is inherited and used to calculate the line height of each descendant relative to its font size.
A percentage (150%) is used to calculate the line height based on the font size of the parent element. The resulting, pre-computed value is then inherited by its descendants.
Or, if they should be the same, then which one is doing wrong?
They are intentionally different. (See W3C Specification )
From a practical point of view, is there a drawback in switching to raw decimal numbers, such as 1.5 for line height?
This is usually the advantage of using decimal values, because the legacy line-height will adapt better. But there are times when it does not suit your needs.
Extra interval problem
I noticed that if I set vertical-align to your small text on middle or bottom , there won't be a problem. But this is not a good solution.
I guess this is because the smaller text uses the inherited computed line-height combined with the line layout. Since the text is smaller and sits lower, but has the same line height as the surrounding line, the lower half leads actually down, and the upper half will not reach as high as the surrounding text.
So, let's say the base font size is 16 pixels, and the line height is 24 pixels. The presenter will be 4px on both sides ((24-16) / 2). When the font size is 50%, it is 8 pixels, but the line height remains 24px. Thus, the lead becomes 8px on both sides ((24-8) / 2).
The source texts are aligned, therefore, ceteris paribus, the smaller text will expand 4 pixels below normal text. But since the text (and its corresponding content area) is smaller, the lower half goes further backward, so you only see a pixel or two changes, and only at certain percentages (getting more as you become smaller - try to exit)
I really need to use images for this, but I can't now ... maybe I can add a bit later.
I don’t know if this helps at all, but I definitely better understand how line-height works in general now!
References: http://www.w3.org/wiki/CSS/Properties/line-height http://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/ http: // www .maxdesign.com.au / articles / css-line-height /