Skip to content

fix: disable Inter font contextual alternates to prevent x→× substitution#7375

Open
rudra496 wants to merge 6 commits intoactualbudget:masterfrom
rudra496:fix/inter-font-calt-ligature
Open

fix: disable Inter font contextual alternates to prevent x→× substitution#7375
rudra496 wants to merge 6 commits intoactualbudget:masterfrom
rudra496:fix/inter-font-calt-ligature

Conversation

@rudra496
Copy link
Copy Markdown

@rudra496 rudra496 commented Apr 4, 2026

Summary

Fixes #6351

The Inter font's contextual alternates (calt) OpenType feature automatically replaces the letter x when it appears between digits with a multiplication sign ×. This causes unwanted text transformation in text fields throughout the app, including:

  • Transaction notes
  • Payee names
  • Category names
  • Category notes

Changes

  • Added 'calt' 0 to font-feature-settings in index.html to disable contextual alternates
  • Preserves existing ss01 and ss04 OpenType features

Root Cause

The calt feature is enabled by default in Inter font (see rsms/inter#850). While useful in some contexts, it's undesirable for text input fields where users expect literal character entry.

Testing

  1. Open any transaction and edit the notes field
  2. Type 2x3
  3. Verify the x remains as x and is not changed to ×

Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 28 12.18 MB 0%
loot-core 1 4.83 MB 0%
api 4 4.06 MB 0%
cli 1 7.88 MB 0%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
28 12.18 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
static/js/index.js 3.23 MB 0%
static/js/BackgroundImage.js 119.98 kB 0%
static/js/FormulaEditor.js 846.44 kB 0%
static/js/ReportRouter.js 1.02 MB 0%
static/js/TransactionList.js 81.29 kB 0%
static/js/ca.js 183.36 kB 0%
static/js/da.js 104.66 kB 0%
static/js/de.js 174.79 kB 0%
static/js/en-GB.js 7.16 kB 0%
static/js/en.js 170.76 kB 0%
static/js/es.js 182.18 kB 0%
static/js/fr.js 177.47 kB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 13.46 kB 0%
static/js/it.js 166.25 kB 0%
static/js/narrow.js 354.5 kB 0%
static/js/nb-NO.js 152.2 kB 0%
static/js/nl.js 108.93 kB 0%
static/js/pl.js 88.34 kB 0%
static/js/pt-BR.js 177.84 kB 0%
static/js/resize-observer.js 18.03 kB 0%
static/js/sv.js 80.58 kB 0%
static/js/th.js 179.94 kB 0%
static/js/theme.js 30.68 kB 0%
static/js/uk.js 213.14 kB 0%
static/js/useTransactionBatchActions.js 4.29 MB 0%
static/js/wide.js 418 B 0%
static/js/workbox-window.prod.es5.js 7.28 kB 0%
static/js/zh-Hans.js 93.57 kB 0%

loot-core

Total

Files count Total bundle size % Changed
1 4.83 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
kcab.worker.B--GR9z4.js 4.83 MB 0%

api

Total

Files count Total bundle size % Changed
4 4.06 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
index.js 3.84 MB 0%
from-Bl-Hslp4.js 167.73 kB 0%
multipart-parser-BnDysoMr.js 8.1 kB 0%
src-iMkUmuwR.js 43.64 kB 0%

cli

Total

Files count Total bundle size % Changed
1 7.88 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
cli.js 7.88 MB 0%

…character substitution

Fixes actualbudget#6351

The Inter font calt feature replaces x between digits with a
multiplication sign. Disable it while preserving ss01 and ss04.
@actual-github-bot actual-github-bot bot changed the title fix: disable Inter font contextual alternates to prevent x→× substitution [WIP] fix: disable Inter font contextual alternates to prevent x→× substitution Apr 4, 2026
@netlify
Copy link
Copy Markdown

netlify bot commented Apr 4, 2026

Deploy Preview for actualbudget ready!

Name Link
🔨 Latest commit 263c077
🔍 Latest deploy log https://app.netlify.com/projects/actualbudget/deploys/69d17007bae50e00085ca2e3
😎 Deploy Preview https://deploy-preview-7375.demo.actualbudget.org
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 4, 2026

👋 Hello contributor!

We would love to review your PR! Before we can do that, please make sure:

  • ✅ All CI checks pass
  • ✅ The PR is moved from draft to open (if applicable)
  • ✅ The "[WIP]" prefix is removed from the PR title
  • ✅ All CodeRabbit code review comments are resolved (if you disagree with anything - reply to the bot with your reasoning so we can read through it). The bot will eventually approve the PR.

We do this to reduce the TOIL the core contributor team has to go through for each PR and to allow for speedy reviews and merges.

For more information, please see our Contributing Guide.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 4, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Changed the CSS font-feature-settings for input, textarea in the desktop client HTML to add calt 0 (disabling contextual alternates) while retaining 'ss01' and 'ss04'; added a release note entry documenting the change to prevent automatic x → × substitutions.

Changes

Cohort / File(s) Summary
Font Feature Settings
packages/desktop-client/index.html
Updated font-feature-settings for input, textarea from a single-line 'ss01', 'ss04' to a multiline form that preserves 'ss01', 'ss04' and adds calt 0 to disable contextual alternates (prevents automatic x → × substitutions).
Release Notes
upcoming-release-notes/7375.md
Added a new release note (category: Bugfixes) stating Inter font contextual alternates are disabled to prevent unintended character substitutions.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Suggested labels

size small

Poem

🐰
I hopped through fonts to find the fix,
turned off the sly contextual mix.
Now x stays x where users type,
no surprise glyph taking flight.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: disabling Inter font contextual alternates to prevent x→× substitution, which directly matches the file modifications.
Linked Issues check ✅ Passed The PR changes fully address the linked issue #6351 by disabling the calt OpenType feature that was causing unwanted x→× substitutions in text input fields.
Out of Scope Changes check ✅ Passed All changes are directly scoped to fixing the linked issue: modifying font-feature-settings and adding a release notes entry, with no extraneous modifications.
Description check ✅ Passed The pull request description clearly explains the issue, root cause, changes made, and testing instructions related to disabling Inter font contextual alternates.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 4, 2026

🤖 Auto-generated Release Notes

Hey @rudra496! I've automatically created a release notes file based on CodeRabbit's analysis:

Category: Bugfixes
Summary: Disable Inter font contextual alternates to prevent unwanted x→× character substitutions.
File: upcoming-release-notes/7375.md

If you're happy with this release note, you can add it to your pull request. If not, you'll need to add your own before a maintainer can review your change.

coderabbitai[bot]
coderabbitai bot previously approved these changes Apr 4, 2026
rudra496 added a commit to rudra496/actual that referenced this pull request Apr 4, 2026
@rudra496 rudra496 changed the title [WIP] fix: disable Inter font contextual alternates to prevent x→× substitution fix: disable Inter font contextual alternates to prevent x→× substitution Apr 4, 2026
@coderabbitai coderabbitai bot removed the size small label Apr 4, 2026
coderabbitai[bot]
coderabbitai bot previously approved these changes Apr 4, 2026
coderabbitai[bot]
coderabbitai bot previously approved these changes Apr 4, 2026
@coderabbitai coderabbitai bot removed the size small label Apr 4, 2026
coderabbitai[bot]
coderabbitai bot previously approved these changes Apr 4, 2026
@rudra496
Copy link
Copy Markdown
Author

rudra496 commented Apr 4, 2026

@actualbudget/actual The release-notes check failed due to a race condition with autofix.ci — the file format is now correct (category: Bugfixes, authors: [rudra496]). Could you re-run the CI or merge when ready? All other checks pass. 🙏

@matt-fidd
Copy link
Copy Markdown
Member

@actualbudget/actual The release-notes check failed due to a race condition with autofix.ci — the file format is now correct (category: Bugfixes, authors: [rudra496]). Could you re-run the CI or merge when ready? All other checks pass. 🙏

It doesn't look quite right in the current commit. I'm seeing it as category: bugfix, not 'category: Bugfixes'

coderabbitai[bot]
coderabbitai bot previously approved these changes Apr 4, 2026
@@ -0,0 +1,7 @@
---
title: 'Disable Inter font contextual alternates to prevent unwanted x→× character substitutions'
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The title is not required here, the content is below the frontmatter as you already have.

Suggested change
title: 'Disable Inter font contextual alternates to prevent unwanted x→× character substitutions'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Actual won't let an 'x' be entered between two numbers - forces reformating to an undesired character

2 participants