From: Geoff Voelker Date: Sun, 14 Mar 1999 05:27:47 +0000 (+0000) Subject: (w32_strict_fontnames): New variable. X-Git-Tag: emacs-20.4~468 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=1075afa9249f6e2e7a6ec41d86ab8e429644dfbc;p=emacs.git (w32_strict_fontnames): New variable. (Fx_create_frame): Formatting fix. (w32_load_system_font): Keep trying to load non-existant font if w32_strict_fontnames is nil. Formatting fix. (syms_of_w32fns): Add w32-strict-fontnames. --- diff --git a/src/w32fns.c b/src/w32fns.c index 04fada87196..8eb3c3ee218 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -144,6 +144,8 @@ Lisp_Object Vw32_bdf_filename_alist; /* A flag to control how to display unibyte 8-bit character. */ int unibyte_display_via_language_environment; +int w32_strict_fontnames; + /* Evaluate this expression to rebuild the section of syms_of_w32fns that initializes and staticpros the symbols declared below. Note that Emacs 18 has a bug that keeps C-x C-e from being able to @@ -4774,7 +4776,7 @@ This function is an internal primitive--use `make-frame' instead.") if (STRINGP (tem)) font = x_new_fontset (f, XSTRING (tem)->data); else - font = x_new_font (f, XSTRING (font)->data); + font = x_new_font (f, XSTRING (font)->data); } /* Try out a font which we hope has bold and italic variations. */ if (!STRINGP (font)) @@ -4985,7 +4987,7 @@ int size; #endif fontname = (char *) XSTRING (XCONS (font_names)->car)->data; } - else + else if (w32_strict_fontnames) { /* If EnumFontFamiliesEx was available, we got a full list of fonts back so stop now to avoid the possibility of loading a @@ -4994,7 +4996,7 @@ int size; listed or not. */ HMODULE gdi32 = GetModuleHandle ("gdi32.dll"); FARPROC enum_font_families_ex - = GetProcAddress ( gdi32, "EnumFontFamiliesExA"); + = GetProcAddress (gdi32, "EnumFontFamiliesExA"); if (enum_font_families_ex) return NULL; } @@ -7398,6 +7400,16 @@ displayed according to the current fontset."); "List of bdf fonts and their corresponding filenames."); Vw32_bdf_filename_alist = Qnil; + DEFVAR_BOOL ("w32-strict-fontnames", + &w32_strict_fontnames, + "Non-nil means only use fonts that are exact matches for those requested.\n\ +Default is nil, which allows old fontnames that are not XLFD compliant,\n\ +and allows third-party CJK display to work by specifying false charset\n\ +fields to trick Emacs into translating to Big5, SJIS etc.\n\ +Setting this to t will prevent wrong fonts being selected when\n\ +fontsets are automatically created."); + w32_strict_fontnames = 0; + defsubr (&Sx_get_resource); defsubr (&Sx_list_fonts); defsubr (&Sx_display_color_p);