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:
parent
6ce70459b1
commit
4f2a2ee261
1 changed files with 21 additions and 5 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue