Affinity by Canva Accessible PDF Output Test v2

Just a brief update to my prior Affinity by Canva Accessible PDF Output Test post. As Affinity recently updated to v3.0.2, I ran the test again.

The results are nearly identical; the only change I noticed was a regression: The footer text on the master page now appears once at the very bottom of the tag tree instead of being properly artifacted out. In the prior version of this test using Affinity 3.0.1, the footer text was properly omitted from the tag tree.

Updated versions of the test file and output may be downloaded if you’d like to play along at home:

Weekly Notes: January 5–11, 2026

  • Made it through the first week of the quarter! It was definitely a busy week, but nothing major exploded, so I’ll count that as a success.

  • Saturday night we went out to see one of the 40th anniversary theatrical showings of Labyrith. I don’t remember seeing it in the theater when it came out — I would have been 12, so right in the target range, but I have no memory of doing so — and it was a real treat to be able to do this. It holds up well!

  • Sunday we headed up to Seattle’s Cal Anderson Park for one of this weekend’s “ICE Out for Good” rallies. I’ve uploaded my full photo set to Flickr, as usual.

📸 Photos

Protest sign that says, ''the officer feared for his life' is so funny to me, because as a woman, if I shot a man in the face every time I've felt afraid, the streets would be lined with bodies'.
From today’s protest rally.
Protest sign that says, 'so much wrong, so little cardboard'.
Another good one.

📺 Watching

  • Labyrinth (1986), as noted above.

🔗 Linking

  • Niki Tonsky: It’s hard to justify Tahoe icons: “The main function of an icon is to help you find what you are looking for faster. ¶ Perhaps counter-intuitively, adding an icon to everything is exactly the wrong thing to do. To stand out, things need to be different. But if everything has an icon, nothing stands out.”

  • Casey Newton at Platformer: Debunking the AI food delivery hoax that fooled Reddit: “For most of my career up until this point, the document shared with me by the whistleblower would have seemed highly credible in large part because it would have taken so long to put together. Who would take the time to put together a detailed, 18-page technical document about market dynamics just to troll a reporter? Who would go to the trouble of creating a fake badge? ¶ Today, though, the report can be generated within minutes, and the badge within seconds.”

  • Stefano Marinelli: The Virtue of Finished Things: “I received an email yesterday morning. It was a thank-you note for one of the open-source tools I created and maintain. The sender explained how useful the software was for their specific needs, and as always, this brought me an immense sense of satisfaction. ¶ But at one point in the email, a question appeared – one that has become a recurring theme in the modern software world: ‘I notice there haven’t been any new releases for about ten months. Should I consider the project abandoned?'”

  • Teresa Duryea Wong at Quiltfolk: One Year After an Uncomfortable Choice for Best in Show: “This is a protest quilt. It was made by an artist whose day job puts her on the front lines of one of the most grotesque realities in America today. She is a teacher. ¶ What We Will Use as Weapons: A List of School Supplies is the title for this provocative work of art that features school supplies hurling toward the center on the front and an assault rifle on the back. This long, narrow quilt is the actual size and shape of a door. An outline of a human is stitched through the layers. On the front, the person is meant to represent a shooter, and on the reverse side, a teacher.”

  • Jacquelyn Jimenez Romero at the South Seattle Emerald: A Fistful of Loud: Seattle Neighbors Build Whistle Kits to Protect Immigrants From ICE: “‘By making noise, you bring visibility to what is happening on the street,’ said Kate Macfarlane, who started the WA Whistles project. ‘ICE relies on shock tactics and moving in very quickly … it turns [an] otherwise pretty silent abduction into a loud, highly visible opportunity for neighbors to rally.'”

  • WA Whistles: “Our purpose is to spread whistles throughout WA to help communities protect themselves against ICE.”

  • Joseph Cox at 404 Media: DHS Is Lying To You (archive.is link of a paywalled original): “At least four videos show what really happened when ICE shot a woman in Minneapolis on Wednesday. DHS has established itself as an agency that cannot be trusted to live in or present reality.”

  • Melissa Turniten at Fox9 KMSP: Minneapolis ICE shooting: Eyewitness accounts contradict ICE statement: “Minneapolis Mayor Jacob Frey calls the claim the shooting was self-defense ‘bullshit’ and is a ‘garbage narrative’ after seeing video of the shooting. Minnesota Gov. Tim Walz has also seen the video, saying ‘Don’t believe the propaganda machine. The state will ensure there is a full, fair, and expeditious investigation to ensure accountability and justice.'”

  • Jennifer Mascia at The Trace: How Many People Have Been Shot in ICE Raids?: “Using Gun Violence Archive data and news clips, The Trace has identified 16 incidents in which immigration agents opened fire and another 15 incidents in which agents held someone at gunpoint since the crackdown began. At least three people have been shot observing or documenting immigration raids, and five people have been shot while driving away from traffic stops or evading an enforcement action.”

  • Joseph Cox at 404 Media: Inside ICE’s Tool to Monitor Phones in Entire Neighborhoods (archive.is link of a paywalled original): “A social media and phone surveillance system ICE bought access to is designed to monitor a city neighborhood or block for mobile phones, track the movements of those devices and their owners over time, and follow them from their places of work to home or other locations, according to material that describes how the system works obtained by 404 Media.”

  • Andy Greenberg and Lily Hay Newman at Wired: How to Protest Safely in the Age of Surveillance: “Two key elements of digital surveillance should be top of mind for protestors. One is the data that authorities could potentially obtain from your phone if you are detained, arrested, or they confiscate your device. The other is surveillance of all the identifying and revealing information that you produce when you attend a protest, which can include wireless interception of text messages and more, and tracking tools like license plate scanners and face recognition. You should be mindful of both.”

  • Joanna Kavenna at The Guardian: Mass surveillance, the metaverse, making America ‘great again’: the novelists who predicted our present: “From Jorge Luis Borges to George Orwell and Margaret Atwood, novelists have foreseen some of the major developments of our age. What can we learn from their prophecies?”

  • Ari Anderson at The Stranger: What I Learned About the Future at Seattle WorldCon: “Like the standing on threshold of a cosmic portal, Seattle’s convention center buzzed with bards, fae, aliens, monsters, warriors and spaceships, far away planets and misty forests, innumerable stories of heartbreak and triumph, all tantalizingly within reach between the covers of a thousand books.”

  • Elizabeth Lopatto at The Verge: Tim Cook and Sundar Pichai are cowards: “Since X’s users started using Grok to undress women and children using deepfake images, I have been waiting for what I assumed would be inevitable: X getting booted from Apple’s and Google’s app stores. The fact that it hasn’t happened yet tells me something serious about Silicon Valley’s leadership: Tim Cook and Sundar Pichai are spineless cowards who are terrified of Elon Musk.”

  • Julia Shumway at the Washington State Standard: Federal judge blocks Trump election order, siding with Oregon, Washington: “A federal judge in Washington state on Friday permanently blocked the Trump administration from enforcing a 2025 executive order that sought to require voters prove citizenship and that all ballots be received by Election Day.”

Weekly Notes: December 29, 2025–January 4, 2026

Happy holidays (part two)!

Well, we wrapped up 2025…and as happy as we were to see 2025 end, 2026 is already looking to keep the dumpster fires burning bright.

At work, the week was fine. Back in the office this week, though as it was still in the holiday break, it was another pretty slow week. Next week classes start, so things will pick back up again. The slowdown is always nice, but it’ll also be good to have things back to normal after the holidays.

Here at home, we had a nice quiet New Year’s Eve. It was even a bit quieter than we expected, as there weren’t as many local unsanctioned fireworks as there have been in years past.

Out in the wider world, though, we all woke up one morning just a few days into the year to discover that the US had invaded Venezuela and abducted its president and his wife. Because…sigh. We are continuing to speed run becoming everything as a country that I was brought up being told that we weren’t. And even though the older I get and the more I learn, the more obvious it is how far we always have been from the ideals we claimed to uphold, it’s still mind-boggling to be where we are now.

As I said on Mastodon: “I’m confused: Is being a brown-skinned person accused of being involved with drugs something that gets you kidnapped and forcibly kicked out of the country or kidnapped and forcibly brought into the country?”

Though really, after what we saw of Trump in his first term and so far in his second, the only thing that’s really surprising me about all of this is how many people are just…going along with it (most notably Congress — especially, but not at all limited to, the Republican party — and the Supreme Court). The system of checks and balances has apparently given up trying to either check or balance, and that’s perhaps the most troubling part of all of this.

📸 Photos

My wife's outstretched arms hold an iPhone taking a selfie, with her smiling face and me holding up my camera in front of my face visible on the iPhone's screen.
Got this really cute shot of Prairie getting a selfie of us as we were on an evening walk on the last day of 2025.
Selfie of me, a white man with greying red beard, weraing glasses and a black coat and hoodie with the hood up, and my wife a white woman with wavy blonde hair and glasses, both of us smiling.
And then this selfie on our first walk of 2026, during which I discovered that my new camera has an automatic selfie mode with a short timer that is activated when you flip the screen out and backwards.

📝 Writing

This week I recorded my responses to the current SFWA survey on AI use in the SFF writing/publishing industry, did my annual reading wrap-up for the year, and posted my resolutions for this year.

📚 Reading

Finished my last book of the year, Rough Trails by L.A. Graf, and my first book of the year, Thin Air by Dean Wesley Smith and Kristine Kathryn Rusch, both parts of a six-book TOS-era Star Trek series.

📺 Watching

We watched two movies over the weekend:

🔗 Linking

NOTE: For regular readers (assuming there are any), a bit of clarification on how I link some items: I use archive.is for pages on sites that are paywalled (including sites that will only show content if adblockers are disabled) and for Substack pages (because Substack is another Nazi bar). Starting with this week’s post, I will also include links to the original pages, as not everyone has the same attitudes as I do about these things and may have subscriptions to the sites in question, not be as annoyed as I am at dealing with paywalls, ads, and the like, or have either accepted Substack as a “necessary evil” or are unaware of their problematic practices.

  • National Society of Tax Professionals: USPS Announces Changes to the Postmark Date System: “…while a postmark confirms the USPS possessed a mail piece on the date inscribed, that date does not necessarily align with the date the USPS first accepted possession of the item.” Potentially impactful in a number of important scenarios, including voting by mail. Undated informational page, but the rule took effect in November 2025.

  • Foz Meadows: Against AI (archive.is link of Substack original): “AI is unethical on a scale that SFF authors should be uniquely placed to appreciate, its evils mirroring metaphors that are older than our present civilization. AI is the cursed amulet, the magic mirror, the deal with the devil, the doppelganger that learns our secrets and steals our face; it’s a faerie illusion, leprechaun gold, the fox’s trick that gives rot the look of resplendence, the naked emperor parading with his cock out; it’s the disembodied voice that whispers let me in, the zombie virus that transforms the known into the unrecognizable, the corrupting fungi whose tendrils invade and poison. It’s the literal fucking One Ring, telling us that of course we’d use its power for good, compelling us to pick it up so that through us, it might do great evil.”

  • Chuck Wendig: My Open Letter to That Open Letter About AI in Writing and Publishing: “AI IS NOT INEVITABLE. ¶ The only strategy here is the sum total pushback against its uncanny horrors and its non-consensual intrusion into every corner of our world — it steals our content, guzzles our water, increases our power bills, is crammed into services we didn’t ask for it to be crammed into while also charging us more money for the “privelege.” There is no strategy here except to find the fields where the AI grows and metaphorically set them aflame. ¶ And shame and anger against corporate overreach is a powerful fire.”

  • Trekorama!: 3D walkthroughs of locations on various Star Trek ships, including the Enterprise 1701 (main bridge), 1701-D (main bridge, engineering, sick bay, Ten-Forward, transporter room, Picard, Data, Troi, and Worf’s quarters, and a shuttle), 1701-E (bridge), and Kelvinverse version (bridge and corridor), Defiant (deck one), Voyager (deck one, sickbay, transporter room, engineering, mess hall), Discovery (bridge, transporter room, mess hall, and corridor), and Klingon Bird of Prey (bridge), plus the real-world ISS.

  • David Reamer at the Anchorage Daily News: Termination dust: Its history, evolution in meaning and possible origin (archive.is link of a paywalled original): “…the history and evolution of termination dust as a turn of phrase offers education, enlightenment and entertainment. Over the decades, there have been changes in meaning and connotation. Throughout those years, it remains a significant detail of local history, a widely recognizable bit of slang whose lore maps closely against that of the town itself.”

  • Robin Young and Emiko Tamagawa at WBUR: ‘Wake Up Dead Man’: Rian and Nathan Johnson on blending mystery and faith in new ‘Knives Out’ movie: Brief but interesting interview touching on the religious motifs in Wake Up Dead Man.

  • John Scalo: Was Daft Punk Having a Laugh When They Chose the Tempo of Harder, Better, Faster, Stronger?: “I think our helmet-clad robot friends might have been making a little joke that we’ve apparently all missed. The BPM of Harder, Better, Faster, Stronger is actually 123.45.” Fun bit of music trivia, plus a bit of a peek at the difficulties of having a computer do something that seems relatively easy for humans; in this case, determining a song’s tempo.

Answering the SFWA’s Survey on LLM Use in Industry

While I’m not an SFWA member or even an author (beyond this little blog), as a lifelong reader of science fiction, I figured it was worth a few minutes to add my response to their current Survey on LLM Use in Industry. For the sake of posterity, here are my responses:

  1. I am a…
    • SFWA member in good standing (“Active”)
    • lapsed SFWA member
    • writer considering SFWA for future membership
    • ✅ member of the general public
  2. I create SFF in the following forms (choose as many as apply)
    • short fiction
    • longform fiction
    • poetry
    • comics / graphic novels
    • video games
    • analog games
    • film, theatre, and/or TV
    • nonfiction
    • ✅ I’m a reader/player of SFF.
  3. Has any of your writing been identified as part of stolen data sets in AI-related industry crises?
    • Yes, and I am part of a certified class action.
    • ✅ Yes, and I am not eligible for most/any class actions.
    • No, but people in my circles have been directly impacted.
    • No, but this issue remains a pressing concern.
    • I don’t know.

    (Note: Some time ago there was an online tool to look up sources that were used in one of the earlier revisions of one of the larger LLMs; I don’t currently remember who offered the tool or the specifics of the training database being reviewed. I do remember that both this blog and the Norwescon website, of which I’ve been both author and editor of much of the content for the past 15 years, were included in the training database.)

  4. How has your writing practice changed since the emergence of Generative AI and related LLM integrations?

    • ✅ I proactively turn off every new AI feature I can.
    • ✅ I switch away from writing tools that promote AI integrations wherever possible.
    • ✅ I avoid search engines and other summary features that rely on AI.
    • ✅ I accept AI features selectively, avoiding or switching off all the Generative AI tools I can identify, while leaving translation, spelling and grammar, and/or research assistants mostly intact.
    • I engage with AI chat features to brainstorm story elements, and/or for research questions of relevance to my writing.
    • I have used Generative AI for the development of story plots, characters, and/or scene construction.
    • I’m not a writer or editor.

    (Note: The first and fourth of these options seem to contradict each other. For clarity, I either disable or, if it can’t be disabled, actively avoid using generative AI; as noted in the sidebar of this blog, I do use machine-learning/LLM-based tools such as speech-to-text transcription, but when I do, I check and edit the output for accuracy.)

  5. Which of the following most closely resembles your position on the use of Large Language Models (LLMs) in the writing process?

    • ✅ There is no ethical use-case for writers, because this technology was developed through piracy and/or continues to negatively impact environmental systems and marginalized human beings.
    • Putting aside the historical and environmental issues, Generative AI needs to be approached differently from other LLMs, because other forms of LLM sometimes show up in tools (e.g., spell-check, grammar-check, translation software) that are normal parts of a writer’s workflow.
    • The use of any AI system for any part of the writer’s workflow that is not the writing itself (so, including brainstorming and research phases) is perfectly fine. It is only the words on the page that matter.
    • There are cases where the use of Generative AI for active storytelling might be a critical part of the story we want to tell, so it’s really a case-by-case determination.
    • Some writers are working for companies that make choices about AI without their involvement in the decision-making process, and this matters when deciding how we respond to the presence of AI in their work as individual creators.
    • I am not opposed to the use of LLMs in any capacity in the creative process.
  6. Tell us more about where you agree with or deviate from the statement you chose above.

    My actual answer is probably somewhere between the first (no ethical use-case) and second (recognizing LLM use in some tools) options.

    One of the biggest problems with the current discussions (including this survey and in the File770 threads started off of Erin Underwood’s open letter) is the grouping of several related but distinct technologies under the banner term of “AI”.

    Machine learning and LLM-backed analysis models are one thing. These are the technologies that have been used for years in many different contexts, including (some) spelling and grammar checkers, speech-to-text transcription, simple text-to-speech generation (suitable for screen readers and similar applications, not for audiobook creation), medical analysis, and so on. These are analytical or simple transformative, not creative, processes. In all cases, though, the output should be reviewed and checked by humans, not accepted as-is by default.

    Generative AI (genAI) is the severely problematic aspect, for all the reasons mentioned by many, many people advocating for its avoidance (the many unethical practices in the creation and ongoing use of the technology, social and environmental costs, high error rates, and many more).

    It’s unfortunate that all of these aspects are now grouped together as “AI”, as it makes it nearly impossible to approach the subject with any amount of nuance. I suspect that was what Ms. Underwood was attempting to do, though, as she also falls victim to the same confusion, she sorely missed the mark (and has continued to do so in her responses).

    As a reader, I would be very disappointed to see the Nebulas (and any other award) accepting the use of genAI in the creation of nominated (let alone awarded) works.

    (Note:: I wrote about the machine learning vs. genAI confusion on this blog earlier this year.)

  7. What forms of guidance do you think would most benefit writers trying to navigate the growing presence of LLMs in our industry?

    • ✅ Informational pages on SFWA.org explaining key terms and use-cases.
    • ✅ Articles on how to recognize and navigate forms of LLM in writing tools, and where to look for alternatives.
    • ✅ Full bans on any and all AI use in submissions and nominations processes, with consequences for failure to disclose.
    • ✅ Bans on Generative AI in submissions and nominations processes, with clear and severe consequences for failure to disclose.
    • ✅ Market reports that explicitly set a rigid bar for inclusion based on the publication’s commitment to not working with AI.
    • Other (please elaborate below).
  8. [Continued] What forms of guidance do you think would most benefit writers trying to navigate the growing presence of LLMs in our industry?

    Clarity in defining the differences among the technologies and determining which may be acceptable (such as speech-to-text transcription, spell/grammar checkers, etc.,) depending on the technology and its use, and which are unacceptable (genAI for text or art creation).

Weekly Notes: November 17–23, 2025

  • Lots of meetings at work this week, including a quarterly exempt staff meeting, a leadership group meeting, and I lead this quarter’s accessibility liaisons group meeting. Definitely kept the week busy. And on top of that…

  • Possibly the biggest thing this week was that Tuesday night was the public debut of Highline’s exempt staff unionizing efforts. There has been a lot of organizing quietly going on for close to a year now, I found out a few months ago, and we’d hit the point where we had a strong majority of verbal support, so we had a dinner gathering and officially started signing authorization cards. Within 24 hours we had “yes” votes from 65% of the exempt staff, and by Friday, we had broken 70% in favor. This coming week we’ll be turning in the cards and submitting the formal paperwork to Washington’s Public Employment Relations Commission (PERC) for recognition. It’s all pretty exciting!

📸 Photos

An AFT Washington Representation Authorization card with a pen next to it, sitting on a white marble tabletop.
About to sign my “yes” vote for unionizing.
Me, wearing a black cap and short-sleeve button-up shirt with mid-century modern sci-fi designs, droping my authorization card into a black metal mailbox.
Dropping my signed card into the collection box.

📺 Watching

The Family Plan 2 (2025): Nothing groundbreaking, a little predictable, and as with many sequels, not quite as good as the first, but a perfectly enjoyable afternoon diversion.

🔗 Linking

  • Victor Tangermann at Futurism: Town’s Huge Christmas Mural Was Generated Using AI, Resulting in Ghastly Chthonic Horrors: “‘It looks like a refugee camp/Christmas market mashup. I guess the prompt was “Reform Christmas nightmare,”‘ one user wrote. ‘They didn’t stop the boats… or the mutant dogs and two-headed snowmen.'”

  • Sagar Naresh at Slashgear: 5 Reasons You Might Want To Stop Using HDMI Cables: This one’s mostly just for me, as I’ve never really known the reasons to go with DisplayPort over HDMI.

  • Lionsgate: Dogma 4K Steelbook®: If you’re a Kevin Smith fan, you may appreciate knowing that Dogma, long out of print, is finally getting a new pressing on 4K/Blu-ray, and is now available to pre-order.

  • Anthony Moser: I Am An AI Hater: “I am here to be rude, because this is a rude technology, and it deserves a rude response. Miyazaki said, “I strongly feel that this is an insult to life itself.” Scam Altman said we can surround the solar system with a Dyson Sphere to hold data centers. Miyazaki is right, and Altman is wrong. Miyazaki tells stories that blend the ordinary and the fantastic in ways people find deeply meaningful. Altman tells lies for money.”

  • Justin Chang at The New Yorker (archive.is link): “Wicked: For Good” Is Very, Very Bad: “In the second of two movies adapted from the Broadway musical, Ariana Grande and Cynthia Erivo battle fascism, bigotry, and some fairly dreadful filmmaking.”

  • Aisha Down at The Guardian: ‘We could have asked ChatGPT’: students fight back over course taught by AI: “Students at the University of Staffordshire have said they feel ‘robbed of knowledge and enjoyment’ after a course they hoped would launch their digital careers turned out to be taught in large part by AI.”

  • At Phys.org (byline of Catholic University of the Sacred Heart, edited by Gaby Clark, reviewed by Robert Egan): The Batman effect: The mere sight of the ‘superhero’ can make us more altruistic: “‘In the first part of our test (control condition), an experimenter, apparently pregnant, boarded the train with an observer.’ The experts assessed the passengers’ tendency to give up their seats for the pregnant woman. ¶ In the experimental condition, another experimenter dressed as Batman entered the scene from another door of the train. Faced with this unexpected encounter, passengers were significantly more likely to offer their seats: 67.21% of passengers offered their seats in the presence of Batman, or more than two out of three, compared to 37.66% in the control experiment, or just over one out of three.”

  • Tom Forsyth on Mastodon: “Recent discussion about the perils of doors in gamedev reminded me of a bug caused by a door in a game you may have heard of called ‘Half Life 2’. Are you sitting comfortably? Then I shall begin.”

Affinity by Canva Accessible PDF Output Test

The Affinity by Canva splash screen over an Adobe Acrobat window with an open PDF document.

With the release of Affinity by Canva, I was curious how they were doing on supporting creating accessible PDF output. A very quick cursory initial check showed some hopeful signs, but I wanted to take a more detailed look, so I’ve put together a brief test document to check some of the more common document features. This isn’t at all meant to be all-encompassing and comprehensive; it’s just what popped to mind as I was experimenting. My hope is to occasionally update this as I think of more test cases (or have more test cases suggested to me) and as Affinity is updated.

More details are in the document itself, but in brief, I set up several test cases using various Affinity features, exported to tagged PDF, and checked the PDF in Acrobat to see how things looked.

If you’d like to play along at home, you can download the source .af document (5 MB .zip) and the exported .pdf document (721 KB .pdf) to review yourself and otherwise do with as you wish under a Creative Commons BY 4.0 license.

The executive summary TL;DR: Canva/Affinity is making improvements, but Affinity in its current state is definitely not ready to be a replacement for Adobe InDesign. If you’re an Affinity die-hard and have the time and resources to do remediation work in Acrobat Pro or using a tool like CommonLook, you could certainly go that route, but don’t expect to be able to export an accessible PDF from Affinity just yet.

1/15/2026 Update: Testing with Affinity v3.0.2.3912 reveals no improvements and one regression.

I do want to be clear that none of this is to say that Affinity is “bad” or shouldn’t be used; on the contrary, I’m looking forward to using it as much as I can (for experimentation and any print-only work I do). This is all intended to encourage Canva/Affinity to continue working on this aspect of their software.

Test Case 1: Paragraphs

Result: Fail. Any paragraph that is more than one line gets one P tag for every line, rather than one P tag for the entire paragraph. In addition, if there are any deviations from the base style (using character styles, manual formatting, adding hyperlinks, etc.), all of those end up in their own individual P tags instead of being wrapped in Span tags inside the P tag.

Test Case 2: Headings

Result: Pass (with qualifications). When creating styles, PDF (and EPUB) export tagging can be assigned — as long as you only need P or H1 through H6; no other tags (like BlockQuote, for example) can be assigned to styles. Within that, though, text given a heading style does export with the correct tag…but once again, if the heading spans more than one line, it ends up being two H1 (or whatever level) tags rather than one.

Test Case 3: Images

Result: Pass/Fail (yes, both).

Pass: Images can be placed inline or floated; if floated, they can be anchored within text. Alt text can be assigned various ways, either manually or (in theory, I didn’t test this) automatically pulled from the image’s XMP metadata. The alt text pane also supports adding extended description and summary text, though I haven’t played with these fields yet. Alt text is correctly added to the Figure tag in the PDF.

Fail: Though the images were placed inline with the text in the document, the Figure tag was placed at the end of the content for its parent text frame rather than at the proper place within the text.

Test Case 4: Lists

Result: Fail. Lists are tagged as paragraphs, without any L or child LI, LBL, or LBODY tags.

Test Case 5: Languages

Result: Fail. I could not find any way to designate a base language for the document as a whole. Character and paragraph styles can be given a language setting, but (in addition to the character style being tagged as a new P rather than a Span within the paragraph) the language is not set in the tag properties.

Test Case 6: Tables

Result: Fail. Simple tables can be added and their visual presentation can be adjusted, but I found no way to set header rows or columns. Tables also cannot be given alt text (at least, not with the same Tags pane used to add alt text to images).

The table was not tagged with any Table or child TR, TH, or TD tags, just a lot of P tags. In addition, though the table was inline with text later in the document, it was placed as a Sect at nearly the top of the document, the first tags underneath the opening H1 tags.

Test Case 7: Table of Contents

Result: Fail. Affinity can automatically generate a table of contents from the header styles used in a document. However, the exported PDF does not use any TOC or associated child tags; every line of the table of contents is a P tag followed by a Link tag that contains two Link - OBJR tags, one for the text of the item and one for the page number.

Test Case 8: Reading Order

Result: Pass (with qualifications). Affinity has a Reading Order panel which allows you to rearrange items, group items together into articles, and toggle items off and on, and this does properly affect the tags in the exported PDF. In an earlier test document (not publicly distributable), I was easily able to put all of the objects in their correct reading order. However, in this test document, the images (which are placed inline with the text, and therefore within a text frame) don’t appear in the reading order panel, and as noted above, don’t have their Figure tags placed in the correct location.

Test Case 9: Master Pages

Result: Pass. My test document had master pages set up with footer text; this text was properly excluded (artifacted) in the PDF.

Test Case 10: There is no test ten…

…because I ran out of ideas right then. But more can be added! When I have time, I want to add more objects to play with the reading order pane more, explore Affinity’s footnotes/index/reference support (which at this point I don’t expect to be tagged correctly, but maybe someday), and there are probably plenty of other things that more experienced accessibility and/or document creation professionals might think of.

Conclusion

As noted in the TL;DR up top, Affinity is a long way away from being able to replace InDesign when it comes to creating accessible PDFs.

That said — they’re working on it! This is more support than the last version of Affinity had, and there are more signs here and there that more may be in development. For example, while I was looking for a way to specify a base document language, I checked the File > Document Metadata option, and it’s a series of checkboxes and fields for specifying exactly which accessibility features a document supports, its conformance level, a certifier’s name and credentials, and so on. (The actual basic document metadata, including title, author, copyright info, etc., can be set with the Window > References > Fields pane, and does get properly added to the exported PDF.)

While there’s certainly work to be done, I’m encouraged to see the features that have been added so far, and as noted above, want to encourage Affinity to continue working on this aspect of the app. I would love to be able to finally drop InDesign (as I dropped Photoshop and Illustrator years ago) and move entirely over to Affinity (well…entirely aside from Acrobat…).


Addendum: ePub output

Out of curiosity and a question on Mastodon (that I don’t actually think was directed at me, but that’s okay), I exported this test document to ePub format, using both the “fixed layout” and “reflowable” options. I then checked each file in both Thorium Reader and Apple’s Books app, and ran them through the Ace by DAISY ePub accessibility checker.

It should be noted that I did not change anything about the file for this test, and I created the document with PDF in mind, not ePub, so this may affect the results.

I’m not as experienced in checking ePub files, but a few notes:

Ace by DAISY reported errors with both documents. The fixed layout version had eight errors, three serious and five moderate; the reflowable version had 22 errors, one critical, 16 serious, and five moderate. The ePubs and Ace by DAISY reports may be downloaded for you to review. All downloadable files are .zip files that you’ll need to decompress — I know that ePubs are already zipped, but my WordPress configuration wouldn’t allow me to upload the .epub file.

The fixed layout version is much larger than the reflowable. I think that’s because the reflowable version seems to have scaled and compressed the photos in the document, while the fixed layout version left them at their original sizes. This may have been an export setting in Affinity that I didn’t adjust.

Neither document has bookmarks automatically defined.

The fixed layout version in Thorium using Thorium’s built-in reader reads the images outside of their placement in the text, instead speaking them at the beginning of the second page. The table on page three also gets read at the beginning of the third page. This does not happen with the reflowable version; images are read in their correct locations.

There’s an odd black square graphic that appears at the end of the Test 3 section in the reflowable version that is not present in the original Affinity file. I have no idea where this image is coming from.

Using Apple Books’s built-in reader, the reflowable version seemed to read properly, but the fixed layout version was missing large chunks of text.

With the aforementioned caveat that this document wasn’t created with ePub in mind, which may be affecting things, my first impression is that, as with PDF tagging, Affinity has some work to do with creating accessible ePub files. This is definitely an app that currently is much more aimed at visual presentation (whether print or electronic), with accessibility being an afterthought. Once again, I hope this improves over time as future versions are released.

Initial Thoughts on Affinity by Canva

I’ve been an Affinity Photo/Designer/Publisher user since sometime before 2019 (the first mention I can find here), and have recommended them to a lot of people as a less expensive but (nearly) equivalent alternative to Adobe’s Photoshop/Illustrator/InDesign suite of apps. Last year Affinity was acquired by Canva, which did not thrill me (I’m not a fan of Canva, as accessibility has never seemed to be a high priority for them, and remediating PDFs created by Canva users is an ongoing exercise in frustration), but at the time they pledged to uphold Affinity’s pricing and quality. All we could do at that point was wait to see what happened.

A few weeks ago, Affinity closed their forums, opened a Discord server, removed the ability to purchase the current versions of the Affinity suite of apps, and started posting vague “something big is coming” posts to their social media channels and email lists. Not surprisingly, this did not go over well with much of the existing user base, and we’ve had three weeks of FUD (fear, uncertainty, and doubt), with a lot of people (including me) expecting that Canva would taking Affinity down the road of enshittification.

Yesterday was the big announcement, and…

The Affinity by Canva startup splash screen.

…as it turns out, it looks to me at first blush that it doesn’t suck. The short version:

  1. Affinity Photo, Designer, and Publisher have been deprecated, all replaced with a single unified application called Affinity by Canva.
    1. The existing versions of the old Affinity suite (version 2.6.5) will continue to work, so existing users can continue to use those if they don’t want to update. In theory, these will work indefinitely; in practice, that depends on how long Canva keeps the registration servers active and when Apple releases a macOS update that breaks the apps in some way. Hopefully, neither of those things happens for quite some time (and if Canva ever does decide to retire the registration servers, I’d really hope that they’d at least be kind enough to issue a final update for the apps that removes the registration check; I don’t expect it, but it would be the best possible way to formally “end of life” support for these apps).
  2. Affinity by Canva is free.
    1. You do need to sign in with a Canva account. But you had to sign in to Affinity with Serif account, and Canva now owns Serif, so this isn’t exactly a big surprise for me.
  3. The upsell is that if you want to use AI features, you have to pony up for a paid Canva Pro account. Assumedly, they figure there are enough people on the AI bandwagon that this, in combination with Canva’s coffers, will be enough to subsidize the app for all the people who don’t want or need the AI features.
    1. “AI features” is a little vague, but it seems to cover both generative AI and machine learning tools.

    2. Affinity’s new “Machine Learning Models” preferences section has four optional installs: Segmentation (“allows Photo to create precise, detailed pixel selections”), Depth Estimation (“allows Photo to build a depth map from pixel layers or placed images”), Colorization (“used to restore realistic colors from a black and white pixel layer”), and Super Resolution (“allows pixel layers to be scaled up in size without loss of quality”). Of these, Segmentation is the only one that currently is installable without a Canva Pro account; the other three options are locked. The preferences dialog does have a note that “all machine learning operations in Affinity Photo are performed ‘on-device’ — so no data leaves your device at any time”.

    3. The Canva AI Integrations page on the new Affinity site indicates that available AI tools also include generative features such as automatically expanding the edges of an image and text-to-image generation (interestingly, this includes both pixel and vector objects).

    4. In the FAQs at the bottom of the integrations promo page, Canva says that Affinity content is not used to train AI. “In Affinity, your content is stored locally on your device and we don’t have access to it. If you choose to upload or export content to Canva, you remain in control of whether it can be used to train AI features — you can review and update your privacy preferences any time in your Canva settings.”

      1. If you, like me, are not a fan of generative AI, I do recommend checking your Canva account settings and disabling everything you can (I’ve done this myself). The relevant settings are under “Personal Privacy” (I disabled everything) and “AI Personalization”.
    5. I actually feel like this is an acceptable approach. Since I’m no fan of generative AI, I can simply not sign up for a Canva Pro account, disable the “Canva AI” button in Affinity’s top button bar, and not worry about it; people who do want to use it can pay the money to do so. I do wish there was a clearer distinction between generative AI and on-device machine learning tools and that more of the on-device machine learning tools were available without being locked behind the paywall; that said, the one paywalled feature I’d be most likely to occasionally want to use is the Super Resolution upscaling, and I can do that in an external app on the occasional instances where I need it.

So at this point, I’m feeling mostly okay with the changes. There are still some reservations, of course.

I’m not entirely sold on the “single app” approach. Generally, a “one stop shop” approach tends to mean that a program is okay at doing a lot of things instead of being really good at doing one thing, and it would be a shame if this change meant reduced functionality. That said, Affinity has said that this was their original vision, and they’ve long had an early version of this in their existing apps, with top-bar buttons in each app that would switch you into an embedded “light” version of the other apps for specific tasks, so it does feel like a pretty natural evolution.

A lot of this does depend on how much trust you put in Canva. Of course, that goes with any customer/app/developer relationship. I have my skepticism, but I’m also going to recognize that at least right now, Canva does seem to be holding to the promises that they made when they acquired Serif/Affinity.

Time will tell how well Canva actually holds to their promises of continuing to provide a free illustration, design, and publishing app that’s powerful enough to compete with three of Adobe’s major apps. Right now, I’m landing…maybe not on “cautiously optimistic”, but at least somewhere in “cautiously hopeful”.

Finally, one very promising thing I’ve already found. While I haven’t done any in-depth experimenting yet, I did take a peek at the new Typography section, and styles can now define PDF export tags! The selection of available tags to choose from is currently somewhat limited (just P and H1 through H6), but the option is there. I created a quick sample document, chose the Export: PDF (digital – high quality) option, and there is a “Tagged” option that is enabled by default for this export setting (it’s also enabled by default for the PDF (digital – small size) and PDF (for export) options; the PDF (for print), PDF (press ready), PDF (flatten), PDF/X-1a:2003, PDF/X-3:2003, and PDF/X-4 options all default to having the “Tagged” option disabled).

When I exported the PDF (38 KB PDF) and checked it in Acrobat, the good news is that the heading and paragraph tags exist! The less-good news is that paragraphs that go over multiple lines are tagged with one P tag per line, instead of one P tag per paragraph.

So accessible output support is a bit of a mixed bag right now (only a few tags available, imperfect tagging on export), but it’s at least a good improvement over the prior versions. Here’s the current help page on creating accessible PDFs, and hopefully this is a promising sign of more to come.

Weekly Notes: October 20–26, 2025

  • ♿️ Another quite busy week at work. Tuesday through Thursday mornings were the WAPED fall meeting; on various days this afternoon there were meetings with artists who are working with some of our visually disabled students on some tactile public art for the soon-to-open light rail station near the college, two training sessions on creating screen-reader accessible math equations in documents, and two public information sessions with a representative from the Secretary of State about Washington State’s accessible voting options.

  • Sunday afternoon, we went down to Federal Way to see the Grand Kyiv Ballet’s Snow White. It was cute! It was definitely solidly in the realm of “how close to Disney can we get without getting sued” territory, and it had more endings than Lord of the Rings (the audience was actually getting confused), but it was still an enjoyable performance and made for a good afternoon outing.

Reading

Finished two books this week: Matt Dinniman’s Dungeon Crawler Carl, and a Star Trek manga.

Listening

I indulged myself with a silly idea I had a few weeks ago, and created a 40-minute mix of mashups based on Depeche Mode’s “Just Can’t Get Enough”. Definitely a mix that will either really work for someone or drive them absolutely up the wall.

I also picked up two new albums on Saturday that I’ll start listening to into this coming week:

  • Synthetic. Facts. Eight, the latest in a compilation series from Infacted Recordings.

  • Astral Elevator, the first album from The Tear Garden (Edward Ka-Spel (The Legendary Pink Dots) and cEvin Key (Skinny Puppy)) since 2017. I was first introduced to The Tear Garden (and Legendary Pink Dots, for that matter) in the mid-90s, and I’m glad they’re still working on this project.

Linking

  • Pat Saperstein in Variety: Heaven 17 Plans New Version of ‘Fascist Groove Thang’ Calling Out Trump Instead of Reagan: ‘It’s Not Going to Get Any Less Relevant, Is It?’: “…the band plans to release an updated version of the song, which has become an unofficial anthem of the resistance to Donald Trump. At a recent protest sign-making party in Los Angeles’ Echo Park, it was part of the anti-fascist playlist that got neighborhood activists dancing. A few days later, the fast-paced, incredibly catchy ’80s standard could be heard blasting from speakers at the Downtown Los Angeles No Kings protest.”

  • Lisa Bonos at The Washington Post: Meet the people who dare to say no to artificial intelligence: “Some tech workers told The Washington Post they try to use AI chatbots as little as possible during the workday, citing concerns about data privacy, accuracy and keeping their skills sharp. Other people are staging smaller acts of resistance, by opting out of automated transcription tools at medical appointments, turning off Google’s chatbot-style search results or disabling AI features on their iPhones.”

  • Peter Wolinski at Tom’s Guide: How to disable Copilot in Windows 11: “Disabling Copilot in Windows 11 is a straightforward process, and this guide will walk you through the steps to do so.”

  • Mauro Huculak at Pureinfotech: 4 Quick ways to permanently disable Windows Recall on Windows 11: “Recall is designed to function as a photographic memory, powered by a local AI model, making it easier to locate past activities, including documents, websites, messages, images, and apps. […] Recall automatically takes snapshots of your screen at regular intervals (around every five seconds), which can capture sensitive information, such as private conversations, financial details, or personal images.”

  • Chanda Prescod-Weinstein: Knowledge is Worth Your Time: “What matters in your courses, even in many cases within your major, isn’t the topic. You’ll probably forget most of what you learn, especially if you don’t end up using it repeatedly in future. What you will always have, though, is the mind that taking the courses made.”

  • Anil Dash: ChatGPT’s Atlas: The Browser That’s Anti-Web: “OpenAI, the company behind ChatGPT, released their own browser called Atlas, and it actually is something new: the first browser that actively fights against the web. Let’s talk about what that means, and what dangers there are from an anti-web browser made by an AI company — one that probably needs a warning label when you install it.”

  • Margherita Bassi at Smithsonian Magazine: See This Year’s Hilarious Finalists From the Nikon Comedy Wildlife Awards, From Gossiping Leopards to Breakdancing Foxes: “Founded in 2015 by two professional photographers, the awards merge skillful wildlife photography with the “positive power” of humor to promote wildlife and habitat conservation, per a statement. The competition is free and open to novices, amateurs and professionals.”

  • Ella Glover at The Guardian: ‘I get to do whatever I want in the moment’: why more people are going to gigs, festivals and clubs alone: “Some research suggests that the average age of festivalgoers is increasing, and older people are still going out frequently, which may account for the increased number of people attending solo….”

macOS Tahoe Music (app) breaks shuffle

Sigh. Shuffle by Album seems to be broken in Apple Music (the app, not the service; what is it with companies giving their apps and services identical generic names?) under macOS 26 Tahoe.

After starting Music, if I go to my library’s Album view (that is, songs that are downloaded and stored locally), the shuffle icon in the new control bar appears to be glowing (with a bad effectThe left side of the audio control bar in Apple's Music player under Tahoe, with the shuffle icon highlighted in red with a very harsh, hard-edged glow with no fade. It looks really ugly.), but if you check options, through the menu bar, Controls > Shuffle shows “Off” and by “Albums”. If I switch that to “On”, I get about a two-second SPoD (Spinning Pizza of Death) — which seems really odd for an audio player on an M4 Mac Mini — before it responds again.

Pre-Tahoe, I could either hit “play” or double-click the “Albums” item in the Music app sidebar, and Music would randomly choose an album, play it through, then randomly play another album.

Now, If I hit the “play” control, Music starts playing the first album in however the album list is sorted; I usually keep my Album display sorted by year, so it always starts playing the oldest item in my collection (Victrola 88049, Enrico Caruso performing “Ideale (My Ideal!)”). If I double-click the “Albums” item in the sidebar, Music starts playing the first song of the first album sorted alphabetically by artist (for me, that’s “Take on Me” off of A-Ha’s Hunting High and Low). Either way, though the shuffle icon is still glowing, checking the menu bar’s Controls > Shuffle shows that that’s now set back to “Off”.

If I let it play as-is, it just plays through the album. If I set Shuffle back to “on”, then it start shuffling by song, not by album. Well…sometimes. Right now, I can’t get it to shuffle at all, even though Shuffle is turned on, both in the menu bar and with the glowing shuffle icon in the control bar.

Revised original line: Shuffle is either partially broken (only shuffling by song, not by album) or entirely (not shuffling at all), possibly randomly choosing (…shuffling?…) between the two options.

I know Apple’s gone all-in on their streaming Music service, but I really wish they still had a few people assigned to making sure they had a decent basic audio player. Music just gets worse and worse for those of us who have extensive non-streaming collections.

Environment:

  • M4 mini (2024, 16 GB)
  • macOS Tahoe 26.0.1
  • Music 1.6.0.151
  • 41,596 tracks on 4,044 albums (136.4 days, 317.43 GB)

Related question:

Are there any third-party audio players for macOS that write back metadata to the macOS Music library?

The biggest reason that I’ve stuck with Music is that I use its smart playlists to regularly update the playlists that live on my iPhone, so they’re regularly updated and the songs on them rotate around. (My regularly used playlists all have some variation of “exclude if listened to in the last two months” as one of their rules.)

As far as I know from past digging, no third-party audio players write metadata (esp. when last played) back to the Music library, so the smart playlists wouldn’t work anymore.

If there’s a good, functional audio player, especially if aimed at people who actually value listening to owned music rather than streamed, that plays nicely with the Music library metadata, I’d dearly love to know about it.

Weekly Notes: September 22–28, 2025

  • ♿️ We made it through the first week of fall quarter! It was a busy week, with a fair amount of tech troubleshooting for faculty, staff, and students, but on the whole, it went pretty well.

  • 🚀 The week was extra busy with a couple nights of evening Zoom calls, but the end result of one is that after fourteen years, I have finally turned over the social media manager position for Norwescon to someone else! I’m still on the team as an assistant/consultant/graphics person, but I’m not in charge anymore, which is a welcome step. (I didn’t mind doing it, but almost a decade and a half is a long time to be the primary online “voice” of the con, and I’m happy to let someone else with other ideas take over.)

  • 🎻 Today we went into Seattle to see Danny Elfman’s Music From the Films of Tim Burton with the Seattle Symphony. Music from 13 of the 17 films that Burton and Elfman have collaborated on, with a full symphony plus choir, and with a screen showing clips from the films interspersed with images of Burton’s character design sketches. Really well done, and the music was great. I was particularly pleasantly surprised with the section from Big Fish — I’ve seen it, but not anytime recently, and didn’t have any memory of the score, and it’s very different than Elfman’s other scores. I didn’t realize Elfman knew that there were that many major chords! ;)

📸 Photos

The Seattle Symphony on stage, with blue and purple lights on the walls, and a screen displaying a Tim Burton sketch of two bare trees on a checkerboard landscape and the text, 'Danny Elfman's music from the films of Tim Burton'.
The show about to start.
Looking south down the Seattle waterfront from the roof of the new aquarium with the skyline on the left and the Seattle ferris wheel on the right, with people strolling along the sidewalk by the old aquarium building.
Before going to the symphony, we went down to look at the newly remodeled Seattle waterfront. It’s really nice!
Panoramic shot of the Olympic mountains across Puget Sound, half-shrouded in clouds, under a mostly cloudly sky, with a ferry on the water on the far left of the image.
The Olympic mountains were really pretty this morning.
A section of brick wall and utility pipe barely visible behind hundreds of pieces of used, chewed gum, some stuck to the wall in blobs, some stretched to hang off of the pipes. It's actually more gross than it sounds.
It had been a while since we’d gone by the gum wall. It’s as appealing as ever! (My wife glanced up as I was working on this photo, and commented, “That’s disgusting. I looked up just in time to see my husband looking at dirty pictures on his computer…”.)

📚 Reading

🔗 Linking

  • Colin Nissan at McSweeney’s, with the perennial classic: It’s Decorative Gourd Season, Motherfuckers: “When my guests come over, it’s gonna be like BLAMMO! Check out my shellacked decorative vegetables, assholes. Guess what season it is—fucking fall. There’s a nip in the air, and my house is full of mutant fucking squash.”

  • Varsha Bansal at The Guardian: How thousands of ‘overworked, underpaid’ humans train Google’s AI to seem smart: “A great deal of attention has been paid to the workers who label the data that is used to train artificial intelligence. There is, however, another corps of workers, including Sawyer, working day and night to moderate the output of AI, ensuring that chatbots’ billions of users see only safe and appropriate responses. ¶ ‘AI isn’t magic; it’s a pyramid scheme of human labor,’ said Adio Dinika, a researcher at the Distributed AI Research Institute based in Bremen, Germany. ‘These raters are the middle rung: invisible, essential and expendable.'”