Skip to content

Added SPDX license codes to all formula files#244

Merged
suleman-uzair merged 5 commits intov5from
feature/add-spdx-license-codes
Apr 14, 2026
Merged

Added SPDX license codes to all formula files#244
suleman-uzair merged 5 commits intov5from
feature/add-spdx-license-codes

Conversation

@suleman-uzair
Copy link
Copy Markdown
Contributor

Adds a new spdx_license field to all formula files using official SPDX identifiers or LicenseRef- custom encoding for non-standard licenses.

closes #240

@suleman-uzair suleman-uzair marked this pull request as draft March 12, 2026 12:08
@ronaldtse ronaldtse force-pushed the feature/add-spdx-license-codes branch from 8489b76 to 45a8927 Compare March 13, 2026 01:34
@ronaldtse
Copy link
Copy Markdown
Contributor

@suleman-uzair I've done some investigation and some license codes are incorrect. I've fixed the fonts f1.8 and joongnajoche because they are actually OFL (fixed in v4 already)

The available licenses are here:

Some of the assignments are more nuanced:

  • OFL has a variant called "Reserved Font Name", e.g. Formulas/carlito.yml:
license_url: http://scripts.sil.org/OFL
open_license: |-
  Copyright (c) 2010-2013 by tyPoland Lukasz Dziedzic with Reserved Font Name "Carlito".

  This Font Software is licensed under the SIL Open Font License,
  Version 1.1 as shown below.

The SPDX code is OFL-1.1-RFN, not OFL-1.1:

There seem to be 3 variants of OFL:

  • OFL
  • OFL RFN
  • OFL No-RFN

OFL seems to be the only one to be fixed.

Then we have the proprietary licenses. According to spdx/license-list-XML#1856 we can encode them like LicenseRef-{company}-{some-id}.

  • Apple licensed fonts. I found two licenses;

    • Formulas/lucida_grande.yml: "SOFTWARE LICENSE AGREEMENT FOR SAFARI FOR WINDOWS". We can use LicenseRef-Apple-EA0473 (this is the Apple License ID given at the end of the license).
    • All the fonts under Formulas/macos (e.g. Formulas/macos/headlinea.yml): "For use on Apple-branded Systems". We can use LicenseRef-Apple-EA1705
    • I only found these two "EA" numbers.
  • Microsoft:

    • "TrueType core fonts for the Web EULA": use LicenseRef-Microsoft-fontpack-19980728
    • "MICROSOFT OFFICE 2013 DESKTOP": LicenseRef-Microsoft-Office2013-1
    • "MICROSOFT OFFICE 2013 DESKTOP APPLICATION SOFTWARE": LicenseRef-Microsoft-Office2013-2
    • "MICROSOFT POWERPOINT VIEWER" (internal ID: EULAID:O14_RTM_PPV.1_RTM_EN): LicenseRef-Microsoft-PowerpointViewer
    • "Microsoft Viewer for Word": LicenseRef-Microsoft-WordViewer
    • "MICROSOFT OFFICE EXCEL VIEWER": LicenseRef-Microsoft-ExcelViewer
    • "MICROSOFT OFFICE FOR MAC": LicenseRef-Microsoft-OfficeMac
    • "SUPPLEMENTAL END USER LICENSE AGREEMENT" "GB18030 support package for MICROSOFT WINDOWS Operating Systems": LicenseRef-Microsoft-GB18030
    • "Windows XP Font Pack for ISO 10646:2003 + Amendment 1 Traditional Chinese Support": LicenseRef-Microsoft-ISO10464
    • "MICROSOFT SOFTWARE LICENSE TERMS" "MICROSOFT EAST ASIAN FONTS OPTIMIZED FOR CLEARTYPE": LicenseRef-Microsoft-EastAsianClearType
  • Adobe:

    • "Adobe End-User License Agreement": LicenseRef-Adobe-EULA

We just need a code for each of these.

@suleman-uzair
Copy link
Copy Markdown
Contributor Author

Here's the raw text ready to paste:

SPDX License Update Summary

Updated all 2,163 formula spdx_license values for precision. Custom identifiers use the LicenseRef- format per SPDX spec §10.6.

Changes by Category

OFL Variants (1,698 files)

Change Count Method
OFL-1.1OFL-1.1-RFN 1,680 "Reserved Font Name" found in formula license text
OFL-1.1OFL-1.1-no-RFN 15 No RFN clause in license text
OFL-1.0-no-RFNOFL-1.0-RFN 2 jomolhari, uchen — RFN present in license text
MIT OR OFL-1.1MIT OR OFL-1.1-no-RFN 1 monoid — no RFN clause

Apple (319 files)

Identifier Count Justification
LicenseRef-Apple-EA1705 318 macOS system fonts — EA1705 referenced in agreement text
LicenseRef-Apple-EA0473 1 lucida_grande — Safari for Windows SLA

Microsoft (29 files)

Identifier Count Justification
LicenseRef-Microsoft-fontpack-19980728 8 "this page was last updated 28 July 1998" in EULA text
LicenseRef-Microsoft-Office2013-1 6 Office 2013 Language Pack installers — Retail license terms
LicenseRef-Microsoft-EastAsianClearType 5 "MICROSOFT EAST ASIAN FONTS OPTIMIZED FOR CLEARTYPE" in EULA header
LicenseRef-Microsoft-EastAsian-Pack 2 "FONT SETUP PACKAGES FOR MICROSOFT OFFICE 2010 AND 2013" in EULA
LicenseRef-Microsoft-Webcore-Bundle 2 Linux webcore font bundles — no specific EULA identifier
LicenseRef-Microsoft-OfficeMac 1 office_preview — "MICROSOFT OFFICE FOR MAC" in EULA
LicenseRef-Microsoft-WordViewer 1 tahoma — "Microsoft Viewer for Word" in EULA header
LicenseRef-Microsoft-ExcelViewer 1 segoe_ui — "MICROSOFT OFFICE EXCEL VIEWER" in EULA header
LicenseRef-Microsoft-GB18030 1 simsun_18030 — "GB18030 support package" in EULA title
LicenseRef-Microsoft-ISO10464 1 mingliu — "ISO 10646:2003 + Amendment 1" in EULA title
LicenseRef-Microsoft-Supplemental 1 eurofix — Microsoft Knowledge Base disclaimer

Adobe (2 files)

Identifier Count Justification
LicenseRef-Adobe-EULA 2 "Adobe End-User License Agreement" in license text

Other Vendor-Specific (3 files)

Identifier Count Justification
LicenseRef-HKSARG-DynaComware 1 ming_uni — copyright DynaComware Corp, licensed by HK SAR Government (ogcio.gov.hk)
MIT 1 mitimasu — MIT License confirmed on author's site
IPA 1 bokutachinogothic — IPA License per fontopo.com

Free/Custom Licenses (25 files)

Identifier Count Justification
LicenseRef-fontopo-free 9 fontopo.com: "free for commercial use" — no standard SPDX match
LicenseRef-gwm-sans 5 Based on SIL OFL but with Great Wall Motors proprietary modifications — not pure OFL
LicenseRef-PublicDomain 4 Public domain declarations without formal CC0/Unlicense adoption (verified via typedesign.replit.app,
sourceforge)
LicenseRef-au-passata 3 "Passata requires no licences" but copyright asserted by 1508 A/S
LicenseRef-mutsuki-license 2 "Unlimited permission to use, copy, distribute" — verified on mandel59.github.io, no standard license named
LicenseRef-komorebi-license 1 Free/libre software based on Ume Font — verified on modi.jpn.org, no standard license named
LicenseRef-tiro-typeworks-eula 1 euphemia — Tiro Typeworks "FONT SOFTWARE PRODUCT LICENSE" per tiro.com

Needs Review

  • LicenseRef-Microsoft-ISO10464 — The EULA references "ISO 10646" but the identifier was set as ISO10464. Should this be corrected to LicenseRef-Microsoft-ISO10646?

  • LicenseRef-Microsoft-Office2013-1 — All 6 Language Pack files use the same EULA containing both Retail and OEM terms. Unsure how to distinguish between Office2013-1 and Office2013-2. Currently all set
    to -1.

  • MIT OR OFL-1.1-no-RFN — monoid is "dual licensed with MIT and OFL licenses. Pick one :)" No RFN clause found. Should this be MIT OR OFL-1.1-no-RFN or just one of them?

  • LicenseRef-au-passata — "Passata requires no licences" alongside "All rights reserved". Would appreciate guidance on the right encoding.

@ronaldtse
Copy link
Copy Markdown
Contributor

@suleman-uzair there are a few errors.

OFL RFN assignment

Most of the RFN assignments are wrong.

Regarding OFL RFN:

Just because the license contains "Reserved Font Name" does not mean the license is RFN.

For example:

  • Formulas/kurobara-cinderella.yml is not RFN, i.e. this statement is NOT RFN:

    • "Reserved Font Name" refers to any names specified as such after the copyright statement(s).

  • Formulas/lato.yml , Formulas/selawik.yml are RFN (the statement is in Copyright)

  • Formulas/courier_prime_code.yml are RFN (the statement is this in the license):

      1. No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.

ming_uni

ming_uni — copyright DynaComware Corp, licensed by HK SAR Government

The original license is correct as stated in Formulas/ming_uni.yml. This license was the original license and is no longer available from the website. Rename this LicenseRef-HKSARG-SoftwareTOS.

gwm_sans_*

LicenseRef-gwm-sans 5 Based on SIL OFL but with Great Wall Motors proprietary modifications — not pure OFL

Incorrect. This is a translated "SIL OFL 1.1 with RFN" with a vendor-specific preface (which is common practice when adopting OFL). So it is just SIL OFL 1.1 with RFN.

Additional license

I also found this:

  MICROSOFT SOFTWARE SUPPLEMENTAL LICENSE TERMS

  FONT SETUP PACKAGES FOR MICROSOFT OFFICE 2010 AND 2013

In:

  • Formulas/dengxian.yml
  • Formulas/yu.yml

Need a new license for this?

Answers to the questions

LicenseRef-Microsoft-ISO10464 — The EULA references "ISO 10646" but the identifier was set as ISO10464. Should this be corrected to LicenseRef-Microsoft-ISO10646?

Yes, 10646 not 10464.

LicenseRef-Microsoft-Office2013-1 — All 6 Language Pack files use the same EULA containing both Retail and OEM terms. Unsure how to distinguish between Office2013-1 and Office2013-2. Currently all set
to -1.

All 6 use the same license. There is a separate license I mentioned above.

MIT OR OFL-1.1-no-RFN — monoid is "dual licensed with MIT and OFL licenses. Pick one :)" No RFN clause found. Should this be MIT OR OFL-1.1-no-RFN or just one of them?

We need to represent that a font can have multiple licenses.

LicenseRef-au-passata — "Passata requires no licences" alongside "All rights reserved". Would appreciate guidance on the right encoding.

Use LicenseRef-AarhusUniversity-Passata as the license. The license is just that: Passata requires no licences. Note that we only deal with "Font Licenses". Copyright and "rights" are a completely separately subject that is irrelevant.

Relationships between licenses

There are a few notable issues here uncovered:

  • some fonts are/can be multi-licensed. We should reflect that.
  • some vendors make modifications on licenses that may or may not be semantically relevant
  • we need to have a way to tell what features a license provides: can we subset/superset/convert/re-package/embed in documents/embed in software etc.

We need to basically define a schema for a license, and then have a register of these licenses, e.g. fontist/licenses and we can reference them properly.

For now, we can just fix the issues and then have the license relationship as a separate enhancement.

@suleman-uzair
Copy link
Copy Markdown
Contributor Author

@ronaldtse Thanks for the detailed review. All corrections applied:

Change Details
OFL RFN/no-RFN Fixed. 1,113 files corrected from OFL-1.1-RFNOFL-1.1-no-RFN, others corrected in reverse where applicable
gwm_sans (5 files) LicenseRef-gwm-sansOFL-1.1-RFN
ming_uni LicenseRef-HKSARG-DynaComwareLicenseRef-HKSARG-SoftwareTOS
au_passata (3 files) LicenseRef-au-passataLicenseRef-AarhusUniversity-Passata
cleartype LicenseRef-Microsoft-EastAsianClearTypeLicenseRef-Microsoft-PowerpointViewer
mingliu LicenseRef-Microsoft-ISO10464LicenseRef-Microsoft-ISO10646 (typo fix)
dengxian/yu Currently LicenseRef-Microsoft-EastAsian-Pack — let me know if you'd prefer a different identifier

Please let me know if any further changes are needed.

@suleman-uzair suleman-uzair marked this pull request as ready for review March 24, 2026 13:56
@ronaldtse
Copy link
Copy Markdown
Contributor

@suleman-uzair @HassanAkbar please merge when ready. Thanks! Let's make this a feature of Fontist Formula v5.

@ronaldtse
Copy link
Copy Markdown
Contributor

@HassanAkbar @suleman-uzair Maybe we should merge this into #222 directly?

@suleman-uzair
Copy link
Copy Markdown
Contributor Author

@HassanAkbar @suleman-uzair Maybe we should merge this into #222 directly?

@ronaldtse sure, I’ll retarget this PR to the branch used by #222 and merge it there.

@suleman-uzair suleman-uzair force-pushed the feature/add-spdx-license-codes branch from 4795280 to f765770 Compare April 13, 2026 14:21
@suleman-uzair suleman-uzair changed the base branch from v4 to v5 April 13, 2026 14:22
@suleman-uzair suleman-uzair merged commit 0488660 into v5 Apr 14, 2026
17 of 21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update formula schema: Add SPDX license code

2 participants