[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ft] How to get nominal width of monospaced fonts
From: |
Werner LEMBERG |
Subject: |
Re: [ft] How to get nominal width of monospaced fonts |
Date: |
Tue, 21 May 2019 11:42:06 +0200 (CEST) |
> I'm trying to determine the nominal width of monospaced fonts, in
> pixels, that is the normal horizontal advance of rendered glyphs
> when FT_FACE_FLAG_FIXED_WIDTH is set.
This is not sufficient information. Are you interested in the
*linear* (i.e., unhinted) advance width or the hinted one? The former
can be a fractional pixel value, while the latter is always returned
as full pixels for TrueType fonts.[*]
> I thought, at first, to look at face->size->metrics.max_advance, but
> if I do that I find that it's always several pixels more than what I
> eventually get after FT_LOAD_RENDERing each glyph, and computing
> face->glyph->advance.x >> 6.
This might be due to hinting.
> For example, using Liberation Mono: with a height of 16 pixels, I
> get 11 in metrics.max_advance, but the actual advance width, based
> on advance.x, is 10. With a height of 21 pixels, I get a
> max_advance of 15, and the actual advance based on advance.x is 13.
> Is it possible to get the advance width, of fixed width fonts,
> without actually rendering some sample glyphs and seeing what it is?
If hinting is involved, no. Exception: The font contains an `hdmx'
table that lists advance widths for some ppem value.
Werner
[*] This is not completely true but suffices for practical purposes.