1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-17 08:31:09 -08:00

(logfonts_match): Don't check adstyle here.

(font_matches_spec): Check here against physical font instead.
(add_font_entity_to_list): Avoid some substitutions.
This commit is contained in:
Jason Rumney 2007-12-20 14:28:53 +00:00
parent 6ce70459b1
commit 4f2a2ee261

View file

@ -853,10 +853,6 @@ logfonts_match (font, pattern)
|| font->lfWeight > (pattern->lfWeight + 150)))
return 0;
if (pattern->lfPitchAndFamily & 0xF0 != FF_DONTCARE
&& pattern->lfPitchAndFamily & 0xF0 != font->lfPitchAndFamily & 0xF0)
return 0;
/* Charset and face should be OK. Italic has to be checked
against the original spec, in case we don't have any preference. */
return 1;
@ -881,6 +877,16 @@ font_matches_spec (type, font, spec)
return 0;
}
/* Check adstyle against generic family. */
val = AREF (spec, FONT_ADSTYLE_INDEX);
if (!NILP (val))
{
BYTE family = w32_generic_family (val);
if (family != FF_DONTCARE
&& family != (font->ntmTm.tmPitchAndFamily & 0xF0))
return 0;
}
/* Check extra parameters. */
for (extra = AREF (spec, FONT_EXTRA_INDEX);
CONSP (extra); extra = XCDR (extra))
@ -1021,7 +1027,17 @@ add_font_entity_to_list (logical_font, physical_font, font_type, lParam)
|| (physical_font->ntmTm.ntmFlags & NTMFLAGS_OPENTYPE))
&& logfonts_match (&logical_font->elfLogFont, &match_data->pattern)
&& font_matches_spec (font_type, physical_font,
match_data->orig_font_spec))
match_data->orig_font_spec)
/* Avoid substitutions involving raster fonts (eg Helv -> MS Sans Serif)
We limit this to raster fonts, because the test can catch some
genuine fonts (eg the full name of DejaVu Sans Mono Light is actually
DejaVu Sans Mono ExtraLight). Helvetica -> Arial substitution will
therefore get through this test. Since full names can be prefixed
by a foundry, we accept raster fonts if the font name is found
anywhere within the full name. */
&& (logical_font->elfLogFont.lfOutPrecision != OUT_STRING_PRECIS
|| strstr (logical_font->elfFullName,
logical_font->elfLogFont.lfFaceName)))
{
Lisp_Object entity
= w32_enumfont_pattern_entity (match_data->frame, logical_font,