Back to Silas S. Brown's home page
Stylesheets for low vision
Many modern Web browsers allow users to set their own CSS stylesheets for accessibility purposes. It can be difficult to write a comprehensive accessibility stylesheet by hand, especially if you want to work around browser bugs and the difficulties posed by complex websites. So I made a program to generate long CSS files with workarounds for many problems.If you are a programmer, you can adjust the Python code to your needs (works in both Python 2 and Python 3). Alternatively, you can try one of these presets:
Download pre-generated low-vision stylesheets
- unchanged yellow on black,
- unchanged green on black,
- unchanged white on black,
- unchanged soft greys,
- unchanged black on linen,
- unchanged black on white
- 18 pixels yellow on black,
- 18px green on black,
- 18px white on black,
- 18px soft greys,
- 18px black on linen,
- 18px black on white
- 20 pixels yellow on black,
- 20px green on black,
- 20px white on black,
- 20px soft greys,
- 20px black on linen,
- 20px black on white
- 25 pixels yellow on black,
- 25px green on black,
- 25px white on black,
- 25px soft greys,
- 25px black on linen,
- 25px black on white
- 30 pixels yellow on black,
- 30px green on black,
- 30px white on black,
- 30px soft greys,
- 30px black on linen,
- 30px black on white
- 35 pixels yellow on black,
- 35px green on black,
- 35px white on black,
- 35px soft greys,
- 35px black on linen,
- 35px black on white
- 40 pixels yellow on black,
- 40px green on black,
- 40px white on black,
- 40px soft greys,
- 40px black on linen,
- 40px black on white
- 45 pixels yellow on black,
- 45px green on black,
- 45px white on black,
- 45px soft greys,
- 45px black on linen,
- 45px black on white
- 50 pixels yellow on black,
- 50px green on black,
- 50px white on black,
- 50px soft greys,
- 50px black on linen,
- 50px black on white
- 60 pixels yellow on black,
- 60px green on black,
- 60px white on black,
- 60px soft greys,
- 60px black on linen,
- 60px black on white
- 75 pixels yellow on black,
- 75px green on black,
- 75px white on black,
- 75px soft greys,
- 75px black on linen,
- 75px black on white
- 100 pixels yellow on black,
- 100px green on black,
- 100px white on black,
- 100px soft greys,
- 100px black on linen,
- 100px black on white
Size "unchanged" lacks size-related layout changes; this can be useful if you do not need large print, or your monitor is big enough for the browser's built-in zoom controls to be enough, but you still need to change the colours (see advantages of dark backgrounds).
What is the best pixel size?
You could just experiment, but if you frequently change between different setups and/or have variable sight then it might help to know how to choose a size without constantly re-experimenting.Details
- You need to know
the best size in points (36, 48 or whatever) for text you
read at the distance of the screen.
- First you need to know your normal distance to the screen. You can move the screen nearer, but the limits will vary with the type of mounting and the size of your keyboard, desk, chair, etc; you need to be aware of this variation if you use different computers. Also, if you have variable sight, remember to allow yourself room to get even nearer when your sight is worse (and without hurting your posture too much), which is usually easier than temporary size changes.
- Divide the screen's distance by your normal reading distance for printed text (both measured from your eyes to the text itself, ignoring any magnifying device in between), and multiply by the size in points of the printed text you prefer to read.
- If you normally use a magnifier for printed text but cannot use it for the screen, multiply your answer by the scale factor of this magnifier.
- If you have a full-screen magnifier (fresnel lens) permanently mounted to the screen, then divide your answer by the scale factor of this magnifier.
- Do not try to work out your size by setting the
``point size'' on the screen of a word
processor or similar, because that might not be calibrated correctly.
-
Let P be your
on-screen point size, H and V be the horizontal and vertical
resolution of
your monitor,
and D be its size in inches (measure across the diagonal if
you don't know, and if you're on an old CRT
monitor then you should subtract about
an inch from the rated figure whereas
TFT monitors' figures are OK as they are). Your pixel size is
the square root of
(H*H + V*V) , divided by D, multiplied by P and divided by 72. (If your monitor has the old standard 4x3 aspect ratio then this simplifies toP*V/D * 5/216 .) - With some browsers, you'll need to divide this by the browser's setting of
window.devicePixelRatio
.
How to install a stylesheet
Save the stylesheet to a file on your disk, and:
Firefox
On the desktop version, locate your profile directory as
described on mozilla.org, and save the file as
userContent.css
in the chrome
subdirectory
of your profile directory (if no chrome
subdirectory exists, create
it).
toolkit
Internet Explorer
Go to Tools / Internet Options / Accessibility
and set that file as a user-supplied
stylesheet.Safari
Go to Safari / Preferences / Advanced / Style
sheet, select Other, and select the file
Google Chrome
Create a directory with the stylesheet saved as userContent.css
and a file called manifest.json
with the following content: {"manifest_
then go to chrome://extensions and with Developer Mode turned on "load unpacked extension" and point to this directory.
/usr/local/bin
script to do python
(full path to adjuster.py) --browser=
(URL of stylesheet goes here), although SSL sites will need domain-rewriting
Midori
Before version 0.0.20, use Edit / Preferences / Behaviour / User Stylesheet. In later versions, go to Tools / Extensions
(or Preferences / Extensions), enable `User Addons', and save the .css file in .local/share/midori/styles/
.
Some versions of Midori do not have this functionality.
KDE browsers
In Rekonq, use Configure / Appearance / Stylesheets.
In the older Konqueror browser, go to ``Settings'', ``Configure Konqueror'', ``Stylesheets'' (in some versions it's a tab of ``Appearance''),
``user-defined stylesheet'' and set the filename; you may have to restart
Konqueror. Some Konqueror versions have a bug that causes it to completely fail to apply the stylesheet; if you have an affected version then you might need to switch to another browser.
Opera 12 or below
(these instructions do not apply to the new Opera 15 which is basically Chromium see above)
Opera menu / Settings / Preferences / Advanced / Content / Style options / My style sheet
:first-letter
, :first-line
and :hover
rules (e.g. replace :first
with :girst
and :hover
with :gover
throughout), but this is not a complete solution.
OLPC browser
Save the file as ~/.sugar/default/gecko/user-stylesheet.css and
restart. (When calculating the best stylesheet size, remember the
OLPC's screen is 1200x900 and 7.5 inches.)
Copyright and Trademarks
All material © Silas S. Brown unless otherwise stated.Android is a trademark of Google LLC.
Firefox is a registered trademark of The Mozilla Foundation.
Google is a trademark of Google LLC.
Javascript is a trademark of Oracle Corporation in the US.
Linux is the registered trademark of Linus Torvalds in the U.S. and other countries.
Python is a trademark of the Python Software Foundation.
Safari is a registered trademark of Apple Inc.
Windows is a registered trademark of Microsoft Corp.
Any other trademarks I mentioned without realising are trademarks of their respective holders.