ThinkingType: how typography influences AI judgments and decisions
Does a VLM “read” a Comic Sans resume as unprofessional?
Will Danforth · Views are my own and not my employer’s · v1, last updated July 22nd, 2026.
Short answer: Sort-of. I built ThinkingType to measure how typography influences qualitative assessments (e.g. trustworthy, professional) and downstream decisions (“flag this policy violation,” “approve this resume”). Comic Neue (open source Comic Sans) at most flips “is this formal?” by up to +83pp versus plain Times, but I didn’t find a similar impact on “unprofessional-ness.”
My main findings:
- The biggest influence is whether the model reads words as text or an image: when I ran an image of the words (plain Times) instead of raw text, yes/no judgements flipped ~10%.
- This “modality effect” differs significantly across Claude and GPT, changing with each new generation.
- On top of these effects, fonts do indeed move decisions:
- Comic Neue and OpenDyslexic are the likeliest to flip a judgment (up to 19% and 21% respectively); Comic Neue alone pushes GPT-5.5’s “is this formal?” answers by +83pp, while its effect on professionalism judgments is under +2pp.
- Times regular is the most stable font in every model I tested, with similar judgements as the corresponding LLM running on plain text.
On a side note: Fable 5’s refusal rate varied about 20× by font. Monospace and OpenDyslexic refused at 6 to 7 times the rate of the base Times/Arial fonts. No other model I tested, including GPT 5.6-Sol, had refusals correlated with font choice or modality.
While I used synthetic toy examples, I suspect these findings generalize in the wild because the effects exist across providers/models. See limitations and the repo for methodology.
Given these results, I’m planning to track and publish new results against future major model releases as a ThinkingType benchmark.
VLM vs. LLM effect using Times as a baseline
| Question | GPT-4o | GPT-5.5 | GPT-5.6 Sol | Sonnet 5 | Fable 5 |
|---|
Each cell: % of 120 answers that flip when the model reads an image of plain Times instead of text; blue = flips toward yes, red = toward no, * = direction statistically significant (BH-corrected); hover for exact splits.
Explore the results
Pick a sentence and a font. The bars show how often each model's answers flipped between text and image for that view, next to the model's average across all fonts and sentences (the vertical marker).
Text-vs-image flip rate on the same content, by model
A flip = the model's image answer disagreed with its own text answer on identical content; single-sentence bars rest on just 10 comparisons.
I haven’t found academic literature focused on typography impacting downstream decisions and qualitative assessments. The work I’ve seen focuses more on VLM accuracy, cybersecurity, and things like DecoyFont. Relevant works to this analysis are Reading, Not Thinking on how rendering text as pixels dulls model reasoning, and Visual Persuasion on how image styling sways VLM choices, but neither looks at fonts explicitly influencing judgments or decisions.
All of the code, methodology, and data are publicly available on GitHub. I built the eval harness with Claude Code. Please reach out with any feedback on methodology, gaps, future directions, or if you’re running into these issues in production.Quick Product Implications
- Vision-text consistency. This property is not stable across provider, model, or generation. I’m hoping this project serves as a useful benchmark for understanding and surfacing this drift over time to complement internal product evals.
- Equity. Fonts like OpenDyslexic fared much worse than traditional ones, so extra caution should be taken when building out VLM pipelines to ensure results are not being biased.
- Influence. Some fonts perform “better” than others. This is a limited set, but my hypothesis is that there are fonts that can push VLMs towards more positive outcomes. I’m not sure if we should all be changing our resumes to Serif fonts just yet, but I see this as a future project direction,
- Mitigations. I found prompt rubrics for decisions largely eliminated divergence between text and image presentations.
- Fable 5. Refusals clustered around Monospace and OpenDyslexic at around 3%. These rates are common enough that they would appear frequently in production, which might have further accessibility implications. GPT 5.6 Sol did not have a single refusal for the entire corpus.
OpenDyslexic at the decision boundary
| Model | Shift vs. plain sans (pp) | 95% CI | Test |
|---|---|---|---|
| GPT-5.5 | -6.1* | [−12.2, −0.8] | moderation, scaled |
| GPT-5.6 Sol | -4.2* | [−8.3, −0.6] | all three tests, pooled |
| Claude Sonnet 5 | -3.9 | [−10.8, +2.8] | moderation, scaled |
| Claude Fable 5 | +0.8 | [−3.6, +5.3] | all three tests, pooled |
| Gemini 3.5 Flash | -3.9* | [−8.9, −0.3] | moderation, scaled |
Identical images except the font; negative = the OpenDyslexic version treated more harshly; * = 95% CI excludes zero; 60 items per model, and in the scaled test 17 of the 21 items that moved, moved toward removal.
Key Limitations
- All benchmark artifacts, including sentence examples, are synthetic, and so may not mirror real world results. I tried to generate them to be on the borderline for decisions and criteria. I'm looking for ways to use realistic artifacts and measure actual real world impacts.
- Most results rest on 20 edge cases per model per test (60 for the accessibility comparison). Due to budget constraints, I chose to limit my choice of variables and outputs tested to balance cost and reasonable confidence intervals.
- Directly comparing text and vision requires rendering words to an image, which introduces confounders beyond font (i.e. image cropping, text running over multiple lines, etc.). I tried to control for this, but have the most confidence comparing font-to-font comparisons across VLM runs. Because the effect appears in every test, and its magnitude differs by model, I think this is a per-model characteristic, but the image versus text results are an area I’d love help pressure testing.
Next steps
- Incorporate any feedback on methodology and gaps, specifically around artifact generation, image-to-text comparisons, and prompt robustness.
- Identify fonts that are unusually persuasive or more reliably flip decisions
- Accessibility fonts. More assistive formats (large print, high contrast, letter spacing), more items, enough statistical power to pin down per-provider effects.
- Run and publish the benchmark against major model releases.
Why build this?
I got into typography this year after reading “Thinking with Type.” Type design mirrors the tech and culture of the day. Since it’s 2026, I was curious about how agents are influenced by, and may potentially shape, popular fonts and design conventions. Is Comic Sans still seen as unprofessional? Would an agent then be less likely to recommend a resume written in OpenDyslexic? What does the future of typography look like when every type of media is increasingly consumed by both people and robots? ThinkingType is a side project to understand this a bit better from outside my day job as a product manager working on large-scale recommendations (and with a limited token budget).
Reproduce
typo-eval --config configs/gates_v1.yaml gates-build
typo-eval --config configs/gates_v1.yaml gates-render
typo-eval --config configs/gates_v1.yaml gates-calibrate --provider <p>
typo-eval --config configs/gates_v1.yaml gates-run --provider <p>
typo-eval --config configs/gates_v1.yaml gates-analyze
Full per-run reports, item-level CSVs, and forest plots are in results/gates/. The drift monitor for testing your own model × gate combinations is documented in docs/GATE_DRIFT.md.
Appendix: detailed results
Jump to: flip rate by font · font deltas vs. Times · image vs. text decisions · Fable 5 refusals
Judgment flip rate by font and model
| Font | GPT-4o | GPT-5.5 | GPT-5.6 Sol | Sonnet 5 | Fable 5 |
|---|---|---|---|---|---|
| Times regular | 12.5 [10.7, 14.4] | 6.2 [4.9, 7.5] | 12.9 [11.4, 14.6] | 8.6 [7.0, 10.2] | 7.0 [5.6, 8.5] |
| Times bold | 13.2 [11.3, 15.2] | 6.8 [5.5, 8.2] | 12.7 [11.1, 14.3] | 9.4 [7.5, 11.3] | 8.8 [7.1, 10.6] |
| Arial regular | 13.4 [11.5, 15.6] | 6.4 [5.2, 7.6] | 12.4 [10.8, 14.1] | 9.0 [7.4, 10.6] | 7.4 [5.8, 9.0] |
| Arial bold | 13.2 [11.3, 15.3] | 6.5 [5.2, 7.8] | 12.9 [11.3, 14.5] | 9.4 [7.6, 11.3] | 8.6 [7.0, 10.3] |
| Arial caps-only | 15.2 [13.1, 17.5] | 7.1 [5.6, 8.7] | 13.7 [12.1, 15.3] | 10.9 [9.3, 12.6] | 8.4 [6.9, 10.0] |
| Monospace | 14.3 [12.2, 16.4] | 6.4 [5.1, 7.8] | 12.5 [10.8, 14.1] | 8.8 [7.2, 10.5] | 9.3 [7.6, 10.9] |
| Comic Sans | 18.6 [16.7, 20.8] | 14.1 [12.6, 15.4] | 17.0 [15.2, 18.8] | 9.5 [7.8, 11.2] | 10.8 [9.0, 12.6] |
| OpenDyslexic | 21.1 [19.2, 23.0] | 8.7 [7.3, 10.1] | 14.4 [12.5, 16.3] | 10.1 [8.5, 11.8] | 8.9 [7.3, 10.6] |
% of judgments that flipped per font across all 120 sentences, with 95% CIs.
Extra flips caused by the font (versus Times regular)
| Question | GPT-4o | GPT-5.5 | GPT-5.6 Sol | Sonnet 5 | Fable 5 |
|---|
Purple = more flips than plain Times, green = fewer, in percentage points; deltas under 5pp are within noise and uncolored.
The biggest presentation choice: rendering text as an image at all (Experiment 2)
| Decision test | GPT-5.5 | GPT-5.6 Sol | Sonnet 5 | Fable 5 | Gemini 3.5 Flash |
|---|---|---|---|---|---|
| Moderation: remove this comment? | +10.0* | +4.6 | +13.1* | -6.0 | +2.7 |
| Resume screening: advance to interview? | -4.2* | +5.6 | -1.0 | +7.1 | +15.6* |
| Appeal review: approve the grant? | +2.1 | +1.7 | -1.7 | -0.2 | -2.5 |
Items pre-calibrated to sit at each model’s own decision boundary, then shown as images of the same words; blue = more favorable to the person judged as an image, red = harsher, * = 95% CI excludes zero (20 edge cases per cell).
Fable 5’s refusals clustered
| Presentation | Refusals | Rate |
|---|---|---|
| Monospace | 44 / 1,320 | 3.33% |
| OpenDyslexic | 39 / 1,320 | 2.95% |
| Comic Sans | 27 / 1,320 | 2.05% |
| Plain text (no image) | 26 / 1,320 | 1.97% |
| Times Bold | 16 / 1,320 | 1.21% |
| Arial Caps | 16 / 1,320 | 1.21% |
| Arial Bold | 6 / 1,320 | 0.45%* |
| Times Regular | 7 / 1,320 | 0.53%* |
| Arial Regular | 2 / 1,320 | 0.15%* |
n = 1,320 per row; plain text is the baseline. * = significantly fewer refusals than plain text (Fisher’s exact, BH-corrected). Four other models tested with zero refusals.