Created attachment 1333924 [details] test script do demonistrate emoji fix font causing an X error Description of problem: The NCID (Network Caller ID) client is written in tcl/tk. When the google-noto-emoji-fonts became part of the standard install for Fedora, the ncid client would cause an X error and crash every time it scanned for fixed fonts. The attached script was written to determine and verify the problem. Version-Release number of selected component (if applicable): google-noto-emoji-fonts-20170827-1.fc26.noarch How reproducible: Reproducible every time test script run on Fedora 26 and also Fedora 25. Steps to Reproduce: 1. run attached test script 2. 3. Actual results: X Error of failed request: BadLength (poly request too large or internal Xlib length error) Major opcode of failed request: 138 (RENDER) Minor opcode of failed request: 20 (RenderAddGlyphs) Serial number of failed request: 476 Current serial number in output stream: 539 Expected results: Expected script not to cause an X error and crash. Additional info: Uncomment the two Noto Emoji font lines in testfonts.tk to not get the X error. The bug is also reported at https://core.tcl.tk/tk/tktview/3767882e066523dc9ae4 but it is considered a font problem not a tk problem.
As you write in your attached script: “Most likely this is an Xft deficiency” This problem is not specific to the Noto Emoji fonts, almost all emoji fonts do not work when trying to display them for example with “xfd -fa font”: mfabian@taka:~ $ for i in 'Noto Color Emoji' 'Apple Color Emoji' 'Emoji One' 'Noto Emoji' 'Android Emoji' 'Segoe UI Emoji' 'Twitter Color Emoji'; do fc-list "$i"; xfd -fa "$i"; done /usr/share/fonts/google-noto-emoji/NotoColorEmoji.ttf: Noto Color Emoji:style=Regular Warning: Missing charsets in String to FontSet conversion X Error of failed request: BadLength (poly request too large or internal Xlib length error) Major opcode of failed request: 138 (RENDER) Minor opcode of failed request: 20 (RenderAddGlyphs) Serial number of failed request: 217 Current serial number in output stream: 370 /home/mfabian/.fonts/Apple Color Emoji.ttf: Apple Color Emoji,Apple 彩色表情符號,Apple farve\-emoji,Apple Farben\-Emoji,Applen väri\-emoji,Apple Emoji couleur,Colore Emoji Apple,Apple カラー絵文字,Apple 컬러 이모티콘,Apple Kleur\-Emoji,Apple farge\-emoji,Apple Emoji em Cores,Цветные эмодзи Apple,Apple färg\-emoji,Apple 彩色表情符号,لون,Apple Emoji color:style=Regular,標準體,Ordinær,Normal,Normaali,Regolare,レギュラー,일반체,Regulier,Обычный,常规体,عادي Warning: Missing charsets in String to FontSet conversion X Error of failed request: BadLength (poly request too large or internal Xlib length error) Major opcode of failed request: 138 (RENDER) Minor opcode of failed request: 20 (RenderAddGlyphs) Serial number of failed request: 475 Current serial number in output stream: 651 /usr/share/fonts/eosrei-emojione/emojione-android.ttf: Emoji One:style=Regular Warning: Missing charsets in String to FontSet conversion X Error of failed request: BadLength (poly request too large or internal Xlib length error) Major opcode of failed request: 138 (RENDER) Minor opcode of failed request: 20 (RenderAddGlyphs) Serial number of failed request: 217 Current serial number in output stream: 370 /usr/share/fonts/google-noto-emoji/NotoEmoji-Regular.ttf: Noto Emoji:style=Regular Warning: Missing charsets in String to FontSet conversion X Error of failed request: BadLength (poly request too large or internal Xlib length error) Major opcode of failed request: 138 (RENDER) Minor opcode of failed request: 20 (RenderAddGlyphs) Serial number of failed request: 217 Current serial number in output stream: 371 /usr/share/fonts/google-android-emoji/AndroidEmoji.ttf: Android Emoji:style=Regular Warning: Missing charsets in String to FontSet conversion X Error of failed request: BadLength (poly request too large or internal Xlib length error) Major opcode of failed request: 138 (RENDER) Minor opcode of failed request: 20 (RenderAddGlyphs) Serial number of failed request: 217 Current serial number in output stream: 368 /home/mfabian/.fonts/segoeuiemoji/seguiemj.ttf: Segoe UI Emoji:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta Warning: Missing charsets in String to FontSet conversion X Error of failed request: BadLength (poly request too large or internal Xlib length error) Major opcode of failed request: 138 (RENDER) Minor opcode of failed request: 20 (RenderAddGlyphs) Serial number of failed request: 217 Current serial number in output stream: 367 /home/mfabian/.fonts/TwitterColorEmoji-SVGinOT-Linux-1.3/TwitterColorEmoji-SVGinOT.ttf: Twitter Color Emoji:style=Regular Warning: Missing charsets in String to FontSet conversion X Error of failed request: BadLength (poly request too large or internal Xlib length error) Major opcode of failed request: 138 (RENDER) Minor opcode of failed request: 20 (RenderAddGlyphs) Serial number of failed request: 217 Current serial number in output stream: 367 mfabian@taka:~ $ mfabian@taka:~ $
Updating to the google-noto-emoji-fonts-20170928-1.fc26.noarch package fixed the problem of the "Noto Emoji" font causing an X error. Unfortunately, if the google-noto-emoji-color-fonts-20170928-1.fc26.noarch package is installed not only does the "Noto Color Emoji" font cause an X error but the "Noto Emoji" font also causes the error again. If the google-noto-emoji-color-fonts-20170928-1.fc26.noarch package is uninstalled, "Noto Emoji" will not cause an X error.
I think it is because "Noto Color Emoji" contains color bitmap glyph. The color bitmap is new feature of TrueType font, tcl/tk or X Window may not support it yet.
Yes, all color bitmap fonts cause this problem, see the comment: https://bugzilla.redhat.com/show_bug.cgi?id=1498269#c1
(In reply to John L. Chmielewski from comment #2) > Updating to the google-noto-emoji-fonts-20170928-1.fc26.noarch package fixed > the problem of the "Noto Emoji" font causing an X error. This font package has been split: google-noto-emoji-fonts now contains only "Noto Emoji" (scalable black and white font) google-noto-emoji-color-fonts contains only "Noto Color Emoji" (Coloured bitmap font) > Unfortunately, if the google-noto-emoji-color-fonts-20170928-1.fc26.noarch > package is installed not only does the "Noto Color Emoji" font cause an X > error but the "Noto Emoji" font also causes the error again. That is only because the default fontconfig rules enforce the use of color emoji fonts if available, see: /etc/fonts/conf.d/60-generic.conf which contains: <!-- Prefer to match color emoji font. --> <match> <test name="lang"> <string>und-zsye</string> </test> <test qual="all" name="color" compare="not_eq"> <bool>true</bool> </test> <test qual="all" name="color" compare="not_eq"> <bool>false</bool> </test> <edit name="color" mode="append"> <bool>true</bool> </edit> </match> Because of this, even if you request "Noto Emoji", what you actually get is "Noto Color Emoji" unless this font is not installed at all. > If the google-noto-emoji-color-fonts-20170928-1.fc26.noarch package is > uninstalled, "Noto Emoji" will not cause an X error. Because then there is no "Noto Color Emoji".
Xft is legacy, TCL/TK can't expect it to integrate new features forever And color emogis are a new feature (basically a completely new font format, that exercises the exact limits that caused Xft maintainers to deprecate it in favour of fontconfig) The fix can only be TCL/TK side, their upstream needs to finish the transition from X core fonts and Xft to client-side fonts (fontconfig+harfbuzz-ng), like other toolkits did long ago. It will also fix lots of other TCL/TK text problems In the meanwhile using TCL/TK will force you to keep your system in a legacy state without new font features like color emogis.
FYI I'm pretty sure I do not own any package anymore and I definitely got rid off all tcl related stuff years go. If you want to fix it, feel free to take ownership of the package.
This message is a reminder that Fedora 27 is nearing its end of life. On 2018-Nov-30 Fedora will stop maintaining and issuing updates for Fedora 27. It is Fedora's policy to close all bug reports from releases that are no longer maintained. At that time this bug will be closed as EOL if it remains open with a Fedora 'version' of '27'. Package Maintainer: If you wish for this bug to remain open because you plan to fix it in a currently maintained version, simply change the 'version' to a later Fedora version. Thank you for reporting this issue and we are sorry that we were not able to fix it before Fedora 27 is end of life. If you would still like to see this bug fixed and are able to reproduce it against a later version of Fedora, you are encouraged change the 'version' to a later Fedora version prior this bug is closed as described in the policy above. Although we aim to fix as many bugs as possible during every release's lifetime, sometimes those efforts are overtaken by events. Often a more recent Fedora release includes newer upstream software that fixes bugs or makes them obsolete.
This bug is also in version 28 as reproduced by the provided test script. The bug should also be present version 29. Changed version to 28.
this bug is reproducible in Fedora 30 by the provided script and moving to F30
Reproducible in f32.
Note that for the past few months, someone has been working on Xft emoji support upstream: https://gitlab.freedesktop.org/xorg/lib/libxft/-/merge_requests/1
Still reproducible in f33: mfabian@taka:~ $ wish % font metrics notocoloremoji -ascent 14 -descent 4 -linespace 18 -fixed 1 % 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: 264 Current serial number in output stream: 265 mfabian@taka:~ $ cat /etc/fedora-release Fedora release 33 (Thirty Three) mfabian@taka:~ $
This message is a reminder that Fedora 33 is nearing its end of life. Fedora will stop maintaining and issuing updates for Fedora 33 on 2021-11-30. It is Fedora's policy to close all bug reports from releases that are no longer maintained. At that time this bug will be closed as EOL if it remains open with a Fedora 'version' of '33'. Package Maintainer: If you wish for this bug to remain open because you plan to fix it in a currently maintained version, simply change the 'version' to a later Fedora version. Thank you for reporting this issue and we are sorry that we were not able to fix it before Fedora 33 is end of life. If you would still like to see this bug fixed and are able to reproduce it against a later version of Fedora, you are encouraged change the 'version' to a later Fedora version prior this bug is closed as described in the policy above. Although we aim to fix as many bugs as possible during every release's lifetime, sometimes those efforts are overtaken by events. Often a more recent Fedora release includes newer upstream software that fixes bugs or makes them obsolete.
This bug is reproducible in f34
This message is a reminder that Fedora Linux 34 is nearing its end of life. Fedora will stop maintaining and issuing updates for Fedora Linux 34 on 2022-06-07. It is Fedora's policy to close all bug reports from releases that are no longer maintained. At that time this bug will be closed as EOL if it remains open with a 'version' of '34'. Package Maintainer: If you wish for this bug to remain open because you plan to fix it in a currently maintained version, change the 'version' to a later Fedora Linux version. Thank you for reporting this issue and we are sorry that we were not able to fix it before Fedora Linux 34 is end of life. If you would still like to see this bug fixed and are able to reproduce it against a later version of Fedora Linux, you are encouraged to change the 'version' to a later version prior to this bug being closed.
Fedora Linux 34 entered end-of-life (EOL) status on 2022-06-07. Fedora Linux 34 is no longer maintained, which means that it will not receive any further security or bug fix updates. As a result we are closing this bug. If you can reproduce this bug against a currently maintained version of Fedora please feel free to reopen this bug against that version. If you are unable to reopen this bug, please file a new report against the current release. Thank you for reporting this bug and we are sorry it could not be fixed.