[Idle-dev] Please help test astral char display in tkinter Text (especially *nix)
Mark Lawrence
breamoreboy at gmail.com
Tue Nov 3 00:54:59 EST 2020
On 03/11/2020 03:04, Terry Reedy wrote:
> tcl/tk supports unicode chars in the BMP (Basic Multilingual Plane,
> utf-8 encoded with 1-3 bytes). The presence of chars in other plains
> ('astral', utf-8 encoded with 4 bytes, I believe) in a tkinter Text
> widget messages up *editing*, but they can sometimes be displayed with
> appropriate glyphs.
>
> On my Windows 10 64-bit 2004 update, astral code points print as
> unassigned [X], replaced [], or proper glyphs (see below). On my
> up-to-date macOS Mohave, as far as I know, no glyphs are actually
> printed and some hang, freezing IDLE's Shell (and making extensive
> testing difficult). On Linux, behavior is mixed, including 'crashes',
> with the use of multicolor rather than black/white fonts apparently an
> issue. https://bugs.python.org/issue42225. I would like more
> information about behavior on other systems, especially *nix.
>
> The following runs to completion for me, without errors, in about 1 second.
>
> tk = True
> if tk:
I'm not sure about the purpose of the tk variable here but hey ho.
> from tkinter import Tk
> from tkinter.scrolledtext import ScrolledText
> root = Tk()
> text = ScrolledText(root, width=80, height=40)
> text.pack()
> def print(txt):
> text.insert('insert', txt+'\n')
>
> errors = []
> for i in range(0x10000, 0x40000, 32):
> chars = ''.join(chr(i+j) for j in range(32))
> try:
> print(f"{hex(i)} {chars}")
> except Exception as e:
> errors.append(f"{hex(i)} {e}")
> print("ERRORS:")
> for line in errors:
> print(line)
>
Did you mean your 'print' here or did you intend the builtin 'print'? I
assumed the latter so just renamed your 'print' to 'tkprint'.
> Perhaps half of the assigned chars in the first plane are printed
> instead of being replaced with a narrow box. This includes emoticons as
> foreground color outlines on background color. Maybe all of the second
> plane of extended CJK chars are printed. The third plane is unassigned
> and prints as unassigned boxes (with an X).
>
> If you get errors, how many. If you get a hang or crash, how far did
> the program get?
>
Ran to completion on ubuntu in negligible time using python3.7 and 3.8.
--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.
Mark Lawrence
More information about the IDLE-dev
mailing list