` contents are now hidden from outline views
242 |
243 | # 16.6.20
244 | 20 June 2016
245 | - fixes problem that made the release jars unusable with Scala `sbt test`
246 | - adds “Heading-level outline” in Web UI; shows simple h1-h6 hierarchy
247 |
248 | # 16.6.18
249 | 18 June 2016
250 | - link[rel=stylesheet] in body now non-error (body-OK)
251 | - rel=dns-prefetch|preconnect|prefetch|preload|prerender non-error+body-OK
252 | - style[scoped] now error
253 | - iframe[seamless] now error
254 | - `--` (consecutive hyphens) within a comment now non-error
255 | - new specific error for `--!>` at end of a comment
256 | - new specific error for `
469 |
470 | ### HTTP client (for fast command-line checking)
471 |
472 | The checker is packaged with an HTTP client you can use from the command line to
473 | either send documents to a locally-running instance of the checker HTTP service
474 | — for fast command-line checking — or to a remote instance anywhere on the Web.
475 |
476 | To check documents locally using the packaged HTTP client, do this:
477 |
478 | 1. Start up the checker as a local HTTP service, as described in the
479 | **Standalone web server** section.
480 |
481 | 2. Open a new terminal window and invoke the HTTP client like this:
482 |
483 | java -cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
484 |
485 | vnu-runtime-image/bin/java nu.validator.client.HttpClient FILE.html...
486 |
487 | To send documents to an instance of the checker on the Web, such as
488 | [html5.validator.nu/][34], use the nu.validator.client.host and
489 | nu.validator.client.port options, like this:
490 |
491 | [34]: https://html5.validator.nu/
492 |
493 | java -cp ~/vnu.jar -Dnu.validator.client.port=80 \
494 | -Dnu.validator.client.host=html5.validator.nu \
495 | nu.validator.client.HttpClient FILE.html...
496 |
497 | …or like this:
498 |
499 | vnu-runtime-image/bin/java -Dnu.validator.client.port=80 \
500 | -Dnu.validator.client.host=html5.validator.nu \
501 | nu.validator.client.HttpClient FILE.html...
502 |
503 | Other options are documented below.
504 |
505 | ### HTTP client options
506 |
507 | When using the packaged HTTP client for sending documents to an instance of the
508 | checker HTTP service for checking, you can set Java system properties to control
509 | configuration options for the checker behavior.
510 |
511 | For example, you can suppress warning-level messages and only show error-level
512 | ones by setting the value of the `nu.validator.client.level` system property to
513 | `error`, like this:
514 |
515 | java -Dnu.validator.client.level=error \
516 | -cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
517 |
518 | …or like this:
519 |
520 | vnu-runtime-image/bin/java -Dnu.validator.client.level=error \
521 | -cp ~/vnu.jar nu.validator.client.HttpClient FILE.html...
522 |
523 | Most of the properties listed below map to the common input parameters for the
524 | checker service, as documented at
525 | [github.com/validator/validator/wiki/Service-»-Common-params][35].
526 |
527 | [35]: https://github.com/validator/validator/wiki/Service-%C2%BB-Common-params
528 |
529 | #### nu.validator.client.host
530 |
531 | Specifies the hostname of the checker for the client to connect to.
532 |
533 | default: "127.0.0.1"
534 |
535 | #### nu.validator.client.port
536 |
537 | Specifies the hostname of the checker for the client to connect to.
538 |
539 | default: "8888"
540 |
541 | example: java -Dnu.validator.client.port=8080 -jar ~/vnu.jar FILE.html
542 |
543 | #### nu.validator.client.level
544 |
545 | Specifies the severity level of messages to report; to suppress
546 | warning-level messages, and only show error-level ones, set this property to
547 | "error".
548 |
549 | default: [unset]
550 |
551 | possible values: "error"
552 |
553 | example: java -Dnu.validator.client.level=error -jar ~/vnu.jar FILE.html
554 |
555 | #### nu.validator.client.parser
556 |
557 | Specifies which parser to use.
558 |
559 | default: "html"; or, for *.xhtml input files, "xml"
560 |
561 | possible values: [see information at URL below]
562 |
563 | https://github.com/validator/validator/wiki/Service-%C2%BB-Common-params#parser
564 |
565 | #### nu.validator.client.charset
566 |
567 | Specifies the encoding of the input document.
568 |
569 | default: [unset]
570 |
571 | #### nu.validator.client.content-type
572 |
573 | Specifies the content-type of the input document.
574 |
575 | default: "text/html"; or, for *.xhtml files, "application/xhtml+xml"
576 |
577 | #### nu.validator.client.out
578 |
579 | Specifies the output format for messages.
580 |
581 | default: "gnu"
582 |
583 | possible values: [see information at URL below]
584 |
585 | https://github.com/validator/validator/wiki/Service-%C2%BB-Common-params#out
586 |
587 | #### nu.validator.client.asciiquotes
588 |
589 | Specifies whether ASCII quotation marks are substituted for Unicode smart
590 | quotation marks in messages.
591 |
592 | default: "yes"
593 |
594 | possible values: "yes" or "no"
595 |
596 | ### HTTP servlet options
597 |
598 | #### nu.validator.servlet.bind-address
599 |
600 | Binds the validator service to the specified IP address.
601 |
602 | default: 0.0.0.0 [causes the checker to listen on all interfaces]
603 |
604 | possible values: The IP address of any network interface
605 |
606 | example: -Dnu.validator.servlet.bind-address=127.0.0.1
607 |
608 | #### nu.validator.servlet.connection-timeout
609 |
610 | Specifies the connection timeout.
611 |
612 | default: 5000
613 |
614 | possible values: number of milliseconds
615 |
616 | example: -Dnu.validator.servlet.connection-timeout=5000
617 |
618 | #### nu.validator.servlet.socket-timeout
619 |
620 | Specifies the socket timeout.
621 |
622 | default: 5000
623 |
624 | possible values: number of milliseconds
625 |
626 | example: -Dnu.validator.servlet.socket-timeout=5000
627 |
628 | ## Pulling from Docker Hub
629 |
630 | You can pull the checker from the
631 | [https://hub.docker.com/r/validator/validator/][36] repo at Docker Hub.
632 |
633 | [36]: https://hub.docker.com/r/validator/validator/
634 |
635 | To pull and run the latest version of the checker:
636 |
637 | docker run -it --rm -p 8888:8888 validator/validator:latest
638 |
639 | To pull and run a specific Docker-Hub tag/version of the checker — for example,
640 | the `17.11.1` version:
641 |
642 | docker run -it --rm -p 8888:8888 validator/validator:17.11.1
643 |
644 | To bind the checker to a specific address (rather than have it listening on all
645 | interfaces):
646 |
647 | docker run -it --rm -p 128.30.52.73:8888:8888 validator/validator:latest
648 |
649 | To make the checker run with a connection timeout and socket timeout different
650 | than the default 5 seconds, use the `CONNECTION_TIMEOUT_SECONDS` and
651 | `SOCKET_TIMEOUT_SECONDS` environment variables:
652 |
653 | docker run -it --rm \
654 | -e CONNECTION_TIMEOUT_SECONDS=15 \
655 | -e SOCKET_TIMEOUT_SECONDS=15 \
656 | -p 8888:8888 \
657 | validator/validator
658 |
659 | To make the checker run with particular Java system properties set, use the
660 | `JAVA_TOOL_OPTIONS` environment variable:
661 |
662 | docker run -it --rm \
663 | -e JAVA_TOOL_OPTIONS=-Dnu.validator.client.asciiquotes=yes \
664 | -p 8888:8888 \
665 | validator/validator
666 |
667 | To define a service named `vnu` for use with `docker compose`, create a Compose
668 | file named `docker-compose.yml` (for example), with contents such as the
669 | following:
670 |
671 | version: '2' services:
672 | vnu:
673 | image: validator/validator ports:
674 | - "8888:8888"
675 | network_mode: "host" #so "localhost" refers to the host machine.
676 |
677 | ## Build instructions
678 |
679 | Follow the steps below to build, test, and run the checker such that you can
680 | open `http://0.0.0.0:8888/` in a Web browser to use the checker Web UI.
681 |
682 | 1. Make sure you have git, python, and JDK 8 or above installed.
683 |
684 | 2. Set the `JAVA_HOME` environment variable:
685 |
686 | export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 <-- Ubuntu, etc.
687 |
688 | export JAVA_HOME=$(/usr/libexec/java_home) <-- MacOS
689 |
690 | 3. Create a working directory:
691 |
692 | git clone https://github.com/validator/validator.git
693 |
694 | 4. Change into your working directory:
695 |
696 | cd validator
697 |
698 | 5. Start the checker Python script:
699 |
700 | python ./checker.py all
701 |
702 | The first time you run the checker Python script, you’ll need to be online and
703 | the build will need time to download several megabytes of dependencies.
704 |
705 | The steps above will build, test, and run the checker such that you can open
706 | `http://0.0.0.0:8888/` in a Web browser to use the checker Web UI.
707 |
708 | **Warning:** Future checker releases will bind by default to the address
709 | `127.0.0.1`. Your checker deployment might become unreachable unless you use the
710 | `--bind-address` option to bind the checker to a different address:
711 |
712 | python ./checker.py --bind-address=128.30.52.73 all
713 |
714 | Use `python ./checker.py --help` to see command-line options for controlling the
715 | behavior of the script, as well as build-target names you can call separately;
716 | e.g.:
717 |
718 | * python ./checker.py build # to build only
719 |
720 | * python ./checker.py build # test to build and test
721 |
722 | * python ./checker.py run # to run only
723 |
724 | * python ./checker.py jar # to compile vnu.jar
725 |
726 | * python ./checker.py update-shallow && \
727 | python ./checker.py dldeps && \
728 | python ./checker.py jar # compile vnu.jar faster
729 |
--------------------------------------------------------------------------------
/a11y-meta-display-guide/bin/libs/vnu/vnu.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/w3c/publ-a11y/5ee2f5ccbadb4c36fc8bfb3a8dee7ecd43170bf9/a11y-meta-display-guide/bin/libs/vnu/vnu.jar
--------------------------------------------------------------------------------
/a11y-meta-display-guide/bin/libs/xml2csv-1.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/w3c/publ-a11y/5ee2f5ccbadb4c36fc8bfb3a8dee7ecd43170bf9/a11y-meta-display-guide/bin/libs/xml2csv-1.1.jar
--------------------------------------------------------------------------------
/a11y-meta-display-guide/bin/publish-drafts.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Script for creating static version for the UX-Guide-Metadata documents
4 | # It starts from the published draft (in the main branch): https://w3c.github.io/publ-a11y/a11y-meta-display-guide/2.1/draft/guidelines/
5 | # It generates the static version
6 | # It runs nuchecker and link checker
7 | # The output is a zip folder that can be sent to W3C staff for publishing on the website
8 |
9 | # pre-run: cleans and temporary directory...
10 | basedir=$(readlink -f "$0")
11 | basedir=$(dirname "$basedir")
12 | documents=( "guidelines" "techniques/epub-metadata" "techniques/onix-metadata" )
13 | bold=$(tput bold)
14 | normal=$(tput sgr0)
15 |
16 | # input
17 | read -p 'Publishing date (format YYYY-MM-DD): ' publishDate
18 | publishDateWithoutDashes=${publishDate//-/}
19 |
20 | for document in "${documents[@]}"
21 | do
22 | printf "\n\nDocument ${bold}$document${normal}...\n"
23 |
24 | # variables for document
25 | tmpdir=$(mktemp -d)
26 | filename=${document##*/}
27 | versionFilename="$filename-draft-note-$publishDateWithoutDashes.html"
28 | versionURL="https://w3c.github.io/publ-a11y/a11y-meta-display-guide/2.1/$document/$versionFilename"
29 |
30 | # copies the content to the temporary directory
31 | printf "\nCopying the content to the temporary directory..."
32 | cp -a "$basedir/../2.1/draft/$document/." $tmpdir
33 | rm $tmpdir/*.md
34 |
35 | # generates the static version
36 | printf "\nGenerating static version...\n"
37 | curl \
38 | -G \
39 | --data-urlencode "type=respec" \
40 | --data-urlencode "url=https://w3c.github.io/publ-a11y/a11y-meta-display-guide/2.0/draft/$document/?specStatus=CG-DRAFT&publishDate=$publishDate&thisVersion=$versionURL" \
41 | https://labs.w3.org/spec-generator/ \
42 | -o "$tmpdir/index.html"
43 |
44 | # runs nuchecker
45 | nuVersion=$(java -jar "$basedir/libs/vnu/vnu.jar" --version)
46 | printf "\nRunning Nu Html Checker version $nuVersion...\n"
47 | java -jar "$basedir/libs/vnu/vnu.jar" \
48 | "$tmpdir/index.html"
49 |
50 |
51 | # commenting while waiting for this issue to be fixed: https://github.com/validator/validator/issues/1745
52 | # if [ $? -gt 0 ]
53 | # then
54 | # exit 1
55 | # fi
56 |
57 | # runs link checker
58 | # installed via commands:
59 | # cpan install App::cpanminus
60 | # cpanm W3C::LinkChecker@4.81
61 | # cpan install Mozilla::CA
62 | # tried to install version 5.0.0 on mac, but I got errors
63 | checklinkVersion=$(checklink --version)
64 | printf "\nRunning $checklinkVersion...\n"
65 | checklink \
66 | --summary \
67 | --broken \
68 | "https://w3c.github.io/publ-a11y/a11y-meta-display-guide/2.1/draft/$document/?specStatus=CG-DRAFT&publishDate=$publishDate"
69 |
70 | # commenting while waiting for this issue to be fixed: https://github.com/w3c/publ-a11y/issues/386
71 | # if [ $? -gt 0 ]
72 | # then
73 | # exit 1
74 | # fi
75 |
76 | printf "\nMoving temporary files to directory..."
77 | mv $tmpdir/* "$basedir/../2.1/$document/"
78 |
79 | printf "\nCopying for versioning..."
80 | cp "$basedir/../2.1/$document/index.html" "$basedir/../2.1/$document/$versionFilename"
81 |
82 | done
83 |
84 | printf "\nDone"
--------------------------------------------------------------------------------
/a11y-meta-display-guide/bin/strings-crosscheck.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Script for crosschecking the strings in techniques and canonical JSON for localization
4 | # Requires xsltproc, java, gnumeric (http://www.gnumeric.org/) and jq (https://jqlang.github.io/jq/download/)
5 |
6 | # function to check whether a command is available
7 | check_command() {
8 | if ! command -v "$1" &> /dev/null; then
9 | echo "Error: $1 is not installed. Please install it and try again."
10 | exit 1
11 | fi
12 | }
13 |
14 | # check for the presence of the necessary tools
15 | check_command xsltproc
16 | check_command java
17 | check_command jq
18 | check_command ssconvert
19 |
20 | # pre-run
21 | basedir=$(readlink -f "$0")
22 | basedir=$(dirname "$basedir")
23 | tmpdir=$(mktemp -d)
24 |
25 | # input files
26 | guidelines="$basedir/../2.1/draft/guidelines/index.html"
27 | xslt_guidelines="$basedir/extract-ids-from-guidelines.xsl"
28 | epub_techniques="$basedir/../2.1/draft/techniques/epub-metadata/index.html"
29 | onix_techniques="$basedir/../2.1/draft/techniques/onix-metadata/index.html"
30 | xslt_techniques="$basedir/extract-ids-from-techniques.xsl"
31 | #canonical_json="$basedir/../draft/localizations/en-US/display_guide_vocabulary_w3c_en-US.json"
32 | output_dir="$basedir/../2.1/draft/localizations"
33 |
34 | # performs XSLT transformation on XHTML files
35 | xsltproc "$xslt_guidelines" "$guidelines" > "$tmpdir/guidelines-strings.xml"
36 | xsltproc "$xslt_techniques" "$epub_techniques" > "$tmpdir/epub-metadata-strings.xml"
37 | xsltproc "$xslt_techniques" "$onix_techniques" > "$tmpdir/onix-metadata-strings.xml"
38 |
39 | # converts XML files to CSV
40 | java -jar "$basedir/libs/xml2csv-1.1.jar" "$tmpdir/guidelines-strings.xml" > "$tmpdir/guidelines-strings.csv"
41 | java -jar "$basedir/libs/xml2csv-1.1.jar" "$tmpdir/epub-metadata-strings.xml" > "$tmpdir/epub-metadata-strings.csv"
42 | java -jar "$basedir/libs/xml2csv-1.1.jar" "$tmpdir/onix-metadata-strings.xml" > "$tmpdir/onix-metadata-strings.csv"
43 |
44 | # converts CSV files to Excel
45 | ssconvert "$tmpdir/guidelines-strings.csv" "$output_dir/guidelines-strings.xlsx"
46 | ssconvert "$tmpdir/epub-metadata-strings.csv" "$output_dir/epub-metadata-strings.xlsx"
47 | ssconvert "$tmpdir/onix-metadata-strings.csv" "$output_dir/onix-metadata-strings.xlsx"
48 |
49 | echo "Operations completed. Need to manually update Excel file localizations/crosscheck strings epub-onix-canonical_json.xlsx"
--------------------------------------------------------------------------------
/a11y-meta-display-guide/bin/update-canonical-json.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Check for required commands
4 | check_command() {
5 | if ! command -v "$1" &> /dev/null; then
6 | echo "Error: $1 is not installed. Please install it and try again."
7 | if [ "$1" = "yq" ]; then
8 | echo "To install yq, visit: https://github.com/mikefarah/yq#install"
9 | fi
10 | exit 1
11 | fi
12 | }
13 |
14 | check_command yq
15 | check_command xsltproc
16 | check_command java
17 |
18 | # Setup
19 | basedir=$(readlink -f "$0")
20 | basedir=$(dirname "$basedir")
21 | tmpdir=$(mktemp -d)
22 | output_dir="$basedir/../../../publ-a11y-display-guide-localizations/lang"
23 |
24 | # Input
25 | read -p 'JSON version: ' jsonVersion
26 |
27 | # Input files
28 | guidelines="$basedir/../2.1/draft/guidelines/index.html"
29 | epub_techniques="$basedir/../2.1/draft/techniques/epub-metadata/index.html"
30 | onix_techniques="$basedir/../2.1/draft/techniques/onix-metadata/index.html"
31 |
32 | # XSLT files
33 | xslt_extract_ids="$basedir/canonical-json-extract-ids.xsl"
34 | xslt_extract_strings="$basedir/canonical-json-extract-strings.xsl"
35 |
36 | # Extract unique IDs
37 | xsltproc --stringparam guidelines "$guidelines" \
38 | --stringparam onix "$onix_techniques" \
39 | --stringparam epub "$epub_techniques" \
40 | "$xslt_extract_ids" "$guidelines" > "$tmpdir/ids.xml"
41 |
42 | # Extract strings using IDs
43 | xsltproc --stringparam guidelines "$guidelines" \
44 | --stringparam onix "$onix_techniques" \
45 | --stringparam epub "$epub_techniques" \
46 | --stringparam ids-file "$tmpdir/ids.xml" \
47 | --stringparam version "$jsonVersion" \
48 | "$xslt_extract_strings" "$tmpdir/ids.xml" > "$tmpdir/strings.xml"
49 |
50 | # Convert to JSON
51 | yq --prettyPrint --xml-skip-proc-inst --indent 4 -p=xml -o=json '.root' "$tmpdir/strings.xml" > "$tmpdir/temp.json"
52 |
53 | # Remove | characters and save to final destination
54 | sed 's/|//g' "$tmpdir/temp.json" > "$output_dir/en-US/display_guide_vocabulary_w3c.json"
55 |
56 | # Cleanup
57 | rm -rf "$tmpdir"
58 |
59 | # Cleanup
60 | rm -rf "$tmpdir"
61 |
62 | echo "Transformation completed. JSON created at en-US/display_guide_vocabulary_w3c.json"
--------------------------------------------------------------------------------
/a11y-meta-display-guide/implementations/graphics/catalogo-lia/display.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/w3c/publ-a11y/5ee2f5ccbadb4c36fc8bfb3a8dee7ecd43170bf9/a11y-meta-display-guide/implementations/graphics/catalogo-lia/display.png
--------------------------------------------------------------------------------
/a11y-meta-display-guide/implementations/graphics/daisy-viewer/display.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/w3c/publ-a11y/5ee2f5ccbadb4c36fc8bfb3a8dee7ecd43170bf9/a11y-meta-display-guide/implementations/graphics/daisy-viewer/display.png
--------------------------------------------------------------------------------
/a11y-meta-display-guide/implementations/graphics/readium-mobile/display.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/w3c/publ-a11y/5ee2f5ccbadb4c36fc8bfb3a8dee7ecd43170bf9/a11y-meta-display-guide/implementations/graphics/readium-mobile/display.png
--------------------------------------------------------------------------------
/a11y-meta-display-guide/implementations/graphics/thorium-desktop/display.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/w3c/publ-a11y/5ee2f5ccbadb4c36fc8bfb3a8dee7ecd43170bf9/a11y-meta-display-guide/implementations/graphics/thorium-desktop/display.png
--------------------------------------------------------------------------------
/a11y-meta-display-guide/implementations/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Accessibility Metadata Display Guide for Digital Publications — Implementation Report
6 |
7 |
8 |
24 |
25 |
26 |
27 |
28 |
29 | Accessibility Metadata Display Guide for Digital Publications
30 | Implementation Report
31 |
32 |
33 |
34 |
35 | Table of Contents
36 |
37 | Introduction
38 |
39 | Implementations
40 |
41 |
42 | Catalogo LIA
43 |
44 |
45 | DAISY Accessibility Metadata Viewer
46 |
47 |
48 | Readium Mobile
49 |
50 |
51 | Thorium Desktop
52 |
53 |
54 |
55 |
56 |
57 |
62 |
63 |
66 |
67 |
68 | Catalogo LIA
69 |
70 |
75 |
76 |
77 |
The LIA Catalogue is a website that presents all accessible ebooks certified by Fondazione LIA . Developed following accessibility paradigm, the LIA Catalog is independently navigable by everyone, including those who use assistive technologies to browse the catalog of accessible ebooks, search by genre, author, or title, select titles of interest, view the book detail page, and read about an ebook's accessibility features.
78 |
79 |
The LIA catalog brings together more than 38,000 ebooks from over 76 publishing brands.
80 |
81 |
The implementation of the display of accessibility metadata is based on the guidelines defined in the W3C. The Italian localization of the text labels was carried out by Fondazione LIA .
82 |
83 |
The graphic layout and the icons used in the presentation of accessibility metadata were designed by Fondazione LIA , which can grant their use to third parties. If interested, you may contact Fondazione LIA by email (segreteria@fondazionelia.org ).
84 |
85 |
86 |
87 |
88 |
90 | Accessibility features' box is shown on the detail page of each ebook
91 |
92 |
93 |
94 |
95 |
96 |
97 | DAISY Accessibility Metadata Viewer
98 |
99 |
104 |
105 |
106 |
The DAISY Accessibility Metadata Viewer is a free browser-based testing tool that allows users to
107 | review the metadata that will be generated according to the display guidelines and techniques.
108 | It can run online or downloaded and run locally.
109 |
110 |
To use the tool, a user only needs to paste an EPUB package document or ONIX record into the user
111 | interface. The viewer has options to display either the descriptive or compact display
112 | statements, as well as to select the display language and suppress fields for which no
113 | information is available.
114 |
115 |
The site provides some free sample records for testing purposes for users who not have access
116 | to digital publication metadata.
117 |
118 |
119 |
120 |
121 |
123 | The result dialog for the DAISY Accessibility Metadata Viewer has options at the top
124 | to control the display of the metadata. The metadata headings are laid out in a tabular
125 | format with their corresponding display statements to their right.
126 |
127 |
128 |
129 |
130 |
131 | Readium Mobile
132 |
133 |
138 |
139 |
140 |
Readium Mobile is an open source toolkit for ebooks, audiobooks and comics written in Swift & Kotlin with 60+ applications.
141 |
142 |
The implementation is as complete as possible, offering the flexibility to choose between compact or descriptive statements. It will be displayed in the bookshelf as well as in the catalog view (OPDS). A dedicated documentation section is provided.
143 |
144 |
At this moment, the certified information is not available because of a placeholders localization issue that has to be addressed by the working group.
145 |
146 |
147 |
148 |
149 |
151 | TThe book information panel contains Title, Identifier, Author, Publisher and Publication Date. After a separator, the section titled "Accessibility Claims" begins. The first toggle button allows to hide or show fields with no metadata, a second button allows to use descriptive instead of compact statements. Then the list of accessibility information is visible, starting with Ways of reading, followed by Navigation, Additional accessibility information, Hazards and Conformance.
152 |
153 |
154 |
155 |
156 |
157 | Thorium Desktop
158 |
159 |
164 |
165 |
166 |
Thorium Desktop (formerly Thorium Reader) is a reading application available for MacOS, Windows and Linux.
167 |
168 |
The implementation focus on Ways of Reading and Navigation information that are always shown. All other information are available on user action thru a "More Information" toggle button.
169 |
170 |
Complementary accessibility information on Thorium usage is available on the dedicated accessibility section of the support webpage .
171 |
172 |
Thorium Desktop is open source and therefore can be forked, meaning that this same behavior can appear in other applications based on Thorium code.
173 |
174 |
At this moment, the date of certification information is not available because of a placeholders localization issue that has to be addressed by the working group.
175 |
176 |
177 |
178 |
179 |
181 |
182 | The book information panel shows two titles: Publication details and Accessibility. The accessibility section is composed of the always shown titles Ways of Reading and Navigation. Then a "More Information" toggle button can include other accessibility information if they are available. The compact sentences are displayed and the descriptive ones are available as title of the line element, visually marked by a question mark pictogram.
183 |
184 |
185 |
186 |
187 |
188 |
189 | ↑
190 |
191 |
192 |
193 |
--------------------------------------------------------------------------------
/drafts/audio-playback/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Publishing Guide to Audio Playback and Text-To-Speech
6 |
7 |
42 |
43 |
44 |
45 | This guide provides a brief introduction to the different types of audio playback typically found in
46 | publications. It covers the differences between the types of audio publications created by publishers
47 | and audio playback automatically generated by user agents. It also explains how screen readers and other
48 | Assistive Technologies (AT) produce audio through Text-to-Speech (TTS), which often blurs the lines
49 | between a prepared title designed for audio consumption and a text-based title that readers can consume
50 | using audio through Assistive Technologies.
51 |
52 |
53 |
54 | Overview
55 |
56 | Publishing has a sometimes-dizzying array of ways of referring to audio playback — audiobook,
57 | talking book, read aloud book, text-to-speech playback, media overlays and full audio are some of the
58 | most common terms.
59 |
60 | Compounding the confusion is that these are often all referred to as audio books (two words), even though
61 | there is a unique form of publication called an audiobook (one word). Moreover, Text-To-Speech synthesis
62 | is often talked about as though it is an audio format even though it is a feature of the device or the
63 | Assistive Technology a reader is using.
64 |
65 | Despite the many terms used to describe audio playback, there are only two primary models for classifying
66 | publications with recorded audio:
67 |
68 |
69 | Audiobook
70 |
71 | A publication whose primary, and typically only, way of being read is auditorily.
72 |
73 |
74 | Full Audio
75 |
76 | The content of a publication is available in auditory form, but the audio is often structured
77 | together with textual or visual content.
78 |
79 |
80 |
81 | Slightly tangential to these models, but equally important, is Text-To-Speech synthesis. Speech synthesis
82 | is not technically a form of audio playback but a way to have the device a reader is using synthetically
83 | voice the text content of a publication. Speech synthesis is like an on-demand rendering of content in
84 | this way, but due to the limitations of text-to-speech rendering engines the result is often not as
85 | precise and clear as professional human narration.
86 |
87 | The rest of this guide explores each of these technologies in more detail and demystifies the terminology
88 | used to describe them.
89 |
90 |
91 | Audiobooks
92 |
93 | An audiobook provides prerecorded narration of a work. Publishers typically structure audiobooks as a
94 | series of one or more audio files that readers will listen to in sequence.
95 |
96 | Readers may stream the audio directly from an audiobook publisher, like Audible, or may obtain a set of
97 | audio files that they can play back on any device or application with audio playback capabilities.
98 |
99 | The key feature of an audiobook is that it is designed to be listened to. If there is any text content,
100 | it is typically quite minimal (e.g., a playlist to aid in playback on specific devices or a table of
101 | contents).
102 |
103 | A recent W3C standard, aptly named Audiobooks , seeks to
104 | bring greater structure to the world of audiobooks by introducing a formal syntax for describing
105 | audiobook metadata, listing the resources of the book, and defining a play order, among other
106 | features.
107 |
108 | Although audiobooks have historically been referred to as talking books, the term "talking
109 | book" is now more commonly associated with DAISY Digital Talking Books. These are a hybrid between
110 | audiobooks and full audio publications that are designed for readers who are blind, have low vision, or
111 | other print disabilities, such as dyslexia.
112 |
113 |
114 | Full Audio Publications
115 |
116 | A publication with full audio differs from an audiobook in that formats that allow full audio content
117 | also allow the inclusion of, and synchronization with, the full text content (even if the full text is
118 | not always available).
119 |
120 | EPUB is an example of a format that allows publishers to include full audio. Although EPUB is a
121 | text-first format, it includes a technology called Media Overlays that allows publishers to synchronize
122 | audio with the text for automatic playback.
123 |
124 | Some Reading Systems will omit the text, making it appear as though an EPUB is an audiobook, but, unlike
125 | audiobooks, there is always a minimal amount of text that publishers must provide. Publications with
126 | full audio are never as simple to load and play as pure audiobooks are because there are control files
127 | that a simple audio playback device does not understand.
128 |
129 | Full audio publications are often referred to as "read aloud books " because publishers
130 | commonly use synchronized text and audio playback in children's works. Children can follow the text as
131 | the Reading System plays back the audio.
132 |
133 |
134 | Text-To-Speech Synthesis
135 |
136 | Text-To-Speech (TTS) synthesis is a form of audio rendering typically produced on demand by a Reading
137 | System or Assistive Technology. VoiceOver on Apple devices and Talkback on Android are a couple of the
138 | more commonly known examples of TTS engines built into mainstream phones and tablets, while Jaws and
139 | NVDA are examples of Assistive Technologies that can translate text to speech for users who need an
140 | auditory interface to their Windows computers.
141 |
142 | Text-To-Speech synthesis is commonly associated with users who are blind, but many readers benefit from
143 | being able to render text content auditorily using Text-To-Speech synthesis. Even sighted readers will
144 | turn to speech synthesis when it is not conducive to read content visually (e.g., when in a moving
145 | vehicle). Many Reading Systems are now providing TTS rendering as a function in the application.
146 |
147 | Unlike audiobooks and publications with full audio, however, Text-To-Speech synthesis is not an audio
148 | format. It is a way of listening to text content the reader has already obtained. Readers can use a TTS
149 | application to read their EPUB publications.
150 |
151 |
152 |
The names some reading systems give their Text-to-Speech playback feature can be confusingly similar
153 | to "read aloud books ". For example, a button named "Read Now" might initiate Text-to-Speech
154 | playback. The distinguishing feature between the two is that Text-to-Speech playback employs
155 | on-the-fly voice synthesizing.
156 |
157 |
158 | The applications that provide Text-To-Speech synthesis for persons with disabilities are usually not
159 | specifically designed for reading publications, however. They are general tools that aid navigation
160 | across the device the reader is using and any other apps and content that are on it. As a result, they
161 | often only have a very limited built-in vocabulary of pronunciations so are not able to provide a
162 | similar quality of playback as prerecorded human narration.
163 |
164 | When a user enables Text-To-Speech playback, the Reading System or Assistive Technology feeds the text
165 | content of the publication to an underlying TTS engine that voices each word. For most general language,
166 | the rendering returned is reasonably good, but the engines will struggle with works that contain complex
167 | terms, jargon, uncommon names, etc. Readers consequently also typically have the option to have
168 | individual words spelled out, both to help disambiguate similar-sounding words and to make sense of
169 | complex words and heteronyms (words spelled the same but with different pronunciations) that
170 | Text-to-Speech engines mispronounce. This ability to explore the spelling of words, which readers cannot
171 | do with human narrated titles, is a particular advantage of Text-To-Speech synthesis.
172 |
173 | Although Text-To-Speech synthesis is not audio playback provided by the publisher, it is sometimes
174 | possible for publishers to help improve the quality of the rendering. Technologies such as the Speech Synthesis Markup Language (SSML) and Pronunciation Lexicon Specification (PLS)
177 | allow publishers to provide the proper phonetic pronunciation of complex words and heteronyms.
178 | Unfortunately, support for these technologies is not yet widespread.
179 |
180 | Text-To-Speech synthesis provides a reasonable alternative to audio playback formats and allows readers
181 | to speed up playback to high rates. In addition, readers can also synchronize Text-To-Speech playback
182 | with refreshable braille displays. However, Text-To-Speech remains an imperfect means of reading
183 | publications, especially when compared to the wonderful talented narrators that produce audio books.
184 |
185 |
186 |
187 |
--------------------------------------------------------------------------------
/drafts/page-source-id/css/common.css:
--------------------------------------------------------------------------------
1 |
2 | /****************************************************/
3 | /* property tables */
4 | /****************************************************/
5 |
6 | /* ensure confomity of width for property tables */
7 | table.tabledef {
8 | border-spacing: 0px;
9 | border: none;
10 | font-size: 1em;
11 | width: 100%
12 | }
13 |
14 | table.tabledef td, table.tabledef th {
15 | border: none;
16 | background-color: rgb(236,246,255);
17 | color: rgb(0,0,0);
18 | padding: 0.3em;
19 | vertical-align: top;
20 | }
21 |
22 | table.tabledef th {
23 | text-align: left;
24 | vertical-align: top;
25 | width: 8em;
26 | padding-left: 1em;
27 | }
28 |
29 | table.tabledef th {
30 | border-left: 5px solid rgb(145,200,255);
31 | }
32 |
33 | table.tabledef td {
34 | padding: 3px 3px 3px 10px;
35 | }
36 |
37 | table.tabledef td > p:first-child {
38 | padding: 0em;
39 | margin: 0em
40 | }
41 |
42 | a code
43 | {
44 | color: rgb(3,69,117) !important;
45 | }
46 |
--------------------------------------------------------------------------------
/drafts/page-source-id/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Page Source Identification
6 |
7 |
8 |
45 |
46 |
47 |
48 | This proposal defines the pageBreakSource
property to identify the source of page markers
49 | and the page list in EPUB publications.
50 |
51 |
52 |
53 | Introduction
54 |
55 |
56 | Background
57 |
58 | Providing navigation to static page break markers is a key accessibility feature for digital
59 | publications that are used in both print and digital formats in the same environment (e.g.,
60 | classrooms). But without a means of identifying what edition of a static work the page navigation
61 | corresponds to, it is impossible for users to determine if the publication will be sufficient for
62 | their needs. For example, if a class uses a softcover edition of a book and the EPUB publication
63 | pagination corresponds to the hardcover, digital users will not be able to access the same page
64 | break locations.
65 |
66 | How to identify the source of pagination has been a continuing problem in the EPUB 3 metadata. The
67 | original idea was to use a dc:source
element [[epub-3]] to specify the pagination. This method proved
69 | unreliable both for machine verification that the EPUB creator had set the method and to extract and
70 | present the information to users. Publishers sometimes specify multiple sources for their
71 | publications in multiple dc:source
elements, making it impossible for a machine to
72 | determine which identifies the source.
73 |
74 | To address this problem, the specification then introduced a "refinement " [[epub-3]] property called source-of
[[epub-3]] whose
77 | only purpose was to indicate which dc:source
property identified the source.
78 |
79 | Since its addition, however, two additional problems have surfaced with this approach:
80 |
81 |
82 | It was defined in a way that makes it unique to EPUB 3's metadata format. When the
83 | refines
attribute was nearly dropped in EPUB 3.1, it exposed that there was
84 | still no other way to express this information. Consequently, future formats cannot rely on the
85 | source-of
property.
86 | Relying on dc:source
confuses how to state that a digital-only publication does not
87 | have a source for its markers. EPUB creators have resorted to identifying the current
88 | publication as the source of itself or saying that the publication has a source of nothing for
89 | the pagination, neither of which makes much sense logically and are at best hacks of the
90 | metadata. Omitting a dc:source
, while accurate in this situation, makes validation
91 | difficult as it cannot be determined whether the EPUB creator simply forgot to specify the
92 | source.
93 |
94 |
95 | The pageBreakSource
property proposed in this document is intended to provide a simple
96 | and reliable solution to these problems moving forward.
97 |
98 |
99 |
100 | Terminology
101 |
102 | This specification uses terminology defined in
103 | EPUB 3 [[epub-3]].
104 |
105 |
106 |
Only the first instance of a term in a section links to its definition.
107 |
108 |
109 |
110 |
111 |
112 |
113 | The pageBreakSource
property
114 |
115 |
116 | Definition
117 |
118 |
119 |
120 | Name:
121 |
122 | pageBreakSource
123 |
124 |
125 |
126 | Description:
127 |
128 | Provides a unique identifier for the source of the page break markers in an EPUB publication .
130 | The identifier should be expressed as a URN when the value conforms to a recognized
131 | scheme such as an ISBN.
132 | If a unique identifier does not exist for the source, EPUB creators should use a text
133 | description that identifies the source as clearly as possible (e.g., the title of a word
134 | processing document).
135 | If the page break markers are unique to the EPUB publication (e.g., for a digital-only
136 | edition), EPUB creators MUST specify the value "none
".
137 |
138 |
139 |
140 | Allowed value(s):
141 |
142 | xsd:string
143 |
144 |
145 |
146 | Cardinality:
147 | Exactly one when the publication includes a page list and/or page break markers, otherwise
148 | 0.
149 |
150 |
151 |
152 |
153 |
154 | Examples
155 |
156 |
157 | In this example, the pagination corresponds to a print edition with an ISBN number. A URN is used
158 | to identify the scheme the number conforms to.
159 | <meta
160 | property="pageBreakSource">
161 | urn:isbn:9780010010001
162 | </meta>
163 |
164 |
165 |
166 | In this example, the publisher has added the page break markers and page list for a digital-only
167 | edition. The value none
indicates that the pagination is not drawn from another
168 | source.
169 | <meta
170 | property="pageBreakSource">
171 | none
172 | </meta>
173 |
174 |
175 |
176 | In this example, the name of the document and its format are used to identify the source of the
177 | pagination.
178 | <meta
179 | property="pageBreakSource">
180 | Hobo eReader User Manual. PDF: https://example.org/manuals/hobo/
181 | </meta>
182 |
183 |
184 |
185 |
186 |
187 |
--------------------------------------------------------------------------------
/drafts/page-source-id/js/css-inline.js:
--------------------------------------------------------------------------------
1 |
2 | function inlineCustomCSS() {
3 |
4 | var customCSS = getCSS();
5 |
6 | if (customCSS == '') { return; }
7 |
8 | var style = document.createElement('style');
9 | style.textContent = customCSS;
10 |
11 | document.getElementsByTagName('head')[0].appendChild(style);
12 |
13 | }
14 |
15 | function getCSS() {
16 |
17 | try {
18 | var xmlhttp = new XMLHttpRequest();
19 |
20 | xmlhttp.open('GET', 'css/common.css', false);
21 | xmlhttp.send();
22 |
23 | if (xmlhttp.status == 200) {
24 | return xmlhttp.responseText;
25 | }
26 | else {
27 | console.error('Failed to read CSS file css/common.css. Returned status: ' + xmlhttp.status);
28 | return '';
29 | }
30 | }
31 |
32 | catch (e) {
33 | console.error(e);
34 | return '';
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/drafts/schema-a11y-summary/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Accessibility Summary Authoring Guidelines for EPUB Publications
6 |
7 |
13 |
50 |
87 |
88 |
89 |
90 |
This document is now obsolete and much of the guidance it provides has been superseded by newer versions
91 | of the EPUB Accessibility standard. Accessibility summaries should not repeat information that is already
92 | available in the other metadata fields. For updated guidance on how to write a summary, please refer to
93 | the EPUB Accessibility Metadata
94 | Guidelines .
95 |
96 |
97 | The Accessibility Summary adds additional information, clarifications, and refinements to other accessibility metadata. In creating the Accessibility Summary, one should assume that the other accessibility metadata has already been presented, and the Accessibility Summary serves to enhance the metadata. In the "EPUB Accessibility Conformance and Discoverability Specification 1.0," the accessibilitySummary was a required field, and it would present the essential accessibility metadata. However, in version 1.1, it changed to be an optional field. The accessibilitySummary now eliminates the duplication of information presented by other accessibility metadata. If there are features or shortcomings in the publication that are not expressed in other accessibility metadata, then the Accessibility Summary is the correct place to include this information. The remainder of these guidelines explains some considerations, and provides some examples of Accessibility Summaries.
98 |
99 |
100 |
114 |
115 | Before you start writing
116 |
117 | The Accessibility Checker for EPUB (Ace by DAISY) is a tool
118 | which can be used to help you determine some of the accessibility features within the publication. This will help you determine
119 | what should be included in the accessibilitySummary.
120 |
121 | Next read the accessibility metadata in the EPUB package.opf file before you begin to write. Make note of
122 | the features listed in the metadata as you prepare to write. One should always truthfully represent the
123 | accessibility of the publication and point out shortcomings of the publication; students may be able to
124 | get assistance from their school or university if some aspects of the publication are not accessible.
125 | For example, if complex graphics that convey information do not have an extended description, let people
126 | know that extended descriptions are not available.
127 |
128 |
129 | Some High-Level Considerations
130 |
131 |
132 | There should only be one accessibility summary. Do not include multiple accessibility summaries in
133 | different languages.
134 | The language of the accessibility summary should be in the primary language of the publication. For
135 | example, a publication in French should have the accessibility summary also in French. While some
136 | publications may have many passages in another language, the primary language should be determined.
137 | For example, a publication intended to teach Spanish to English speaking students would have the
138 | primary language as English.
139 | Ensure the language of the accessibility summary is declared in the metadata.
140 | It should be noted that markup in metadata is not allowed. While it may be tempting to use headings, bullets, bold, or other markup, this must not be used.
141 |
142 | Use simple language that communicates effectively to a non-technical and a non-accessibility aware
143 | community.
144 | Avoid terms that are only known in a specific knowledge domain, or explain the term in a simple
145 | way.
146 | The use of jargon or language that is not commonly understood should be avoided. It is better to explain what is meant.
147 |
148 |
149 | Write out the words of the acronym before using the abbreviation, e.g. Web Content Accessibility
150 | Guidelines (WCAG).
151 |
152 | The length of the Accessibility Summary is important. Ideally the accessibilitySummary should be
153 | under 500 characters in
154 | length. The ONIX guideline suggests less than 500 characters.
155 | The Accessibility Summary should be succinct and place the most essential information at the
156 | beginning. We have no way of knowing how many characters various systems will display, and it is
157 | possible that the Accessibility Summary would be truncated after a system-dependent number of characters.
158 | Also, we believe people will be reading quickly and if the Accessibility Summary is long, people may
159 | read only the beginning section.
160 | If content of a similar type goes through the same workflow and quality assurance process, the same accessabilitySummary may be reused. However, make sure that the accessibilitySummary
metadata that ships with the
161 | publication is accurate and applies to this particular publication.
162 |
163 |
164 |
165 | What to Include in the AccessibilitySummary
166 |
167 | Here is a list of areas that the summary should address :
168 |
169 |
213 |
214 |
215 |
216 | Accessibility Features
217 | Features that have been included in metadata may benefit from additional information that more clearly explains the feature. Some examples have been provided in the table below.
218 |
219 | For a complete list of features see: Schema.org Accessibility Properties for Discoverability Vocabulary
220 |
221 |
222 |
223 |
224 | Accessibility Feature
225 |
226 | Example Text
227 | Information
228 |
229 |
230 |
231 |
232 | alternativeText
233 | Subject experts were used to create the ALT text.
234 | WCAG requires alt text, and including additional information is suggested if there is something to add.
235 |
236 |
237 |
238 |
239 | braille
240 |
241 | The text is encoded as grade 2 UEB braille.
242 | If the text is encoded as braille characters, this should be noted with the type and if it is contracted by stating it is grade 1 or 2, etc.
243 |
244 |
245 |
246 |
247 | displayTransformability
248 |
249 | The initial chapter headings are highly stylized and are provided as images. These are marked as proper headings, and alt text is provided, which should minimize the issue of having text represented as images.
250 |
251 | The tables are represented as images, and the full text of the table is provided below the image within the details element, which can be expanded.
252 | Sometimes contented is formatted in such a way that it cannot be reflowed or other features cannot be adjusted. Tables, which cannot be encoded and are presented as images is one common example of this. Another case is where a highly stylized chapter heading is used that cannot be enlarged or transformed. These shortcomings should be noted and if there is any work around, such as a long description provided in addition to the image.
253 |
254 |
255 | index
256 |
257 | A comprehensive index is included with links to the top of the page.
258 |
259 | A comprehensive index is included with links to the paragraph being referenced.
260 | Provide information about the index other than it is present. A comprehensive list and where the words link to is worth highlighting.
261 |
262 |
263 | longDescription
264 |
265 | Extended descriptions are provided for complex graphical content that conveys important
266 | information for understanding of the content. The description is contained in a details element immediately below the image, which can be expanded.
267 | Extended descriptions: Extended (or long) descriptions are used when complex graphics or
268 | other highly visual components convey information. The extended description communicates
269 | the equivalent information through text, tables, etc. The technique for providing the description should be included, such as in a details element or through a link to another part of the book with a link back to the exact spot.
270 |
271 |
272 | longDescription is missing
273 |
274 | This publication contains graphical content that conveys significant information. This
275 | graphical material is not explained and the reader who cannot interpret the graphics
276 | should seek assistance.
277 | Extended Descriptions are not provided when needed, for example if there is a complex
278 | image that needs a longer description to understand what the image is portraying..
279 |
280 |
281 | MathML
282 |
283 | All displayed Math is represented with MathML.
284 |
285 | The chemical formulae are displayed and encoded as MathML with the proper labels for Chemistry.
286 | The presence of MathML is important especially in STEM materials. The amount is also important. If there is a mix of math as plain text and MathML, it should be noted. Also if Chemistry isencoded as MathML using the newer mechanisms for indicating these semantics, it should be noted.
287 |
288 |
289 | printPageNumbers and dc:source is
290 | present
291 |
292 | Page numbers are present and navigation to pages is supported.
293 | Page navigation provided and matches the print book
294 |
295 |
296 | printPageNumbers and dc:source is
297 | not present or refers to this EPUB
298 |
299 | There is no print version of this publication, but digital page numbers are provided for
300 | ease of use.
301 | Page navigation provided but no equivalent print book. Since there is no print
302 | equivalent book these page breaks are set by the publisher to aid in navigating to a
303 | specific digital or "virtual" page within the EPUB.
304 |
305 |
306 | printPageNumbers is missing
307 |
308 | This publication does not contain page numbers that can be navigated.
309 | If no page navigation is provided, it should be noted.
310 |
311 |
312 | readingOrder
313 |
314 | This title has choose your own ending through the content, and the sequential reading order would be confusing.
315 | If thenormal reading order would be confusing, an explanation should be provided.
316 |
317 |
318 | rubyAnnotations
319 |
320 | Some CJK ideographic characters in this publication have phonetic ruby.
321 | CJK ideographic characters may be difficult to read for some users. Attaching
322 | ruby to CJK ideographic characters makes them more accessible. It may be helpful
323 | to state whether phonetic ruby is present and further state whether all of the CJK
324 | ideographic characters in the given publication or some of them have ruby annotations.
325 |
326 |
327 | signLanguage
328 |
329 | There are several short videos in Amerigan Sign Language that explains key concepts.
330 | If sign language access through a video or some other mechanism is provided, it should be described along with the type of sign language, e.g., American Sign Language (ASL).
331 |
332 |
333 | structuralNavigation and
334 | tableOfContents
335 |
336 | This publication contains a comprehensive multi-level table of contents for navigation through the various
337 | chapters and sections.
338 | The table of Contents is normally present, and include information if there is something exceptional, such as it is comprehensive and multi-level, or if there is only minimal navigation.
339 |
340 |
341 | synchronizedAudioText
342 |
343 | This picture book with recorded audio does not contain the text included in the pictures.
344 | When synchronized audio and text is provided, if there any accessibility issues, they should be noted.
345 |
346 |
347 | transcript
348 |
349 | Video has a transcript.
350 | if transcripts of audio or video are provided, it should be noted.
351 |
352 |
353 | ttsMarkup
354 |
355 | Text-To-Speech markup is included to help with proper pronunciation of nouns.
356 | If markup is provided to assist TTS pronunciation, it should be included.
357 |
358 |
359 |
360 |
361 |
362 |
363 | Accessibility Hazards
364 |
365 | Accessibility hazards: Some content, especially videos, may contain elements that have been found to
366 | be problematic. Most common items are motion effects that make some people motion sick, flashing
367 | that can cause severe distractions or even seizures, or loud sharp noises like a gunshot which can
368 | cause hearing issues. It is only necessary to include this information if more information about the hazard is wanted to be communicated.
369 | If available, specific information about the hazard should be provided. The specific information will help to determine if the content is suitable for people with certain conditions. It is also advisable to explain if by not watching the video or other content is essential to the understanding of the content. For example, watching a video of a rollercoaster may cause motion sickness, but the video is not essential to understanding of the material. It is also suggested that the location of the hazard be provided to enable the reader to avoid that content. If there are multiple hazards, each instance should be explained.
370 |
371 |
372 |
373 | For example, “This publication contains a motion hazard in chapter 8 page 202. There is a video showing a rollercoaster going up and down rapidly. Watching the video is interesting, but not essential for understanding the concept of elevation loss and gain.”
374 |
375 |
376 |
377 |
378 |
379 | Examples
380 |
381 |
382 | <meta property="schema:accessibilitySummary">
383 | This publication strives to meet accepted Web Content Accessibility Guidelines (WCAG) at the AA level. Subject experts were used to create the ALT text. A comprehensive index is included with links to the top of the page. All Math is represented with MathML. Page numbers are present and navigation to pages is supported. This publication contains a comprehensive multi-level table of contents for navigation through the various chapters and sections.
384 | </meta>
385 |
386 |
387 | Here is another example in Japanese:
388 |
389 |
390 | <meta property="schema:accessibilitySummary">
391 | この出版物は,ウェブアクセシビリティ規格JIS X 8341-3のAAレベルに適合するように作成されている.代替テキストは専門家が作成している。漢字はJIS X 0213:2012にあるものが使われており,それ以外の漢字は含まれていない.ページ番号が埋め込まれており,ページへのナビゲーションがサポートされている.この出版物は,様々な章や節をナビゲーションするための包括的なマルチレベルの目次を含んでいる.
392 | </meta>
393 |
394 |
395 |
396 | Acknowledgments
397 |
398 | The editors would like to thank the following individuals for their contributions to this document:
399 |
400 |
401 | Avneesh Singh
402 | Jason White
403 | Madeleine Rothberg
404 | Sarah Runcie
405 | Charles LaPierre
406 | George Kerscher
407 | Zheng Xu
408 | Tzviya Siegman
409 | Gregorio Pellegrino
410 | Matt Garrish
411 | John Foliot
412 | Gautier Chomel
413 | Makoto Murata
414 | Naomi Kennedy
415 |
416 |
417 |
418 |
419 |
420 |
421 |
--------------------------------------------------------------------------------
/drafts/zero-tolerance-conformance/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Zero-Tolerance Accessibility Conformance Approaches for Publishing
6 |
7 |
59 |
104 |
105 |
106 |
107 | This document examines the impact of WCAG 2's zero-tolerance approach to accessibility, specifically as
108 | it affects the ability of publishers to certify that their EPUB Publications definitively contain no
109 | violations. The goal is to solicit feedback from the broader publishing community on the proposed
110 | approaches.
111 |
112 |
113 |
114 | Overview
115 |
116 | Although the W3C Web Content Accessibility Guidelines [[WCAG2]] represent the most comprehensive and
117 | effective means of evaluating the accessibility of EPUB Publications, they do not allow any latitude for
118 | passing content that has even a single minor issue.
119 |
120 | While this all-or-nothing approach was designed to ensure content meets the highest possible standards,
121 | it also leaves publishers with the complex problem of certifying content fully meets WCAG requirements
122 | when any missed issue, no matter how severe, negates their claim.
123 |
124 | Given the size of most publications, and the workflows through which they are produced, it is often
125 | difficult to certify that not a single transgression has been missed. The complex mix of machine and
126 | human evaluation required to check any publication also leaves open the chance of errors slipping
127 | through.
128 |
129 | Despite this reality, publishers are often required to fully conform to [[WCAG2]]. If remediation of
130 | content may be necessary in some cases, making formal claims of complete conformance raises concerns
131 | about the possibility of legal action. The problem, then, is how to indicate that content conforms to
132 | the best of the publisher's knowledge and abilities.
133 |
134 | The purpose of this document is not to make a case that publishers should be given slack to willfully
135 | produce content with accessibility flaws, but to examine what options are available to address this more
136 | nuanced case of issues slipping through evaluation.
137 |
138 |
139 | Approaches
140 |
141 | This section summarizes the primary approaches to the zero-tolerance problem discussed by
142 | the Accessibility Task Force of the Publishing Community Group. To comment on these approaches, or
143 | propose an alternative, please add to the discussion in issue 22 of the Community Group's
145 | tracker.
146 |
147 |
148 | Add a Disclaimer
149 |
150 | One option to address the possibility that a publisher might have missed some minor issues during an
151 | accessibility evaluation is to include a disclaimer in the EPUB Package Document metadata.
152 |
153 | To enable the embedding of these types of disclaimers, this document proposes a new
154 | disclaimer
property in the EPUB accessibility properties
156 | namespace [[EPUB-A11Y-11]]. The full definition of this property is provided in .
158 |
159 |
160 | The following example shows a disclaimer indicating how to report any issues.
161 | <meta
162 | property="dcterms:conformsTo"
163 | id="conf">
164 | EPUB-A11Y-11_WCAG-21-AA
165 | </meta>
166 | <meta
167 | property="a11y:disclaimer"
168 | refines="#conf">
169 | Acme Publishing has checked this EPUB Publication for conformance to
170 | WCAG 2.1 Level AA to the best of our abilities. If you believe you have
171 | found a conformance issue we missed, please send a detailed message of
172 | the problem to accessibility@example.org
173 | </meta>
174 |
175 |
176 | No changes are necessary to the EPUB specifications or epubcheck to use this property.
177 | Publishers interested in this approach are encouraged to experiment with its use and report on its
178 | utility to the Task Force.
179 |
180 | This property would be optional to include in the metadata but would allow the publisher to provide a
181 | clarifying statement that they have checked the EPUB Publication for conformance to the best of
182 | their abilities. The Accessibility Task Force is not proposing a boilerplate statement for all
183 | publishers to use with this property. Rather, publishers who want to make disclaimers are expected
184 | to craft the statements in consultation with their legal departments.
185 |
186 | Although the exact wording of the statement is at the publisher's discretion, the Task Force
187 | recommends publishers provide contact information for reporting failures to make it easier for users
188 | to provide feedback. The objective of a disclaimer is not to absolve the publisher of responsibility
189 | for issues that do slip through.
190 |
191 | The potential drawbacks of this approach are: 1) it may give the appearance that all publications
192 | that claim conformance contain errors; and 2) it may be abused by unscrupulous actors to claim
193 | conformance while not performing any detailed analysis of their content.
194 |
195 | The Task Force expects publishers to only use this property after performing thorough evaluation of
196 | their content or going through a thorough process of certifying the production processes, but there
197 | is no way to control how the metadata gets used. In environments where there are contractual and/or
198 | legal obligations to provide WCAG-conformant content, abuse of disclaimers will not provide cover
199 | for those misusing the property, so market forces will help curb some excesses.
200 |
201 |
202 |
203 | Avoid Conformance Claims
204 |
205 | Another potential approach to the problem is to not make a claim of conformance to the EPUB
206 | Accessibility specification [[EPUB-A11Y-11]] in an EPUB Publication. This would avoid the publisher
207 | having to state a specific level of WCAG conformance.
208 |
209 | Since that specification would no longer be followed, the author can omit adding a
210 | dcterms:conformsTo
property. In its place, authors are recommended use the
211 | a11y:certifierReport
property to link to a detailed report such as a VPAT. That
212 | report could detail the conformance, or lack thereof, with more context than would be possible in
213 | the EPUB Publication.
214 |
215 |
216 | The following example shows a link to the certifier's report.
217 | <meta
218 | property="a11y:certifiedBy"
219 | id="cert">
220 | Acme Certifiers Inc.
221 | </meta>
222 | <link
223 | rel="a11y:certifierReport"
224 | refines="#cert"
225 | href="reports/vpat.html"/>
226 |
227 |
228 | This approach offers no more certainty that errors have not have slipped through, but the author
229 | could make unofficial claims such as "substantively" conforming to [[WCAG2]] in their reports.
230 |
231 | Some potential drawbacks to this approach include:
232 |
233 |
234 | Without a conformance claim, the publication may not register as accessible in vendor ingestion
235 | systems or in reading system processing. Users, in turn, would not be able to easily search for
236 | the publication.
237 | Users may not be able to access the information in a linked report, especially if the
238 | publication does not register as having been accessibility checked. Links to external web sites
239 | are not generally trustworthy, so vendors and reading systems may not provide access. Similarly
240 | displaying an embedded report is a potential security risk.
241 |
242 |
243 |
244 |
245 | Add a New Discoverability Conformance Level
246 |
247 | This option is similar to the preceding approach , but adds a new conformance
248 | identifier to the EPUB Accessibility specification [[EPUB-A11Y-11]] that indicates the publisher has
249 | only met the discovery metadata requirements.
250 |
251 |
252 | The following example shows a possible claim of discoverability.
253 | <meta
254 | property="dcterms:conformsTo"
255 | id="conf">
256 | EPUB-A11Y-11_DISCOVERABILITY
257 | </meta>
258 |
259 |
260 | This approach would also rely on the publisher providing a link to a report to explain their actual
261 | conformance, or lack of, so has the same drawbacks as above. Its only advantage relative to that
262 | approach is that it disambiguates publications publishers have checked against the EPUB
263 | Accessibility specification from those they have not.
264 |
265 |
266 |
267 | Wait for WCAG 3
268 |
269 | The final option is to not try to solve this problem for [[WCAG2]] and wait on the development of
270 | WCAG 3, the next major version. It is expected that WCAG 3 will provide a scoring model for
271 | publications that will allow for some tolerance of minor issues. In this model, if issues are found
272 | after the fact, they would not necessarily invalidate the conformance claim if they are minor in
273 | nature.
274 |
275 | The obvious drawback of this approach is that relies on the current status quo being palatable to
276 | publishers until development of WCAG 3 is complete and its adoption widespread. The assumption here
277 | is that there is already a level of tolerance in the market for minor issues in content that claims
278 | conformance to [[WCAG2]] so publishers should not be overly concerned about their content being
279 | perfect.
280 |
281 |
282 |
283 | The disclaimer
property
284 |
285 |
286 | Definition of disclaimer
property
287 |
288 | Name:
289 |
290 | disclaimer
291 |
292 |
293 |
294 | Namespace:
295 |
296 | http://www.idpf.org/epub/vocab/package/a11y/#
297 |
298 |
299 |
300 | Description:
301 | Describes any potential limits on the claim made in the dcterms:conformsTo
property [[EPUB-A11Y-11]].
304 |
305 |
306 | Allowed value(s):
307 |
308 | xsd:string
309 |
310 |
311 |
312 | Cardinality:
313 | Zero or one
314 |
315 |
316 | Extends:
317 |
318 | dcterms:conformsTo
319 |
320 |
321 |
322 | Example:
323 |
324 | <meta
325 | property="dcterms:conformsTo"
326 | id="conf">
327 | EPUB-A11Y-11_WCAG-21-AA
328 | </meta>
329 | <meta
330 | property="a11y:disclaimer"
331 | refines="#conf">
332 | This publication has been checked to conform to
333 | WCAG 2.1 AA to the best of the publisher's
334 | abilities …
335 | </meta>
336 |
337 |
338 |
339 |
340 |
341 |
342 |
--------------------------------------------------------------------------------
/epub-a11y-meta-guide/1.0/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | EPUB Accessibility Metadata Guidelines
5 |
6 |
7 |
8 | The latest version of this guide is at ./draft/index.html
9 |
10 |
--------------------------------------------------------------------------------
/templates/cg-note.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Title
6 |
7 |
33 |
34 |
35 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/w3c.json:
--------------------------------------------------------------------------------
1 | {
2 | "group": [100074,"wg/pm"]
3 | , "contacts": ["iherman"]
4 | , "repo-type" : "article"
5 | }
6 |
--------------------------------------------------------------------------------