keymanapp / keymanapp/keyman

feat(developer): manage shared fonts 🐻

Open
#11,236 4 comments 0 reactions 1 assignee Claimed by @mcdurdin View on GitHub
developer/ epic-shared-fonts feat m:developer-fonts
Dominant language
Pascal
Stars
534
Forks
143
Avg merge
2d 10h
Merged PRs (30d)
113

Description

Fonts are currently difficult to manage in Keyman Developer projects, particularly because we want to share fonts between keyboards. The developer must either clone the entire keyboards repository, or else jump through convoluted hoops in order to properly use shared fonts.

Proposal, in short: allow packages to reference files from GitHub repos, not just local files. Then the compiler will download (and maybe cache) files. The keyboard author could reference, e.g. `https://github.com/keymanapp/keyboards/blob/master/release/shared/fonts/aegyptus/Aegyptus.otf`. (Query, should we use sha instead of branch names?)

Ideally, we can leverage an existing WSTech repository for this. Perhaps LFF. In theory, we could allow any URL in the .kps file. But we would probably want to have a whitelist for perf, stability, and security reasons for the keyboard repository.

This also resolves the single-keyboard-repo conundrum of how to share fonts.

It would be important to have a UI that helps keyboard devs to find the fonts as well.

# Things to do

- [x] #12667
- [ ] Update package schema min version for Source field support
- [ ] Caching of resources retrieved online (offline support?)
- [ ] A lot of work will need to be done with the Package Editor in TIKE to support this feature.
- [ ] Author documentation (once Package Editor has been updated)
- [ ] Add a keyboards repo action which does a verify against all names and reports on changes
- [ ] After reporting on changes, build a script to automatically update all keyboards that refer to a given font and open a PR

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.