WebAIM - Web Accessibility In Mind

E-mail List Archives

Re: VoiceOver and PDF table headers... again


From: Elizabeth Thomas
Date: Aug 31, 2021 2:58PM

Another option is to add the text (by going into edit PDF and then adding it as text). Make it the same color as the cell fill color so that it's "invisible." Then tag that text (either by running a search for untagged content or using the "tool of last resort"- the reading order tool) and put it in the appropriate table header cell. Bonus: you then get the fun challenge of trying to tag text you can't see.

Ordinarily, I wouldn't recommend using this type of solution as it can cause problems down the road (e.g. someone works on the file two years from now and doesn't know there's hidden text that is serving an important function). But, I think in this case, it's a reasonable hack.


Sent from my iPhone

> On Aug 31, 2021, at 9:53 AM, Laura Roberts < <EMAIL REMOVED> > wrote:
> 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> >
>> wrote:
>> 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