google / fonts

Font files available from Google Fonts, and a public issue tracker for all things Google Fonts
https://fonts.google.com
18.3k stars 2.64k forks source link

Add Bytesized #8279

Open balt-dev opened 1 month ago

balt-dev commented 1 month ago

Font Project Git Repo URL:

https://github.com/balt-dev/bytesized-gf

Super short description of the Font Family:

A tiny 3x4 pixel font, made to be as legible as possible within the tiny scale.

Requirements:

By opening this issue, I confirm the project meets the following requirements:

Image: preview

balt-dev commented 1 month ago

I wanted to add that one of the main reasons I made this font was that it can be printed at a ridiculously small font size and still be legible. I was able to get it down to 1.5pt on a 600dpi (I think) printer, leaving each character smaller than the thickness of my fingernails, but it was still perfectly readable using a magnifying glass!

emmamarichal commented 1 month ago

hi @balt-dev! thank you for your submission, we will take a look and will let you know!

For the build process, I understand you build the font from an image. We would need however, a source file like a .glyphs file, so we can reproduce easily the build process (if some contributors want to add some glyphs for example).

balt-dev commented 1 month ago

@emmamarichal I understand what you mean, but:

  1. The image is easily editable, so it's easy to add new glyphs even without a .glyphs file - I've added instructions to the repo - and
  2. I don't have access to any program that could generate a .glyphs file - being a college student with zero budget, I can't afford Glyphs, and I'd need to make a macOS virtual machine to even run it, which I've tried and my laptop overloads - and even then, editing them from a vector editor seems like much more work.

I could maybe see if I could generate a .glyphs file instead of a .ttf as a one-time thing, put that in the repo permanently, and then after that build like normal? I've found no tools to do this, however.

balt-dev commented 1 month ago

When first creating the generation script, I did try to find something free that would output .glyphs files, because I knew this would come up, but I didn't find anything.

emmamarichal commented 1 month ago

@balt-dev Ok, thank you for explanations! The format can also be a .ufo, don't know if you tried that?

balt-dev commented 1 month ago

I have not! I'll have to look into that when I have the time - should be able to within a few days.

balt-dev commented 3 weeks ago

@emmamarichal After a few weeks of procrastination, I suddenly got the motivation I needed to actually do this. The repository now contains a .ufo file that the font is constructed from - with a disclaimer that you should not edit it, as it will be overwritten when the font changes!

emmamarichal commented 3 weeks ago

thank you @balt-dev, I'll take a look asap! :)

balt-dev commented 3 weeks ago

I will say that building solely using gftools builder sources/config.yaml will lead to a broken font - the font relies on some other gftools commands, like fix-nonhinting for example, to create a working font. There's a Makefile in the root that takes care of all this, however!

emmamarichal commented 3 weeks ago

@balt-dev The config.yaml can be customised so you can choose the option you want, you can have a look to this: https://github.com/googlefonts/googlefonts-project-template/blob/main/sources/config.yaml

balt-dev commented 3 weeks ago

Oh, thank you!

balt-dev commented 3 weeks ago

@emmamarichal I've updated the repository to allow building the font using gftools builder without any failures, so it should be good to go! By the way, even if we aren't done here, thanks for being awesome and hearing me out over all this.

emmamarichal commented 1 week ago

Hi @balt-dev thank you for your patience, I'll take a look asap and will let you know :)

emmamarichal commented 1 week ago

@balt-dev

I managed to export the font and created a .glyphs file from the .ufo you provided. The only thing to do to make it work properly is to update UPM value, from 16 to 1000(but this is something I'll do on my side).

Some fixes on v-metrics are needed (+ we will have to add some additional parameters) but otherwise the fontbakery report looks ok (see below) So basically, you don't have anything more to do, I'll reach you if the project is accepted and if I need anything from you :)

Thanks!

Image

FontBakery report

fontbakery version: 0.13.0a3

Check results

[20] Bytesized-Regular.ttf
🔥 FAIL Checking correctness of monospaced metadata.
* 🔥 **FAIL**

The PANOSE numbers are incorrect for a monospaced font.

[code: mono-bad-panose] * ⚠️ **WARN**

The OpenType spec recommends at https://learn.microsoft.com/en-us/typography/opentype/spec/recom#hhea-table that hhea.numberOfHMetrics be set to 3 but this font has 351 instead. Please read https://github.com/fonttools/fonttools/issues/3014 to decide whether this makes sense for your font.

[code: bad-numberOfHMetrics] * ⚠️ **WARN**

Font is monospaced but 2 glyphs (0.57%) have a different width. You should check the widths of: ['periodcentered.loclCAT', 'periodcentered.loclCAT.case']

[code: mono-outliers]
🔥 FAIL Ensure the font supports case swapping for all its glyphs.
* 🔥 **FAIL**

The following glyphs lack their case-swapping counterparts:

Glyph present in the font Missing case-swapping counterpart
U+0292: LATIN SMALL LETTER EZH U+01B7: LATIN CAPITAL LETTER EZH
[code: missing-case-counterparts]
🔥 FAIL Checking OS/2 usWinAscent & usWinDescent.
* 🔥 **FAIL**

OS/2.usWinAscent value should be equal or greater than 800, but got 625 instead

[code: ascent]
🔥 FAIL Font contains glyphs for whitespace characters?
* 🔥 **FAIL**

Whitespace glyph missing for codepoint 0x00A0.

[code: missing-whitespace-glyph-0x00A0]
🔥 FAIL Check Google Fonts glyph coverage.
* 🔥 **FAIL**

Missing required codepoints:

- 0x00A0 (NO-BREAK SPACE)
[code: missing-codepoints]
⚠️ WARN Check accent of Lcaron, dcaron, lcaron, tcaron
* ⚠️ **WARN**

Lcaron is decomposed and therefore could not be checked. Please check manually.

[code: decomposed-outline] * ⚠️ **WARN**

dcaron is decomposed and therefore could not be checked. Please check manually.

[code: decomposed-outline] * ⚠️ **WARN**

lcaron is decomposed and therefore could not be checked. Please check manually.

[code: decomposed-outline] * ⚠️ **WARN**

tcaron is decomposed and therefore could not be checked. Please check manually.

[code: decomposed-outline]
⚠️ WARN Check if each glyph has the recommended amount of contours.
* ⚠️ **WARN**

This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

The following glyphs do not have the recommended number of contours:

- Glyph name: numbersign Contours detected: 3    Expected: 2

- Glyph name: parenleft Contours detected: 3    Expected: 1

- Glyph name: parenright    Contours detected: 3    Expected: 1

- Glyph name: asterisk  Contours detected: 5    Expected: 1 or 4

- Glyph name: comma Contours detected: 2    Expected: 1

- Glyph name: slash Contours detected: 3    Expected: 1

- Glyph name: zero  Contours detected: 4    Expected: 2 or 3

- Glyph name: two   Contours detected: 2    Expected: 1

- Glyph name: three Contours detected: 2    Expected: 1

- Glyph name: five  Contours detected: 2    Expected: 1

- 376 more.

Use -F or --full-lists to disable shortening of long lists.

[code: contour-count]
⚠️ WARN Check font contains no unreachable glyphs
* ⚠️ **WARN**

The following glyphs could not be reached by codepoint or substitution rules:

- uni030C.alt
[code: unreachable-glyphs]
⚠️ WARN Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
* ⚠️ **WARN**

Family metadata at . does not have an article.

[code: lacks-article]
⚠️ WARN Check for codepoints not covered by METADATA subsets.
* ⚠️ **WARN**

The following codepoints supported by the font are not covered by any subsets defined in the font's metadata file, and will never be served. You can solve this by either manually adding additional subset declarations to METADATA.pb, or by editing the glyphset definitions.

  • U+02C7 CARON: try adding one of: canadian-aboriginal, yi, tifinagh
  • U+02D8 BREVE: try adding one of: canadian-aboriginal, yi
  • U+02D9 DOT ABOVE: try adding one of: canadian-aboriginal, yi
  • U+02DB OGONEK: try adding one of: canadian-aboriginal, yi
  • U+02DD DOUBLE ACUTE ACCENT: not included in any glyphset definition
  • U+0302 COMBINING CIRCUMFLEX ACCENT: try adding one of: tifinagh, coptic, math, cherokee
  • U+0306 COMBINING BREVE: try adding one of: tifinagh, old-permic
  • U+0307 COMBINING DOT ABOVE: try adding one of: syriac, old-permic, math, coptic, malayalam, tifinagh, canadian-aboriginal, tai-le
  • U+030A COMBINING RING ABOVE: try adding syriac
  • U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: osage, cherokee 9 more.

Use -F or --full-lists to disable shortening of long lists.

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext

[code: unreachable-subsetting]
⚠️ WARN Ensure dotted circle glyph is present and can attach marks.
* ⚠️ **WARN**

No dotted circle glyph present

[code: missing-dotted-circle]
⚠️ WARN Ensure soft_dotted characters lose their dot when combined with marks that replace the dot.
* ⚠️ **WARN**

The dot of soft dotted characters used in orthographies must disappear in the following strings: į̀ į́ į̂ į̃ į̄ į̌

The dot of soft dotted characters should disappear in other cases, for example: į̆ į̇ į̈ į̊ į̋ į̦̀ į̦́ į̦̂ į̦̃ į̦̄ į̦̆ į̦̇ į̦̈ į̦̊ į̦̋ į̦̌ į̧̀ į̧́ į̧̂ į̧̃

Your font fully covers the following languages that require the soft-dotted feature: Lithuanian (Latn, 2,357,094 speakers), Dutch (Latn, 31,709,104 speakers).

Your font does not cover the following languages that require the soft-dotted feature: Dii (Latn, 71,000 speakers), Ukrainian (Cyrl, 29,273,587 speakers), Koonzime (Latn, 40,000 speakers), Igbo (Latn, 27,823,640 speakers), Nateni (Latn, 100,000 speakers), Aghem (Latn, 38,843 speakers), Ngbaka (Latn, 1,020,000 speakers), Navajo (Latn, 166,319 speakers), Cicipu (Latn, 44,000 speakers), Ijo, Southeast (Latn, 2,471,000 speakers), Yala (Latn, 200,000 speakers), Lugbara (Latn, 2,200,000 speakers), Mango (Latn, 77,000 speakers), Nzakara (Latn, 50,000 speakers), South Central Banda (Latn, 244,000 speakers), Ma’di (Latn, 584,000 speakers), Bafut (Latn, 158,146 speakers), Mfumte (Latn, 79,000 speakers), Gulay (Latn, 250,478 speakers), Dan (Latn, 1,099,244 speakers), Avokaya (Latn, 100,000 speakers), Mundani (Latn, 34,000 speakers), Makaa (Latn, 221,000 speakers), Ebira (Latn, 2,200,000 speakers), Ekpeye (Latn, 226,000 speakers), Fur (Latn, 1,230,163 speakers), Southern Kisi (Latn, 360,000 speakers), Belarusian (Cyrl, 10,064,517 speakers), Basaa (Latn, 332,940 speakers), Kom (Latn, 360,685 speakers), Vute (Latn, 21,000 speakers), Kpelle, Guinea (Latn, 622,000 speakers), Zapotec (Latn, 490,000 speakers), Bete-Bendi (Latn, 100,000 speakers), Sar (Latn, 500,000 speakers), Ejagham (Latn, 120,000 speakers).

[code: soft-dotted]
⚠️ WARN Ensure fonts have ScriptLangTags declared on the 'meta' table.
* ⚠️ **WARN**

This font file does not have a 'meta' table.

[code: lacks-meta-table]
⚠️ WARN Checking OS/2 achVendID.
* ⚠️ **WARN**

OS/2 VendorID value 'NONE' is not yet recognized. If you registered it recently, then it's safe to ignore this warning message. Otherwise, you should set it to your own unique 4 character code, and register it with Microsoft at https://www.microsoft.com/typography/links/vendorlist.aspx

[code: unknown]
ℹ️ INFO List all superfamily filepaths
* ℹ️ **INFO**

.

[code: family-path]
ℹ️ INFO Show hinting filesize impact.
* ℹ️ **INFO**

Hinting filesize impact:

Bytesized-Regular.ttf
Dehinted Size 24.2kb
Hinted Size 52.6kb
Increase 28.4kb
Change 117.3 %
[code: size-impact]
ℹ️ INFO Font contains all required tables?
* ℹ️ **INFO**

This font contains the following optional tables:

- cvt 

- fpgm

- loca

- prep

- GSUB

- gasp

- vhea

- vmtx
[code: optional-tables]
ℹ️ INFO Check for presence of an ARTICLE.en_us.html file
* ℹ️ **INFO**

This font doesn't have an ARTICLE.en_us.html file.

[code: missing-article]
ℹ️ INFO EPAR table present in font?
* ℹ️ **INFO**

EPAR table not present in font. To learn more see https://github.com/fonttools/fontbakery/issues/818

[code: lacks-EPAR]
ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
* ℹ️ **INFO**

These are the ppm ranges declared on the gasp table:

PPM <= 65535: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®

[code: ranges]
[1] Family checks
ℹ️ INFO Check axis ordering on the STAT table.
* ℹ️ **INFO**

All of the fonts lack a STAT table.

[code: summary]

Summary

💥 ERROR ☠ FATAL 🔥 FAIL ⚠️ WARN ⏩ SKIP ℹ️ INFO ✅ PASS 🔎 DEBUG
0 0 5 9 123 7 109 0
0% 0% 2% 4% 49% 3% 43% 0%

Note: The following loglevels were omitted in this report:

balt-dev commented 1 week ago

Huh. When I was testing it, I got no failures. Strange.

balt-dev commented 1 week ago

See here: https://balt-dev.github.io/bytesized-gf/report.html This test is automatically done by CI, so maybe something got missed during the conversion..?

balt-dev commented 1 week ago

Ah, I see. It's an older fontbakery version. I'm going to see what I can to to get it back to 0 errors.

balt-dev commented 1 week ago

Actually, come to think of it, is version 0.13.0a3 an alpha version? If that's the case, it'd be quite annoying to test with it.

emmamarichal commented 1 week ago

It's maybe because of the conversation indeed. But no worries, I'll fix all of this so the font can follow the GF specs. But no need to do anything until we decide to onboard it! the fontbakery version will change in the meantime anyway :) Thanks!