Невозможно отобразить символ Unicode для индекса 2 в Windows - PullRequest
0 голосов
/ 03 февраля 2012

Я показываю строку Unicode из XML-файла в QLabel. Мне нужно показать H 2 O в QLabel, но с цифрой '2' в качестве нижнего индекса (символ Unicode U + 2082). QLabel может принять строку html, но я не могу поместить этот html в xml.

В Linux он отображается правильно, но в Windows он показывает некоторый мусор вместо индекса 2. Я перепробовал много разных методов (включая изменение семейства шрифтов), но ни один из них не работает в Windows. Почему?

1 Ответ

3 голосов
/ 03 февраля 2012

Вероятно, это проблема шрифта, а не Python. Не все шрифты в Windows имеют U + 2082. Вам нужно выбрать правильный шрифт, который содержит этот символ.

Например, "Arial Unicode MS" имеет это. Рассмотрим пример ниже:

import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()

unicode_font = QtGui.QLabel(u"Unicode Font: H\u2082O")
unicode_font.setStyleSheet("font-family: 'Arial Unicode MS', Arial, sans-serif; font-size: 15px;") 

normal_font = QtGui.QLabel(u"Normal Font: H\u2082O")
normal_font.setStyleSheet("font-family: Arial, sans-serif; font-size: 15px;")


layout = QtGui.QVBoxLayout()
layout.addWidget(unicode_font)
layout.addWidget(normal_font)
widget.setLayout(layout)
widget.show()
sys.exit(app.exec_())

На Win 7 32-бит это дает:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...