bug#68339: [patch] Set the IME window font to an appropriate size

dANiuu zHaO <[email protected]> Mon, 3 Aug 2026 00:35:07 +0800
Newsgroups gmane.emacs.bugs
Message-ID <CAEOE9jdDiry=fND_HnQ4H_q4EfpH6x-9X5gGCchVxU_XkHfaQQ@mail.gmail.com>
--000000000000ef44d4065813010d
Content-Type: multipart/alternative; boundary="000000000000ef44d2065813010b"

--000000000000ef44d2065813010b
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

[patch 3] Set the IME window font to an appropriate size

Changed to use FACE_FROM_ID_OR_NULL and added a fallback check: if face is
NULL, use FRAME_FONT instead.

dANiuu zHaO <[email protected]> =E4=BA=8E2026=E5=B9=B48=E6=9C=883=E6=97=
=A5=E5=91=A8=E4=B8=80 00:10=E5=86=99=E9=81=93=EF=BC=9A

> Yes, more testing is a good idea. I will share and distribute these
> patches in the Emacs communities I know, and I hope more people can help
> test them.
>
> As for the code suggestions, I will send an improved patch shortly.
>
> Finally, I have signed the form and am waiting for a response.
> Thanks.
>
> Eli Zaretskii <[email protected]> =E4=BA=8E2026=E5=B9=B48=E6=9C=882=E6=97=A5=
=E5=91=A8=E6=97=A5 23:52=E5=86=99=E9=81=93=EF=BC=9A
>
>> > From: dANiuu zHaO <[email protected]>
>> > Date: Sun, 2 Aug 2026 23:27:31 +0800
>> > Cc: [email protected]
>> >
>> > You were right. I only needed to build it once locally and it worked
>> perfectly =E2=80=94 exactly as you described, with no
>> > errors at all. There's a new patch and a GIF attached to demonstrate m=
y
>> current work.
>> > Everything works fine on my local machine, but it will likely need mor=
e
>> testing from others. Lastly, thank you for
>> > your guidance =E2=80=94 without it, it would have taken me much longer=
 to
>> figure out the root cause.
>>
>> Yes, more testing is a good idea.  Would people who have IME installed
>> on their Windows systems please apply the patch, try using IME, and
>> report back?
>>
>> > Finally, I agree to sign the copyright-assignment agreement.
>>
>> Thanks, form sent off-list.
>>
>> > +       face =3D FACE_FROM_ID (f, lookup_basic_face (w, f,
>> DEFAULT_FACE_ID));
>> > +       GetObjectW (FONT_HANDLE (face->font), sizeof (lf), &lf);
>>
>> Please add the fallback here, in case something goes wrong.
>> Specifically, if either 'face' or face->font is NULL, we should use
>> FRAME_FONT as fallback.
>>
>> Also, please use FACE_FROM_ID_OR_NULL instead of FACE_FROM_ID, because
>> the latter will hit assert violation if the result is NULL, whereas we
>> want to handle that ourselves here.
>>
>

--000000000000ef44d2065813010b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">[patch 3]=C2=A0Set the IME window font to an appropriate s=
ize<br><br><div>Changed to use FACE_FROM_ID_OR_NULL and added a fallback ch=
eck: if face is NULL, use FRAME_FONT instead.</div></div><br><div class=3D"=
gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">dA=
Niuu zHaO &lt;<a href=3D"mailto:[email protected]">[email protected]<=
/a>&gt; =E4=BA=8E2026=E5=B9=B48=E6=9C=883=E6=97=A5=E5=91=A8=E4=B8=80 00:10=
=E5=86=99=E9=81=93=EF=BC=9A<br></div><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex"><div dir=3D"ltr">Yes, more testing is a good idea. I will share=
 and distribute these patches in the Emacs communities I know, and I hope m=
ore people can help test them.<br><br>As for the code suggestions, I will s=
end an improved patch shortly.<div><br><div>Finally, I have signed the form=
 and am waiting for a response.<br>Thanks.</div></div></div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">Eli Zaretskii &lt;<a=
 href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>&gt; =E4=BA=
=8E2026=E5=B9=B48=E6=9C=882=E6=97=A5=E5=91=A8=E6=97=A5 23:52=E5=86=99=E9=81=
=93=EF=BC=9A<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px=
 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">&gt=
; From: dANiuu zHaO &lt;<a href=3D"mailto:[email protected]" target=3D"_=
blank">[email protected]</a>&gt;<br>
&gt; Date: Sun, 2 Aug 2026 23:27:31 +0800<br>
&gt; Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">68339@d=
ebbugs.gnu.org</a><br>
&gt; <br>
&gt; You were right. I only needed to build it once locally and it worked p=
erfectly =E2=80=94 exactly as you described, with no<br>
&gt; errors at all. There&#39;s a new patch and a GIF attached to demonstra=
te my current work.<br>
&gt; Everything works fine on my local machine, but it will likely need mor=
e testing from others. Lastly, thank you for<br>
&gt; your guidance =E2=80=94 without it, it would have taken me much longer=
 to figure out the root cause.<br>
<br>
Yes, more testing is a good idea.=C2=A0 Would people who have IME installed=
<br>
on their Windows systems please apply the patch, try using IME, and<br>
report back?<br>
<br>
&gt; Finally, I agree to sign the copyright-assignment agreement.<br>
<br>
Thanks, form sent off-list.<br>
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0face =3D FACE_FROM_ID (f, lookup_basic_fac=
e (w, f, DEFAULT_FACE_ID));<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0GetObjectW (FONT_HANDLE (face-&gt;font), s=
izeof (lf), &amp;lf);<br>
<br>
Please add the fallback here, in case something goes wrong.<br>
Specifically, if either &#39;face&#39; or face-&gt;font is NULL, we should =
use<br>
FRAME_FONT as fallback.<br>
<br>
Also, please use FACE_FROM_ID_OR_NULL instead of FACE_FROM_ID, because<br>
the latter will hit assert violation if the result is NULL, whereas we<br>
want to handle that ourselves here.<br>
</blockquote></div>
</blockquote></div>

--000000000000ef44d2065813010b--

--000000000000ef44d4065813010d
Content-Type: application/octet-stream; 
	name="0001-Set-the-IME-window-font-to-an-appropriate-size.patch"
Content-Disposition: attachment; 
	filename="0001-Set-the-IME-window-font-to-an-appropriate-size.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_msc0qw6j0>
X-Attachment-Id: f_msc0qw6j0

RnJvbSAwZGFkNjNjMWU3YmEwZGRiZDAyMjAzZDdiMTEwOTFhMjEyNDg1NjM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiB6ZG4gPHpoYW9kYW5pdTFAZ21haWwuY29tPgpEYXRlOiBTdW4s
IDIgQXVnIDIwMjYgMTE6MDU6MDIgKzA4MDAKU3ViamVjdDogW1BBVENIXSBTZXQgdGhlIElNRSB3
aW5kb3cgZm9udCB0byBhbiBhcHByb3ByaWF0ZSBzaXplLgoKKiBzcmMvdzMyZm5zLmMgKHczMl93
bmRfcHJvYyk6IE9idGFpbiB0aGUgc3RydWN0IGZhY2UgYW5kIHVzZQpGT05UX0hBTkRMRSB0byBj
b252ZXJ0IGZhY2UtPmZvbnQgdG8gYW4gSEZPTlQsIGZhbGxpbmcgYmFjayB0bwpGUkFNRV9GT05U
IHdoZW4gZmFjZSBpcyBOVUxMLCBpbiBvcmRlciB0byByZXRyaWV2ZSB0aGUgZm9udAppbmZvcm1h
dGlvbiBhbmQgc2V0IHRoZSBmb250IGFjY29yZGluZ2x5LgotLS0KIHNyYy93MzJmbnMuYyB8IDE1
ICsrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKykKCmRpZmYg
LS1naXQgYS9zcmMvdzMyZm5zLmMgYi9zcmMvdzMyZm5zLmMKaW5kZXggNzI2ZmU1Mi4uZjQyMjY0
MiAxMDA2NDQKLS0tIGEvc3JjL3czMmZucy5jCisrKyBiL3NyYy93MzJmbnMuYwpAQCAtNDcsNiAr
NDcsNyBAQCAjZGVmaW5lIENPQkpNQUNST1MgLyogQXNrIGZvciBDIGRlZmluaXRpb25zIGZvciBD
T00uICAqLwogCiAjaW5jbHVkZSAibGlzcC5oIgogI2luY2x1ZGUgInczMnRlcm0uaCIKKyNpbmNs
dWRlICJ3MzJmb250LmgiCiAjaW5jbHVkZSAiZnJhbWUuaCIKICNpbmNsdWRlICJ3aW5kb3cuaCIK
ICNpbmNsdWRlICJidWZmZXIuaCIKQEAgLTIwMCw2ICsyMDEsOSBAQCAjZGVmaW5lIENDSERFVklD
RU5BTUUgMzIKIHR5cGVkZWYgQk9PTCAoV0lOQVBJICogSW1tR2V0T3BlblN0YXR1c19Qcm9jKSAo
SU4gSElNQyk7CiB0eXBlZGVmIEJPT0wgKFdJTkFQSSAqIEltbVNldE9wZW5TdGF0dXNfUHJvYykg
KElOIEhJTUMsIElOIEJPT0wpOwogCisvKiBTZXQgSU1FIGZvbnQuICAqLwordHlwZWRlZiBCT09M
IChXSU5BUEkgKiBJbW1TZXRDb21wb3NpdGlvbkZvbnRfUHJvYykgKElOIEhJTUMsIExQTE9HRk9O
VFcgbHBsZik7CisKIHR5cGVkZWYgSE1PTklUT1IgKFdJTkFQSSAqIE1vbml0b3JGcm9tUG9pbnRf
UHJvYykgKElOIFBPSU5UIHB0LCBJTiBEV09SRCBmbGFncyk7CiB0eXBlZGVmIEJPT0wgKFdJTkFQ
SSAqIEdldE1vbml0b3JJbmZvX1Byb2MpCiAgIChJTiBITU9OSVRPUiBtb25pdG9yLCBPVVQgc3Ry
dWN0IE1PTklUT1JfSU5GTyogaW5mbyk7CkBAIC0yNDcsNiArMjUxLDcgQEAgI2RlZmluZSBDQ0hE
RVZJQ0VOQU1FIDMyCiBzdGF0aWMgSW1tR2V0Q29udGV4dF9Qcm9jIGdldF9pbWVfY29udGV4dF9m
biA9IE5VTEw7CiBzdGF0aWMgSW1tR2V0T3BlblN0YXR1c19Qcm9jIGdldF9pbWVfb3Blbl9zdGF0
dXNfZm4gPSBOVUxMOwogc3RhdGljIEltbVNldE9wZW5TdGF0dXNfUHJvYyBzZXRfaW1lX29wZW5f
c3RhdHVzX2ZuID0gTlVMTDsKK3N0YXRpYyBJbW1TZXRDb21wb3NpdGlvbkZvbnRfUHJvYyBzZXRf
aW1lX2NvbXBvc2l0aW9uX2ZvbnRfZm4gPSBOVUxMOwogc3RhdGljIEltbVJlbGVhc2VDb250ZXh0
X1Byb2MgcmVsZWFzZV9pbWVfY29udGV4dF9mbiA9IE5VTEw7CiBzdGF0aWMgSW1tU2V0Q29tcG9z
aXRpb25XaW5kb3dfUHJvYyBzZXRfaW1lX2NvbXBvc2l0aW9uX3dpbmRvd19mbiA9IE5VTEw7CiBz
dGF0aWMgTW9uaXRvckZyb21Qb2ludF9Qcm9jIG1vbml0b3JfZnJvbV9wb2ludF9mbiA9IE5VTEw7
CkBAIC01MDMyLDggKzUwMzcsMTEgQEAgdzMyX3duZF9wcm9jIChIV05EIGh3bmQsIFVJTlQgbXNn
LCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgICAgZWxzZQogCXsKIAkgIENPTVBP
U0lUSU9ORk9STSBmb3JtOworCSAgTE9HRk9OVFcgbGY7CiAJICBISU1DIGNvbnRleHQ7CiAJICBz
dHJ1Y3Qgd2luZG93ICp3OworCSAgc3RydWN0IGZhY2UgKmZhY2U7CisJICBzdHJ1Y3QgZm9udCAq
Zm9udDsKIAogCSAgLyogSW1wbGVtZW50YXRpb24gbm90ZTogVGhlIGNvZGUgYmVsb3cgZG9lcyBz
b21ldGhpbmcgdGhhdAogCSAgICAgb25lIHNob3VsZG4ndCBkbzogaXQgYWNjZXNzZXMgdGhlIHdp
bmRvdyBvYmplY3QgZnJvbSBhCkBAIC01MDc3LDYgKzUwODUsMTAgQEAgdzMyX3duZF9wcm9jIChI
V05EIGh3bmQsIFVJTlQgbXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogCSAgaWYg
KCFjb250ZXh0KQogCSAgICBnb3RvIGRmbHQ7CiAKKwkgIGZhY2UgPSBGQUNFX0ZST01fSURfT1Jf
TlVMTCAoZiwgbG9va3VwX2Jhc2ljX2ZhY2UgKHcsIGYsIERFRkFVTFRfRkFDRV9JRCkpOworCSAg
Zm9udCA9IGZhY2UgPyBmYWNlLT5mb250IDogRlJBTUVfRk9OVCAoZik7CisJICBHZXRPYmplY3RX
IChGT05UX0hBTkRMRSAoZm9udCksIHNpemVvZiAobGYpLCAmbGYpOworCSAgc2V0X2ltZV9jb21w
b3NpdGlvbl9mb250X2ZuIChjb250ZXh0LCAmbGYpOwogCSAgc2V0X2ltZV9jb21wb3NpdGlvbl93
aW5kb3dfZm4gKGNvbnRleHQsICZmb3JtKTsKIAkgIHJlbGVhc2VfaW1lX2NvbnRleHRfZm4gKGh3
bmQsIGNvbnRleHQpOwogCX0KQEAgLTEyMzMyLDYgKzEyMzQ0LDkgQEAgZ2xvYmFsc19vZl93MzJm
bnMgKHZvaWQpCiAgICAgICBnZXRfcHJvY19hZGRyIChpbW0zMl9saWIsICJJbW1HZXRPcGVuU3Rh
dHVzIik7CiAgICAgc2V0X2ltZV9vcGVuX3N0YXR1c19mbiA9IChJbW1TZXRPcGVuU3RhdHVzX1By
b2MpCiAgICAgICBnZXRfcHJvY19hZGRyIChpbW0zMl9saWIsICJJbW1TZXRPcGVuU3RhdHVzIik7
CisKKyAgICBzZXRfaW1lX2NvbXBvc2l0aW9uX2ZvbnRfZm4gPSAoSW1tU2V0Q29tcG9zaXRpb25G
b250X1Byb2MpCisgICAgICBnZXRfcHJvY19hZGRyIChpbW0zMl9saWIsICJJbW1TZXRDb21wb3Np
dGlvbkZvbnRXIik7CiAgIH0KIAogICBITU9EVUxFIGhtX2tlcm5lbDMyID0gR2V0TW9kdWxlSGFu
ZGxlICgia2VybmVsMzIuZGxsIik7Ci0tIAoyLjU0LjAKCg==
--000000000000ef44d4065813010d--