WebAIM - Web Accessibility In Mind

E-mail List Archives

Re: VoiceOver and PDF table headers... again


From: Laura Roberts
Date: Aug 31, 2021 7:53AM

Even though it's 3 rows of headers, you should still be able to make that
work in Acrobat without flattening anything. I've dealt with worse.
Go into properties for each header cell (not data cells) and assign an ID
so you can easily identify which header cell you are setting the properties
for in the TURO table editor.
Set all spans to column, set annual average return to 3 columns, 1 row
span; set 1 year to 2 columns, 1 row span, etc.

As to your question, I view "actual text" as a necessary evil, but I avoid
it as much as possible. I don't like the way that JAWS no longer highlights
text when reading actual text and it takes away some JAWS abilities from
the end user. However, I understand where you're coming from with clients
who will not let you change the source document (or don't have it).
Sometimes you do what you gotta do.

On Mon, Aug 30, 2021 at 6:01 PM Alan Zaitchik < <EMAIL REMOVED> >

> I've troubled you all in the past on related issues, but this one really
> surprised me.
> I'm working on a table with terribly complex column headers, without the
> option of refactoring it into simpler tables. As expected, VO and to a
> lesser extent NVDA could not digest the "colspanning" and "rowspanning" of
> the headers. I came up with what I thought was a brilliant workaround: I
> can flatten the headers into just one row without changing the appearance
> of the table, if I use "Actual Text" to simply "inject" the parent and
> ancestor header text into the remaining column header.
> Simplified Example: "Average Annual Return" sits atop both "1 year" and "2
> year" and "3 year" column headers. Each of these sits above 2 column
> headers: "As a %" and "Per $1000". What I did was collapse the 3 rows into
> one by "artifacting" the top 2 rows (the "Average Annual Return" row and
> the "1 year" and "2 year" and "3 year" row) and assigning as the Actual
> Text for the 6 remaining column headers (previously row 3, now row 1):
> "Average Annual Return, 1 year, as a percent"
> "Average Annual Return, 1 year, per $1000"
> "Average Annual Return, 2 years, as a percent"
> "Average Annual Return, 2 years, per $1000"
> "Average Annual Return, 3 years, as a percent"
> "Average Annual Return, 3 years, per $1000"
> Yes, a little verbose and repetitive, but everything reads out correctly
> in JAWS and NVDA, as I navigate the table.
> The trouble is with VoiceOver. Navigating through the column header row,
> or navigating through the data rows, VO reads out the visible text in the
> column header cell ("1 year", "2 years", and "3 years"), ignoring the
> Actual Text entirely.
> Well, not entirely entirely. I added a dagger symbol to one of the column
> headers, wrapped it in a <Span>, and gave it an Actual Text value of "See
> important dagger note following table". (Please ignore the barbaric
> wording.) And Voice Over gladly read it out as "1 year See important dagger
> note following table". So Voice Over can handle Actual Text replacement in
> this case.
> What Is going on? Does VO do Actual Text replacement for a single
> character only?
> And another question: if I get the above scheme to work well with JAWS and
> NVDA, and if VO is at least able to read the visible column header text
> with the data values, would that count as "accessible enough"? (I realize
> the latter question is contentious….)
> Alan
> > > > >

Best regards,
Laura Roberts