Subject: Re: bug#12693: [cygwin] Setting fonts with non-ascii names throws error quit

From: Kazuhiro Ito <[email-masked]>
Date: Mon, 14 Sep 2020 17:40:18 +0900

> > When I run Emacs on Cygwin with the native Windows UI, I can't specify
> > font by non-ascii font name.  For example, the below code success on
> > precompiled binary on Windows (Japanese edition) but raises error on
> > Cygwin with the native Windows UI.
> >
> > (set-default-font "ＭＳ ゴシック-14")
> 
> This was seven years ago, and this function no longer exists, so
> obviously things have changed in this area.  Are you still seeing this
> bug in a recent version of Emacs?

Yes.

(set-frame-font "ＭＳ ゴシック-14") raises an error on Cygw32 build
but not on MinGW64 build.  x-select-font function returns encoded
string on Cygw32 build.  Let-binding locale-coding-system to the
correct codepage can avoid the problem.

;; Chose "ＭＳ ゴシック-14"
(x-select-font)

-> "\202l\202r \203S\203V\203b\203N-14"

(let ((locale-coding-system 'cp932))
  (x-select-font))

-> #("ＭＳ ゴシック-14" 0 10 (charset cp932-2-byte))

(set-frame-font "ＭＳ ゴシック-14")

-> error

(let ((locale-coding-system 'cp932))
  (set-frame-font "ＭＳ ゴシック-14"))

-> Frame font is changed.

-- 
Kazuhiro Ito