Bug 1498269 - Noto Color Emoji and Noto Emoji fixed fonts cause a X error in a tcl/tk script
Summary: Noto Color Emoji and Noto Emoji fixed fonts cause a X error in a tcl/tk script
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: tk
Version: 30
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: Jaroslav Škarvada
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-10-03 20:14 UTC by John L. Chmielewski
Modified: 2019-06-27 21:29 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:


Attachments (Terms of Use)
test script do demonistrate emoji fix font causing an X error (1.02 KB, text/plain)
2017-10-03 20:14 UTC, John L. Chmielewski
no flags Details

Description John L. Chmielewski 2017-10-03 20:14:35 UTC
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.

Comment 1 Mike FABIAN 2017-10-05 09:39:21 UTC
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:~
$

Comment 2 John L. Chmielewski 2017-10-09 16:13:46 UTC
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.

Comment 3 Peng Wu 2017-10-10 06:36:08 UTC
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.

Comment 4 Mike FABIAN 2017-10-19 08:25:48 UTC
Yes, all color bitmap fonts
cause this problem, see the comment:

https://bugzilla.redhat.com/show_bug.cgi?id=1498269#c1

Comment 5 Mike FABIAN 2017-10-19 08:32:13 UTC
(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".

Comment 6 Nicolas Mailhot 2017-12-06 09:38:55 UTC
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.

Comment 7 Marcela Mašláňová 2018-10-02 14:49:27 UTC
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.

Comment 8 Ben Cotton 2018-11-27 14:07:23 UTC
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.

Comment 9 John L. Chmielewski 2018-11-27 16:28:13 UTC
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.

Comment 10 sachin 2019-04-03 08:38:40 UTC
this bug is reproducible in Fedora 30 by the provided script and moving to F30


Note You need to log in before you can comment on or make changes to this bug.