Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Vietnamese glyphs #137

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Open

Add Vietnamese glyphs #137

wants to merge 11 commits into from

Conversation

Nekosha
Copy link

@Nekosha Nekosha commented Feb 18, 2024

This pull request add various glyphs for Vietnamese.
Many related changes to diacritic handling are also implemented, please see the individual commits for details.

Summary of changes:

  • Support for diacritic positions other than top of character
  • Partial support for multiple diacritics on one character (currently only enough to support Vietnamese glyphs)
  • Support for pixel offsetting the diacritic
  • Add Vietnamese glyphs

Various scripts have diacritics on positions other than the top of base
characters. This commit adds support for the (optional) `placement` key
in diacritic.json, allowing diacritics to be placed in any of the four
positions: above, below, to the left, and to the right of the glyph.
The default when not specified is "above".
The placement respects the spacing specified by the `diacriticSpace`
key in characters.json.
This allows to define a glyph with multiple diacritics attached.
Currently overlaps are not handled (spacing is currently shared for
all of them), meaning stacking diacritics in the same direction is not
possible.
This adds various missing glyphs for Vietnamese.
Note that some characters require multiple diacritics in different positions.

There is a hack in diacritics.json to force monocraft.py to include many
glyphs in the generation step. For example, the glyph "LATIN SMALL LETTER
A WITH CIRCUMFLEX AND DOT BELOW" contain two diacritics `circumflex` and
`dot_below`. generate_diacritics.py parses this as containing one
diacritic: `circumflex_and_dot_below`, which it will not find in
diacritics.json without this hack, and thus the glyph will not be
generated.
For a proper fix, the logic to determine which diacritics should be
considered (lines 37-38, generate_diacritics.py) should be fixed to
consult the list in characters.json instead.
This commit adds support for two optional keys in diacritics.json: offsetX and offsetY. This allows the glyph to be shifted relative to the base position.
Some Vietnamese glyphs are very tall with their diacritics, which causes the top of them to sometimes be cut off in some programs. This raises the font ascent by 1 pixel size to accomodate those glyphs.
As a side effect, however, this also messes with font sizing in a lot of programs.
@Nekosha Nekosha marked this pull request as draft February 18, 2024 16:06
The original variant looks better in text, but is different from the
font in-game.
The original variant looks better in text, but is different from the
font in-game.
@Nekosha
Copy link
Author

Nekosha commented Feb 18, 2024

The last two commits should produce a font with almost identical rendering to the current Minecraft font. However, in my opition, the readability of it is not great.

The last size bump did not take into account capital letters.
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.

1 participant