Skip to content

Added Scandinavian and German glyphs#30

Open
kaj-se wants to merge 9 commits intocomcode-org:mainfrom
kaj-se:add-scan-and-ger-glyphs
Open

Added Scandinavian and German glyphs#30
kaj-se wants to merge 9 commits intocomcode-org:mainfrom
kaj-se:add-scan-and-ger-glyphs

Conversation

@kaj-se
Copy link
Contributor

@kaj-se kaj-se commented Feb 9, 2026

Changes

  • Added glyphs for full support of Scandinavian and German letters
  Char UniCode SFDName
  ------------------------
  Ä    U+00C4  "Adieresis"
  Å    U+00C5  "Aring"
  Æ    U+00C6  "AE"
  Ö    U+00D6  "Odieresis"
  Ø    U+00D8  "Oslash"
  Ü    U+00DC  "Udieresis"
  ß    U+00DF  "germandbls"
  à    U+00E0  "agrave"
  ä    U+00E4  "adieresis"
  å    U+00E5  "aring"
  æ    U+00E6  "ae"
  é    U+00E9  "eacute"
  ö    U+00F6  "odieresis"
  ø    U+00F8  "oslash"
  ü    U+00FC  "udieresis"

Edit:

  Char UniCode SFDName
  ------------------------
  à    U+00E0  "agrave"
  é    U+00E9  "eacute"

Removed from changes (by request):

  • Added <FontLog> to track changes made by contributors~
  • Added <Comment> in <StartChar><EndChar> to easily track who created which glyph
  • Added myself to the copyright in <Copyright> and <LangName>
  • Updated from version 1.00 to 1.1 in <Version> and <LangName>

- Added myself to the copyright in `<Copyright>` and `<LangName>`
- Updated from version 1.00 to 1.1 in <Version> and `<LangName>`
- Added `<Comment>` in `<StartChar><EndChar>` to easily track who created which glyph
- Added `<FontLog>` to track changes made by contributors
- Added glyphs for full support of Scandinavian and German letters
```
  Char UniCode SFDName
  ------------------------
  Ä    U+00C4  "Adieresis"
  Å    U+00C5  "Aring"
  Æ    U+00C6  "AE"
  Ö    U+00D6  "Odieresis"
  Ø    U+00D8  "Oslash"
  Ü    U+00DC  "Udieresis"
  ß    U+00DF  "germandbls"
  à    U+00E0  "agrave"
  ä    U+00E4  "adieresis"
  å    U+00E5  "aring"
  æ    U+00E6  "ae"
  é    U+00E9  "eacute"
  ö    U+00F6  "odieresis"
  ø    U+00F8  "oslash"
  ü    U+00FC  "udieresis"
 ```
@CLAassistant
Copy link

CLAassistant commented Feb 9, 2026

CLA assistant check
All committers have signed the CLA.

@hmdunce
Copy link
Contributor

hmdunce commented Feb 9, 2026

I had chatgpt generate Swedish-, German-, and Norwegian-eqsue "lorum ipsum" texts with lots of special characters, then followed the same test procedure as described here and took a bunch of screenshots with gui.size from like -3-6 (and at the end I skipped to 10.)

The grid looked fine throughout -- after I replaced chatgpt's dang smart quotes with normal ones:

Screenshot from 2026-02-09 22-14-43 Screenshot from 2026-02-09 22-15-11 Screenshot from 2026-02-09 22-15-28 Screenshot from 2026-02-09 22-15-58 Screenshot from 2026-02-09 22-16-14 Screenshot from 2026-02-09 22-16-33 Screenshot from 2026-02-09 22-16-53 Screenshot from 2026-02-09 22-17-16 Screenshot from 2026-02-09 22-17-32 Screenshot from 2026-02-09 22-17-55 Screenshot from 2026-02-09 22-18-27

@hmdunce
Copy link
Contributor

hmdunce commented Feb 9, 2026

Side note typing also seems to work (at least on Linux) with one extra tweak to client:

image

@kaj-se
Copy link
Contributor Author

kaj-se commented Feb 10, 2026

Hej @hmdunce, the random sentences are crazy funny to be honest.
You forgot the à and é, examples for that would be:

é:
Names: Sandén, Norén, Rosén, Löfvén, Rabén, Franzén, ...
Words: armé, filé, idé, béchamelsås, gelé, déjà vu, cyberkafé (very important), entrédörr, allé, ...

à:
Phrases: à jour, à la, à la carte, à pris/à-pris, déjà vu, folie à deux, ...
Sentence: Tre hundra säckar à två dussin betor -> "Three hundred sacks of two dozen beets each"

The à is also used in German the same way for saying "of ... each"

@hmdunce
Copy link
Contributor

hmdunce commented Feb 10, 2026

Side note, I was just curious what un-"squished" capital letters with diacritics would've looked like... Here's one test, where I copied "A" exactly and stuck an umlaut on top:

image

Vs current glyphs in this PR:

image

@kaj-se
Copy link
Contributor Author

kaj-se commented Feb 10, 2026

Side note, I was just curious what un-"squished" capital letters with diacritics would've looked like... Here's one test, where I copied "A" exactly and stuck an umlaut on top:

image Vs current glyphs in this PR: image

I have opened a new issue for this problem -> #31
This should prevent such issues from occurring in the future. The issue affects the upper and lower sections. If you place elements lower then the parts of the glyphs j or g, it will also overlap.

@seanmakesgames
Copy link
Member

Thanks for submitting this change!

@kaj-se
Copy link
Contributor Author

kaj-se commented Feb 10, 2026

@hmdunce the Å is even more "squished", that's the trade of by sticking to the current font line spacing. My idea was to change it so you can use the full height, but sean sad it's on purpose, so we have to do it like that.

@kaj-se
Copy link
Contributor Author

kaj-se commented Feb 18, 2026

@seanmakesgames Pull Request is ready to be merged.

Copy link
Contributor Author

@kaj-se kaj-se left a comment

Choose a reason for hiding this comment

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

So all ready to be merged now. Merge this first then the others.

@seanmakesgames
Copy link
Member

So all ready to be merged now. Merge this first then the others.

Thanks @kaj-se!
Just an update for ya: the code changes here look good, but before we merge we need to validate the font renders correctly in our client. Once that's confirmed, we'll be able to approve this.

@kaj-se
Copy link
Contributor Author

kaj-se commented Mar 4, 2026

@seanmakesgames sounds good.

A little thought of mine: we should try to not overthink the font stuff. If FontForge passes the comprehensive test and the glyphs are in the areas of the guidelines, the font should be "normally" production ready.

@kaj-se
Copy link
Contributor Author

kaj-se commented Mar 6, 2026

@seanmakesgames @hmdunce

I found the problem causing this part and all related issues with it to change after saving:

StartChar: ae         |  StartChar: ae
Encoding: 230 230 206 |  Encoding: 230 230 206
Width: 1200           |  Width: 1200
GlyphClass: 2         |  GlyphClass: 2
Flags: W              |  Flags: W
LayerCount: 2         |  LayerCount: 2
Fore                  |  Fore
SplineSet             |  SplineSet
668 30 m 5,0,1        |> 668 30 m 1,0,1

Lets take this as an example:

668 30 m 5,0,1        |> 668 30 m 1,0,1

The 5 0b00000101 represents point flags, if the Glyph was created with SaveEditorState=1, bit 2 (value 4) which represents the selected state, got set. If the Glyph get then saved again with SaveEditorState=0, this flag get cleared which results in 1 0b00000001in this case.

Short:
Value 5 = point type 1 (corner) + selected flag (4)
Value 1 = point type 1 (corner) only

I tested this and you can reproduce this change.

  1. Add a new simple glyph while having SaveEditorState=1
  2. Save the project
  3. Make a copy of the project and open this one
  4. Set SaveEditorState=0 and save the copy project
  5. On Linux run diff on both files -> it will show up those lines where the bit got switched. Comparing the values will show that only bit 2 has been changed.

Conclusion:

  1. Let FontForge unset bit 2, there is NO CHANGE of the glyph it self, this flag is only editor state relevant and don't matter.
  2. For the future it's VERY important to have SaveEditorState=0 set.
  3. Optional - a better way of merging glyphs in the project to have a consistent flag state.

@kaj-se
Copy link
Contributor Author

kaj-se commented Mar 6, 2026

I changed the code of the pull request acording to the "Point Editor State Flag Bits" problem. @hmdunce if you find the post that mentioned this, please re-post it here. I couldn't find it.

Also fixed the bug of the duplicate BeginChars field in the SFD file which caused the FontForge editor to display the project as empty.

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.

4 participants