├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── question-or-comment.md ├── .gitignore ├── CNAME ├── CSS ├── MyndexbDark.css ├── ReadMe.md ├── index.html ├── new-stylesM.css └── style.0.1.2-gM.css ├── LICENSE.md ├── README.md ├── WEBTOOLS ├── APCA │ ├── index.htm │ └── readme.md └── README.md ├── WhyAPCA.md ├── _config.yml ├── _includes ├── head-custom-google-analytics.html └── head-custom.html ├── _layouts ├── default.html ├── repoRoot.html ├── repoSubfolder.html └── simple.html ├── documentation ├── APCA-W3-LaTeX.md ├── APCA_FAQ.md ├── APCA_in_a_Nutshell.md ├── APCAeasyIntro.md ├── CONTRIBUTING.md ├── ImportantChangeNotices.md ├── LICENSE.md ├── README.md ├── StandardObserverModel.md ├── WhyAPCA.md ├── accessibilitystatement.md ├── color-vision-links.md ├── independent-review.md ├── index.md ├── minimum_compliance.md ├── referenceFont.md ├── regardingexponents.md ├── repoList.md └── thirdpartytools.md ├── favicon.ico └── images ├── APCA0.1.17_0.0.98GmathML.html ├── APCAFontSelect.png ├── APCA_0.0.98G4g+3.svg ├── APCAcolor4.png ├── APCAcolor4SQUARE.png ├── APCAlatex019df.png ├── APCAlatex019dr.png ├── APCAlogo.png ├── APCAlookupByContrast.jpeg ├── APCAlookupByContrastMay2022.png ├── APCAlookupByFont.jpeg ├── APCAlookupByFontMay2022.png ├── APCAtableLegend.jpeg ├── APCAtableLegendMay2022.png ├── APCAw3_0.1.17_APCA0.0.98G.svg ├── ColumnCompareAll400.png ├── DarkModeComparev2_2022.png ├── Eye Strain.png ├── Myndex_eye_cielab.jpg ├── Myndex_eye_cielabWide.png ├── YellowDotCheckboardAsmallChecker.png ├── YellowDotCheckboardDarkestShadow.png ├── buttons and colors.png └── contrastSensitivityGraph5sameColor.png /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "(Bug Report Title)" 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | Please enter a descriptive title. 11 | 12 | **Does this relate to a web app or tool (i.e. you're an end user) OR is this about code or code integration (you're a developer).** 13 | 14 | **Describe the bug** 15 | What happened? 16 | 17 | **To Reproduce** 18 | Steps so we can reproduce the behavior: 19 | 20 | **Expected behavior** 21 | What were you expecting as correct behavior? 22 | 23 | **Screenshots** 24 | Add screenshots or code snippets to help explain your problem. 25 | 26 | **System or device information (please complete the following):** 27 | - Device: [e.g. iPhone6 or iMac] 28 | - OS: [e.g. MacOS] 29 | - OS version 30 | - Browser [e.g. chrome, safari] 31 | - Version [e.g. 22] 32 | 33 | **Additional context** 34 | Add any other context about the problem here. 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an enhancement or a specific feature for this project 4 | title: 'Feature Request:' 5 | labels: enhancement, Tool Features 6 | assignees: '' 7 | 8 | --- 9 | 10 | # Please enter a descriptive title! 11 | 12 | **Is this about a tool (you're an end user) or about a code library (you're a developer)?** 13 | Please discuss the context of where the feature is needed. 14 | 15 | **Does this relate to a problem with using a tool or implementing code? Or is this something that would help expand use and application?.** 16 | *Ex. I'm always frustrated when [...]* OR 17 | *Ex. a button that makes the sky bluer would be neat!* 18 | 19 | **How do you think it would be best implemented?** 20 | A clear and concise description of what you want to happen. 21 | 22 | **Have you considered other alternatives?** 23 | Alternative solutions or features you've considered might help us better understand what you are looking for. 24 | 25 | 26 | **Additional context** 27 | Add any other context or screenshots about the feature request here. 28 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question-or-comment.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: QUESTION or COMMENT 3 | about: 'Please post all questions & comments in the discussions tab. ' 4 | title: 'Please post all questions & comments in the discussions tab. ' 5 | labels: question 6 | assignees: '' 7 | 8 | --- 9 | 10 | # Please post all questions & comments in the discussions tab. 11 | 12 | ## https://github.com/Myndex/SAPC-APCA/discussions 13 | 14 | Thank you!! 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # OLD 5 | old*/ 6 | XX_* 7 | *.*OLD 8 | 9 | # DEPRECATED 10 | DEPRECIATED/ 11 | DEPRECATED/ 12 | OBSOLETE/ 13 | PendingDelete/ 14 | IGNORE/ 15 | 16 | # macOS DS file 17 | .DS_Store 18 | 19 | # Log file 20 | *.log 21 | 22 | # BlueJ files 23 | *.ctxt 24 | 25 | # Mobile Tools for Java (J2ME) 26 | .mtj.tmp/ 27 | 28 | # Package Files # 29 | *.jar 30 | *.war 31 | *.nar 32 | *.ear 33 | *.zip 34 | *.tar.gz 35 | *.rar 36 | 37 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 38 | hs_err_pid* 39 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | git.apcacontrast.com -------------------------------------------------------------------------------- /CSS/ReadMe.md: -------------------------------------------------------------------------------- 1 | Hi There! 2 | 3 | These are just some style sheets for some of the documentation and so forth. 4 | -------------------------------------------------------------------------------- /CSS/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The Myndex Technologies Home Page 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | 27 | 28 |
29 | 30 | 31 | 32 | 33 | 34 |
35 | 36 | 37 |

Authorization Failure, IP Logged

38 |

Click Here To Continue

39 | 40 |
41 | 42 |







43 | 44 | 45 |



46 |



47 |



48 | 49 | 50 | 51 |
52 | 53 | 54 | 55 |
Copyright © 1997-2018 by MTI, all rights 56 | reserved
57 | 58 | 59 | 60 | 61 |

62 | 63 | 64 | -- Server.06 HTML okay -- 65 | 66 |
67 |
68 | 69 | 70 | -------------------------------------------------------------------------------- /CSS/new-stylesM.css: -------------------------------------------------------------------------------- 1 | .wrapper { padding: 4px 12px 12px; } 2 | 3 | #main_content { padding: 24px; } 4 | 5 | .headBanner { 6 | position: relative; 7 | z-index: 2; 8 | margin: 0; 9 | padding: 4px 12px; 10 | } 11 | .headBanner h1 { 12 | margin: -12px 0 0; 13 | text-align: left; 14 | font-family: Audiowide, Oxanium, Montserrat, sans-serif; 15 | font-size: 5.5em; 16 | font-weight: 600; 17 | color: #30a3; 18 | } 19 | .headBanner h1 a, .headBanner h1 a:visited, 20 | .headBanner h1 a:link { text-align: left; font-size: 1em; text-decoration: none; color: #30a3;} 21 | .headBanner h1 a:hover { text-align: left; font-size: 1em; text-decoration: none; color: #30aa; } 22 | 23 | .headBanner h1.bglite { 24 | position: absolute; 25 | z-index: -2; 26 | margin: -32px; 27 | text-align: left; 28 | font-family: Audiowide, Oxanium, Montserrat, sans-serif; 29 | font-size: 11em; 30 | font-weight: 600; 31 | color: #e4e0dd; 32 | color: #3300aa0a; 33 | } 34 | 35 | 36 | section h1 { 37 | margin: -12px 0; 38 | text-align: center; 39 | font-family: Audiowide, Oxanium, Montserrat, sans-serif; 40 | font-size: 3em; 41 | font-weight: 600; 42 | color: #30ab; 43 | } 44 | 45 | #issue-threads--comments {font-size: 2.6em;} 46 | #accurate-contrastusing-the-apca { margin: -12px 0; font-size: 3em;} 47 | 48 | #myndex-articles--links > p {font-size: 1.4em; margin: 2px 42px 12px 24px; color: #206;} 49 | 50 | 51 | .headBanner h2 { 52 | max-width: 620px; 53 | margin: 0; 54 | padding: 0 12px; 55 | text-align: left; 56 | line-height: 1.35; 57 | font-family: Oxanium, Montserrat, sans-serif; 58 | font-size: 1.5em; 59 | font-weight: 500; 60 | } 61 | 62 | 63 | .perceptex { 64 | padding: 0; 65 | text-align: center; 66 | font-family: Montserrat, sans-serif; 67 | font-weight: 200; 68 | color: rgb(51, 0, 170); 69 | } 70 | 71 | .perceptex .he1 { 72 | margin: 0 0 -15px; 73 | padding: 0; 74 | font-size: 46px; 75 | } 76 | .perceptex .he2 { 77 | margin: 0; 78 | padding: 0 0 0 1.5px; 79 | font-size: 37px; 80 | } 81 | 82 | /* ************************************************************************** */ 83 | /* ***** MEDIA QUERIES ************************************************** */ 84 | /* ************************************************************************** */ 85 | /* ************************************************************************** */ 86 | /* ***** MEDIA QUERIES ************************************************** */ 87 | /* ************************************************************************** */ 88 | /* ************************************************************************** */ 89 | /* ***** MEDIA QUERIES ************************************************** */ 90 | /* ************************************************************************** */ 91 | 92 | 93 | @media (max-width: 899.99px) { 94 | 95 | .wrapper { padding: 0.5vw 1vw 1vw; } 96 | 97 | #main_content { padding: 1vw; } 98 | 99 | .headBanner { 100 | padding: 0.5vw 1vw; 101 | } 102 | .headBanner h1 { 103 | margin: -1.5vw 0 0; 104 | font-size: 12vw; 105 | } 106 | 107 | .headBanner h1.bglite { 108 | margin: -3.5vw; 109 | font-size: 21vw; 110 | } 111 | 112 | section h1 { 113 | margin: -1.5vw 0; 114 | font-size: 6vw; 115 | } 116 | 117 | #issue-threads--comments {font-size: 6vw;} 118 | #accurate-contrastusing-the-apca { margin: -1.5vw 0; font-size: 6vw;} 119 | #myndex-articles--links > p {margin: 0.3vw 2vw 1.5vw 2vw;} 120 | 121 | .headBanner h2 { 122 | max-width: 80vw; 123 | margin: 0; 124 | padding: 0 1vw; 125 | font-size: 4vw; 126 | } 127 | 128 | 129 | 130 | .perceptex .he1 { 131 | margin: 0 0 -1.67vw; 132 | padding: 0; 133 | font-size: 5vw; 134 | } 135 | .perceptex .he2 { 136 | margin: 0; 137 | padding: 0 0 0 0.167vw; 138 | font-size: 4vw; 139 | } 140 | 141 | #svg16 { 142 | display: none; 143 | } 144 | 145 | } 146 | 147 | 148 | 149 | /* ************************************************************************** */ 150 | /* ***** END MEDIA QUERIES ********************************************** */ 151 | /* ************************************************************************** */ 152 | 153 | 154 | 155 | 156 | 157 | .flipH { 158 | display: inline-block; 159 | -moz-transform: scale(-1, 1); 160 | -webkit-transform: scale(-1, 1); 161 | -o-transform: scale(-1, 1); 162 | -ms-transform: scale(-1, 1); 163 | transform: scale(-1, 1); 164 | } 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | /*** IMPORTED FROM SLIDERS ***/ 173 | 174 | .colorSliders {} 175 | 176 | /*** END SLIDERS ***/ 177 | 178 | 179 | .colorPicker {border-radius: 18px;} 180 | 181 | 182 | #inputTXT, 183 | #inputBG { 184 | border-radius: 12px; 185 | text-align: center; 186 | } 187 | 188 | .conformScore th.tableTitle { 189 | position: relative; 190 | font-weight: 600; 191 | } 192 | 193 | #tableSamples #BGpicker, 194 | #tableSamples #TXTpicker { 195 | position: relative; 196 | margin: auto; 197 | width: 75px; 198 | min-height: 75px; 199 | border: 2px solid #a0a0a0; 200 | border-radius: 12px; 201 | z-index: 10; 202 | } 203 | 204 | 205 | .innerwrapper { 206 | position: relative; 207 | max-width: 1024px; 208 | margin: 0 auto; 209 | } 210 | 211 | .infobox { 212 | display: flex; 213 | align-items: flex-end; 214 | justify-content: space-between; 215 | padding: 1rem 0 2rem 8rem; 216 | gap: 3rem; 217 | flex-wrap: wrap; 218 | } 219 | .infobox div { 220 | flex: 1 1 45%; 221 | } 222 | .infobox p { 223 | margin: 0 0 0.75em; 224 | } 225 | 226 | 227 | 228 | .sciencelinks { 229 | display: flex; 230 | align-items: center; 231 | justify-content: space-between; 232 | padding: 2rem 0; 233 | } 234 | .sciencelinks a { 235 | color: #def; 236 | text-decoration: none; 237 | margin: 0; 238 | } 239 | .gammaContainer { 240 | padding: 1rem; 241 | } 242 | 243 | 244 | .explainers { 245 | display: flex; 246 | justify-content: center; 247 | flex-wrap: wrap; 248 | margin: 1rem 1rem 1rem 16vw; 249 | gap: 2rem; 250 | padding: 12px; 251 | max-width: 1100px; 252 | } 253 | 254 | .explainer h2 { 255 | font-size: 1.65rem; 256 | } 257 | .explainer h3 { 258 | font-size: 1.35rem; 259 | } 260 | 261 | 262 | .betanotice { 263 | padding: 20px; 264 | background: #fda; 265 | } 266 | .betanotice h3 { 267 | margin: 0; 268 | } 269 | 270 | 271 | #demoArea { text-align: left; } 272 | 273 | footer .innerwrapper { 274 | display: flex; 275 | align-items: flex-start; 276 | justify-content: space-between; 277 | gap: 2rem; 278 | flex-wrap: wrap; 279 | } 280 | 281 | footer .innerwrapper div { 282 | flex: 1 1 45%; 283 | } 284 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # APCA — LICENSE and RESTRICTIONS 6 | ## Patent(s) pending. 7 | ## Copyright 8 | Code and documentation in _THIS_ repository is copyright © 2019-2022 by Andrew Somers and/or Myndex™. All Rights Reserved. 9 | ## Permitted Use 10 | For THIS repo only: 11 | _**Registered Beta Testers OR Personal use only is permitted**_ unless authorized in writing, and subject to the limitations described herein. But ask We're easy. We mainly want to ensure the code is maintained up to date and correctly implemented. 12 | 13 | See also: [Minimum compliance](https://git.apcacontrast.com/documentation/minimum_compliance) to use "APCA" and related trademarks. 14 | 15 | ### All Files Copyright (c) 2019-2022 by Myndex Research and Andrew Somers. All Rights Reserved. 16 | ### For the W3C/WCAG3 version, please visit the satellite repositories: 17 | #### https://github.com/Myndex/apca-w3 18 | #### https://www.npmjs.com/package/apca-w3 19 | 20 | ## _License for Compliant Code Only_ 21 | ### The Short Summary, TL;DR: 22 | 23 | The terms "SAPC", "SACAM", "APCA", "Advanced Perceptual Contrast Algorithm", "Accessible Perceptual Contrast Algorithm" are trademarks of Myndex Research and Andrew Somers, and may ONLY be used to describe any contrast method, app, or device, IF and ONLY in conjunction with code that is correctly implemented, maintained, and up to date. 24 | 25 | Code or implementations found to be non-compliant with APCA, meaning they are incorrect in operation or methodology as defined for APCA contrast, SAPC contrast, or SACAM color appearance, including but not limited to the indication of polarity, and use of the current approved constants, **shall be deemed in breech of license and a copyright violation.** 26 | 27 | All code instantiations which are public facing in any way are required to follow the base algorithm _as defined_. Current base reference algorithm is 0.0.98G-4g (for reference, this is the underlying algorithm for apca-w3 versions 0.1.9) 28 | 29 | ----- 30 | ## MAIN APCA DISCLAIMER AND RESTRICTIONS 31 | 32 | _**DISCLAIMER AND LIMITATIONS OF USE:**_ 33 | **sapc-apca** is an embodiment of certain supra-threshold 34 | contrast prediction technologies. **sapc-apca** may be 35 | used for predicting contrast for web content used for that 36 | specific purpose without royalty. 37 | 38 | Said license excludes other use cases 39 | not related to web content. Prohibited uses include 40 | medical, clinical evaluation, human safety related, 41 | aerospace, transportation, military applications, 42 | and uses which are not specific to web-based content 43 | presented on self-illuminated displays or devices. 44 | 45 | _**RIGHT TO AUDIT CODE**_ 46 | Any integration of APCA, SAPC, or SACAM which is in a commercial app or behind a paywall, free access must be provided to Myndex Research, or their assigns, on request, for the purpose of evaluating and verifying correct operations and implementation of the APCA/SAPC/SACAM functions. 47 | 48 | _**NO ALTERATION; KEEP CURRENT**_ 49 | Any **sapc-apca** files in this repository may be used or incorporated only in tools for web-based content or web related content in support of the WCAG accessibility guidelines, and such use must be without modification to the essential elements of the code or specific approved constants, except as required to port to a given language. 50 | 51 | - Developers are highly encouraged to use the current w3 npm package(s) when possible: ` npm i apca-w3 ` 52 | 53 | - Developers incorporating this code into their applications, widgets, or other tools, have a duty to ensure that the most recent version of this code is used in their current or any future release. 54 | 55 | 56 | _**USE OF APCA TERMINOLOGY**_ 57 | - Use of the acronyms APCA or SAPC, or the terms "Advanced Perceptual Contrast Algorithm", "Accessible Perceptual Contrast Algorithm", or "Readability Contrast", to describe any embodiment or instantiation of contrast determination, method, or math, including the APCA code base or libraries, **is only permitted for code that is properly implementing the APCA algorithm, and maintaining sync with the current version. At this writing, current base algorithm version 0.0.98G-4g or later. ** 58 | 59 | _**USE OF THE APCA LOGO AND TRADEMARK**_ 60 | - Use of the APCA logo as shown at this repo to describe any contrast app, use, or method, or the "Powered by APCA" logo, and/or any related official logos or trademarks, **are prohibited without written consent** from Myndex™ Technologies, Myndex™ Research, Andrew Somers, and/or the authorized agents or assigns. 61 | - Developers wishing to use the APCA or "Powered by APCA" logos or trademarks **must submit their application or tools for qualification** to be granted a limited license to use the APCA or "Powered by APCA" logos or trademarks in association with their tools. 62 | - Formal details on the APCA and "Powered by APCA" qualification process are pending. In the interim, make a qualification request in the discussion tab of this repo. 63 | 64 | 65 | ## GENERAL DISCLAIMER 66 | 67 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 68 | 69 | **_DISCLAIMER AND LIMITATIONS OF USE:_** 70 | 71 | APCA is an embodiment of certain supra-threshold contrast 72 | prediction technologies. Versions marked as licensed to 73 | the W3 are strictly limited to web content use only for 74 | supporting certain accessibility guidelines. 75 | 76 | APCA code listed here is provided as is, with no 77 | warrantees expressed nor implied. We accept no 78 | liability for any use or misuse of the code. 79 | Suitability of purpose resides with the 80 | integrator or end user. 81 | 82 | Commercial use is prohibited without a written 83 | and signed commercial license agreement, except 84 | as provided by the W3 cooperative agreement for 85 | web content only. 86 | 87 | Non-commercial use is permitted only for 88 | predicting contrast for web content, no 89 | other use case is authorized. 90 | 91 | License excludes other use cases not related to web 92 | content. Prohibited uses include and are not limited 93 | to medical, clinical evaluation, human safety related, 94 | aerospace, transportation, military applications, and 95 | uses which are not specific to web-based content 96 | presented on self-illuminated displays or devices. 97 | 98 | ## WITHDRAWN ASSETS 99 | ONLY files that are currently in this repository are available for use under these license terms. 100 | 101 | As some code herein is early beta, and there is a clear interest to prevent obsolete versions from propagating, license for use is revoked when any such asset is removed from this repository. Prior to revocation, files will be placed in the OBSOLETE/PENDING_DELETE folder for a limited period to allow time for revision. Please replace any stale assets with the revised assets herein as soon as practical. 102 | 103 | #### The current assets shall be in: 104 | /dist/ 105 | /src/ 106 | #### Non breaking earlier versions shall be placed in: 107 | /LEGACY/ 108 | #### Breaking and deprecated versions shall be placed in: 109 | /DEPRECATED/ 110 | #### Breaking, invalid, and revoked versions shall be placed in: 111 | /OBSOLETE/ 112 | /OBSOLETE/PENDING_DELETE/ 113 | 114 | ### Misc Licensing 115 | Any files that do not fall under the above categories are per the license as indicated in each file. 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | version 4 |   5 | 6 | 7 | downloads 8 |   9 | 10 | 11 | stars 12 |   13 | 14 | 15 | last commit 16 |   17 |
18 | 19 | license 20 |   21 | 22 | 23 | Plain Vanilla JS 24 |   25 | 26 | 27 | Myndex 28 |   29 | 30 | 31 | twitter 32 |   33 | 34 |

35 | 36 | # [APCA Documentation Repo](https://github.com/Myndex/SAPC-APCA) 37 | ### APCA tool is now at [APCAcontrast.com](http://APCAcontrast.com) 38 | ## Welcome! 39 | APCA™ is the **Accessible Perceptual Contrast Algorithm**, a new way to predict contrast for text and non-text content on self-illuminated displays. This repository is for the documentation, for issue tracking, and for the discussion forum. The code, apps, variants, and supporting libraries, are in separate repos. 40 | 41 | ### _Simple Overview & QuickStart_ 42 | These are intended for end users, and those interested in a plain language overview without a lot of the math & theory. 43 | - [**Easy Intro to APCA?**](https://git.apcacontrast.com/documentation/APCAeasyIntro) A plain-language introduction to perceptually uniform contrast. 44 | - [**Bronze Simple Mode**](https://readtech.org/ARC/tests/bronze-simple-mode/?tn=criterion) A "most basic" design guideline, intended for users migrating from WCAG 2 contrast. 45 | 46 | ### _Additional documentation_ 47 | - **APCA™ [Linktree](https://linktr.ee/Myndex)** Brief curated link collection—an ideal starting point. 48 | - **APCA™ [Catalog of Resources, Articles, & Links](https://git.myndex.com)** Large main catalog of articles, repos, white papers, and more! 49 | - [**Main Readme Doc**](https://git.apcacontrast.com/documentation/README) This page includes a discussion of the math, code walkthroughs, and links to developer related goodies. If you'd like to dive into the deep end, you could jump in here—but deep waters can be murky... 50 | - [**Why APCA?**](https://git.apcacontrast.com/documentation/WhyAPCA) A basic overview at the shallow end of the pool. 51 | - [**APCA in a nutshell**](https://git.apcacontrast.com/documentation/APCA_in_a_Nutshell) An early _minimum user guide_, largely superceeded by [APC-RC](https://readtech.org/ARC/tests/bronze-simple-mode/?tn=criterion) 52 | - [**APCA FAQ**](https://git.apcacontrast.com/documentation/APCA_FAQ) Frequently Asked Questions (work in progress) 53 | 54 | ### _DESIGN GUIDELINES_ 55 | - The draft independent [**APCA Readability Criterion**](https://readtech.org/ARC/) is up as a work in progress, still sections to be added and/or adjusted. 56 | - **Direct links to subpages:** 57 | - [**Bronze Simple Mode**](https://readtech.org/ARC/tests/bronze-simple-mode/?tn=criterion) A "most basic" design guideline, intended for users migrating from WCAG 2 contrast. 58 | - [**Visual Readability Contrast**](https://readtech.org/ARC/tests/visual-readability-contrast/?tn=criterion) The multi-level conform guideline: Bronze, Silver, Gold, for basic to enhanced accessibility. 59 | - [**Non Text Contrast**]() PLACEHOLDER for the non-text guidelines (coming soon!) 60 | - [**Design Guide: Visual Contrast**](https://readtech.org/ARC/guides/designing-with-visual-contrast/?tn=get-started) Practical design advice with examples. 61 | - [**Design Guide: Paper Reading Experience**](https://readtech.org/ARC/guides/paper-reading-experience/?tn=intro) (Work in progress) Guidelines for a reduced-fatigue design for light mode. 62 | - [**Design Guide: Non Text Contrast**]() PLACEHOLDER Practical design advice with examples. 63 | 64 | ### _FORUMS_ 65 | For comments or questions see the [**SAPC-APCA forum**](https://github.com/Myndex/SAPC-APCA/discussions) here, please post all comments, questions, or discussions regarding theory, math, code, third-party tools, etc., here and not in the satellite repositories, so they can be tracked and resolved. Discussion here may eventually become part of the FAQ and guidelines. 66 | 67 | ### _TOOLS_ 68 | - [**Color and Contrast Tools Listing**](https://git.apcacontrast.com/documentation/thirdpartytools) Many third party tools, as well as canonical technology demonstrators. 69 | 70 | ### _CODE_ 71 | - [***apca-w3***](https://github.com/Myndex/apca-w3/) This satellite repository is the approved code intended for public guidelines, and is the only code that should be used for any development purpose. 72 | - The code is also available as a package at **`npm i apca-w3`** 73 | 74 | ### _Sciency Stuff!_ 75 | Maths! Vision Science! Photons on Parade! 76 | - [The base APCA-W3 formula](https://github.com/Myndex/SAPC-APCA/blob/master/documentation/APCA-W3-LaTeX.md) in LaTeX math for your viewing and calculating pleasure. 77 | - [The Realities And Myths Of Contrast And Color](https://www.smashingmagazine.com/2022/09/realities-myths-contrast-color/) color and contrast feature article at Smashing Magazine. 78 | - [Peer Review and Third Party Analysis](https://git.apcacontrast.com/documentation/independent-review) APCA and APC-RC are derived from decades of peer-reviewed science. 79 | - [Regarding Exponents](https://git.apcacontrast.com/documentation/regardingexponents) Is delta-gamma some kinda frat house? Nope... It's math. 80 | - [Standard Observer Model](https://git.apcacontrast.com/documentation/StandardObserverModel) The setting for a mathematical eyeball. 81 | - [Visual Contrast Draft Whitepaper](https://www.w3.org/WAI/GL/task-forces/silver/wiki/Visual_Contrast_of_Text_Subgroup/Whitepaper) Almost as tasty as a draft beer! This is a very early white-paper draft as part of the Visual Contrast group of Silver/WCAG 3. Here for historical reasons, the above links such as "Why APCA" provide a clearer understanding. 82 | 83 | 84 |

85 | Poster: a picture of crash test dummies crashing out of a car, and text that says don't be a dummy! Stop using low contrast text. At the bottom it says APCA the world is reading       Smokey the bear saying  ONLY YOU CAN STOP LOW CONTRAST      Uncle Sam saying I want you to use high contrast text 86 |
87 |

88 | 89 | --- 90 | ## Social Media 91 | - [Myndex Research](https://twitter.com/MyndexResearch) on Twitter/X 92 | - [Inclusive Reading Technologies](https://x.com/A11yReadTech) on Twitter/X 93 | - [Myndex](https://techhub.social/@Myndex) on Mastodon 94 | - [Myndex](https://www.linkedin.com/in/andrew-m-somers/) on Linkedin 95 | - [Myndex](https://stackoverflow.com/users/10315269/myndex) on Stack Overflow 96 | - [Myndex Gists](https://gist.github.com/Myndex) on GitHub 97 | - [TangledWeb.xyz](https://tangledweb.xyz) related tech blog 98 | 99 | 100 | --- 101 | ## Local Repo Documentation 102 | - [**Why APCA:**](/documentation/WhyAPCA.md) A brief plain language overview of APCA and readability contrast. 103 | - [**Peer and Third Party Review:**](/documentation/independent-review.md) APCA and APC-RC in real world testing and review. 104 | - [**APCA in a Nutshell:**](/documentation/APCA_in_a_Nutshell.md) Quick overview of levels, use cases, and font sizing. 105 | - [**APCA Main Documentation (READ ME):**](/documentation/README.md) The repo basic readme file for an overview and quickstart. 106 | - [**APCA Documentation Index:**](/documentation/) An index of relevant APCA documentation. 107 | - [**APCA Formula 0.9.98g4g:**](https://github.com/Myndex/SAPC-APCA/blob/master/documentation/APCA-W3-LaTeX.md#latex-of-the-apca-w3-base-formula) LaTeX of the APCA formula. 108 | - [**Repo List:**](/documentation/repoList.md) A list of specific versions of APCA, Bridge PCA, and support libraries. 109 | - [**Standard Observer Model:**](/documentation/StandardObserverModel.md) Draft Standard Observer. 110 | - [**Important Change Notices:**](/documentation/ImportantChangeNotices.md) General Change History (see individual repos for specifics) 111 | - [**Regarding Exponents:**](/documentation/regardingexponents.md) Notes on the exponents used in APCA. 112 | - [**Accessibility Statement:**](/documentation/accessibilitystatement.md) A statement for beta testers and early adopters to use place on sites using APCA 113 | - [**APCA Minimum Compliance for Developers:**](/documentation/minimum_compliance.md) Standards for what can be called APCA™. 114 | - [**APCA FAQ:**](/documentation/APCA_FAQ.md) Just starting, so few Q/A yet. 115 | 116 | ### [The SAPC APCA Documentation Repository](https://github.com/Myndex/SAPC-APCA/#apca--sapc--sacam-primary-repository) 117 | **You are here** 🎯 this index page is served at the github APCA documentation repo. 118 | 119 | ### [The APCA-W3 GitHub Repo](https://github.com/Myndex/apca-w3/) 120 | Over there is the **APCA W3 version**, and it's the same as the published npm package "apca-w3". 121 | 122 | ### [The Bridge-PCA GitHub Repo](https://github.com/Myndex/bridge-pca/) 123 | The **BridgePCA** is backwards compatible with WCAG 2, and it's the same as the published npm package "bridge-pca". 124 | 125 | ### [The ColorParsley GitHub Repo](https://github.com/Myndex/colorparsley/) 126 | **ColorParsley** is a micro library for auto parsing color strings of all kinds, also on npm. 127 | 128 | ### [The SeeStars GitHub Repo](https://github.com/Myndex/seestars/) 129 | **SeeStars** is a micro library for creating CIE Lstar $`(L*)`$, also on npm. 130 | 131 | ### [The ColorParsley GitHub Repo](https://github.com/Myndex/deltaphistar/) 132 | **DeltaPhiStar** is an ultra simple general purpose contrast equation. 133 | 134 | 135 | --- 136 | ### [APCA Contrast Calculator](https://www.myndex.com/APCA/) 137 | The canonical demo tool at Myndex 138 | ### [Bridge PCA Contrast Calculator](https://www.myndex.com/BPCA/) 139 | Try out the Bridge PCA tool at Myndex 140 | ### [Myndex CVD Simulator](https://www.myndex.com/CVD/) 141 | Color insensitive vision simulation (aka colorblind). Includes deuteranopia, protanopia, tritanopia, and blue cone monochromacy/achromatopsia. 142 | ### [Inclusive Reading Technologies, Inc.](https://readtech.org/ARC/) 143 | **IRT is a California nonprofit**, dedicated to developing tecnologies to improve visual accessibility for all, and home to the [**APCA Readability Criterion**](https://readtech.org/ARC/). 144 | 145 | ### [Basic APCA Math in LaTeX](https://github.com/Myndex/SAPC-APCA/blob/master/documentation/APCA-W3-LaTeX.md#latex-of-the-apca-w3-base-formula) 146 | The APCA base color-pair formula, in math notation. 0.0.98G-4g 147 | 148 |
149 | 150 | [APCA The Revolution Will Be Readable](https://apcacontrast.com) 151 | 152 |
153 | 154 | [Apkah Happy ReadCow](https://readtech.org/ARC/) 155 | 156 |
157 | 158 | [link to Delta Phi Star repo](https://github.com/Myndex/deltaphistar) 159 | 160 |
161 | 162 | [IRT logo link to IRT](https://readtech.org/ARC/) 163 | 164 |
165 | 166 | [link to COLOR a twitter community](https://twitter.com/i/communities/1500595480790593537) 167 | 168 |
169 | 170 | [link to IRT](https://readtech.org/ARC/) 171 | 172 |

173 | 174 | 175 | -------------------------------------------------------------------------------- /WEBTOOLS/APCA/index.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 14 | 15 | 16 |

Myndex and Inclusive Reading Technologies are the only authoritative reference for APCA and related contrast guidelines.

17 |

If you came here via the link from the xi repository, please be aware that repository is not authorized, and includes a substantial amount of misleading, incorrect, and or simply bizarre material that has little relationship to the reality of human perception of contrast.

18 |

We were concerned regarding the potential confusion and furtherance of misunderstandings in a field that's already difficult to grasp, we analyzed and provided a corrected version, as well as rebuttals, to that very poorly conceived collection.

19 |

If you are interested in seeing how math was being used to mislead, please see our fork

20 | 21 |

Otherwise, proceed to the APCA calculator

22 | 23 | 24 | -------------------------------------------------------------------------------- /WEBTOOLS/APCA/readme.md: -------------------------------------------------------------------------------- 1 | Please go to http://apcacontrast.com 2 | -------------------------------------------------------------------------------- /WEBTOOLS/README.md: -------------------------------------------------------------------------------- 1 | # Please go to http://apcacontrast.com 2 | -------------------------------------------------------------------------------- /WhyAPCA.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Redirecting to /documentation/APCAeasyIntro 13 | 14 | 15 | 16 | # Redirecting to [./documentation/APCAeasyIntro](https://git.apcacontrast.com/documentation/APCAeasyIntro) 17 | 18 | ## _The file you seek has moved to:_ 19 | [git.apcacontrast.com/documentation/APCAeasyIntro](https://git.apcacontrast.com/documentation/APCAeasyIntro) 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-midnight 2 | title: APCA 3 | description: This is the APCA project repo on GitHub.
Documentation linked below. 4 | -------------------------------------------------------------------------------- /_includes/head-custom-google-analytics.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /_includes/head-custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% include head-custom-google-analytics.html %} 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 54 | 55 | 56 | 57 | 58 | 79 | 80 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | {% seo %} 26 | 27 | {% include head-custom.html %} 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 | 36 |
37 |

{{ site.title | default: site.github.repository_name }}

38 |
39 |
MYNDEX
40 |
RESEARCH
41 | 42 | 43 | 44 | 45 | 46 | 47 |
48 |

{{ site.title | default: site.github.repository_name }}

49 |

{{ site.description | default: site.github.project_tagline }}

50 |
51 | 52 | 62 | 63 | {% if site.show_downloads %} 64 |
65 | 66 | download .ZIPdownload .TGZ 67 | 68 |
69 | {% else %} 70 |
71 | 72 | 73 |
74 | {% endif %} 75 | 76 |   77 | 78 |
79 | {{ content }} 80 |
81 | 82 | 99 | 100 |
101 | 102 | 103 | -------------------------------------------------------------------------------- /_layouts/repoRoot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 16 | 17 | 18 | 19 | 20 | 25 | 26 | {% seo %} 27 | 28 | {% include head-custom.html %} 29 | 30 | 31 | 32 | 33 | 34 | 35 |
36 | 37 |
38 |

{{ site.title | default: site.github.repository_name }}

39 |
40 |
MYNDEX
41 |
RESEARCH
42 | 43 | 44 | 45 | 46 | 47 | 48 |
49 |

{{ site.title | default: site.github.repository_name }}

50 |

{{ site.description | default: site.github.project_tagline }}

51 |
52 | 53 | 63 | 64 | {% if site.show_downloads %} 65 |
66 | 67 | download .ZIPdownload .TGZ 68 | 69 |
70 | {% else %} 71 |
72 | 73 | 74 |
75 | {% endif %} 76 | 77 |   78 | 79 |
80 | {{ content }} 81 |
82 | 83 | 100 | 101 |
102 | 103 | 104 | -------------------------------------------------------------------------------- /_layouts/repoSubfolder.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | {% seo %} 26 | 27 | {% include head-custom.html %} 28 | 29 | 30 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 |
44 |

{{ site.title | default: site.github.repository_name }}

45 |
46 |
MYNDEX
47 |
RESEARCH
48 | 49 | 50 | 51 | 52 | 53 | 54 |
55 |

{{ site.title | default: site.github.repository_name }}

56 |

{{ site.description | default: site.github.project_tagline }}

57 | ⇦ HOME 58 | 59 |
60 | 61 | 71 | 72 | {% if site.show_downloads %} 73 |
74 | 75 | download .ZIPdownload .TGZ 76 | 77 |
78 | {% else %} 79 |
80 | 81 | 82 |
83 | {% endif %} 84 | 85 |   86 | 87 |
88 | {{ content }} 89 |
90 | 91 | 108 | 109 |
110 | 111 | 112 | -------------------------------------------------------------------------------- /_layouts/simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 17 | 18 | {% seo %} 19 | 20 | {% include head-custom.html %} 21 | 22 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
39 | 40 |
41 |

{{ site.title | default: site.github.repository_name }}

42 |
43 |
MYNDEX
44 |
RESEARCH
45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 |
53 |

{{ site.title | default: site.github.repository_name }}

54 | ⇦ HOME ⇧ UP ONE 55 |
56 |
57 |
58 | 59 | {% if site.show_downloads %} 60 |
61 | 62 | download .ZIPdownload .TGZ 63 | 64 |
65 | {% else %} 66 |
67 | 68 | 69 |
70 | {% endif %} 71 | 72 | 73 | 74 |
75 | {{ content }} 76 |
77 | ⇦ HOME ⇧ UP ONE 78 | 79 | 91 |
92 | 93 | 94 | -------------------------------------------------------------------------------- /documentation/APCA-W3-LaTeX.md: -------------------------------------------------------------------------------- 1 | # LaTeX of the APCA-W3 Base Formula 2 | The following is a trial of GitHub's new LaTeX and MathJax support. As you can see there are some bugs at the moment (browser dependent??) and there are some missing features or commands. 3 | 4 | ---- 5 | 6 | ```math 7 | \begin{align} \\ 8 | \mathbf{APCA}\ \mathbf{\bullet \ W3}\ \ &\mathbf{\scriptstyle version\ { 0.1.9}\ { developed\ for\ WCAG\ 3\ contrast\ guidelines}} \\ 9 | {\scriptstyle Using:}\ & \ \mathit{\scriptstyle APCA\ Contrast\ Prediction\ Equation\ \ 0.0.98G-4g-base-W3} \\\\[3ex] 10 | Light&ness\ Contrast = L^c \\\\[2ex] 11 | \textstyle Where:\quad \quad \ & \ \\ 12 | \scriptstyle (reverse\ notation)\ \ & \\\\[1ex] 13 | 14 | {\scriptstyle Clamp\ Minimu} & {\scriptstyle m\ Contrast\ to\ \mathit1\mathit0 \% \ then\ Offset\ \& \ Final\ Scale} \\\\[0.5ex] 15 | L^c = & \begin{cases} 16 | \ 0.0 \ \ \ & if\ \big\vert S_{apc} \big\vert < W_{clamp}\\\\[0.25ex] 17 | \big(\ S_{apc} - W_{offset}\ \big) \times 100.0\ \ & if\ \ S_{apc}\ > 0 \\\\[0.5ex] 18 | \big(\ S_{apc} + W_{offset}\ \big) \times 100.0\ \ & if\ \ S_{apc}\ < 0 19 | \end{cases} \\\\[1.5ex] 20 | 21 | {\scriptstyle Determine\ Polar} & {\scriptstyle ity,\ Find\ Lightness\ Difference,\ \& \ Scale} \\\\[0.25ex] 22 | S_{apc} = & \begin{cases} 23 | \big(\ Y_{bg}^{Nbg} - Y_{txt}^{Ntx}\ \big) \times W_{scale} \ \ & if\ \ Y_{bg} > Y_{txt}\ \Big(\ ^{\ \ Normal\ Polarity}_{(dark\ text/light\ bg)} \Big) \\\\[0.5ex] 24 | \big(\ Y_{bg}^{Rbg} - Y_{txt}^{Rtx}\ \big) \times W_{scale} \ \ & if\ \ Y_{bg} < Y_{txt}\ \Big(\ ^{\ Reverse\ Polarity}_{(light\ text/dark\ bg)} \Big) 25 | \end{cases} \\\\[2.25ex] 26 | 27 | {\scriptstyle Soft\ Clip\ \& \ C} & {\scriptstyle lamp\ Black\ Levels} \\\\[0.25ex] 28 | Y_{txt} & = \ f_{sc}(Ys) \quad_{of\ the\ text,\ symbol,\ or\ object.}^{Where\ Ys\ is\ derived\ from\ the\ color} \\\\[1ex] 29 | Y_{bg} & = \ f_{sc}(Ys) \quad_{used\ for\ the\ adjacent\ background.}^{Where\ Ys\ is\ derived\ from\ the\ color} \\\\[1ex] 30 | Y_{fld} & = \ \mathrm{\scriptstyle Unused\ in\ W3\ version} \\\\[1.5ex] 31 | f_{sc} & (Y_c) = \begin{cases} 32 | 0.0 \ \quad \ & if\ \ Y_c < 0.0 \\\\[0.5ex] 33 | Y_c + \big( B_{thrsh} - Y_c \big)^{B_{clip}} \ & if\ \ Y_c < B_{thrsh} \\\\[0.5ex] 34 | Y_c \ \quad \ & Otherwise 35 | \end{cases} \\\\[1.5ex] 36 | 37 | {\scriptstyle Estimate\ Scr} & {\scriptstyle een\ Luminance\ Using\ sRGB\ Coefficients} \\\\[0.25ex] 38 | Ys & = \displaystyle\sum \begin{cases} 39 | {\color{#f8a}\ (\mathbf R^\prime \div 255.0)^{S_{trc}} \times 0.2126729} \\ 40 | {\color{#6f6} (\mathbf G^\prime \div 255.0)^{S_{trc}} \times 0.7151522} \\ 41 | {\color{#8bf} (\mathbf B^\prime \div 255.0)^{S_{trc}} \times 0.0721750} \\ 42 | \end{cases} \\\\[1ex] 43 | \hline 44 | Constant&s\ for\ \mathit0\mathit.\mathit0\mathit.\mathit9\mathit8G-\mathit4g-sRGB: \\ 45 | &\begin{alignedat}{3} 46 | {\scriptstyle Powercur} & {\scriptstyle ve\ Exponents} \quad \quad & \quad {\scriptstyle Clamp} & {\scriptstyle s\ \& \ Scalers} \\ 47 | S_{trc} & = 2.4 \quad & \quad B_{clip} & = \ 1.414 \\ 48 | Ntx & = 0.57 \quad & \quad B_{thrsh} & = \ 0.022 \\ 49 | Nbg & = 0.56 \quad & \quad W_{scale} & = \ 1.14 \\ 50 | Rtx & = 0.62 \quad & \quad W_{offset} & = \ 0.027 \\ 51 | Rbg & = 0.65 \quad & \quad W_{clamp} & = \ 0.1 \\ 52 | \end{alignedat} \\\\[0.5ex] 53 | \hline 54 | INPU&T:\ \ {\color{#f8a}R^\prime}, {G^\prime}, {\color{#8bf}B^\prime}\ \mathbf{\in\ sRGB} \ \ (Range: 0.0-255.0) \\\\[0.5ex] 55 | \hline 56 | \mathit{\scriptscriptstyle Copyright\ ©\ 2019-2022\ by\ Andrew\ Somers.\ All\ Rights\ Reserved.} \\ 57 | \\ 58 | \end{align} 59 | ``` 60 | 61 | ---- 62 | 63 | For more on APCA, please see: [git.myndex.com](https://git.myndex.com) for more. 64 | 65 | Copyright © 2019-2022 by Andrew Somers. All Rights Reserved. 66 | 67 | NOTICE: "APCA is a method for predicting text contrast on self-illuminated displays for web-based content. Some use-cases are prohibited by license, including the following: use in medical, clinical evaluation, human safety related, aerospace, transportation, military applications, are strictly prohibited without a specific license in writing granting such use." 68 | -------------------------------------------------------------------------------- /documentation/APCA_FAQ.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # APCA & SAPC 6 | ## Frequently Asked Questions for the Accessible Perceptual Contrast Algorithm. 7 | _--THIS IS A WORK IN PROGRESS--_ 8 | 9 | ----- 10 | ----- 11 | **APCA FAQ post #001** 12 | ### Q: What is APCA? 13 | A: It's the Accessible Perceptual Contrast Algorithm, a mini-appearance model, and a way to predict the perceived contrast for best readability. It is tuned specifically for readability of text on self-illuminated displays. 14 | 15 | 16 | ----- 17 | **APCA FAQ post #002** 18 | ### Q: How do you use it? 19 | A: Simply send it the text color and the background color, and APCA will calculate a contrast value measured as Lc (perceptual lightness contrast). For more complete design guidance, there is a lookup table for font size and weight. 20 | 21 | 22 | ----- 23 | **APCA FAQ post #003** 24 | ### Q: What is the range of values? 25 | A: For beta version 0.98G-4g, the range is -108 to +106, with positive numbers for dark text on a light background, and negative numbers for light text on a dark background. 26 | 27 | ----- 28 | **APCA FAQ post #004** 29 | ### Q: Why is there a lookup table? 30 | A: Visual contrast for readability is affected not only by a pair of colors, but also spatial frequency, in other words the size and weight of the fonts used for the text. The APCA font lookup is part of WCAG 3 conformance for web content. The lookup table can be revised for different languages and character sets. 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | ----- 39 | ----- 40 | WIP 41 | 42 | -------------------------------------------------------------------------------- /documentation/APCA_in_a_Nutshell.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # APCA in a Nutshell 6 | Accessible Perceptual Contrast Algorithm is a new method for calculating and predicting readability contrast. APCA is a part of the larger S-Luv Accessible Color Appearance Model known as SACAM (formerly SAPC). These models are specifically optimized for accessible color appearance on self-illuminated RGB computer displays & devices, and also for modeling accessible user needs, with a focus on visual readability. 7 | 8 | APCA is the candidate contrast method for the future [WCAG 3](https://www.w3.org/WAI/GL/WCAG3/2021/how-tos/visual-contrast-of-text/#design-button), and is also developing as the [APCA Readability Criterion](https://readtech.org/ARC/), an independent standard hosted by Inclusive Reading Technologies. 9 | 10 | ## Lightness contrast Lc 11 | The APCA generates a lightness/darkness contrast value based on a minimum font size and color pair, and this value is perceptually based: that is, regardless of how light or dark the colors are, a contrast value of Lc 60 represents the same _perceived_ readability contrast. This is absolutely not the case with WCAG 2.x, which overstates contrast for dark colors to the point that 4.5:1 can be functionally unreadable when one of the colors in a pair is near black. As a result, WCAG 2.x contrast cannot be used for guidance designing "dark mode". 12 | 13 | The APCA contrast value is perceptually uniform, and pivots near the point where the CS curve flattens due to contrast constancy. Halving or doubling the APCA value relates to halving or doubling the perceived contrast. There is a subtle weighting for higher contrasts to smaller, thinner fonts, and a small boost for very dark colors. 14 | 15 | ### Different Uses, Different Contrasts 16 | The APCA-RC [Bronze Simple Mode](https://readtech.org/ARC/tests/bronze-simple-mode/?tn=intro) has a set of threshold levels related to use cases — for instance, Lc 90 is _preferred_ and Lc 75 is the _minimum_ for body text. This makes for an easy way to use ACPA, very similar to the old WCAG 1.4.3 in terms of ease of use. 17 | 18 | The APCA also has **optional** advanced levels [Silver and Gold](https://readtech.org/ARC/tests/visual-readability-contrast/?tn=criterion) which add in lookup tables, to associate font weight/size to the lightness contrast (Lc value). The lookup tables allow for even greater accuracy and therefore greater flexibility in design. 19 | 20 | ### Failing Pass/Fail 21 | A key takeaway is that a strict pass/fail with a blanket contrast ratio is not instructive as a guideline, and does not necessarily solve a given user need. In fact, user needs when it comes to contrast are conflicting—what is good for one can be harmful to another. This is even true of font size. 22 | 23 | This points to the importance of real user personalization, an area where the technology is literally missing (and a work in progress). For the guidelines though, we can set ranges for targets and expectations toward making the web readable for all, with the recommendation that the user is able to choose at least one light mode or one dark mode color scheme. 24 | 25 | 26 | ## Use-Case & Size Ranges 27 | These general levels are appropriate for use by themselves, without the need to reference a lookup table. APCA reports contrast as an Lc value (lightness contrast) from **Lc 0** to **Lc 105+**. For accessibility, consider Lc 15 the point of invisibility for many users, and Lc 90 as preferred for body text. 28 | 29 | * **Lc 90** • Preferred level for fluent text and columns of body text with a font no smaller than 18px/weight 300 or 14px/weight 400 (normal), or non-body text with a font no smaller than 12px/400. Also a recommended minimum for extremely thin fonts with a minimum of 24px at weight 200. Lc 90 is a _suggested maximum_ for **very large and bold fonts** (greater than 36px bold), and large areas of color. Small fonts do not have a maximum. 30 | * **Lc 75** • The _minimum_ level for columns of body text with a font no smaller than 24px/300 weight, 18px/400, 16px/500 and 14px/700. This level may be used with non-body text with a font no smaller than 15px/400. Also, Lc 75 should be considered a minimum for larger for any larger text where readability is important. 31 | * **Lc 60** • The _minimum_ level recommended for content text that is not body, column, or block text. In other words, text you want people to read. The minimums: no smaller than 48px/200, 36px/300, 24px normal weight (400), 21px/500, 18px/600, 16px/700 (bold). These values based on the reference font Helvetica. To use these sizes as body text, add Lc 15. 32 | * **Lc 45** • The _minimum_ for larger, heavier text (36px normal weight or 24px bold) such as headlines, and large text that should be fluently readable but is not body text. This is also the minimum for pictograms with fine details, or smaller outline icons. 33 | * **Lc 30** • The _absolute minimum_ for any text not listed above, including text considered as "spot readable". This includes placeholder text and disabled element text, and some non-content like a copyright bug. This is also the minimum for large/solid semantic & understandable non-text elements such as "mostly solid" icons or pictograms. Generally no less than 5.5px solid in its smallest dimension. 34 | * **Lc 15** • The _absolute minimum_ for any non-semantic non-text that needs to be _discernible_, and is no less than 5px (solid) in its smallest dimension. This may include dividers, and in _some_ cases large buttons or thick focus-visible outlines, but does _not_ include fine details which have a higher minimum. **Designers should treat anything below this level as invisible**, as it will not be visible for many users. This minimum level should be avoided for any items important to the use, understanding, or interaction of the site. 35 | 36 | These define the basic minimum levels, what you might think of as AA in the old WCAG 2. For the equivelent to AAA, simply increase the contrast values by Lc 15. 37 | 38 | **_NOTES ON FONT SIZE_** 39 | - Font sizes listed above assume an x-height ratio of 0.52. 40 | - Font weight is based on highly standardized reference fonts such as Helvetica or Arial. 41 | - "px" means the CSS reference px, not device pixels. 42 | - One reference px is defined as 1.278 arc minutes of visual angle. 43 | - When selecting, or testing, a font size, all that needs to be done is to compare the x-height to the reference. 44 | - For instance Times New Roman has an x-height ratio of 0.45, so it needs to be increased about 16% in size. 45 | - For font weight, simply set a line of test text in the reference Arial or Helvetica at 400 weight and then below that the same text text in the new font. Try different weights to find the closest match. 46 | - As an example, the font Raleway 400 weight is closest to Helvetica 300. 47 | - So, increase the weight of Raleway by 100 to be equivalent. 48 | - Note that some fonts change weight differently, and should be compared at other weights, such as 700, if those weights are to be used. 49 | - See [this how-to guide](https://readtech.org/ARC/tests/visual-readability-contrast/?tn=methods#size-weight) for more on font matching. 50 | - Consider the font design as well as the basic size and weight, and the potential impact on readability. See [this PDF **"Evaluating Fonts"**](https://www.researchgate.net/publication/338149302_Evaluating_Fonts_Font_Family_Selection_for_Accessibility_Display_Readability) for general guidance and a comparison of a few dozen fonts for accessibility. 51 | 52 | 53 | ### Expanded Range and use cases 54 | Instead of arbitrary pass/fail binary scoring, the APCA Readability Criterion has a sliding scale across the visual range, and is divided among use cases, as different uses have different contrast needs. 55 | 56 | The overall approach improves design flexibility and readability at the same time. Readability is improved by increasing contrast in blocks of body text where it is most needed, and design flexibility is achieved by relaxing contrast for large non-text elements which do not need brute-force contrast levels, due to their larger size (i.e. lower spatial frequencies use lower contrasts). 57 | 58 | For demonstration purposes, the example tool provides real-time updates of minimum font size and weight vs contrast: https://apcacontrast.com click on the color patches to bring up a color-picker. 59 | 60 | ## _More Info_ 61 | See this Linktree for a short-list of resources for further reading: 62 | [linktr.ee/myndex](https://linktr.ee/myndex) 63 | 64 | ---- 65 | ## _THE WORLD IS READING_ 66 | 67 | ### Definitions of Terms Used In This Document 68 | - **Spatial or spatially:** relating to size, weight, or thickness. 69 | - **Hue:** the uniqueness of a given color vs other colors, i.e. blue vs red. 70 | - **Chroma/saturation:** the intensity or purity of a color vs no color. 71 | - **Luminance:** a physical measure of light, disregarding hue. 72 | - **Lightness:** the human perception of a given luminance. Also darkness and brightness. 73 | 74 | ### Study Volunteers Needed 75 | Would you like to help create a more readable world for all? Please let us know! We have several studies planned for 2023, and it requires minimal time on your part to participate. Please send an email to perceptex@myndex.com with "volunteer" in the subject line. 76 | 77 | APCA The Revolution Will Be Readable 78 | 79 | ## APPENDIX: _Additional Reading_ 80 | - [**Linktree of Selected Resources**](https://linktr.ee/Myndex) A good place to start. 81 | - [**Main Catalog of APCA Resources and Links**](https://git.myndex.com) For the much deeper divers. 82 | 83 | ### APCA Readability Criterion 84 | _Maintained by Inclusive Reading Technologies Inc., a California Non-Profit_. 85 | - [**Draft ARC Guidelines**](https://readtech.org/ARC/) for implementing APCA and related technologies. 86 | - [**Bronze Simple Mode**](https://readtech.org/ARC/tests/bronze-simple-mode/?tn=intro) is designed as an introductory mode that does not require look-up tables or matching to a reference font. Instead it's designed as a simple set of threshold levels, similar to how WCAG 2 works but using perceptually uniform math. 87 | 88 | ### Links To APCA and Related Tools 89 | - [**APCA Calculator**](https://apcacontrast.com), the official technology demonstrator for APCA, includes explainers. 90 | - Listing of [**Third Party Tools and Systems**](https://git.apcacontrast.com/documentation/thirdpartytools) that have adopted APCA. 91 | - An [**Accurate Colorblind Simulator**](https://myndex.com/CVD/) based on the well respected, peer-reviewed, Brettel et alia model. 92 | 93 | ### Discussion Forum 94 | - [**Readability Forum**](https://github.com/Myndex/SAPC-APCA/discussions/) questions and comments welcome. 95 | - [**DISCUSS: Using APCA with other fonts** ](https://github.com/Myndex/SAPC-APCA/discussions/28#discussioncomment-1610289) Draft method for font weight conformance. 96 | - [**DISCUSS: Inline text links theory and practice** ](https://github.com/Myndex/SAPC-APCA/discussions/65) Draft guidance regarding link identification. 97 | - [**DISCUSS: Draft Dark Mode Guidance**](https://github.com/Myndex/SAPC-APCA/discussions/74#discussioncomment-6646215) Draft guidance regarding darkmode from light mode, and more. 98 | - [**DISCUSS: Legal Issues of WCAG2 vs APCA**](https://github.com/Myndex/SAPC-APCA/discussions/68#discussion-3980510) Discussion of current and future legal status and incorporation into legislation. 99 | 100 | ### Peer Review & Third Party Discussion of APCA 101 | A listing of [**third party and peer reviews**](https://git.myndex.com/#apca-peer-review--third-party-discussion) of APCA and related technologies. This directory includes journal-published peer-reviews, trade-published evaluations, and less formal comparative analysis, covering the usage, math, efficacy, implementation/integration, workflows, and more. 102 | 103 | ### Published Articles on Color & Contrast by A.Somers 104 | - [**The Realities And Myths Of Contrast And Color**](https://www.smashingmagazine.com/2022/09/realities-myths-contrast-color/) Published by _Smashing Magazine_. A brief but comprehensive primer to vision, color, and contrast for design, with an emphasis on typography, readability, and visual accessibility needs. 105 | - [**Better Reading on the Web**](https://uxdesign.cc/better-reading-on-the-web-c943c4cfc91a) Published by _UX Collective_, this article discusses and demonstrates issues with automated testing and WCAG 2 contrast math, methods, and guidelines. 106 | 107 | - **The _Tangled Web_ tech blog** (TangledWeb.xyz): 108 | - [**Please Stop Using Grey Text**](https://tangledweb.xyz/please-stop-using-grey-text-3d3e71acfca8) This popular article debunks one of the worst myths regarding design contrast. 109 | - [**What’s Red & Black & Also Not Read?**](https://tangledweb.xyz/whats-red-black-also-not-read-573b9c0a97ed) examines the nature of color insensitivity and readability. 110 | - [**Busy Background Breaks Bulletin**](https://tangledweb.xyz/busy-background-breaks-bulletin-f4ff4bf67e5a) Examples of how to destroy readability by choosing the wrong image as a background. And also, how to fix it. 111 | - [**Hats off to ALL CAPS**](https://tangledweb.xyz/hats-off-to-all-caps-c0a43a2c30d4) myth-busting misunderstandings regarding dyslexia, are special dyslexia fonts even useful, and the shift from using ALL UPPERCASE LETTERS for various text elements. 112 | - [**A Contrast of Errors**](https://atangledwebweweave.com/a-contrast-of-errors-373c2665d42a) looks at the history and the current international readability crisis. 113 | - [**Contrasting Theories**](https://tangledweb.xyz/hi-roger-f51bde490a56) Background on the first two years of R&D. 114 | 115 |

116 | Uncle Sam saying I want you to use high contrast text 117 |
118 |

119 | 120 | -------------------------------------------------------------------------------- /documentation/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # Contributing to APCA 6 | 7 | First, thank you for taking the time to contribute! Myndex is focused on the underlying perception research, and the needs of supporting developers is its own monumental task! Thank you for help and discussion on how best to serve the developer community. 8 | 9 | The following is a set of guidelines for contributing to APCA and its packages, which are in various repos here on GitHub, depending on their target audience. 10 | 11 | #### Table Of Contents 12 | 13 | [Code of Conduct](#code-of-conduct) 14 | 15 | [I don't want to read this whole thing, I just have a question!!!](#i-dont-want-to-read-this-whole-thing-i-just-have-a-question) 16 | 17 | [What should I know before I get started?](#what-should-i-know-before-i-get-started) 18 | * [APCA and Packages](#apca-and-packages) 19 | * [APCA Math Decisions](#math-decisions) 20 | 21 | [How Can I Contribute?](#how-can-i-contribute) 22 | * [Reporting Bugs](#reporting-bugs) 23 | * [Suggesting Enhancements](#suggesting-enhancements) 24 | * [Your First Code Contribution](#your-first-code-contribution) 25 | * [Pull Requests](#pull-requests) 26 | 27 | [Style-guides](#styleguides) 28 | * [JavaScript Style-guide](#javascript-styleguide) 29 | * [Specs Style-guide](#specs-styleguide) 30 | * [Documentation Style-guide](#documentation-styleguide) 31 | 32 | ## Code of Conduct 33 | 34 | This project and everyone participating in it is governed by the [Myndex Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are entering a "safe space" for exploration and development. Please keep that in mind. 35 | 36 | ## I don't want to read this whole thing I just have a question!!! 37 | 38 | > **Note:** Please don't file an issue to ask a question. [Please start in the discussions tab.](https://github.com/Myndex/SAPC-APCA/discussions) 39 | 40 | ## What should I know before I get started? 41 | 42 | ### APCA and Packages 43 | 44 | APCA is a small open source project made up of several [repositories](https://github.com/Myndex/SAPC-APCA/blob/master/repoList.md). This section should help you with which and where to enter a pull request. 45 | 46 | SEE [REPO LISTING](https://github.com/Myndex/SAPC-APCA/blob/master/repoList.md) 47 | 48 | #### Package Conventions 49 | 50 | TBD 51 | 52 | ### Math Decisions 53 | 54 | Any changes to the functionality or results of the math, and math and constants implementations must come from (or go through) Myndex Research. The empirical data is not collated for public consumption as yet, and all math methods rely on the empirical research. 55 | 56 | ## How Can I Contribute? 57 | 58 | ### Reporting Bugs 59 | 60 | Regardless of the repo, bugs should be reported in the https://github.com/Myndex/SAPC-APCA/issues tab. 61 | 62 | > **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. 63 | 64 | #### Before Submitting A Bug Report 65 | 66 | * **Check the [discussions](https://github.com/Myndex/SAPC-APCA/discussions)** for a list of common questions and problems. 67 | * **Determine which repository the problem exists in**. 68 | * **Perform a cursory search to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one. 69 | 70 | #### How Do I Submit A (Good) Bug Report? 71 | 72 | Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). 73 | 74 | Explain the problem and include additional details to help maintainers reproduce the problem: 75 | 76 | * **Use a clear and descriptive title** for the issue to identify the problem. 77 | * **Describe the exact steps which reproduce the problem** in as many details as possible. 78 | * **Explain which behavior you expected to see instead and why.** 79 | * **Include screenshots** which show you following the described steps and clearly demonstrate the problem. 80 | 81 | 82 | ### Suggesting Enhancements 83 | 84 | This section guides you through submitting an enhancement suggestion for APCA, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion :pencil: and find related suggestions :mag_right:. 85 | 86 | Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion), including the steps that you imagine you would take if the feature you're requesting existed. 87 | 88 | #### Before Submitting An Enhancement Suggestion 89 | 90 | PLACEHOLDERS TBD 91 | * **Check the [debugging guide]()** for tips. 92 | * **Check if there's already [a package]() which provides that enhancement.** 93 | * **Determine [which repository the enhancement should be suggested in]().** 94 | * **Perform a [cursory search]()** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. 95 | 96 | #### How Do I Submit A (Good) Enhancement Suggestion? 97 | 98 | Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). Create an issue and provide the following information: 99 | 100 | * **Use a clear and descriptive title** for the issue to identify the suggestion. 101 | * **Provide a step-by-step description of the suggested enhancement** in as many details as possible. 102 | * **Provide specific examples to demonstrate the steps**. Include copy/pasteable snippets which you use in those examples, as [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines). 103 | * **Describe the current behavior** and **explain which behavior you expected to see instead** and why. 104 | * **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the part of Atom which the suggestion is related to. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux. 105 | * **Explain why this enhancement would be useful** 106 | 107 | ### Your First Code Contribution 108 | 109 | Unsure where to begin contributing to Atom? You can start by looking through these `beginner` and `help-wanted` issues: 110 | 111 | * [Beginner issues][beginner] - issues which should only require a few lines of code, and a test or two. 112 | * [Help wanted issues][help-wanted] - issues which should be a bit more involved than `beginner` issues. 113 | 114 | Both issue lists are sorted by total number of comments. While not perfect, number of comments is a reasonable proxy for impact a given change will have. 115 | 116 | 117 | ### Pull Requests 118 | 119 | The process described here has several goals: 120 | 121 | - Maintain APCA's stability and accuracy 122 | - Fix problems that are important to users 123 | - Engage the community in working toward the best possible APCA implementation 124 | - Enable a sustainable system for APCA's maintainers to review contributions 125 | 126 | Please follow these steps to have your contribution considered by the maintainers: 127 | 128 | 1. Follow all instructions in [the template](PULL_REQUEST_TEMPLATE.md) 129 | 2. Follow the [style-guides](#styleguides) 130 | 3. After you submit your pull request, verify that all [status checks](https://help.github.com/articles/about-status-checks/) are passing
What if the status checks are failing?If a status check is failing, and you believe that the failure is unrelated to your change, please leave a comment on the pull request explaining why you believe the failure is unrelated. A maintainer will re-run the status check for you. If we conclude that the failure was a false positive, then we will open an issue to track that problem with our status check suite.
131 | 132 | While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted. 133 | 134 | ## Style-guides 135 | 136 | ### JavaScript Style-guide 137 | 138 | All JavaScript code TBD 139 | 140 | ### Specs Style-guide 141 | 142 | 143 | ### Documentation Style-guide 144 | 145 | * Use Markdown. 146 | 147 | NOTES: This file was based in part on the Atom example. 148 | 149 | 150 | -------------------------------------------------------------------------------- /documentation/ImportantChangeNotices.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | # APCA BASE 5 | 6 | ## SAPC/APCA BASE ALGORITHM CURRENT VERSION: 0.0.98G-4g-lut3 Constants: 4g 7 | 8 | ### May 28 2022 9 | Font lookup table revised, still for 0.98G 4g constants. General (all use case) lookup table. 10 | 11 | ### January 11 2022 12 | Font lookup table revised, still for 4G constants. Now available as arrays in the DATA folder. 13 | 14 | ### January 2 2022 15 | Font lookup table revised, still for 4G constants. 16 | 17 | ### December 1, 2021 18 | All W3 licensed files moved to their own repository, AND 19 | **A new npm package has been released (of the W3 version) to ease integration!!** 20 | 21 | ### November 23, 2021 22 | Updated font LUT, and adding a **0.** for semantic versioning (0.0.98G) 23 | 24 | ### October 1, 2021: 25 | 0.0.98G-4g is the current version. A minimal APCA version is in the JS folder. 26 | 27 | ### As of October 1, 2021 01:00 GMT 28 | 29 | # CURRENT VERSION: Beta 0.0.98G_g4 30 | 31 | **IMPORTANT:** If you are making a tool to predict contrast for the new W3 standards for Visual Contrast, ***use only the files named APCA.*** 32 | 33 | ## Change Notice October 1, 2021 01:00 GMT (February 15th constants) 34 | The new version of the basic APCA javascript file is uploaded, and the main directory readme.md has been updated with the latest maths and code examples. Variable names and values have changed. The key constants have not changed since February 15, 2021, and they are: 35 | 36 | Exponents: mainTRC: 2.4 normBG: 0.56 normTXT: 0.57 revTXT: 0.62 revBG: 0.65 37 | Scalers: Scale: 1.14 loBoWthresh: 0.035991 loBoWoffset: 0.027 loBoWfactor: 27.7847239587675 38 | Clamps: blkThrs: 0.022 blkClmp: 1.414 loClip: 0.001 deltaYmin: 0.0005 39 | 40 | The sRGB coefficients are: 41 | Rco = 0.2126729; 42 | Gco = 0.7151522; 43 | Bco = 0.0721750; 44 | 45 | ----- 46 | PREVIOUS 47 | 48 | ----- 49 | 50 | ### Change Notice January 28, 2021 02:00 GMT 51 | The new version of the basic APCA javascript file is uploaded, and the main directory readme.md has been updated with the latest maths and code examples. Variable names and values have changed. The key constants are now: 52 | 53 | Exponents: mainTRC: 2.4 normBG: 0.55 normTXT: 0.58 revTXT: 0.57 revBG: 0.62 54 | Scalers: Scale: 1.25 loConThresh: 0.078 loConOffset: 0.06 loConFactor: 12.82051282051282 55 | Clamps: blkThrs: 0.03 blkClmp: 1.45 loClip: 0.001 deltaYmin: 0.0005 56 | Also changed the R,G,B coefficients to the less rounded matrix versions for better future compatibility. 57 | 58 | Rco = 0.2126729; 59 | Gco = 0.7151522; 60 | Bco = 0.0721750; 61 | 62 | #### Change Notice January 2021 General 63 | Substantial code changes, including math and scaling. Literally all constants have changed. Typically the "equivalent colors" will be indicated 20 lower (more or less). The main takeaway here though is what was 100 is now 80, what was 80 is now 60 and what was 60 is now 40. 64 | 65 | 80: The general target for columns of body text. 66 | 67 | 60: The general target for most content text. 68 | 69 | 70 | #### Change Notice November 18, 2020 08:00 GMT 71 | IMPORTANT: Major reworking of the input objects, adding new methods including a complete CIE suite, piecewise sRGB processing, and much more. This file is _INCOMPATIBLE WITH ALL PREVIOUS VERSIONS_ due to new features, naming, and organizing of properties and methods. 72 | 73 | #### Change Notice October 22, 2020 0.0.97h2 74 | Only applies to the JS files with the input parsing. 75 | Fixed the "Zero Hex Bug" thanks to Mitch @mfishma issue #5 for pointing it out! 76 | 77 | 78 | #### Change Notice October 21, 2020 0.0.97h 79 | **Changes in the .JS files** mainly centered around adding new methods and also adding new parsing, including for alpha channels. 80 | 81 | New input feature: you only need to enter 2 hex digits to get a color, and it auto updates as you add more - 3,4,6,8 - if wen you enter two, such as e9, you are returned #e9e9e9. helpful for quickly toggling through grays. 82 | 83 | New color object data returns include L* and methods for returning alpha data. 84 | 85 | **Changes in the .HTML files** 86 | 87 | Remember there's a lot of useful JS in the HTML documents as well, and the latest in terms of the new multi-level scoring model. The font samples section is substantially cleaned up and revised to reflect the latest guidelines. 88 | 89 | #### Change Notice October 12, 2020 0.0.97g 90 | **Fixed constant** for Green coefficient — should be: `const Gco = 0.7152;` and not 0.7156 (lingering typo does not materially affect results but was nevertheless wrong.) 91 | 92 | ALSO: Changed all power functions from the shorthand `**` to the more standard `Math.pow()` for better compatibility. 93 | 94 | #### Change Notice October 11, 2020 95 | Added "APCAsRGBonly.js — this is the APCA algorithm only, suitable if you already have color parsing and just want to add the ACPA function. This version takes sRGB encoded 8 bit integers from 0-255. 96 | 97 | Code cleanup in the JS files. The loConRamp moved to a separate function. 98 | HTML files have an improved UX for the manual color entry fields. 99 | 100 | #### Change Notice October 10, 2020 101 | Split the "APCA" version from the "SAPC" version. The APCA is intended for the forthcoming W3 accessibility standards (Silver/WCAG 3). The SAPC is the research version, which may not be in conformance due to experimental variations. 102 | 103 | #### October 07, 2020 104 | To any “early adopting” developers: 105 | ###### _IMPORTANT: const VALUE CHANGE_ 106 | **Priority: HIGH — Affects Results** 107 | If you are not interested in the low-contrast extension, then there is just one change that is important: 108 | 109 | Change the `const` **`blkClmp`** from `1.75` to **`1.33`** 110 | 111 | This affects the results whenever the darker color is less than `#2c2c28`. 112 | 113 | `const blkClmp = 1.75; // OLD Exponent for the soft black clamp curve` 114 | `const blkClmp = 1.33; // NEW Exponent for the soft black clamp curve` 115 | 116 | #### _SAPC -> APCA_ 117 | Also just FYI, SAPC is the research name and SAPC is licensed under AGPL v3. 118 | APCA is the release name in the new Working Draft of Silver/WCAG 3, and licensed to the W3 per their collaborative agreements. 119 | 120 | Please feel free post issues or comments. 121 | -------------------------------------------------------------------------------- /documentation/LICENSE.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # APCA — LICENSE and RESTRICTIONS 6 | ## Patent(s) pending. 7 | ## Copyright 8 | Code and documentation in _THIS_ repository is copyright © 2019-2022 by Andrew Somers and/or Myndex™. All Rights Reserved. 9 | ## Permitted Use 10 | For THIS repo only: 11 | _**Registered Beta Testers OR Personal use only is permitted**_ unless authorized in writing, and subject to the limitations described herein. But ask We're easy. We mainly want to ensure the code is maintained up to day and correctly implemented. 12 | 13 | 14 | ## The Short Summary: 15 | The files currently in this repository are presently considered pre-release, and as such do not have a permanent license attached. In this repository, all files present are under a time-barred beta license, and intended for use with web-based content only, and not for any other use without written permission. 16 | 17 | See also: [Minimum compliance](https://git.apcacontrast.com/documentation/minimum_compliance) to use "APCA" and related trademarks. 18 | 19 | ### All Files Copyright (c) 2019-2022 by Myndex Research and Andrew Somers. All Rights Reserved. 20 | ______________ 21 | 22 | ## W3 LICENSED FILES MOVED TO W3 REPO 23 | All files that are part of the W3 license agreement are now in a separate repo: 24 | 25 | https://github.com/Myndex/apca-w3/ 26 | 27 | https://www.npmjs.com/package/apca-w3 28 | ______________ 29 | 30 | ## NON COMMERCIAL VERSION DISCLAIMER AND RESTRICTIONS 31 | 32 | _**DISCLAIMER AND LIMITATIONS OF USE:**_ 33 | **SAPC** and the **APCA** is an embodiment of certain supra-threshold contrast 34 | prediction technologies and it is licensed on a 35 | limited basis for web content only. **APCA** may be used in non-commercial software for 36 | predicting contrast for web content, and used for that 37 | specific purpose without royalty. 38 | 39 | Said license excludes other use cases 40 | not related to web content. Prohibited uses include 41 | medical, clinical evaluation, human safety related, 42 | aerospace, transportation, military applications, 43 | and uses which are not specific to web-based content 44 | presented on self-illuminated displays or devices. 45 | 46 | _**RIGHT TO AUDIT CODE**_ 47 | Any integration of APCA, SAPC, or SACAM which is in a commercial app or behind a paywall, free access must be provided to Myndex Research, or their assigns, on request, for the purpose of evaluating and verifying correct operations and implementation of the APCA/SAPC/SACAM functions. 48 | 49 | _**NO ALTERATION; KEEP CURRENT**_ 50 | Any **SAPC/APCA** files in this repository may be used or incorporated only in tools for web-based content or web related content in support of the WCAG accessibility guidelines, and such use must be without modification to the essential elements of the code or specific approved constants, except as required to port to a given language. 51 | 52 | - Developers incorporating this code into their applications, widgets, or other tools, have a duty to ensure that the most recent version of this code is used in their current or any future release. 53 | 54 | - Breaking change exception: 55 | - developers do not need to incorporate a future version of **APCA** that has breaking changes if their release is only a minor or patch version per semantic versioning. 56 | - developers with minor or patch revisions are still obligated to use the latest non-breaking branch of **APCA**. 57 | - developers with a major revision per semantic versioning are obligated to use the most recent stable **APCA**. 58 | 59 | _**USE OF THE APCA LOGO AND TRADEMARK**_ 60 | Use of the APCA or "Powered by APCA" logos or trademarks are prohibited without written consent from Myndex™ Technologies, Myndex™ Research, Andrew Somers, and/or the authorized agents or assigns. 61 | - Developers wishing to use the APCA or "Powered by APCA" logos or trademarks must submit their application or tools for qualification to be granted a limited license to use the APCA or "Powered by APCA" logos or trademarks. 62 | - Formal details on the APCA and "Powered by APCA" qualification process are pending. In the interim, make a qualification request in the discussion tab of this repo. 63 | 64 | 65 | ## GENERAL DISCLAIMER 66 | 67 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 68 | 69 | **_DISCLAIMER AND LIMITATIONS OF USE:_** 70 | 71 | APCA is an embodiment of certain supra-threshold contrast 72 | prediction technologies. Versions marked as licensed to 73 | the W3 are strictly limited to web content use only for 74 | supporting certain accessibility guidelines. 75 | 76 | APCA code listed here is provided as is, with no 77 | warrantees expressed nor implied. We accept no 78 | liability for any use or misuse of the code. 79 | Suitability of purpose resides with the 80 | integrator or end user. 81 | 82 | Commercial use is prohibited without a written 83 | and signed commercial license agreement. 84 | 85 | Non-commercial use is permitted only for 86 | predicting contrast for web content, no 87 | other use case is authorized. 88 | 89 | License excludes other use cases not related to web 90 | content. Prohibited uses include and are not limited 91 | to medical, clinical evaluation, human safety related, 92 | aerospace, transportation, military applications, and 93 | uses which are not specific to web-based content 94 | presented on self-illuminated displays or devices. 95 | 96 | ### Other licensing information 97 | 98 | All Files _in this Repository_ may have different license terms on a per-file basis. This is due to the ephemeral quality of early development. Because this contrast method is part of developing standards, it is important to keep invalid versions out of distribution. Files, code, or other assets related to SAPC, APCA, Perceptex, or Myndex Perception Research, that are not _currently_ in this repository are not available for license or use without a written agreement. 99 | 100 | ## WITHDRAWN ASSETS 101 | ONLY files that are currently in this repository are available for use under these license terms. 102 | 103 | As some code herein is early beta, and there is a clear interest to prevent obsolete versions from propagating, license for use is revoked when any such asset is removed from this repository. Prior to revocation, files will be placed in the OBSOLETE/PENDING_DELETE folder for a period to allow time for revision. Please replace any stale assets with the revised assets herein as soon as practical. 104 | 105 | #### The current assets shall be in: 106 | /dist/ 107 | /src/ 108 | #### Non breaking earlier versions shall be placed in: 109 | /LEGACY/ 110 | #### Breaking and deprecated versions shall be placed in: 111 | /DEPRECATED/ 112 | #### Breaking, invalid, and revoked versions shall be placed in: 113 | /OBSOLETE/ 114 | /OBSOLETE/PENDING_DELETE/ 115 | /IGNORE/ 116 | 117 | ### Fixed Term Licensing 118 | Due to the current developmental nature of this project, existing licenses shall expire December 31st 2022, however, at the discretion of Myndex Technologies, such licenses may be extended on an as needed basis. A permanent form of license shall be made available at the time of the first official release. 119 | 120 | 121 | **Disclaimer:** _APCA is being evaluated for future standards and guidelines, however, standards that will be incorporating APCA are still developmental. Because WCAG 2 contrast math does not accurately model human visual perception nor visual impairments, there will be discrepancies between WCAG 2 contrast math, and perceptually uniform models such as APCA. It is up to the end user to determine suitability of purpose for their region and conformance requirements._ 122 | -------------------------------------------------------------------------------- /documentation/StandardObserverModel.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # S-Luv Accessible Color Appearance Model (SACAM) 6 | _(Formerly known as SAPC)_ 7 | 8 | ## Standard Observer (Draft) 9 | 10 | * S-Luv, is a Ls usvs-type colorspace for modeling vision and visual impairment perception of emissive displays and devices. 11 | * S-Luv is built around the concept of a standard-observer/standard-environment model. 12 | * the standard observers for visual acuity (VA) with best correction, are grouped as: 13 | * 20/12 to 20/20: near-perfect human acuity 14 | * 20/20 to 20/40: normal impairment (can drive non-commercial) 15 | * 20/40 to 20/63: substantial impairment (cannot drive) 16 | * 20/70 to 20/125+1: Low Vision / disabling impairment 17 | * Unable to discern ANY character on the 20/100 line: legal definition of blind 18 | * Note the US SSA allows for acuity testing on log charts which unlike Snellen, have lines between 20/100 and 20/200. The SSA defines statutory blind as unable to discern any character on the 20/100 line, so 20/125+1 (able to see one character on the 20/100 line) does not qualify as statutory blind. 19 | * The standard observers for visual field (VF) using a III4e stimulus are 20 | * Greater than 55° temporal and 35° nasal perimeter both eyes (near normal field) 21 | * Less than 55° temporal and 35° nasal perimeter in either eye (reduced field) 22 | * Less than 20° perimeter in both eyes, or a -22 dB MD (statutory blind) 23 | * The standard observers for contrast sensitivity (CSF) are 24 | * Pelli Robson 2 (normal, 1% threshold) 25 | * Pelli Robson 1.5 (impaired, 3% threshold) 26 | * Pelli Robson 1 (Low Vision, 10% threshold) 27 | * The standard observers for Color Vision Deficiency (CVD) are 28 | * A Protanope (no "red" L cones) is the primary CVD standard observer. 29 | * Both Protan and Deutan are considered at the same time by using the Protan standard observer, this is because both have similar discrimination issues, but only protan has a significant spectral deficit toward red. 30 | * Optional additional CVD observers: 31 | * A Deuteranope (no "green" M cones) 32 | * A Tritanope (no "blue" S cones) 33 | * Blue Cone Monochromacy is evaluated as low vision / disabling impairment with photophobia and no color discrimination. 34 | * Readability Standard Observer 35 | * It is important to remember that the listed VA, CSF, & CVD specify the threshold levels between legible and not legible 36 | * Threshold legibility does not quantify the ideal readability conditions. 37 | * The critical readability for VA is a stimulus that is 2.4 times larger than threshold acuity. 38 | * The critical readability for CSF is a stimulus that has 10 times higher contrast than threshold. 39 | * The critical readability for CVD is a stimulus that has 10 times higher contrast than achromatic threshold, ***after*** adjusting for loss of color discrimination. 40 | 41 | 42 | ### SAPC Standard Observer Monitor and Environment 43 | This is the SAPC standard observer model. This is based on the currently available research and data. We are developing studies to collect additional data, in particular, sampling user settings of their monitor's brightness/contrast and the effect on the resultant display characteristics, and differences in manufacturer implementation of ambient light compensation. 44 | 45 | _**The standard environmental model shall comprise**_ 46 | * A desktop sRGB LCD screen that is 47 | * A non-retina display in the sRGB colorspace 48 | * IPS or equivalent technology such that off-axis viewing is not impacted. 49 | * Monitor shall be calibrated using a hardware calibrator to: 50 | * Max White (#FFF) Luminance no less than 160cd/m^2 51 | * Max White Luminance no more than 240cd/m^2 52 | * Black level (#000) target of 1 cd/m^2 or less, and no more than 2 cd/m^2 53 | * Preferred gamma target of 2.2, or the sRGB/displayP3 piecewise TRC 54 | * This is for an actual physical display. Math models may have a gamma add to compensate for the HVS gamma. 55 | * This gamma based and the white level to be adjusted in accordance with the ambient levels shown below. 56 | * An alternate gamma curve may be used for specific testing provided all results so specify. 57 | * HDR displays are not included in this specification. 58 | * Monitor's surrounding environmental conditions 59 | * Background behind the monitor and within the users field of view should be neutral grey or white, at a luminance that is 20% of the monitor's maximum white. 60 | * Ambient light of approximately 200 lux. 61 | * The light should not _directly_ shine on the face of the monitor. 62 | * The light should not shine into the eyes of the user while viewing the monitor. 63 | * What is actually important is that the area within view surrounding the monitor be at 20% luminance of the monitor's max white level. _(If the monitor is surrounded by 80% white walls then it is those 80% walls that need to be at 20% luminance of the monitor's max white as calibrated.)_ 64 | * Ambient evaluation procedure: 65 | * Send the sRGB monitor full screen grey at sRGB value #7C7C7C. 66 | * The average luminance of the area in view around the monitor should be the same as the monitor grey at #7C7C7C. 67 | * The monitor at #FFFFFF should measure a luminance approximately five times higher than that measures at #7C7C7C. 68 | * Position monitor toward user in a way that minimizes reflections. 69 | * Standard observer positioning and desktop monitor resolution. 70 | * Monitor resolution in ppi shall provide that at the observers view position that: 71 | * a stimulus that is 18.8px high (CSS reference px) shall subtend 24' (minutes of arc) or 0.4° on the observer's retina. 72 | * One CSS reference px is 1.278 minutes of arc or 0.0213° 73 | * An 18.8px stimulus means the actual size as measured and rendered on the display face. 74 | * For instance, the glyphs in a font set to ` font-size: 18.8px; ` does not render as 18px on screen. If the x-height ratio is 0.5, then that means the lower case letters render as only 9px on the display. 75 | * If the x-height ratio of a font is 0.5875, then setting that font to 32px will result in lower case letters rendering as 18.8px on screen. 76 | * 24' arc-min is the critical size for a viewer with 20/40 vision for best readability. 77 | * To determine the critical reading size in arc-min for a given acuity, multiply the lower Snellen number by 0.6. 78 | * For instance, for 20/70 vision, multiply 70 * 0.6 = 42' arc-min. 79 | * To determine the actual font size based on acuity, if the font haas an x-height ratio of 0.5875, then multiply the lower Snellen number by 0.8 80 | * For instance, for 20/60 vision, multiply 60 * 0.8 = 48px font. 81 | * This is only if that font has an x-height ratio of 0.5875, 82 | * The lowercase letters of that 48px font then render to screen at about ~28px. 83 | * As a quick rule of thumb: **a 16px standard font with an x-height ratio of 0.59 is the critical size for normal vision.** 84 | * Observer is positioned based on the monitor resolution. 85 | * For a mobile device, the observer is positioned such that the 1px = 1.278' arc-min relationship is maintained. 86 | * For a 96ppi monitor, the observer shall be 28" away. 87 | * For desktop, the monitor should be chosen such that the ppi allows: 88 | * The observer to be no closer than 24" (60cm) 89 | * The observer to be no farther than 36" (90cm) 90 | 91 | -------------------------------------------------------------------------------- /documentation/WhyAPCA.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # Why APCA as a New
Contrast Method? 6 | Visual readability is a critically important aspect of web content, affecting 99% of internet users. For years, the WCAG 2.x contrast guidelines provided some guidance toward readability but are being replaced for the future WCAG 3.0. Here is an overview of the need for this change and discussion of the candidate replacement, the _Accessible Perceptual Contrast Algorithm_ (APCA). 7 | 8 | ## The Contrast Problem 9 | WCAG 2.x contrast, SC 1.4.3, and the related understandings and guidelines, were born in an era before smart phones and iPads, when displays were mostly old-school CRT type and websites used core web fonts. But that was a decade and a half ago. Today the contrast guidelines are in need of a complete overhaul due to the massive changes in computer display technology, web content, CSS functionality, and advances in vision science since 2005/2008, when WCAG 2.x was first introduced. 10 | 11 | There are a number of reasons that WCAG 2.x contrast is faulty, one of which is the binary pass/fail nature of the SC for a property that does not apply in a binary way across perception nor impairments. Humans are not binary computers, and it is important to understand the non-linear aspects of perception, and to set guidelines that correctly model perception as opposed to "brute forcing" arbitrary values that ultimately do more harm than good. 12 | 13 | Let's begin with a general understanding of color and contrast with the summary outlined below. For a deeper dive see the author's whitepaper ["Introduction to Color and Accessibility"](https://AndySomers.com) and also this comprehensive overview ["The Realities And Myths Of Contrast And Color"](https://www.smashingmagazine.com/2022/09/realities-myths-contrast-color/). 14 | 15 | 16 | ## What Is Readability Contrast? 17 | 18 | Like color, contrast is not "real", it is a _perception_ and is more a result of how your brain interprets visual differences. It is not a simple measure of the distance or difference between two colors. 19 | 20 | Like all perceptions it is context sensitive, meaning what is around it and its purpose affects how you see it. Contrast is also substantially affected by _"spatial characteristics"_ which for our purposes means font weight or line thickness, and is principal factor in our brain's lightness perception (aka luminance contrast). When it comes to _color_ contrast, as in hue/chroma/saturation, the effect is less relevant to readability. High lightness/darkness contrast is required for fluent readability at best speed and comprehension, especially small body text in columns or blocks. 21 | 22 | Above a certain amount, _contrast constancy_ may come into effect wherein further increases in a mathematical contrast value does not result in higher perceived contrast for readability. A high "spatial frequency" means smaller and thinner letters. Smaller, thinner letters or graphics lowers the perceived contrast. As a result, the lightness/darkness difference between text and the background color must be increased to compensate for small thin fonts. 23 | 24 | - Fluent readability refers to _critical contrast_ which is that needed for best reading speed and comprehension. Dr. Bailey & Lovie-Kitchin's studies showed, along with Dr. Legge and other recent studies, contrast must be at least ten times the _contrast sensitivity threshold_ (CS) which is the point of "just noticeable differences" (JND). Twenty times is preferred for adequate _contrast reserve_ above the critical contrast. 25 | - Spot readability means being readable without significant effort, though not necessarily at the best speed or accuracy. In this case the contrast needs to be three times that of the JND. 26 | - Various forms of visual impairment include more than acuity, which is the ability to focus the eyes to a sharp clear image. Contrast sensitivity related impairments involving the eyes or brain may have an even greater effect on overall vision. 27 | 28 | These factors define the area of "supra-threshold critical contrast for readability." We refer to this as **"readability contrast"** for simplicity. A similar supra-threshold exists for acuity in terms of font size, which is separate but in addition to the font weight as related to spatially-driven contrast. 29 | 30 | In other words, the size of a font is related to a person's ability to focus (defined by a number like 20/20 or 6/6 on an eye exam chart) and the size and weight of that font also directly affect contrast perception. Contributing factors are white space, letter and line spacing, the aspect ratio of the letter (tall vs wide), and other properties. 31 | 32 | The following chart is intended to demonstrate the spatially dependent nature of human contrast sensitivity, using text samples to connect the abstract science to practical reality. 33 | 34 | This is a chart of the human contrast sensitivity curve. A blue line curves down to the right where the Y axis is contrast sensitivity, and the X access is spatial frequency, increasing toward the right. An increase in spatial frequency means elements are smaller and thinner. On the right of this info graphic are samples of text from very large and bold to very thin and small, with red lead lines indicating approximately where those samples fall on the contrast sensitivity curve. All of the text samples are at the exact same CSS color of #c7c7c7, the top very large and bold headline is legible but as the fonts become thinner and smaller they literally fade out as if becoming lighter gray, even though they are all at the exact same color. 35 | 36 | ### _Use Cases_ 37 | Spot-reading-contrast has a lower requirement than fluent readability contrast. Non-text object contrast such as for a solid icon may also have a lower lightness contrast requirement. And there are some differences in terms of the importance of color (hue or saturation) for things such as information coding. 38 | 39 | No single figure such as 4.5:1 or 3:1 can be used as a blanket target for contrast between two colors, without considering the use case, size, thickness, etc. On this point, it has been demonstrated that WCAG 2 contrast can pass colors that should fail as not readable, and sometimes the WCAG 2 math fails a color pair that _should pass_ as very readable. Some articles with visual comparisons and examples of this are: 40 | 41 | ### _Contrasting Concerns_ 42 | 43 | The problems of 4.5:1 as a target for a guideline not only impact accessibility, but impacts standard vision. The inherent problems with the WCAG 2 contrast math have been known for some time and [widely criticized](https://macwright.com/2019/03/30/color-contrast-is-a-problem.html). Including studies [by others showing that color insensitive types](https://www.bounteous.com/insights/2019/03/22/orange-you-accessible-mini-case-study-color-ratio/) are not well served. The WCAG 2 contrast specs often cause enough problems for designers [that it is ignored](https://uxmovement.com/buttons/the-myths-of-color-contrast-accessibility/) and today, some 86% of websites are failing WCAG\_2 contrast—though some failures are not due to actually poor accessibility, but due to the incorrect math of WCAG\_2 contrast. 44 | 45 | ----- 46 | ## The Solution: APCA 47 | The Accessible Perceptual Contrast Algorithm (APCA) is a new method for calculating and predicting readability contrast. APCA is a part of the larger S-Luv Accessible Color Appearance Model known as SACAM (formerly SAPC). These models are specifically related to color appearance on self-illuminated RGB computer displays & devices, and also for modeling accessible user needs, with a focus on readability. 48 | 49 | ### _Lightness contrast (Lc)_ 50 | The APCA generates a lightness/darkness contrast value based on a minimum font weight/size and color pair, and this value is perceptually based: that is, regardless of how light or dark the two colors are, a contrast value of Lc 60 represents the same _perceived_ readability contrast, across the available range of colors. 51 | 52 | This is absolutely not the case with WCAG 2.x, which far overstates contrast for dark colors to the point that 4.5:1 can be functionally unreadable when a color is near black. As a result, WCAG 2.x contrast cannot be used for guidance designing "dark mode". This also creates problems for color vision deficiency (sometimes called colorblind). 53 | 54 | The APCA contrast value is perceptually uniform, and pivots near the point where the CS curve flattens due to contrast constancy. Halving or doubling the APCA value relates to a halving or doubling of the perceived contrast. There is a subtle weighting for higher contrasts to smaller, thinner fonts. 55 | 56 | ### _Different Uses, Different Contrasts_ 57 | The APCA has a set of levels related to use cases — for instance, Lc 90 is _preferred_ and Lc 75 is the _minimum_ for body text. This makes for an easy way to use ACPA, very similar to 1.4.3 in terms of ease of use. 58 | 59 | The APCA also has an **optional** lookup table to associate font size and weight to the readability contrast (Lc value). The lookup tables allow for even greater accuracy and therefore greater flexibility in design. 60 | 61 | ### _Failing Pass/Fail_ 62 | A key takeaway is that a strict pass/fail with a blanket contrast ratio is not instructive as a guideline, and does not necessarily solve a given user need. In fact, user needs when it comes to contrast are conflicting—what is good for one can be harmful to another. This is even true of font size. 63 | 64 | This points to the importance of real user personalization, an area where the technology is literally missing (and a work in progress). For the guidelines though, we can set ranges for targets and expectations toward making the web readable for all. 65 | 66 | ## Visual Comparisons 67 | In the following chart, we're showing minimum passing contrasts for APCA and for WCAG 2. Notice WCAG 2 examples become unreadable with dark colors. 68 | 69 | chart showing a comparison of minimum passing contrasts for both APCA and WCAG 2. WCAG 2 examples become unreadable in dark colors 70 | 71 | #### _And the problem is particularly severe for "dark mode":_ 72 | 73 | demonstration showing a comparison of minimum passing contrasts for both APCA and WCAG 2. WCAG 2 is unreadable for dark mode 74 | 75 | 76 | ## Use-Case Ranges 77 | These general levels are appropriate for use by themselves, without the need to reference a lookup table. APCA reports contrast as an Lc value (lightness contrast) from **Lc 0** to **Lc 105+**. For accessibility, consider Lc 15 the point of invisibility for many users, particularly for thin lines, and Lc 90 is preferred for body text. 78 | 79 | See [this on ranges](./APCA_in_a_Nutshell#use-case--size-ranges) for a more in-depth look. 80 | 81 | * **Lc 90** • Preferred level for fluent text and columns of body text with a font no smaller than 14px/weight 400 (normal). 82 | * **Lc 75** • The _minimum_ level for columns of body text with a font no smaller than 18px/400. Lc 75 should be considered a minimum for text where readability is important. 83 | * **Lc 60** • The _minimum_ level recommended for content text that is not body, column, or block text. In other words, text you want people to read. The minimums: 24px normal weight (400) or 16px/700 (bold). These values based on the reference font Helvetica. 84 | * **Lc 45** • The _minimum_ for larger, heavier text (36px normal weight or 24px bold) such as headlines. This is also the minimum for pictograms with fine details. 85 | * **Lc 30** • The _absolute minimum_ for any text not listed above. This includes placeholder text and disabled element text. This is also the minimum for large/solid semantic & understandable non-text elements. 86 | * **Lc 15** • The _absolute minimum_ for any non-text that needs to be _discernible_ and differentiable, and is no less than 5px in its smallest dimension. This may include disabled large buttons. **Designers should treat anything below this level as invisible**, as it will not be visible for many users. This minimum level should be avoided for any items important to the use, understanding, or interaction of the site. 87 | 88 | These define the basic minimum levels, what you might think of as A/AA in the old WCAG 2. For the equivalent to AAA, simply increase the contrast values by Lc 15. Maximum: for **large** fonts in dark mode, keep contrast less than Lc 90. 89 | 90 | ### _Range-Based Scoring_ 91 | While the candidate for WCAG 3 is still in development, it includes a range-based conformance system. While it considers multiple factors, it is simple enough to be fully automated, and does not rely on an arbitrary pass/fail binary scoring. 92 | 93 | The overall approach improves design flexibility and readability at the same time. Readability is improved by increasing contrast in blocks of body text where it is most needed, and design flexibility is achieved by relaxing contrast for large non-text elements which do not need brute-force contrast levels due to their larger size (resulting in a lower spatial frequency). 94 | 95 | For demonstration purposes, the example tool provides real-time updates of minimum font size and weight vs contrast: [apcacontrast.com](https://apcacontrast.com) click on the color patches to bring up a color-picker. 96 | 97 | We hope this clarifies the useful differences of a perceptually accurate range-based model as the guideline for a future of best readability. 98 | 99 | 100 | Thank you for reading, 101 | 102 | **_Andrew Somers_** 103 | _Director of Research_ 104 | _Myndex Technologies_ 105 | _W3C Invited Expert_ 106 | _APCA Research Lead_ 107 | 108 | ---- 109 | ## _THE WORLD IS READING_ 110 | 111 | ### Definitions of Terms Used In This Document 112 | - **Spatial or spatially:** relating to size, weight, or thickness. 113 | - **Hue:** the uniqueness of a given color vs other colors, i.e. blue vs red. 114 | - **Chroma/saturation:** the intensity or purity of a color vs no color. 115 | - **Luminance:** a physical measure of light, disregarding hue. 116 | - **Lightness:** the human perception of a given luminance. Also darkness and brightness. 117 | 118 | _This document was written in basic plain language using the [Hemingway app](https://hemingwayapp.com)._ 119 | 120 | ### Study Volunteers Needed 121 | Would you like to help create a more readable world for all? Please let us know! We have several studies planned for 2023, and it requires minimal time on your part to participate. Please send an email to perceptex@myndex.com with "volunteer" in the subject line. 122 | 123 | **_NOTICE: Personal opinions expressed are the author's and may or may not reflect those of the W3 or AGWG._** 124 | 125 | APCA The Revolution Will Be Readable 126 | 127 | ## APPENDIX: _Additional Reading_ 128 | - [**Linktree of Selected Resources**](https://linktr.ee/Myndex) A good place to start. 129 | - [**Main Catalog of APCA Resources and Links**](https://git.myndex.com) For the much deeper divers. 130 | 131 | ### APCA Readability Criterion 132 | _Maintained by Inclusive Reading Technologies Inc., a California Non-Profit_. 133 | - [**Draft ARC Guidelines**](https://readtech.org/ARC/) for implementing APCA and related technologies. 134 | - [**Bronze Simple Mode**](https://readtech.org/ARC/tests/bronze-simple-mode/?tn=intro) is designed as an introductory mode that does not require look-up tables or matching to a reference font. Instead it's designed as a simple set of threshold levels, similar to how WCAG 2 works but using perceptually uniform math. 135 | 136 | ### Links To APCA and Related Tools 137 | - [**APCA Calculator**](https://apcacontrast.com), the official technology demonstrator for APCA, includes explainers. 138 | - Listing of [**Third Party Tools and Systems**](https://git.apcacontrast.com/documentation/thirdpartytools) that have adopted APCA. 139 | - An [**Accurate Colorblind Simulator**](https://myndex.com/CVD/) based on the well respected, peer-reviewed, Brettel et alia model. 140 | 141 | ### Discussion Forum 142 | - [**Readability Forum**](https://github.com/Myndex/SAPC-APCA/discussions/) questions and comments welcome. 143 | - [**DISCUSS: Using APCA with other fonts** ](https://github.com/Myndex/SAPC-APCA/discussions/28#discussioncomment-1610289) Draft method for font weight conformance. 144 | - [**DISCUSS: Inline text links theory and practice** ](https://github.com/Myndex/SAPC-APCA/discussions/65) Draft guidance regarding link identification. 145 | - [**DISCUSS: Draft Dark Mode Guidance**](https://github.com/Myndex/SAPC-APCA/discussions/74#discussioncomment-6646215) Draft guidance regarding darkmode from light mode, and more. 146 | - [**DISCUSS: Legal Issues of WCAG2 vs APCA**](https://github.com/Myndex/SAPC-APCA/discussions/68#discussion-3980510) Discussion of current and future legal status and incorporation into legislation. 147 | 148 | ### Peer Review & Third Party Discussion of APCA 149 | A listing of [**third party and peer reviews**](https://git.myndex.com/#apca-peer-review--third-party-discussion) of APCA and related technologies. This directory includes journal-published peer-reviews, trade-published evaluations, and less formal comparative analysis, covering the usage, math, efficacy, implementation/integration, workflows, and more. 150 | 151 | ### Published Articles on Color & Contrast by A.Somers 152 | - [**The Realities And Myths Of Contrast And Color**](https://www.smashingmagazine.com/2022/09/realities-myths-contrast-color/) Published by _Smashing Magazine_. A brief but comprehensive primer to vision, color, and contrast for design, with an emphasis on typography, readability, and visual accessibility needs. 153 | - [**Better Reading on the Web**](https://uxdesign.cc/better-reading-on-the-web-c943c4cfc91a) Published by _UX Collective_, this article discusses and demonstrates issues with automated testing and WCAG 2 contrast math, methods, and guidelines. 154 | 155 | - **The _Tangled Web_ tech blog** (TangledWeb.xyz): 156 | - [**Please Stop Using Grey Text**](https://tangledweb.xyz/please-stop-using-grey-text-3d3e71acfca8) This popular article debunks one of the worst myths regarding design contrast. 157 | - [**What’s Red & Black & Also Not Read?**](https://tangledweb.xyz/whats-red-black-also-not-read-573b9c0a97ed) examines the nature of color insensitivity and readability. 158 | - [**Busy Background Breaks Bulletin**](https://tangledweb.xyz/busy-background-breaks-bulletin-f4ff4bf67e5a) Examples of how to destroy readability by choosing the wrong image as a background. And also, how to fix it. 159 | - [**Hats off to ALL CAPS**](https://tangledweb.xyz/hats-off-to-all-caps-c0a43a2c30d4) myth-busting misunderstandings regarding dyslexia, are special dyslexia fonts even useful, and the shift from using ALL UPPERCASE LETTERS for various text elements. 160 | - [**A Contrast of Errors**](https://atangledwebweweave.com/a-contrast-of-errors-373c2665d42a) looks at the history and the current international readability crisis. 161 | - [**Contrasting Theories**](https://tangledweb.xyz/hi-roger-f51bde490a56) Background on the first two years of R&D. 162 | 163 |

164 | Smokey the bear saying  ONLY YOU CAN STOP LOW CONTRAST 165 |
166 |

167 | 168 | 169 | 170 | -------------------------------------------------------------------------------- /documentation/accessibilitystatement.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # APCA Accessibility Statement 6 | **Version v0.3.0 August 25, 2023** 7 | _Contents_ 8 | - Short form A [site statement](#apca-accessibility-statement-v030-a--shortform) (WCAG 2 is not mentioned) 9 | - Short form B [site statement](#apca-accessibility-statement-v030-b--shortform) (Same as version A but WCAG 2 is specifically mentioned) 10 | - Long form C [site statement](#apca-accessibility-statement-v030-c--alternatemethod-replacing-wcag2) (discusses supplanting WCAG 2) 11 | - Tool or library D [library/source code statement](#apca-accessibility-statement-v030-d--short-for-tools-or-libraries) (for adding to the source code of live tools or libraries) 12 | - Tool or library E [library/source code statement](#apca-accessibility-statement-v030-e--long-for-tools-or-libraries) (for adding to the source code of live tools or libraries) 13 | 14 | _At their option, beta testers, early adopters, and sites using APCA to provide design guidance, may wish to include one of the following statements in their site's boilerplate, Terms of Service document, or as part of a larger accessibility statement._ 15 | 16 | - See also [INTEGRATION COMPLIANCE](./minimum_compliance#regarding-wcag-30) 17 | 18 | 19 | ### ↓   ↓   ↓   ↓   ↓   ↓   20 | 21 | 22 | --- 23 | > ## APCA Accessibility Statement v0.3.0 (A) •• short form 24 | >> _This simple, short statement should be fine for most sites in most regions. 25 | >> WCAG 2 is **not mentioned** 26 | >> Naturally it is up to the designer/developer/site owner to determine the means & methods of any contractual or legal obligations they are required to maintain._ 27 | >>> STATEMENT A _START_   ↓   (Short) 28 | 29 | ### This website is using the [APCA](https://git.apcacontrast.com/documentation/APCAeasyIntro)™ readability guidelines for determining visual contrast of text and non-text elements. 30 | 31 | This site's visually-readable primary content is designed to meet or exceed the [***Bronze Simple***](https://readtech.org/ARC/tests/bronze-simple-mode/?tn=intro#summary) conformance level, as defined in version: (Public Beta Working Draft 2023), of the [APCA Readability Criteria (ARC)](https://readtech.org/ARC/), which provides improved visual readability, enhancing actual accessibility and visual readability for users of this website. If you have questions, concerns, or problems, please contact the accessibility manager or webmaster of this site. The APCA Readability Criteria is designed to substantially exceed earlier guidelines in terms of actual accessibility. If you find you are experiencing a functional problem with text contrast on this site, please let us know by forwarding to the URL to _bugreport_ at _readtech.org_ 32 | 33 | 34 | >>>> 🔚   ←   _END_ 35 | 36 | --- 37 | • • 38 | • • 39 | • • 40 | 41 | --- 42 | > ## APCA Accessibility Statement v0.3.0 (B) •• short form 43 | >> _This simple, short statement should be fine for most sites in most regions. 44 | >> WCAG 2 **is specifically mentioned** 45 | >> Naturally it is up to the designer/developer/site owner to determine the means & methods of any contractual or legal obligations they are required to maintain._ 46 | >>> STATEMENT B _START_   ↓   (Short) 47 | 48 | ### This website is using the [APCA](https://git.apcacontrast.com/documentation/APCAeasyIntro)™ readability guidelines for determining visual contrast of text and non-text elements. 49 | 50 | This site's visually-readable primary content is designed to meet or exceed the [***Bronze Simple***](https://readtech.org/ARC/tests/bronze-simple-mode/?tn=intro#summary) conformance level, as defined in version: (Public Beta Working Draft 2023), of the [APCA Readability Criteria (ARC)](https://readtech.org/ARC/), which provides improved visual readability, enhancing actual accessibility and visual readability for users of this website. If you have questions, concerns, or problems, please contact the accessibility manager or webmaster of this site. The APCA Readability Criteria is designed to substantially exceed SC 1.4.3 and SC 1.4.11 of the WCAG 2.1 guidelines in terms of actual accessibility. If you find you are experiencing a functional problem with text contrast on this site, please let us know by forwarding to the URL to _bugreport_ at _readtech.org_ 51 | 52 | 53 | >>>> 🔚   ←   _END_ 54 | 55 | --- 56 | • • 57 | • • 58 | • • 59 | 60 | --- 61 | > ## APCA Accessibility Statement v0.3.0 (C) •• alternate method, replacing WCAG 2 62 | >> *This, more complete statement, is aimed at sites that wish to more thoroughly promote readability and enhance actual accessibility, and for sites that >> may have some concerns or ambiguities regarding the replacement of WCAG 2 contrast criteria.* 63 | >>> STATEMENT C _START_   ↓   (Supplant WCAG 2) 64 | 65 | 66 | #### This website is using the [APCA](git.apcacontrast.com/documentation/APCAeasyIntro)™ readability guidelines for determining visual contrast of text and non-text elements. 67 | 68 | Recent research, and advances in colorimetry, readability, and vision science, have shown that some established math and methods for determining visual contrast, including those defined in WCAG 2 SC 1.4.3 and 1.4.11, do not accurately model the human vision system's perception of text and graphics on self-illuminated displays, nor do the older guidelines indicate the actual _readability_. 69 | 70 | The APCA maths, methods, and guidelines were developed to correct the deficiencies of the existing WCAG 2 contrast criteria. The APCA Readability Criteria is designed to substantially exceed SC 1.4.3 and SC 1.4.11 of the WCAG 2.1 guidelines in terms of actual accessibility, as well as providing more flexible design choices. For instance APCA can **correctly calculate colors for dark mode** which WCAG 2 cannot. 71 | 72 | Additionally, **US Access Board 508 rules permit alternative methods** other than WCAG 2, as do many other rules or regulations, with the aim to provide for enhanced actual accessibility. _(**REFERENCE:** Appendix A to Part 1194 – Section 508 Chapter 1 § E101.2 Equivalent Facilitation: **"The use of an alternative design or technology that results in substantially equivalent or greater accessibility and usability...is permitted.")**_ 73 | 74 | Therefore, incorporating APCA guidelines herein is a best practice for _actual_ accessibility and accommodating user needs for visual readability, in furtherance of the **_Americans with Disabilities Act_** (ADA). An implication however is that any _automated_ conformance testing or measuring of contrast, conducted on this site ***must be conducted using a modern***, perceptually uniform, text-aware contrast method, such as [***APCA: Accessible Perceptual Contrast Algorithm***](APCA)™. The WCAG 2.x (1.4.3) math, methods, and success criterion are **not relevant for this site, and are obsolete as far as this site is concerned.** 75 | 76 | ***REGARDING WCAG 3.0:*** **"APCA™ is still the candidate contrast method for WCAG 3**, which has been pushed several years into the future. But the needs of the accessibility and design communities are pressing today, so the [***APCA***](APCA)™ is _also_ being developed with an independent set of guidelines. Accessibility advocates, designers, and developers can access this technology now, as a public beta. 77 | 78 | ### Conformance level 79 | **This site's visually-readable primary content is designed to meet or exceed the [***Bronze Simple***](https://readtech.org/ARC/tests/bronze-simple-mode/?tn=intro#summary) conformance level, as defined in version: (Public Beta Working Draft 2023), of the [APCA Readability Criteria (ARC)](https://readtech.org/ARC/), which provides improved visual readability, enhancing actual accessibility and visual readability for users of this website.** 80 | 81 | ***COMMENTS WELCOME:*** APCA is presently in public beta—won't you join us in building a more readable future? If you have questions, concerns, or problems, please contact the accessibility manager or webmaster of this site. The APCA Readability Criteria is designed to substantially exceed SC 1.4.3 and SC 1.4.11 of the WCAG 2.1 guidelines in terms of actual accessibility. If you find you are experiencing a functional problem with visual contrast on this site, please let us know by forwarding to the URL to _bugreport_ at _readtech.org_ 82 | 83 | And to learn more about contrast and color theory, here's a catalog of resources, including bibliographies of the peer-reviewed research and scientific-consensus colorimetry that laid the foundation for these breakthroughs: [git.myndex.com](https://git.myndex.com) 84 | 85 | 86 | >>>> 🔚   ←   _END_ 87 | 88 | --- 89 | • • 90 | • • 91 | • • 92 | 93 | --- 94 | > ## APCA Accessibility Statement v0.3.0 (D) •• SHORT For tools or libraries 95 | >> If you have a live tool or color system that uses APCA, or if you are putting together a library or framework that will have APCA code in it for others to integrate, then below is the accessibility statement that you would want to associate with those projects. 96 | >> See also [INTEGRATION COMPLIANCE](./minimum_compliance#regarding-wcag-30). 97 | >>> STATEMENT D _START_   ↓   (Short - tools or libraries) 98 | 99 | **The components, CSS properties, and design elements in this library were developed using the APCA™ readability guidelines for determining visual contrast of text and non-text elements.** 100 | 101 | This library's visually readable color framework is designed to meet or exceed the [***Bronze Simple***](https://readtech.org/ARC/tests/bronze-simple-mode/?tn=intro#summary) conformance level, as defined in version: (Public Beta Working Draft 2023), of the [APCA Readability Criteria (ARC)](https://readtech.org/ARC/), which provides improved visual readability, enhancing actual accessibility and visual readability. 102 | 103 | >>>> 🔚   ←   _END_ 104 | 105 | --- 106 | • • 107 | • • 108 | • • 109 | 110 | --- 111 | > ## APCA Accessibility Statement v0.3.0 (E) •• LONG For tools or libraries 112 | >> If you have a live tool or color system that uses APCA, or if you are putting together a library or framework that will have APCA code in it for others to integrate, then below is the accessibility statement that you would want to associate with those projects. 113 | >> See also [INTEGRATION COMPLIANCE](./minimum_compliance#regarding-wcag-30). 114 | >>> STATEMENT E _START_   ↓   (tools or libraries) 115 | 116 | **This _``_ is using the [APCA](git.apcacontrast.com/documentation/APCAeasyIntro)™ algorithm and readability guidelines for determining visual contrast of text and non-text elements.** 117 | 118 | Recent research, and advances in colorimetry, readability, and vision science, have shown that some established math and methods for determining visual contrast, including those defined in WCAG 2 SC 1.4.3 and 1.4.11, do not accurately model the human vision system's perception of text and graphics on self-illuminated displays, nor do the older guidelines indicate the actual _readability_. 119 | 120 | The APCA maths, methods, and guidelines were developed to correct the deficiencies of the existing WCAG 2 contrast criteria. The APCA Readability Criteria is designed to substantially exceed SC 1.4.3 and SC 1.4.11 of the WCAG 2.1 guidelines in terms of actual accessibility, as well as providing more flexible design choices. For instance APCA can **correctly calculate colors for dark mode** which WCAG 2 cannot. 121 | 122 | Additionally, **US Access Board 508 rules permit alternative methods** other than WCAG 2, as do many other rules or regulations, with the aim to provide for enhanced actual accessibility. _(**REFERENCE:** Appendix A to Part 1194 – Section 508 Chapter 1 § E101.2 Equivalent Facilitation: **"The use of an alternative design or technology that results in substantially equivalent or greater accessibility and usability...is permitted.")**_ 123 | 124 | Therefore, incorporating APCA guidelines herein is a best practice for _actual_ accessibility and accommodating user needs for visual readability, in furtherance of the **_Americans with Disabilities Act_** (ADA). An implication however is that any _automated_ conformance testing or measuring of contrast, conducted on this site ***must be conducted using a modern***, perceptually uniform, text-aware contrast method, such as [***APCA: Accessible Perceptual Contrast Algorithm***](APCA)™. The WCAG 2.x (1.4.3) math, methods, and success criterion are **not relevant for this site, and are obsolete as far as this site is concerned.** 125 | 126 | Of course, the compliance requirements for sites in different regions or jurisdictions should be evaluated on a case-by-case basis, to certify the needs of their particular market sector. Nothing in this statement should be construed as legal advice. 127 | 128 | ***REGARDING WCAG 3.0:*** **"APCA™ is still the candidate contrast method for WCAG 3**, which has been pushed several years into the future. But the needs of the accessibility and design communities are pressing today, so the [***APCA***](APCA)™ is _also_ being developed with an independent set of guidelines. Accessibility advocates, designers, and developers can access this technology now as the public beta, with some minor caveats: 129 | 130 | 1. ***Use only the guidelines at the canonical Myndex repos.*** 131 | - [**The APCA Readability Criterion**](https://readtech.org/ARC/) APCA guidelines at ReadTech.org 132 | - [**APCAcontrast.com**](https://apcacontrast.com) The official contrast calculator for APCA 133 | - [**APCA Use Cases**](https://readtech.org/ARC/tests/visual-readability-contrast/?tn=conform#use-cases-text) APCA Use Cases, Conformance, Research, and Glossary 134 | - [**Match a Font**](https://readtech.org/ARC/tests/visual-readability-contrast/?tn=tests#conditional) How to match to a reference font for gold level compliance 135 | - [**In-line links**](https://github.com/Myndex/SAPC-APCA/discussions/65) draft work in progress guidance on how to handle in-line text link 136 | 2. ***Bridge PCA*** if you absolutely positively have to be backwards compatible to WCAG 2 ***by the numbers***, then you can [use Bridge PCA](https://bridgepca.com), and the Bridge PCA guidelines to give you better readability but also to match when WCAG 2 incorrectly rejects. 137 | - Situations where you would be ***required*** to ensure to the absolute letter of WCAG 2 contrast SCs appear to be fairly rare, as WCAG 2 is a voluntary guideline in most areas of the world. 138 | - Nevertheless it is important to recognize if you're in a region that does have such a requirement, Bridge PCA is backwards compatible to WCAG 2. 139 | 140 | 141 | ***COMMENTS WELCOME:*** APCA is presently in public beta, won't you join us in building a more readable future? Please let us know about any problems, questions, or concerns related to readability and perceptual contrast at the [APCA readability discussion forum.](https://github.com/Myndex/SAPC-APCA/discussions) 142 | 143 | To learn more about contrast and color theory, here's a catalog of resources, including bibliographies of the peer-reviewed research and scientific-consensus colorimetry that laid the foundation for these groundbreaking new methods: [git.myndex.com](https://git.myndex.com) 144 | 145 | 146 | >>>> 🔚   ←   _END_ 147 | 148 | 149 | --- 150 | • • 151 | • • 152 | • • 153 | 154 | 155 | --- 156 | > ## APCA Notes 157 | >> Blank 158 | 159 | --- 160 | >>> _START_   ↓   (Blank) 161 | >>>>> 🔚   ←   _END_ 162 | -------------------------------------------------------------------------------- /documentation/color-vision-links.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # COLOR VISION LINKS 6 | This is a curated collection of links relating to color vision and accessibility, with an emphasis on practical design advice and guidelines. 7 | 8 | 9 | ## COMPREHENSIVE COLOR VISION & COLOR THEORY 10 | 11 | Larry Arend's 12 | [**NASA's Using Color in Information Display Graphics**](https://colorusage.arc.nasa.gov/) 13 | - [Luminance Contrast](https://colorusage.arc.nasa.gov/luminance_cont.php) 14 | - [Legibility](https://colorusage.arc.nasa.gov/legib_1.php) 15 | - [Designing With Blue](https://colorusage.arc.nasa.gov/blue_2.php) 16 | - [Authoritative Color Bibliography](https://colorusage.arc.nasa.gov/bibliography.php) 17 | 18 | Nate Baldwin's 19 | [**Color and Contrast**](https://colorandcontrast.com/) 20 | - [Contrast sensitivity](https://colorandcontrast.com/#/contrast-sensitivity) 21 | - [Color vision deficiency("Color blindness")](https://colorandcontrast.com/#/color-vision-deficiency) 22 | - [APCA](https://colorandcontrast.com/#/apca) 23 | 24 | Bruce MacEvoy's 25 | [**Handprint site on Color Vision**](http://www.handprint.com/LS/CVS/color.html) 26 | - [Light and the Eye](https://www.handprint.com/HP/WCL/color1.html) 27 | - [Color Theory](http://www.handprint.com/HP/WCL/wcolor.html) 28 | 29 | Troy Sobotka's 30 | [**The Hitchhiker's Guide to Digital Colour**](https://hg2dc.com) 31 | 32 | --- 33 | ## COLOR & CONTRAST DESIGN TOOLS 34 | 35 | **APCA Text Contrast Calculator** 36 | - [Official: apcacontrast.com](https://apcacontrast.com) technology demonstrator with dynamic text examples. 37 | - [_Third Party APCA Tools_](https://git.apcacontrast.com/documentation/thirdpartytools) a list of third party APCA based color & contrast tools. 38 | 39 | **Inclusive Reading Technologies Design Standards** 40 | - [APCA Readability Criterion](https://readtech.org/ARC/) the current public draft guidelines for content authors and developers. 41 | - [Visual Readability Contrast](https://readtech.org/ARC/tests/visual-readability-contrast/?tn=intro) Testing and conformance specifications 42 | - [Bronze Simple Mode](https://readtech.org/ARC/tests/bronze-simple-mode/?tn=intro) Quickstart simplified specifications. 43 | - [Design Guide: Visual Contrast](https://readtech.org/ARC/guides/designing-with-visual-contrast/?tn=get-started) General design guidance. 44 | 45 | **Color Vision Deficiency (Colorblind) Simulator Web App** 46 | - [myndex.com/CVD/](https://myndex.com/CVD/) a web app based on Brettel, Viénot, & Mollon, with additional simulations, shows all at once for comparison. 47 | 48 | **Desktop Color Vision (Colorblind) Simulator** 49 | - [colororacle.org](https://colororacle.org/) A desktop app based on Brettel, Viénot, & Mollon 50 | 51 | **Interactive DataViz Color Palette Tool** 52 | - [colorbrewer2.org](https://colorbrewer2.org/#type=sequential&scheme=BuGn&n=3) a web app that allows exploring palettes as applied to a map. 53 | 54 | 55 | 56 | 57 | ---- 58 | ## AUTHORITATIVE PAPERS, ARTICLES, & BOOKS 59 | 60 | [**The Realities And Myths Of Contrast And Color**](https://www.smashingmagazine.com/2022/09/realities-myths-contrast-color/) 61 | _by A.Somers_ 62 | A plain language, in-depth primer to vision, color, and contrast for design, with an emphasis on typography and accessibility needs. Published by Smashing Magazine. 63 | 64 | [**Designing Maps for Colorblind**](https://colororacle.org/colororacle/resources/2007_JennyKelso_ColorDesign_lores.pdf) 65 | _by B.Jenny, N.Kelso_ 66 | This paper covers in depth, issues of design for those with color vision deficiency. 67 | 68 | [**Why APCA?**](https://git.apcacontrast.com/documentation/WhyAPCA) 69 | _by A.Somers_ 70 | This brief, plain language introduction into APCA, and how it solves the problems of WCAG_2 contrast. 71 | 72 | [**Does the contrast ratio actually predict the legibility of website text?**](https://www.cedc.tools/article.html) 73 | _by S. Waller_ 74 | A comparison of WCAG 2 math and APCA, by Sam Waller, a PhD at the Engineering Design Centre, University of Cambridge, UK. 75 | 76 | [**Please Stop Using Grey Text**](https://tangledweb.xyz/please-stop-using-grey-text-3d3e71acfca8) 77 | _by A.Somers_ 78 | Debunking one of the worst myths regarding design contrast. This article went viral in early 2022. 79 | 80 | [**Color Contrast Is Not As Black And White As It Seems**](https://medium.com/@think_ui/why-color-contrast-is-not-as-black-and-white-as-it-seems-94197a72b005) 81 | _by Roger Attrill_ 82 | A technical analysis of some of the problems with WCAG 2 contrast math, and comparing and analyzing APCA. 83 | 84 | [**What’s Red & Black & Also Not Read?**](https://tangledweb.xyz/whats-red-black-also-not-read-573b9c0a97ed) 85 | _by A.Somers_ 86 | Do the WCAG 2 Contrast Guidelines help users with color vision issues? While this is a widely held belief, the truth may surprise you. 87 | 88 | [**Orange You Accessible? A Mini Case Study on Color Ratio**](https://www.bounteous.com/insights/2019/03/22/orange-you-accessible-mini-case-study-color-ratio) 89 | _by Ericka O'Connor_ 90 | This article demonstrates how WCAG_2 is flawed for colorblind users, including studies conducted with individuals with color vision deficiency. 91 | 92 | [**Better reading on the web**](https://uxdesign.cc/better-reading-on-the-web-c943c4cfc91a) 93 | _by A.Somers_ 94 | Published by UX Collective. This article discusses and demonstrates the problems with WCAG 2 contrast math, methods, guidelines, and automated testing. 95 | 96 | [**Guidelines for Using Color in Voting Systems**](https://www.nist.gov/publications/guidelines-using-color-voting-systems) 97 | _by Maureen Stone, Sharon J. Laskowski, Svetlana Z. Lowry_ 98 | This book, available for free download from NIST, covers digital color design guide for the electronic displays of voting systems. It dives deeply into designing for color vision with a great deal of practical advice. 99 | 100 | [**A Contrast of Errors**](https://tangledweb.xyz/a-contrast-of-errors-373c2665d42a) 101 | _by A.Somers_ 102 | A look into the history of the WCAG 2 contrast guidelines, some of the problems created by them, and a discussion of the proposed replacement, the APCA (Accessible Perceptual Contrast Algorithm). 103 | 104 | [**Color Appearance Models**](https://onlinelibrary.wiley.com/doi/book/10.1002/9781118653128) 105 | _by Mark D. Fairchild_ 106 | The essential resource for readers needing to understand visual perception and for those trying to produce, reproduce and measure color appearance in various applications such as imaging, entertainment, materials, design, architecture and lighting. 107 | 108 | [**A Brief Overview of Color Vision Deficiency**](https://www.w3.org/WAI/GL/low-vision-a11y-tf/wiki/CVD) (Colorblind) with examples 109 | 110 | 111 | 112 | --- 113 | ## CURATED COLOR LINK CATALOGS 114 | 115 | **Myndex [Color and Contrast Resources](https://git.myndex.com/#myndex-color--contrast-resources).** 116 | 117 | [**DJBriggs Color Online**](https://sites.google.com/site/djcbriggs/colour-online?authuser=0) 118 | 119 | [**Accessible Perceptual Contrast Algorithm**](https://git.myndex.com/) Documentation Links 120 | 121 | 122 | -------------------------------------------------------------------------------- /documentation/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: repoSubfolder 3 | --- 4 | 5 | # APCA Documentation Index 6 | 7 | ## Accessible Perceptual Contrast Algorithm 8 | 9 | - [**Main Readme Doc** (HTML version)](https://git.apcacontrast.com/documentation/README) 10 | - [**Color and Contrast Tools Listing**](https://git.apcacontrast.com/documentation/thirdpartytools) 11 | 12 | 13 | 14 | ### _Simple Overview, QuickStart, and FAQ_ 15 | These are intended for end users, and those interested in a plain language overview without a lot of the math & theory. 16 | - [**Why APCA?**](https://git.apcacontrast.com/documentation/WhyAPCA) A basic overview 17 | - [**APCA in a nutshell**](https://git.apcacontrast.com/documentation/APCA_in_a_Nutshell) The minimum user guide 18 | - [**APCA FAQ**](https://git.apcacontrast.com/documentation/APCA_FAQ) Work In Progress 19 | 20 | ### _Sciencey Stuff!_ 21 | Maths! Vision Science! Photons on Parade! 22 | - [The base APCA-W3 formula](https://github.com/Myndex/SAPC-APCA/blob/master/documentation/APCA-W3-LaTeX.md) in LaTeX math for your viewing and calculating pleasure. 23 | - [Regarding Exponents](https://git.apcacontrast.com/documentation/regardingexponents) Some notes and explanation regarding the power-curve exponents. 24 | - [Standard Observer Model](https://git.apcacontrast.com/documentation/StandardObserverModel) Draft standardized environment. 25 | - [Visual Contrast Draft Whitepaper](https://www.w3.org/WAI/GL/task-forces/silver/wiki/Visual_Contrast_of_Text_Subgroup/Whitepaper) (Work in progress) 26 | 27 | ### _For Developers_ 28 | - [RepoList](https://git.apcacontrast.com/documentation/repoList) of the related satellite repositories. 29 | - [Important Change Notices](https://git.apcacontrast.com/documentation/ImportantChangeNotices) mainly breaking changes listed here. 30 | - [How to Contribute](https://git.apcacontrast.com/documentation/CONTRIBUTING) 🎶help us if you can🎵 31 | - [A License](https://git.apcacontrast.com/documentation/LICENSE) to calc. 32 | - [Minimum compliance](https://git.apcacontrast.com/documentation/minimum_compliance) to use "APCA" and related trademarks. 33 | 34 | ### _Related Repositories_ 35 | - [**_APCA W3 Repository_**](https://github.com/Myndex/apca-w3) The W3 version for web content 36 | - [**_Bridge PCA Repository_**](https://github.com/Myndex/bridge-pca) Bridge PCA - the WCAG 2 compatible version 37 | - [**_Color Parsley Repository_**](https://github.com/Myndex/colorparsley) Fast and easy color string parsing — a NodeJS dependency for many of the SAPC libraries. 38 | 39 | ### THIS REPOSITORY, [and apca-w3](https://github.com/Myndex/apca-w3) ARE THE ONLY CANONICAL SOURCES OF APPROVED APCA CODE. 40 | 41 | ## Discussion Forum 42 | ### Got Questions? We Got Answers! 43 | - [**_Open a discussion today!_**](https://github.com/Myndex/SAPC-APCA/discussions) 44 | 45 | ## W3 Licensed Version_ 46 | [**APCA W3 Repository**](https://github.com/Myndex/apca-w3) Please source all files for tools intended for WCAG 3 conformance from that specific repository. The files in this repository are part of other projects, and not necessary for WCAG 3 compliance. 47 | 48 | 49 | ## Bridge PCA 50 | [**_Bridge PCA Repository_**](https://github.com/Myndex/bridge-pca) Do you want to improve readability, but you are forced to used WCAG 2 contrast to the letter of a regulation? Then Bridge PCA is for you. It is backward compatible with WCAG 2, but using APCA technology. 51 | 52 | 53 | ## More Resources and Articles 54 | ### [git.myndex.com](https://git.myndex.com) 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /documentation/minimum_compliance.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # APCA™ INTEGRATION COMPLIANCE 6 | This document is an extension of the licensing agreement. 7 | 8 | This brief document defines the minimum integrated features for a tool to be considered either _"APCA™ Compliant"_ or _"APCA™ Compatible"_ and other related issues. This document became necessary due to some unfortunate abuse and improper use of trademarks, code, and importantly in terms of properly presenting the technology. If you have questions, please reach out to info@readtech.org — we're easy to talk to! 9 | 10 | ## Compatibility Level/Permissible Identification Overview 11 | - **Generic Perceptual Contrast:** covers use of the algorithm in nonstandard applications and/or without brand identification. 12 | - **APCA™ Contrast Value:** Requires a correct implementation of the APCA base algorithm only, with disclaimers of use. 13 | - **APCA™ Compatible:** Same as "Contrast", adding in manual font lookup guidelines 14 | - **APCA™ Compliant:** Same as "Compatible" but also including font calculations, and conforms to independent APCA™ design guidelines. 15 | - **APCA™ Certified:** Same as "Compliant" but also requires evaluation and certification by Myndex Research. 16 | - **WCAG 3 Compliant: _Does not exist yet._** Until WCAG 3 is an official recommendation there is no such thing. 17 | - ***Important Notice:*** until WCAG 3 is the official recommendation of the W3.org, you cannot conform to the standard, therefore _"WCAG 3 Compliant"_ or similar terminology cannot be used. 18 | 19 | ### _Conformance Failure Remediation_ 20 | Unfortunately, due to misuse, tools that are not at least at the APCA minimum level "contrast value", and that make any claims of being APCA™ or SAPC™, be notified and provided a reasonable period of time to remove the statements or update the implementation. 21 | 22 | Regrettably, tools that are improperly implementing the technology and/or that are improperly claiming WCAG 3 compliance, are causing concerns within the W3-AGWG and in the accessibility community at large. Also, there is sufficient misinformation regarding contrast on the internet today, that there is a significant interest in correcting these issues. 23 | 24 | As the APCA™ is designed specifically for use in a standard, it is important that tools are unified regarding their application of the technology. As this is a developing standard, it is further important that tool developers follow changes in the APCA™ code or methods, and keep tools updated to prevent discordant results. 25 | 26 | ### Use of Trademarks 27 | The terms "APCA", "SAPC", "SACAM", "Advanced Perceptual Contrast Algorithm", "Accessible Perceptual Contrast Algorithm", "APCA™ Contrast", "APCA™ Compatible", "APCA™ Compliant", "APCA™ Certified", are trademarks of Myndex Research and Andrew Somers, All Rights Reserved, use by limited permission only. Trademarks are not included as part of any open-source license, permission to use only per the limited restrictions listed in this document. 28 | 29 | **Permission to use revokable at any time for non-compliance per this document or future versions thereof, revocation made in writing to the email address of record of the trademark user.** 30 | 31 | ### Regarding WCAG 3.0 32 | The only suitable language at this time is: _"APCA™ is the candidate contrast method for WCAG 3, and is currently in public beta. WCAG 3 is still in development and subject to changes prior to adoption."_ 33 | 34 | ---- 35 | ## Compliance Levels Defined 36 | For the purposes of this document: 37 | - "APCA" and "APCA code" refers to 38 | - the npm package ` npm i apca-w3 ` and 39 | - the specific GitHub repo: [/Myndex/apca-w3](https://github.com/Myndex/apca-w3) 40 | - no other fork or package qualifies unless certified in writing by Myndex Research. 41 | - "Current APCA version" refers to the most current published to npm. 42 | - "Current Base Algorithm" refers to 43 | - _**APCA Contrast Prediction Equation 0.0.98G-4g-base-W3**_ 44 | - [0.0.98G-4g as LaTeX Math](https://github.com/Myndex/SAPC-APCA/blob/master/documentation/APCA-W3-LaTeX.md#latex-of-the-apca-w3-base-formula) 45 | 46 | --- 47 | ### _ALL LEVELS—MINIMUM APCA CONFORMANCE_ 48 | All compliance levels require the following: 49 | - Correct implementation of the current version of the base contrast algorithm (0.0.98G-4g-base-W3). 50 | - Text and background color inputs clearly defined and maintained. 51 | - Use of the sRGB colorspace as default. 52 | - For use in polarity sensitive mode: 53 | - Lc output value must indicate polarity (dark mode or light mode) 54 | - Polarity must be indicated with one of: 55 | - A negative value for dark mode (light text on dark) i.e. "-60" OR 56 | - A text identifier for _BOTH_ light mode and dark mode, example: 57 | - BoW (meaning black on white, i.e. dark text on a light BG) 58 | - WoB (meaning white on black, i.e. light text on a dark BG) 59 | - clearly and **_unambiguously_** indicating which color is for text and which color is for the background. 60 | - this method in particular should have a warning indicating to users not to exchange the colors without rechecking. 61 | - Failure to correctly indicate polarity is a conformance failure. 62 | - Lc value may optionally be rounded to the nearest whole number. 63 | - For use in non-polar mode, indication that values are non-polar with $L^C_{np}$ or informally **Lnp** 64 | - Use of other features or color spaces in the apca-w3 package are correctly implemented per the current APCA version. 65 | - Color space is clearly identified when it is not sRGB. 66 | - Use of own features do not change the correct results of the current APCA version. 67 | - Any view where the APCA math or base algorithm is shown in a human readable form, the following disclaimer must be attached: 68 | - "APCA is a method for predicting text contrast on self-illuminated displays for web-based content. Some use-cases are prohibited by license, including the following: use in medical, clinical evaluation, human safety related, aerospace, transportation, automotive, military applications, are strictly prohibited without a specific license in writing granting such use." 69 | - In the associated documentation, and preferably linked on the interface screen near the Lc output, shall be a _link_ to the "Why APCA" document: https://git.apcacontrast.com/documentation/WhyAPCA 70 | - this or other documentation may be hosted locally with source code provided that there is always a live link to the canonical source here. 71 | 72 | 73 | ### Use _Without_ Identification 74 | Unidentified use of the APCA algorithm or math is permitted: 75 | - Use subject to the restrictions listed in _MINIMUM APCA CONFORMANCE_, provided: 76 | - code used is as provided at the apca–w3 repository, 77 | - code is unmodified except as needed for porting to a given language and/or use case. 78 | - that there is **_no use_** of the term "APCA" or protected terms or trademarks, and 79 | - **no implied endorsement by Myndex™ nor Accessible Reading Technologies™ (ART)** 80 | - is only identified generically as _"perceptual contrast"_ 81 | - for professional use only, Myndex and/or ART™ accept no liability whatsoever for any use or misuse of any code or related technologies. 82 | 83 | ### APCA™ Contrast Value _(no guidelines, no examples)_ 84 | Use of the term "APCA™ Lc Value" requires at a minimum: 85 | - Minimum APCA compliance as listed in _MINIMUM APCA CONFORMANCE_ 86 | - **MAY NOT** present any example using the tested colors, nor present any font examples. 87 | - The output of the tool must be _only_ the Lc value, and present no visual example. 88 | - May use the term "APCA Lc Value" but MUST NOT use terms such as "APCA compliant" 89 | - May refer to the output as "Perceptual Lc Value" or "Lc" 90 | - May be identified as _"perceptual contrast based on APCA but not APCA compliant"_ 91 | - **MUST present the value alone,** with no examples of the use of the colors or fonts whatsoever. 92 | - Use of visual font examples shall require adherance to "APCA™ Compatible" or better. 93 | - NO linking to any WCAG 3 document at all (neither current nor expired), and no reference of any kind to WCAG 3 nor WCAG 3 compatibility nor WCAG 3 compliance _whatsoever_. 94 | - If any **examples** are to be shown, the tool MUST conform to one of the APCA guideline levels, described below. 95 | 96 | --- 97 | ### APCA™ Compatible _(basic guidelines and basic examples)_ 98 | Use of the term "APCA™ Compatible" requires at a minimum: 99 | - _MINIMUM APCA CONFORMANCE_ 100 | - If an example is shown, it must show at least the minimum reference font size at normal weight for the fluent text use case, at the present Lc value. 101 | - Reference font for this purpose is normal weight (400) Arial or Helvetica, normal aspect. 102 | - Sizes per Lc level as listed, including the title: 103 | - Fluent Text Minimum Reference Font Sizes at Normal Weight (Arial 400) 104 | - Lc 90: 14px 105 | - Lc 75: 16px 106 | - Lc 60: 24px 107 | - Lc 45: 42px 108 | - Lc 30: must have warning saying "non-content text only" 109 | - Lc 15: must have warning saying "certain non-text only" 110 | - NO linking to any _expired_ WCAG 3 document, and no claims of WCAG 3 compliance. 111 | - Any reference to WCAG 3 must include the "permitted language" described earlier. 112 | - Links to the WCAG 3 document shall only be: https://www.w3.org/TR/wcag-3.0/#visual-contrast-of-text 113 | - APCA compatible tools must link to the "Why APCA" page on the same page as the main tool interface: 114 | - https://git.apcacontrast.com/documentation/WhyAPCA 115 | - Also, at some reasonable place, provide a link to the discussion page, indicating it as a forum for questions, comments, or issues: 116 | - https://github.com/Myndex/SAPC-APCA/discussions 117 | 118 | - The output of the contrast value includes the term "Lc" such as "Lc 60" 119 | - If polarity is indicated with 120 | - ...a negative value, there is a space between Lc and the minus: "Lc -60" 121 | - ...text (BoW), it is immediately after the Lc value: "Lc 60 WoB" 122 | - At a minimum, these basic conformance levels are listed near the output value: 123 | - Lc 90: Preferred Body Text 124 | - Lc 75: Minimum Body Text 125 | - Lc 60: Minimum Fluent text 126 | - Lc 45: Minimum Large text 127 | - Lc 30: Minimum Any text 128 | - Lc 15: Invisibility point 129 | - More complete explanations (or a link to) must be adjacent to the levels list. 130 | - A link to the full font size/weight lookup tables is optional but preferred. 131 | 132 | --- 133 | ### APCA™ Compliant _(more complete guidelines and examples)_ 134 | Use of the term "APCA™ Compliant" requires at a minimum: 135 | 136 | Everything as recited in "APCA™ Compatible" above, but further including: 137 | - A link to the font size/weight lookup tables and documentation (required). 138 | - This should include the Bronze/Silver/Gold level descriptions (optional until WCAG 3 is official). 139 | - In addition to the Lc output, additionally a visible output stating the minimum font size for weights 300, 400, and 700. 140 | - Additional weights may be included. 141 | - If a user settable variable weight is included, then only weight 400 and the variable weight need to be displayed. 142 | - A mobile version only needs to display either one variable weight, or both weights 400 & 700. 143 | - Optionally but preferentially, those font outputs include a realtime demonstration using the reference font in the color selected, and the size and weight calculated. 144 | 145 | Pending Requirements in development: 146 | - Associated eye dropper tools to pick the native sRGB color. 147 | - Associated non-text guidelines chart. 148 | 149 | ### APCA™ Certified 150 | For certification, a site or tool must meet the "APCA Compliant" standard above, and then have source code and implementation evaluated and certified by Myndex Research or Accessible Reading Technologies. The certification service will be available at a future date, following the conclusion of the beta period. 151 | 152 | Only APCA Certified apps will be permitted to use the trademarked **"Powered by APCA" or "APCA™" official logos.** 153 | 154 | ### APCA Beta Testers 155 | APCA Beta sites may have different variations on the above requirements, permitted on a case by case basis, under the experimental use case temporary exception. 156 | 157 | To become officially involved in the APCA beta program, please send an email to "info@readtech.org" with "APCA Beta" in the subject line. 158 | 159 | 160 | ## Further Discussion 161 | We are open for comments, questions, and discussion at the [Main APCA Repo Discussions.](https://github.com/Myndex/SAPC-APCA/discussions) 162 | 163 | 164 | 165 | -------------------------------------------------------------------------------- /documentation/referenceFont.md: -------------------------------------------------------------------------------- 1 | # Matching a Design Font to a Reference Font 2 | 3 | The APCA readability guidelines indicate font size and weight. These characteristics are related to a specific reference font such as Helvetica or Arial. In order to ensure that the chosen font for a design meets the same visual properties, it is necessary to do a side-by-side comparison. 4 | 5 | ## TEST METHODS 6 | Take your desired font and compare it to one of the reference fonts "Helvetica Neue, Helvetica, Fira Sans, Kanit, or Arial." 7 | 8 | 1. Measure the x-height, and determine the relative size offset. 9 | 2. Visually compare the weight And both a low contrast and high contrast setting, and determine the relative weight offset. 10 | 11 | ## I - Size 12 | ### Part I.a - Setup 13 | 1. Using a 400 normal weight font as the example, make a test webpage with two spans, each containing a single lowercase x, so they are next to each other horizontally. 14 | 2. Set the font-family of one of the spans to the reference (i.e. Helvetica or Arial) 15 | 3. Set the other span to the font being evaluated. 16 | 4. Set the font-size to **100px.** for both. 17 | ### Part I.b - Measure 18 | 1. Load the test page in a browser. 19 | 2. Take a screen shot of both x as rendered. 20 | 3. Load the screenshot into a photo editor and measure the height of each lowercase x. 21 | ### Part I.c - Determine Offset 22 | 1. Divide the x-height of the reference font, by the x-height of the test font. 23 | 2. This value is the reference ratio. 24 | ### _Using the Reference Ratio_ 25 | For a given minimum font size, indicated by the font look up table or APCA tool, multiply by the reference ratio to find the appropriate font size for the desired design font. 26 | 27 | ### Part I _Example_: 28 | This example compares the reference font Helvetica, to the desired design font Times New Roman. 29 | 30 | ```html 31 | 32 | 33 | 34 | 35 | 36 | 56 | 57 | 58 | 59 | 60 |
61 | xx 62 |
63 | 64 | 65 | 66 | 67 | ``` 68 | 69 | **_(NOTE: this image was captured on a retina display, so the indicated sizes are twice what they would be on a standard display.)_** 70 | 71 |  and example of a lowercase X of the reference font versus the test font, in this case Helvetica versus times new Roman, showing the times new Roman is much smaller. 72 | 73 | In this case 100px Helvetica would measure an x-height of about 52px. Determine the reference ratio by dividing the reference size by the font being tested. If the test font is 45px, such as this Times New Roman, then: 74 | ### 52/45 = 1.156 75 | _(round to at least two significant digits, three is shown here)_ 76 | 77 | So for example, an APCA value of LC 75 specifies and 18px reference font. To use the example of Times New Roman, multiply 18px by 1.156 to arrive at a minimum font size of 20.8px, or 21px rounded. 78 | 79 | ### Why List Cursive? 80 | Make the fallback font-family after the test and reference fonts something very different, such as "cursive". This way if the browser does not load the font properly, it is immediately obvious, as in this example: 81 | 82 |  an example of why it's useful to use cursive as the last font in a fallback list for testing purposes, if the correct reference or test font does not load properly then cursive makes it very obvious. 83 | 84 | ----- 85 | ## II - Weight 86 | While size per x-height is fairly straight forward, weight requires some visual judgment. There is active research into possible automated tools, but for the time being a visual reference is needed. 87 | 88 | In this case, set up several lines of test text, with the test and reference fonts near the eventual size, as in the above example that's a reference size of 18px. The test font needs to be adjusted so that it has the same excite as the reference font as render to the screen. 89 | 90 | In the example below, were using the common reference font Arial, at the standard normal and bold weights of 400 and 700. Arial is a clone of Helvetica, and either have very similar characteristics. 91 | 92 | We'll make a few lines to compare different weights, and one with high contrast, and another set with very low contrast to help exacerbate the differences. 93 | 94 | The test text is `Il 400 & IcyATOMsizedgap`, using an uppercase I & lowercase l as these make it easy to compare the vertical stroke widths. The sample text "&IcyATOMsizedgap" is short yet demonstrates most of the common design differences in a font. 95 | 96 | 97 | ### Part II.a - Setup 98 | 1. Setup a 400 normal weight, and 700 bold weight reference font as the comparison sample. 99 | - suitable reference fonts are Helvetica or Arial. 100 | 2. Make a test webpage with several lines comparing several weight examples of the test font to the 400 and 700 weight reference. 101 | - The test font's size must be normalized so that the test and reference x Heights are equivalent. 102 | 3. Create one test area for high contrast around LC 90 and a second test area for low contrast around LC 30. 103 | 4. Use a consistent line of sample text for each line, and include the weight that is being tested for each line. 104 | - An example is "&IcyATOMsizedgap". 105 | - Include the weight that is being tested in each line. 106 | - start and or end each line with a capital I and a lowercase l, to help make find comparisons of vertical stroke width. 107 | ### Part II.b - Evaluate 108 | 1. Evaluate each sample pair, and determine which test-font weight most closely resembles the reference font's weight. 109 | - If thr test-font is in between two weights of the reference font, it is best to round up. 110 | - If the test font is a variable font, as in the example below, find the variable weight that matches the reference. 111 | ### Part I.c - Determine Offset 112 | 1. Subtract the reference weight from the matching test font weight. 113 | 2. This value is the reference weight offset. 114 | 3. If there is a different reference weight offset among different reference weights, in-between weights may be interpolated. 115 | ### _Using the Reference Weight Offset_ 116 | For a given indicated weight, add the reference weight offset to find the actual needed weight for the design font which was tested. 117 | 118 | ### Weight Example 119 | Below, a test setup for the "RALEWAY" Google font. Raleway has the same ex height as Ariel or Helvetica, so we can use the same size for both samples. 120 | 121 | ```html 122 | 123 | 124 | 125 | 126 | 127 | font test 128 | 129 | 130 | 131 | 132 | 133 | 134 | 194 | 195 | 196 | 197 | 198 | 199 |
200 | 201 | 202 |

Weight Comparison

203 | 204 |
205 | 206 |

Hi-Con Compare Lc 90

207 | 208 |

Il 400 & IcyATOMsizedgap Arial

209 |

Il 300 & IcyATOMsizedgap Raleway

210 | 211 |

Il 400 & IcyATOMsizedgap Arial

212 |

Il 400 & IcyATOMsizedgap Raleway

213 | 214 |

Il 400 & IcyATOMsizedgap Arial

215 |

Il 500 & IcyATOMsizedgap Raleway

216 | 217 |

Il 400 & IcyATOMsizedgap Arial

218 |

Il 520 & IcyATOMsizedgap Raleway

219 | 220 |

Il 400 & IcyATOMsizedgap Arial

221 |

Il 600 & IcyATOMsizedgap Raleway

222 |
223 |

Il 700 & IcyATOMsizedgap Arial

224 |

Il 600 & IcyATOMsizedgap Raleway

225 | 226 |

Il 700 & IcyATOMsizedgap Arial

227 |

Il 700 & IcyATOMsizedgap Raleway

228 | 229 |

Il 700 & IcyATOMsizedgap Arial

230 |

Il 730 & IcyATOMsizedgap Raleway

231 | 232 |

Il 700 & IcyATOMsizedgap Arial

233 |

Il 800 & IcyATOMsizedgap Raleway

234 | 235 |
236 | 237 |
238 | 239 |

Lo-Con Compare Lc 30

240 | 241 |

400 & IcyATOMsizedgap Arial lI

242 |

300 & IcyATOMsizedgap Raleway lI

243 | 244 |

400 & IcyATOMsizedgap Arial lI

245 |

400 & IcyATOMsizedgap Raleway lI

246 | 247 |

400 & IcyATOMsizedgap Arial lI

248 |

500 & IcyATOMsizedgap Raleway lI

249 | 250 |

400 & IcyATOMsizedgap Arial lI

251 |

520 & IcyATOMsizedgap Raleway lI

252 | 253 |

400 & IcyATOMsizedgap Arial lI

254 |

600 & IcyATOMsizedgap Raleway lI

255 |
256 |

700 & IcyATOMsizedgap Arial lI

257 |

600 & IcyATOMsizedgap Raleway lI

258 | 259 |

700 & IcyATOMsizedgap Arial lI

260 |

700 & IcyATOMsizedgap Raleway lI

261 | 262 |

700 & IcyATOMsizedgap Arial lI

263 |

730 & IcyATOMsizedgap Raleway lI

264 | 265 |

700 & IcyATOMsizedgap Arial lI

266 |

800 & IcyATOMsizedgap Raleway lI

267 | 268 |
269 | 270 |
271 | 272 |
273 | 274 | 275 | 276 | ``` 277 | 278 | So here, find the closest visual match in terms of weight. If we look at a screenshot: 279 | 280 | this is a series of weight test patches design for visual comparison between a reference font and a test font at various weights. 281 | 282 | We see that Raleway is clearly lighter than Arial 400. Absent a variable font, we would say that Raleway 500 is close to Arial 400. As Raleway is available as a variable font, we can find tune and find that Raleway 520 is a close match to aerial 400. Therefore, the offset for a 400 weight font for Raleway is +120. 283 | 284 | Raleway bold is also lighter than Arial 700, but here the difference is not as great. Using the variable, Raleway 730 matches Ariel 700, so the offset for Raleway is +30. 285 | 286 | ### Here it is closeup: 287 | _Click for larger_ 288 | 289 |  ultra close-up, a series of weight test patches design for visual comparison between a reference font and a test font at various weights. 290 | 291 | A look to the lo-con version on the left helps to accentuate the weight differences. 292 | 293 | ## Summary 294 | Following a simple procedure, compare a desired design font to a reference font, and determine the Size and weight offsets needed for equivalence. 295 | -------------------------------------------------------------------------------- /documentation/regardingexponents.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | # Regarding APCA Exponents 5 | #### The TLDR is "For non-HDR displays, the colorspace is simply selected by the three coefficients, and the pre-processing exponent." 6 | 7 | ## Input Stage Notes 8 | 9 | Technically, the input modules do not convert to a traditional calculated CIEXYZ luminance, and it is not intended to. They calculate a unique value "estimated screen luminance" denoted **Ys**. The first stage is a conversion to model of typical monitors in typical environmental settings. Included is consideration of surveys and case studies of monitors in real-world environments, and our own measurements and studies of various devices and displays. 10 | 11 | It is useful to point out that the defined peak output in the circa-1998 IEC sRGB spec is 80 cd/m², and today's devices are capable of exceeding 1200 cd/m². The needed gamma setting for a display depends on the ambient lighting, which drives global adaptation, and the screen luminance which drives field and local adaptation. There is a user preference component in here too, resulting in a fairly wide range of gamma settings in use. For example, some calibration software can calibrate to L* which is about 2.35 to 2.4. Higher gammas can be useful, depending on many factors, including the peak white level and the ambient illumination. 12 | 13 | This pre-processing stage also includes a soft clamp at black for initial monitor modeling. As an interesting side note, the need for the soft clamp makes using the piecewise _redundant_, as that section near black is completely reshaped by the soft clamp to account for ambient flare and other psychophysical factors. 14 | 15 | The contrast calculation stage then applies a different exponent to the background, which drives local adaptation, and another to the stimuli (text). 16 | 17 | The piecewise sRGB TRC is not an emulation of actual monitor behavior, having been created to prevent infinite slope at 0 to facilitate digital processing, back in the days before math coprocessors were standard and computers relied on integer math, and RAM and other resources were precious. I.e. the dark ages. But the APCA is not about processing images and lossless round trips, where using the piecewise curve is of benefit. The object is emulating real world monitor behavior. It is useful to note that many ICC profiles (including those that ship with Adobe products) do not use the piecewise, and instead use the simple 2.2 gamma, which the piecewise was intended to emulate, and the IEC standard indicates the physical display EOTF being the simple gamma in four separate places in that document. 18 | 19 | The only thing in the APCA input stage that is really different is the exponent set to 2.4. This slightly higher exponent is added as part of pre-processing to relax the exponents in the contrast determination stage, and the aforementioned modeling of real-world monitors and devices. The "extra" could be added separately before the contrast stage, but is combined for simplicity in the current implementation. 20 | 21 | That said, APCA is intended only to predict a display, and the perceived supra-threshold contrast for best readability, and to be perceptually uniform when doing so. Any alternate colorspaces therefore must be the destination display colorspace. 22 | 23 | For AdobeRGB, Apple Display P3, and sRGB, changing destination colorspace is a matter of swapping out the coefficients. 24 | 25 | For Rec2020, there may need to be an additional pre-processing adjustment to the exponent. I have yet to evaluate Rec2020 as I do not have a Rec2020 monitor at my disposal. Rec2020 does have some additional accessibility issues which will entail some separate discussion, largely that the red primary is out of range of someone with protanopia (invisible). 26 | 27 | For Rec2100 and other HDR types, a different set of constants and exponents is expected, and probably other modifications. 28 | 29 | But for non-HDR displays, the colorspace is simply selected by the three coefficients, and the pre-processing exponent. 30 | -------------------------------------------------------------------------------- /documentation/repoList.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # Myndex and APCA Repositories 6 | 7 | - Myndex on GitHub: https://git.myndex.com/ 8 | 9 | ## GitHub 10 | 11 | - Main (This): https://github.com/Myndex/SAPC-APCA 12 | - Canonical repository for discussion, documentation, issues, etc. 13 | - W3 licensed APCA: https://github.com/Myndex/apca-w3 14 | - The specific iteration designed for supporting WCAG 3.0 15 | - Bridge-PCA: https://github.com/Myndex/bridge-pca 16 | - A version that is backwards compatible to WCAG 2 17 | - ColorParsley: https://github.com/Myndex/colorparsley 18 | - A lightweight but versatile color string parsing function 19 | - SeeStars: https://github.com/Myndex/seestars 20 | - A very lightweight luminance and L\* converter. 21 | - DeltaPhiStar: https://github.com/Myndex/deltaphistar 22 | - A simplified perceptually uniform contrast metric. 23 | - SACAM: --- 24 | - A full color model using the technology that is the foundation for APCA. 25 | 26 | 27 | ## NPM 28 | 29 | ```JS 30 | npm i apca-w3 31 | 32 | npm i bridge-pca 33 | 34 | npm i colorparsley 35 | 36 | npm i seestars 37 | 38 | npm i deltaphistar 39 | ``` 40 | 41 | ## Myndex Technologies 42 | 43 | - Live Demo: https://www.myndex.com/APCA/ 44 | - Color Vision Simulator: https://www.myndex.com/CVD/ 45 | - General Info: https://www.myndex.com/WEB/Perception 46 | - Research Tools: https://www.myndex.com/SAPC/ 47 | 48 | ## W3 / AGWG 49 | 50 | - Contrast WIKI: https://www.w3.org/WAI/GL/task-forces/silver/wiki/Visual_Contrast_of_Text_Subgroup 51 | 52 | -------------------------------------------------------------------------------- /documentation/thirdpartytools.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: simple 3 | --- 4 | 5 | # APCA Tools & Apps 6 | As APCA popularity increases, there is a rapidly growing list of tools. Please post a message in the [tools discussion](https://github.com/Myndex/SAPC-APCA/discussions/51) to have your tool added to this list, or send me a message—my DMs open on Twitter and Linkedin. 7 | 8 | Take note that some of these tools are works in progress, and not all of them have been fully analyzed for accuracy or conformance to APCA standards. We will be starting qualification testing in the near future. When in doubt, check values with the [canonical APCA tool](https://apcacontrast.com). 9 | 10 | For Bridge PCA, use the [canonical BPCA tool](https://bridgepca.com). 11 | 12 | 13 | ## _Third Party APCA Tools—Systems_ 14 | **Design Systems or Pallette Generation tools** 15 | 16 | 17 | ### [Tailwind](https://uicolors.app/create) 18 | - It's a very cool tool, with a plugin for Figma, make sure to use the latest version as it is now updated to use the current APCA constants. This tool can show either WCAG2 or APCA. 19 | 20 | 21 | ### [Stark APCA Beta](https://www.getstark.co/blog/stark-APCA-beta) 22 | - Yes, Stark has added APCA to their toolset as an option! It's available across the product line, and included in the free versions. Make sure to use the latest version which is updated to use the current APCA constants. This tool can show either WCAG2 or APCA. 23 | 24 | 25 | ### [Accessible Palette](https://AccessiblePalette.com) 26 | - A very nice color selector by Eugene, see [his article as well](https://wildbit.com/blog/accessible-palette-stop-using-hsl-for-color-systems) This shows both WCAG 2 and APCA. 27 | 28 | 29 | ### [Huetone](https://huetone.ardov.me/?palette=N4IgdghgtgpiBcICiAPaAHANjABABQmwBci4AaEACwFcYBnBAbVElgRAHEAnGATxAoBjAPaZhXBvEYgAxADMAbIsUDZMAIwaNqmQCMAJgYM6I606Z0AOAEw2bOhdceOdAFgDsHjzusBOP3466pbBwSAAugC%2BZCzQcIh4AJZgANaqImISTLJyudZy7jq5%2Bu4wAMxFuhCuggAMRcoQFRTy1tYQlgCsOrq%2BmgquVnVyrr46nZ217u06ZZNlYVEx4HHsAEow%2Bumi4pLS8rmuMOQ5cvq%2Bgify%2BhDuvmMtue7uCluP6mX6ruo90%2BX1LUsfRg1gBsk6ZVqcnUYJkcymtXqS1ibEQAE0YJgxAB3baZPanOSdGCWBqGXSkx5lCAFZpqSyWJoKHSCXQKdy1H4tXy6Vz6Tk6dwfSy1QYtVxtRGw9rqGFI6Io%2BKcHgwMB43bZeRQ3wwB6yQRyXW6XQ6XwQVnuSmyBQ8splK4S3yuKE%2BAqIwotdRE0Gw9SuSGIoKc3SB5ErVEgAAqMEI6qyUjU%2BRpch6ChjcitMhegl8%2BiutU6IcEb1ktQUljkEGZLSmCkEpR0iNcRJLMk51nKHtLst0oIiCvDSoAQphaHGCfJm0oUy1DPpcjPZBAIFVclY-Lo1%2BKpgbM%2BpBJ19II918-GLS-4FMTGwp1AoyiaouEKERhGB6NlJqo5aofaoA6ozpgpMYIKIGFAcmCIrykAA) 30 | - Cool interface under development, lots of options. This tool can show either WCAG2 or APCA. 31 | 32 | ### [Ambient Color Generation Tool](https://ambient-rvx.web.app) 33 | - This tool is designed to generate contrast ready color pallets built specifically for UI/UX design. Unlike other palette generation tools, Ambient generates the colors based on the primary color. 34 | 35 | 36 | ### [Atmos](https://atmos.style/contrast-checker) 37 | - a contrast checker that is part of the Atmos design system. 38 | 39 | 40 | 41 | ### [Leonardo](https://leonardocolor.io/#) 42 | - The adaptive color theme function has an APCA option, however APCA has not yet been integrated into the color contrast tool or the dataviz tool. The Leonardo tool is pretty cool as it stands. 43 | 44 | 45 | ---- 46 | ## _Third Party APCA Tools-Calculators_ 47 | **Calculators and Technology Demos** 48 | 49 | ### [a11ycolor.tools](https://a11ycolor.tools) 50 | - Nice tool, compares WCAG2 and APCA Bronze Simple mode, and conveniently allows multiple color swatches. 51 | 52 | ### [Achecks APCA Contrast Checker](https://www.achecks.org/apca-wcag-3-accessible-colour-contrast-checker/) 53 | - Nice simple APCA checker. Has a dynamic lookup table that updates with new contrasts. 54 | 55 | ### [Polypane Color Contrast](https://colorcontrast.app/#fg=%23107db5&bg=%23fff&level=aa&format=rgb&algo=APCA&filter=none) 56 | - Killian's Contrast app, can show either WCAG2 or APCA. 57 | - _(Also to mention, Killian was the key designer behind the updated APCA demo tool at Myndex.)_ 58 | 59 | ### [Cliam's Contrast](https://cliambrown.com/contrast/) 60 | - A neat color checker that allows you to click to find a given contrast level. 61 | 62 | ### [contrast-suggester.com](https://contrast-suggester.com) 63 | Also a [GitHub repo too](https://github.com/Munawwar/apca-color-contrast) 64 | - Suggests a contrasting color for a given color, font size, and font weight. 65 | 66 | 67 | ### [Zebra for Figma](https://www.figma.com/community/plugin/806578669827234193) 68 | - Dan Hollick's Zebra contrast plug in for Figma. 69 | 70 | 71 | ### [Caravage for Figma](https://www.figma.com/community/plugin/1059851135811973410/Caravage) 72 | - A Figma plugin to check the contrast accessibility of the selected text. It is still in beta, the developer @simonbrtrnd mentions any feedback is appreciated. 73 | 74 | 75 | ### [RandomA11y APCA](https://randoma11y.com/apca?color=%23c91313) 76 | - this is an interesting take on a tool that gives you the opposite color for the color that you choose. 77 | 78 | 79 | ### [contrast-checker Vercel app](https://contrast-checker.vercel.app/000000e6/d40511/ffcc00/ffcc004d/ffffff/0000000d/0000001a/76BD22/007C39) 80 | - This WCAG 2 checker also shows APCA so you can see the relative differences. 81 | 82 | 83 | ### [Contrast Tools](https://contrast.tools) 84 | - Nice clean interface, easy to use. This tool can show either WCAG2 or APCA. 85 | 86 | 87 | ### [Contrast Checker](https://contrast-checker.bellette.com.au/) 88 | - A clever interface that demonstrates the key concepts as well. 89 | 90 | 91 | ### [APCA Flip Black/White](https://apca.digitallymarked.com) 92 | Also, [the GitHib repo](https://github.com/digitallymarked/apca-calculator) 93 | 94 | - This is a simple but informative interface, text is only black or white, and it's using APCA to determine when to flip between the two. 95 | 96 | 97 | ### [Japanese Experimental](https://develop.apca-calculator-ja.pages.dev) 98 | Also, [the GitHib repo](https://github.com/shunito/apca-calculator-ja) 99 | 100 | - This is a Japanese experimental version, it's part of the project for working on aligning Japanese writing systems. 101 | 102 | ---- 103 | ### _BRIDGE PCS VARIANTS_ 104 | 105 | ### [color-contrast.dev](https://www.color-contrast.dev) 106 | - this is the first third-party implementation I've seen of Bridge PCA, the drop in replacement that's backwards compatible with WCAG2. Nice simple input interface that also gives you suggested colors to improve contrast. 107 | 108 | 109 | ### [Color Contrast iOS app](https://apps.apple.com/app/color-contrast/id1095478187?platform=iphone) 110 | - This an iOS app to measure the contrast between two colours in a screenshot or mobile website. The APCA algorithm is available as an option, with the Bridge PCA being used to show the modified WCAG ratio. 111 | 112 | 113 | ----- 114 | ## _Browsers_ 115 | 116 | ### [Chrome Dev Tools](https://developer.chrome.com/blog/new-in-devtools-89/#apca) 117 | - Available as an experimental feature, note that some versions maybe using obsolete constants and therefore may give incorrect results. 118 | 119 | ### [Microsoft Edge Dev Tools](https://docs.microsoft.com/en-us/microsoft-edge/devtools-guide-chromium/whats-new/2021/01/devtools#new-color-contrast-calculation---advanced-perceptual-contrast-algorithm-apca) 120 | - Available as an experimental feature, note that some versions maybe using obsolete constants and therefore may give incorrect results. 121 | 122 | 123 | ----- 124 | ## _Code Libraries & Systems with APCA_ 125 | 126 | ### [Color.js](https://colorjs.io) 127 | - Comprehensive JS color library by Lea Verou and Chris Lilly. 128 | - See the [contrast demo page](https://colorjs.io/apps/blackwhite/) 129 | 130 | ### [SASS-APCA](https://github.com/gfellerph/sass-apca) 131 | - a sass library 132 | 133 | ### [A11y Color Contrast](https://deno.land/x/a11y_color_contrast) 134 | - a typescript library 135 | 136 | ### [Colorspace r-forge](http://colorspace.r-forge.r-project.org/reference/contrast_ratio.html) 137 | - an R library 138 | 139 | ### [OxyProps/BrickProps](https://docs.oxyprops.com/en/features/global-colors/) 140 | - this is the design system plug-in for WordPress, I'm not quite sure how they're integrating a PCA but they do mention in the docs. 141 | 142 | ### [Accessibility: Color-Contrast Models](https://observablehq.com/@ijlyttle/apca-w3-color-contrast) 143 | - Ian Lyttle's library on ObservableHQ 144 | 145 | ## _Works in Progress_ 146 | These are some works in progress, functionality was not complete at the last time I checked, and or may have math or implementation errors. If your tool is on this portion of the list, please feel free to reach out, I'm more than happy to assist. 147 | 148 | 149 | ### [ROKING-A11Y APCA Evaluator](https://hrobertking.github.io/roking-a11y/apca.htm) 150 | - Has a visible look up table which changes based on the contrast. Has a pending pull request due to some errors in terms of the exponents and look up. 151 | 152 | 153 | ### [AdamSzakal APCA-contrast](https://acpa-contrast.netlify.app) 154 | - The repo is spelled wrong (oops!): https://github.com/AdamSzakal/ACPA-contrast 155 | Basically looks like a work in progress, does not show polarity in the results. 156 | 157 | 158 | ### [Visual Contrast Figma Plugin](https://www.figma.com/community/plugin/1090308131937420683) 159 | - Does not seem to work correctly?? 160 | 161 | 162 | ### [jolly-feynman-28ea37.netlify.app](https://jolly-feynman-28ea37.netlify.app) 163 | - https://github.com/tomreinert/contrast-calculator-2 164 | 165 | ----- 166 | ## _Official Myndex Tools_ 167 | 168 | ### [APCA W3 Tool](https://www.myndex.com/APCA/) 169 | - The main canonical demonstration tool. Public beta. The is the candidate for the future WCAG 3 contrast method. 170 | - Note that this is not fully backwards compatible with WCAG 2 contrast math due to the non-perceptual nature of WCAG 2. 171 | - Legacy version available on [a backup link](https://myndex.github.io/SAPC-APCA/WEBTOOLS/APCA/) at this repo. 172 | - The dedicated domain name is [apcacontrast.com](https://apcacontrast.com) 173 | 174 | ### [Color Vision Deficiency (ColorBlind) Simulator](https://www.myndex.com/CVD/) 175 | - The CVD sim, a clinically accurate simulation of various forms of color insensitive vision (aka color blind), most of the sims are derived from or based directly on the clinically accurate Brettel model. Allows you to process a screenshot of your page design and view several CVD types at once.. 176 | 177 | ### [Bridge-PCA](https://www.myndex.com/BPCA/) 178 | - Bridge PCA is a modified tool that is backwards compatible with WCAG 2 contrast, but using APCA technology. 179 | - In order to be backwards compatible, some design flexibility is given up, but accessibility is substantially improved over WCAG 2. 180 | - The dedicated domain name is [bridgepca.com](https://bridgepca.com) 181 | 182 | ### [SAPC Development Site](https://www.myndex.com/SAPC/) 183 | - The SAPC research demonstration tool, more detailed results than the APCA tool above, and a clickable "research mode" with technology demonstrators, interactive experiments, and much data about the colors in use. 184 | - NOTE: This tool may not always match the main tool depending on current experimental protocols. 185 | 186 | ----- 187 | 188 | ## _Official Repositories_ 189 | 190 | ### [APCA W3](https://github.com/Myndex/apca-w3) 191 | And the npm install is ` npm i apca-w3 ` 192 | 193 | ### [Bridge-PCA](https://github.com/Myndex/bridge-pca) 194 | And the npm install is ` npm i bridge-pca ` 195 | 196 | ### [The Main SAPC APCA SARCAM](https://github.com/Myndex/SAPC-APCA) 197 | This repo right here... 198 | 199 | ### [Guidelines for Accessible Readable Design](https://github.com/A11yReadTech/GARD) 200 | In development at Accessible Reading Technologies: GARD is a developing set of readability design guidelines. 201 | 202 | ### [deltaPhiStar](https://github.com/Myndex/deltaphistar) 203 | An alternate and highly simplified contrast algorithm. Still fairly perceptually uniform though less accurate for very high and very low contrast, and it's not polarity aware. 204 | 205 | ### [See Stars](https://github.com/Myndex/seestars) 206 | Myndex microlibrary for CIE Lstar, for use with deltaPhiStar 207 | 208 | ### [Fancy Font Flipping](https://github.com/Myndex/fancyfontflipping) 209 | Related to APCA methods, but separate—this is a demonstrator for when to flip a text color from black to white, based on the luminance of the background. CodePen also available, and also read [this Gist article.](https://gist.github.com/Myndex/e1025706436736166561d339fd667493#lets-flip-for-color) 210 | 211 | ### [Color Parsley](https://github.com/Myndex/colorparsley) 212 | A lightweight but versatile color parsing utility with no dependencies 213 | _NPM Install:_ ` npm i colorparsley ` 214 | 215 | ---- 216 | ## Other Resources 217 | 218 | ### [linktr.ee/Myndex](https://linktr.ee/Myndex) 219 | This is a linktree of articles and information regarding APCA. 220 | 221 | ### [Easy Intro to APCA](https://git.apcacontrast.com/documentation/APCAeasyIntro) 222 | A brief overview of APCA. This is a good place to start if you are new to perceptually uniform contrast. 223 | 224 | ### [APCA Readability Criterion](https://readtech.org/ARC/) 225 | Publisck Workging Draft of the developing guidelines for using APCA and related systems and technologies. 226 | 227 | ### [Myndex Color & Contrast Resources](https://git.myndex.com/) 228 | A large catalog of contrast and color resources. 229 | 230 | 231 | ---- 232 | ## Accessibility Statement for Beta Testers 233 | **Beta testers may wish to include the following statement in their sites boilerplate:** 234 | 235 | There are additional versions in the [Accessibility Statements file](https://github.com/Myndex/SAPC-APCA/blob/master/documentation/accessibilitystatement.md) 236 | 237 | ----- 238 | ### This website is using the [APCA](https://git.apcacontrast.com/documentation/APCAeasyIntro)™ readability guidelines for determining visual contrast of text and non-text elements. 239 | 240 | This site's visually-readable primary content is designed to meet or exceed the ***Bronze Simple*** conformance level, as defined in version: (Public Beta Working Draft 2023), of the [APCA Readability Criteria (ARC)](https://readtech.org/ARC/), which provides improved visual readability, enhancing the actual accessibility for users of this website. If you have questions, concerns, or problems, please contact the accessibility manager or webmaster of this site. The APCA Readability Criteria is designed to substantially exceed WCAG 2.1, SC 1.4.3 and 1.4.11 guidelines for actual accessibility. If you find you are experiencing a functional problem with text contrast on this site, please forward to the URL to _bugreport_ at _readtech.org_ 241 | 242 | ----- 243 | 244 | Copyright © 2021-2023 by Andrew Somers. All Rights Reserved. Patent(s) Pending. 245 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/favicon.ico -------------------------------------------------------------------------------- /images/APCAFontSelect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAFontSelect.png -------------------------------------------------------------------------------- /images/APCAcolor4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAcolor4.png -------------------------------------------------------------------------------- /images/APCAcolor4SQUARE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAcolor4SQUARE.png -------------------------------------------------------------------------------- /images/APCAlatex019df.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAlatex019df.png -------------------------------------------------------------------------------- /images/APCAlatex019dr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAlatex019dr.png -------------------------------------------------------------------------------- /images/APCAlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAlogo.png -------------------------------------------------------------------------------- /images/APCAlookupByContrast.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAlookupByContrast.jpeg -------------------------------------------------------------------------------- /images/APCAlookupByContrastMay2022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAlookupByContrastMay2022.png -------------------------------------------------------------------------------- /images/APCAlookupByFont.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAlookupByFont.jpeg -------------------------------------------------------------------------------- /images/APCAlookupByFontMay2022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAlookupByFontMay2022.png -------------------------------------------------------------------------------- /images/APCAtableLegend.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAtableLegend.jpeg -------------------------------------------------------------------------------- /images/APCAtableLegendMay2022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/APCAtableLegendMay2022.png -------------------------------------------------------------------------------- /images/ColumnCompareAll400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/ColumnCompareAll400.png -------------------------------------------------------------------------------- /images/DarkModeComparev2_2022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/DarkModeComparev2_2022.png -------------------------------------------------------------------------------- /images/Eye Strain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/Eye Strain.png -------------------------------------------------------------------------------- /images/Myndex_eye_cielab.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/Myndex_eye_cielab.jpg -------------------------------------------------------------------------------- /images/Myndex_eye_cielabWide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/Myndex_eye_cielabWide.png -------------------------------------------------------------------------------- /images/YellowDotCheckboardAsmallChecker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/YellowDotCheckboardAsmallChecker.png -------------------------------------------------------------------------------- /images/YellowDotCheckboardDarkestShadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/YellowDotCheckboardDarkestShadow.png -------------------------------------------------------------------------------- /images/buttons and colors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/buttons and colors.png -------------------------------------------------------------------------------- /images/contrastSensitivityGraph5sameColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Myndex/SAPC-APCA/d22fba142d82b0971730d052d49a7f00f5f8dcb3/images/contrastSensitivityGraph5sameColor.png --------------------------------------------------------------------------------