Skip to content

Upgrade to Unicode 17.0.0 and extend the language and script lists#5618

Merged
iorsh merged 4 commits intofontforge:masterfrom
dscorbett:unicode-17
Sep 13, 2025
Merged

Upgrade to Unicode 17.0.0 and extend the language and script lists#5618
iorsh merged 4 commits intofontforge:masterfrom
dscorbett:unicode-17

Conversation

@dscorbett
Copy link
Copy Markdown
Contributor

This upgrades everything to Unicode 17.0 and OpenType 1.9.1.

Type of change

  • Non-breaking change

@iorsh
Copy link
Copy Markdown
Contributor

iorsh commented Sep 12, 2025

Are the changes in tottfgpos.c, lookup*.c automatic? makeutype.py doesn't seem to touch these files.

@dscorbett
Copy link
Copy Markdown
Contributor Author

Only the first commit was automated. For the rest, I copied the data from unicode.org and learn.microsoft.com, applied regex substitutions to get it into the right format, and made various manual edits like adding Script| where necessary.

@iorsh
Copy link
Copy Markdown
Contributor

iorsh commented Sep 12, 2025

Only the first commit was automated. For the rest, I copied the data from unicode.org and learn.microsoft.com, applied regex substitutions to get it into the right format, and made various manual edits like adding Script| where necessary.

@dscorbett, could you please give more detail and links or perhaps outline the steps and relevant regexes? It would be good to have at least some documentation for this process.

@dscorbett
Copy link
Copy Markdown
Contributor Author

For each script in scripts in tottfgpos.c, I copied its escaped, abbreviated code point set from this UnicodeSet utility and applied regex substitutions to get something like \u1B00-\u1B4C\u1B4E-\u1B7F into 0x1b00, 0x1b4c, 0x1b4e, 0x1b7f. For localscripts, I copied the table from OpenType’s script tag documentation and applied substitutions to get Beria Erfe 'berf' into { N_("Beria Erfe"), CHR('b','e','r','f') },. For scripts in lookupui.c, I copied that same table and applied substitutions to get { (unichar_t *) N_("Beria Erfe"), NULL, 0, 0, (void *) CHR('b','e','r','f'), NULL, 0, 0, 0, 0, 0, 0, 1, 0, 0, '\0'},. For languages, I copied the table from OpenType’s language system tag documentation and applied substitutions to get Eastern Abenaki 'AAQ ' aaq into { (unichar_t *) N_("Eastern Abenaki"), NULL, 0, 0, (void *) CHR('A','A','Q',' '), NULL, 0, 0, 0, 0, 0, 0, 1, 0, 0, '\0'},. I didn’t record the specific regexes I used. Besides that, there were many manual edits and miscellaneous special cases, especially to avoid modifying existing code unnecessarily.

@iorsh iorsh merged commit b7eb0df into fontforge:master Sep 13, 2025
7 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.

2 participants