gorhill / uBlock

uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean.
GNU General Public License v3.0
45.6k stars 3.05k forks source link

Icons still defunct after Firefox 42+ patch for browser.display.use_document_fonts = 0 #1072

Closed ilu33 closed 8 years ago

ilu33 commented 8 years ago

I know this has been discussed before and I read those issues which resulted in some kind of won't fix. But I'm bringing it up again because Firefox has changed it's handling of webfonts since v. 41 - from https://bugzilla.mozilla.org/show_bug.cgi?id=789788: "1) browser.display.use_document_fonts=1 #Website chooses fonts gfx.downloadable_fonts.enabled=true #Website chooses icons 2) browser.display.use_document_fonts=0 #Local-system chooses fonts gfx.downloadable_fonts.enabled=true #Website chooses icons 3) browser.display.use_document_fonts=0 #Local-system chooses fonts gfx.downloadable_fonts.enabled=false #Local-system chooses icons .... 2) Firefox default fonts are used but webfonts are allowed when they contain characters not covered by the users default fonts (like icons): browser.display.use_document_fonts = 0 gfx.downloadable_fonts.enabled = true "

According to this uBlockO should work with scenario no. 2 but it does not - it needs scenario no. 1, and I'm wondering why? Is this a bug in ff or in uBlock? I'm reluctant to give up protection against fingerprinting by enabling both preferences just to use an addon to protect my privacy. Further on I also have to cope with ugly webfonts which was exactly what the ff patch wanted to prevent. I appreciate your work and I can understand that you want to minimize maintenance work (although I still think using svg icons like in the fork would be best) but according to mozillas design the font icons should work with browser.display.use_document_fonts = 0 as long as the other is true.

This: https://github.com/gorhill/uBlock/issues/605 is a different issue because gfx.downloadable_fonts.enabled = false is intended to break webfont icons.

It would be nice if you could look into this issue again.

gorhill commented 8 years ago

Unable to reproduce, works as expected:

a

Whatever issue you have is unrelated to uBO.

ilu33 commented 8 years ago

This is really strange, but thank you for checking. I will have to look into other preferences but I can't imagine what else could interfere with the icon display. Note that only the logger item and the on/off switch is missing. The filter icon is there but wrong "1" instead of "A". ublock

gorhill commented 8 years ago

Any error message in the browser console?

Also, can you verify that the fontawesome resource used by uBO is at its expected location in your installation?

ilu33 commented 8 years ago

I will check.

gorhill commented 8 years ago

Actually, there is an anomaly in your screenshot: not all the font-based icons are missing in your popup, only some of them. The eye-dropper, no-popup, no-strict-blocking and no-cosmetic-filtering icons are showing fine. I don't understand why only some font-based icons are missing.

ilu33 commented 8 years ago

Yes, I added that while you were already answering. The cosmetic-filter-icon is actually just wrong, "1" instead of "A".

gorhill commented 8 years ago

The missing ones are the big power switch, the logger and the no-remote-fonts ones.

ilu33 commented 8 years ago

fontawesome is included in the .xpi file - should it also be elsewhere? I have the same problems with uMatrix btw. The 3 dots, save, delete and revert are there, rest is missing. Console shows a lot of css errors from assets-cdn.github.com (which is probably not allowed somewhere) but nothing on other pages.

gorhill commented 8 years ago

Do you have some user styles which could override the styles of uBO's own styles?

ilu33 commented 8 years ago

I have userChrome.css but it should not affect fonts: /* Do not remove the @namespace line — set default namespace to XUL is required */ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

personal-bookmarks .bookmark-item[container] > .toolbarbutton-icon {

display:none !important; }

/* background image for all toolbars */ toolbox,

toolbar-menubar,

#nav-bar,
#PersonalToolbar,
#FindToolbar,
tabbox,
sidebarheader,
#sidebar-box,
window statusbarpanel {
  -moz-appearance: none !important;
  background-image: url('header.png') !important;
  background-color: transparent !important;
}
gorhill commented 8 years ago

Maybe another extension registers some styles in the global space? Might be a coincidence but all the DOM elements with a missing icon happen to be that of the last DOM element of its parent.

ilu33 commented 8 years ago

I disabled everything but Noscript, uBlock, uMatrix - no change Does DOM have anything to do with DOM storage? Or the other stuff that can be configured in about:config starting with dom.xxx ?

gorhill commented 8 years ago

Unrelated to DOM storage. I am out of idea of what is going on.

gorhill commented 8 years ago

Can you try with a new profile?

ilu33 commented 8 years ago

Empty directory, installed uBlock and set browser.display.use_document_fonts = 0 Same result, icons missing as before. I was sure another preference I changed would be the culprit, but no. Very strange. FF 43, Debian

ilu33 commented 8 years ago

"Might be a coincidence but all the DOM elements with a missing icon happen to be that of the last DOM element of its parent." Is that also true for the missing icons in uMatrix? The 3 dots, save, delete and revert are there, rest is missing. Save is only visible if there is something to save. If there is nothing to save, the (grey) icon is also missing. Tested in the empty profile. Isn't that weird?

ilu33 commented 8 years ago

I tried to have a look with the DOM Inspector. I can inspect the dashboard there but I can't open the popup - or I don't know how. Would that get us somewhere?

gorhill commented 8 years ago

I can't open the popup

I tried this. Unfortunately the popup is modal, so this renders the inspector useless. If there is a trick to inspect the content of the popup, I don't know it.

gorhill commented 8 years ago

Is it possible that whavever font your Firefox is using is actually having a valid symbol entry for some of the unicode characters defined by Fontawesome? If I understand how the fix has been implemented in Firefox, it won't look up an entry in Fontawesome if there is an entry defined in the current font. What is the name of the font your are using in Firefox?

ilu33 commented 8 years ago

YOU FOUND IT! The font is "serif" which should be resolved as DejaVue Serif Book - I did not pick that, firefox did. I changed to "Liberation sans" and voila - icons showed. Maybe there is some problem in the font config of my distro - I will check that now and report back. Anyway, I'm very glad you took the time to figure that out. Thank you very much.

gorhill commented 8 years ago

I use Linux Mint 17, FF defaults to DejaVu (Serif and Sans), I don't see DejaVue Serif Book in the drop list.

ilu33 commented 8 years ago

I'm using SolydX which is a LMDE derivate and "Book" is not in my list either. '/$ fc-match serif' returns 'DejaVuSerif.ttf: "DejaVu Serif" "Book" ' Somehow the font mapping is not correct. I'm trying to figure out how fontconfig works but can't find where fc gets the "Book" from atm.

ilu33 commented 8 years ago

Indeed font mapping is not configured in my distro, we'll fix that in the next release. Thank you again for pointing that out! Great support!

ilu33 commented 8 years ago

It seems that fixing the font mapping is not as easy as I thought. I've checked several Debian distros and they all have the same problem. Since I can't figure out what Ubuntu/Mint changed to get it working I decided to write an entry about this on the uBlock troubleshooting page. I hope you are ok with this. I would like to do the same with uMatrix but there is no troubleshooting page.