Покопавшись с флагом XFT_DEBUG
, я обнаружил кое-что странное. Я запускаю команду с флагом и перехожу к проблемному коммиту:
❯ XFT_DEBUG=1 gitk --all
XFT_DEBUG=1
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoSans-Medium.ttf: 0 (15.9999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoSans-Medium.ttf: 0 (15.9999 pixels)
…
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoSans-Medium.ttf: 0 (17.5999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoSans-Bold.ttf: 0 (17.5999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoSansSymbols2-Regular.ttf: 0 (17.5999 pixels)
XftFontInfoFill: /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: 2 (17.5999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: 0 (17.5999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf: 0 (109 pixels)
X Error of failed request: BadLength (poly request too large or internal Xlib length error)
Major opcode of failed request: 139 (RENDER)
Minor opcode of failed request: 20 (RenderAddGlyphs)
Serial number of failed request: 6687
Current serial number in output stream: 6706
Затем было обнаружено, что последняя строка перед сбоем имела эксцентрический размер в пикселях
XftFontInfoFill: /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: 0 (17.5999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf: 0 (109 pixels)
Удаление Noto-color-emoji
шрифтов решило проблему
apt remove --purge fonts-noto-color-emoji
Устранены сбои, и для рендеринга используется постоянный размер шрифта
XftFontInfoFill: /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: 2 (17.5999 pixels)
❯ apt show fonts-noto-color-emoji
…
Version: 0~20200408-1
Судя по моим исследованиям, это ошибка в библиотеке xorg "libXft" (см. проблему libxft #6 и ожидаемый запрос на слияние libxft!1).
Связанные обсуждения:
Согласно ответу Эдуарда, обходным путем является удаление пакета fonts-noto-color-emoji
(apt remove --purge fonts-noto-color-emoji
).
В Fedora мне удалось исправить аналогичную ошибку, которую я получил с git-gui
, удалив пакет google-noto-emoji-color-fonts
.