문제는 플랫폼 및 글꼴에서 유니 코드를 처리 할 때 발생합니다. 설명한대로 on wikipedia : 이전에 Latin-1 으로 처리 한 위 첨자 1,2 및 3은 글꼴에서 다른 지원을 얻습니다.
고정 크기 문제는 알지 못했지만 대부분의 글꼴 (Linux 및 MacOS)에서 1,2,3은 4-9와 제대로 정렬되지 않았습니다.
내 조언은 필요에 맞는 글꼴을 선택하는 것입니다 (libre 고품질 글꼴을 제공하는 DejaVu 제품군을 참조하십시오).
다음은 글꼴이나 크기가 다른 위 첨자의 처리 방법을 보여주는 litte 응용 프로그램입니다.
from Tkinter import *
import tkFont
master = Tk()
canvas = Canvas(master, width=600, height=150)
canvas.grid(row=0, column=0, columnspan=2, sticky=W+N+E+S)
list = Listbox(master)
for f in sorted(tkFont.families()):
list.insert(END, f)
list.grid(row=1, column=0)
font_size= IntVar()
ruler = Scale(master, orient=HORIZONTAL, from_=1, to=200, variable=font_size)
ruler.grid(row=1, column=1, sticky=W+E)
def font_changed(*args):
sel = list.curselection()
font_name = list.get(sel[0]) if len(sel) > 0 else "Times"
canvas.itemconfig(text_item, font=(font_name,font_size.get()))
#force redrawing of the whole Canvas
# dirty rectangle of text items has bug with "superscript" character
canvas.event_generate("<Configure>")
def draw():
supernumber_exception={1:u'\u00b9', 2:u'\u00b2', 3:u'\u00b3'}
mytext =""
for i in range(10):
mytext += u'U'+ (supernumber_exception[i] if i in supernumber_exception else unichr(8304+i))+" "
return canvas.create_text(50, 50,text = mytext, anchor=NW)
text_item = draw()
list.bind("<<ListboxSelect>>", font_changed)
font_size.trace("w", font_changed)
font_size.set(30)
master.grid_columnconfigure(0, weight=0)
master.grid_columnconfigure(1, weight=1)
master.grid_rowconfigure(0, weight=1)
master.grid_rowconfigure(1, weight=0)
master.mainloop()
아름답게 작동합니다. 고맙습니다! –