readium / readium-css

🌈 A set of reference stylesheets for EPUB Reading Systems, starting with Readium Mobile
https://readium.org/readium-css/
BSD 3-Clause "New" or "Revised" License
90 stars 20 forks source link

Off-the-rack night theme #7

Closed JayPanoz closed 6 years ago

JayPanoz commented 7 years ago

We’re very likely to ship with a “standard” theme for night mode. There are a couple of issues we must deal with, especially as it is a11y-related. In other words, we can probably make a few compromises but authors will have to make the most.

In the spirit of issue #5, I’d like to kickstart the conversation way ahead of time.

The current situation

The sad truth is that nobody knows how to deal with that.

Major issues

Design

At first sight:

Possible issues this will create

JayPanoz commented 7 years ago

Please note this is related to personalization:

JayPanoz commented 7 years ago

For gaiji, we’ll take the Japanese EPUB profile as a reference: http://ebpaj.jp/cmspage/wp/wp-content/uploads/2015/04/ebpaj_epub3guide_ver1.1.3-en-1.zip

JayPanoz commented 6 years ago

An interesting idea from Wikipedia that we might implement as well, especially as it is one line of CSS: letting the user darken all images in night mode (sorry, screenshot in french)

Wikipedia theme options

In that case, having another switch for inverting all images could be offered as well, it may be unperfected but for some books, it could solve a lot of issues (headings or table as images, B&W illustrations, etc.).

rdeltour commented 6 years ago

Won’t invert images

I think it's a safe approach. In the vast majority of cases, images should not be inverted.

and this is why I’m pushing for a mechanism so that authors can signal some images must be inverted. It could be ARIA territory (cc @rdeltour) since it also impacts high-contrast mode in nasty ways (cf. google issues in Chrome implem);

An author-defined mechanism might be interesting. The right venue to ask for feedback/interest could be WICG.

Another approach, as you state in you last comment, is to have a user preference. But "coloring" and "inverting" should be kept separated IMO. People could want the image to be darkened, or be applied a sepia filter, but still don't want to be inverted in a full night mode.

JayPanoz commented 6 years ago

But "coloring" and "inverting" should be kept separated IMO. People could want the image to be darkened, or be applied a sepia filter, but still don't want to be inverted in a full night mode.

Sorry if it was unclear, darken and invert would be 2 different switches, obviously (this is how I implemented them yesterday BTW).

For the record:

As for sepia, we currently apply a mix-blend-mode by default so that white backgrounds are sepia—that may change in the future. Unfortunately filter: sepia() has way too much impact on colors when it comes to photos.

Thanks for the feedback!

JayPanoz commented 6 years ago

As an update, I did a quick round of testing today and night mode is quite alright. Darken and invert options definitely help, they can improve comfort pretty dramatically in some illustrated-heavy publications.

Haven’t had the time to check everything yet but that’s a good start, we don’t have any major issue to deal with.

JayPanoz commented 6 years ago

After further testing, we’d probably better create some kind of CSS inverted variable implementers can use.

The assumption is:

Benefits for implementers:

On the other hand, we should probably start discussing a fallback mechanism for browsers which don’t support CSS variables. Although we’re not impacted with the reference implementations (iOS + Readium Desktop), some implementers will have to deal with IE11 and Edge 14 (web app).

I can open a dedicated issue now but feedback from implementers will come later, obviously (it needs practical implementations to see which options are the best ones).

JayPanoz commented 6 years ago

Closing this issue since we’re past design and it should be now managed on an issue-by-issue basis.

As an update, handling of OSs’ invert setting (a11y) has been improved a little bit (must still do extended testing).

Last comment I posted should be a (new) specific issue as well, since it is not about the night mode per se but re-usability of the sepia and night mode modules.