font: use pixelsizefixupfactor on regular bitmap fonts too, if set

But if it isn't set, only estimate it if the font is a *scalable*
non-outline (bitmap) font.
This commit is contained in:
Daniel Eklöf 2019-11-28 21:32:28 +01:00
parent b58fd1c205
commit bd3f2fdf0e
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

21
font.c
View file

@ -156,18 +156,14 @@ from_font_set(FcPattern *pattern, FcFontSet *fonts, int start_idx,
if (FcPatternGetBool(final_pattern, FC_OUTLINE, 0, &outline) != FcResultMatch) if (FcPatternGetBool(final_pattern, FC_OUTLINE, 0, &outline) != FcResultMatch)
outline = FcTrue; outline = FcTrue;
/* Pixel fixup - apply only to "scalable" bitmap (well, non-outline) fonts */
double pixel_fixup = 1.; double pixel_fixup = 1.;
if (scalable && !outline) { if (FcPatternGetDouble(final_pattern, "pixelsizefixupfactor", 0, &pixel_fixup) != FcResultMatch) {
if (FcPatternGetDouble(final_pattern, "pixelsizefixupfactor", 0, &pixel_fixup) != FcResultMatch) { /*
/* * Force a fixup factor on scalable bitmap fonts (typically
* This happens for example when the user hasn't enabled * emoji fonts). The fixup factor is
* 10-scale-bitmap-fonts.conf in /etc/fonts/conf.d. * requested-pixel-size / actual-pixels-size
* */
* What we do is estimate the scale factor using the if (scalable && !outline) {
* requested pixel size and the nominal height (vertical
* PPEM - pixels per EM).
*/
double original_pixel_size; double original_pixel_size;
if (FcPatternGetDouble(pattern, FC_PIXEL_SIZE, 0, &original_pixel_size) != FcResultMatch) { if (FcPatternGetDouble(pattern, FC_PIXEL_SIZE, 0, &original_pixel_size) != FcResultMatch) {
/* User didn't specify ":pixelsize=xy" */ /* User didn't specify ":pixelsize=xy" */
@ -183,7 +179,8 @@ from_font_set(FcPattern *pattern, FcFontSet *fonts, int start_idx,
pixel_fixup = original_pixel_size / ft_face->size->metrics.y_ppem; pixel_fixup = original_pixel_size / ft_face->size->metrics.y_ppem;
LOG_DBG("estimated pixel fixup factor to %f (from pixel size: %f)", LOG_DBG("estimated pixel fixup factor to %f (from pixel size: %f)",
pixel_fixup, original_pixel_size); pixel_fixup, original_pixel_size);
} } else
pixel_fixup = 1.
} }
#if 0 #if 0