It seems that w32_font_match() dose't work correctly in the case of using font name with multibyte in emacs-unicode-2. The variable 'encoded_font_name' may include the charactor '-', then 'xlfd_strip_height (font_name_copy)' return -1, so I think that string_make_unibyte should not be used. For example: (create-fontset-from-fontset-spec "-*-Courier New-normal-r-*-*-12-*-*-*-c-*-fontset-TTG12c, japanese-jisx0208:-*-‚l‚r ƒSƒVƒbƒN-*-*-*-*-*-*-*-*-*-*-jisx0208-sjis, latin-jisx0201:-*-‚l‚r ƒSƒVƒbƒN-*-*-*-*-*-*-*-*-*-*-jisx0208-sjis, katakana-jisx0201:-*-‚l‚r ƒSƒVƒbƒN-*-*-*-*-*-*-*-*-*-*-jisx0208-sjis" t) (gdb) b w32_font_match Breakpoint 4, w32_font_match (fontname=0x83e020 "-outline-?­?³ ã\202´ã\202·ã\203\203ã\202¯-normal-r-normal-normal-12-90-96-96-c-*-jisx0208-sjis", pattern=0x2dcc9b0 "-outline-hgpå\211µè\213±è§\222?º?\236?¼?¯?¸ub-normal-r-normal-normal-12-*-96-96-p-*-jisx0208-sjis") at w32fns.c:5809 (gdb) p encoded_font_name $3 = 35884144 (gdb) xstring $4 = (struct Lisp_String *) 0x2238c70 "-outline--3 ´·Ã¯-normal-r-normal-normal-12-90-96-96-c-*-jisx0208-sjis" The attached patch use fast_string_match for comparing font names, just like 2004-10-18 Kenichi Handa * fontset.c (fs_load_font): Use fast_string_match_ignore_case for comparing font names. (fs_query_fontset): Use fast_string_match for comparing fontset names. (list_fontsets): Likewise. * search.c (fast_string_match_ignore_case): New function. * lisp.h (fast_string_match_ignore_case): Extern it. -- KOBAYASHI Yasuhiro