GithubHelp home page GithubHelp logo

alex-brush's People

Contributors

crystaltype avatar rosawagner avatar vv-monsalve avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

alex-brush's Issues

Google Font QA report

Fontbakery report

Fontbakery version: 0.7.34

[9] AlexBrush-Regular.ttf
πŸ”₯ FAIL: Check `Google Fonts Latin Core` glyph coverage.
--- Rationale ---

Google Fonts expects that fonts in its collection support at least the minimal
set of characters defined in the `GF-latin-core` glyph-set.


  • πŸ”₯ FAIL Missing required codepoints: 0x2074 (SUPERSCRIPT FOUR) and 0x2215 (DIVISION SLASH) [code: missing-codepoints]
⚠ WARN: Checking OS/2 achVendID.
--- Rationale ---

Microsoft keeps a list of font vendors and their respective contact info. This
list is updated regularly and is indexed by a 4-char "Vendor ID" which is
stored in the achVendID field of the OS/2 table.

Registering your ID is not mandatory, but it is a good practice since some
applications may display the type designer / type foundry contact info on some
dialog and also because that info will be visible on Microsoft's website:

https://docs.microsoft.com/en-us/typography/vendors/

This check verifies whether or not a given font's vendor ID is registered in
that list or if it has some of the default values used by the most common font
editors.

Each new FontBakery release includes a cached copy of that list of vendor IDs.
If you registered recently, you're safe to ignore warnings emitted by this
check, since your ID will soon be included in one of our upcoming releases.


  • ⚠ WARN OS/2 VendorID value 'TSI ' 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]
⚠ WARN: Glyphs are similiar to Google Fonts version?
⚠ WARN: Check if each glyph has the recommended amount of contours.
--- Rationale ---

Visually QAing thousands of glyphs by hand is tiring. Most glyphs can only be
constructured in a handful of ways. This means a glyph's contour count will
only differ slightly amongst different fonts, e.g a 'g' could either be 2 or 3
contours, depending on whether its double story or single story.

However, a quotedbl should have 2 contours, unless the font belongs to a
display family.

This check currently does not cover variable fonts because there's plenty of
alternative ways of constructing glyphs with multiple outlines for each feature
in a VarFont. The expected contour count data for this check is currently
optimized for the typical construction of glyphs in static fonts.


  • ⚠ 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: percent Contours detected: 4 Expected: 5
Glyph name: five Contours detected: 2 Expected: 1
Glyph name: at Contours detected: 3 Expected: 2
Glyph name: D Contours detected: 3 Expected: 2
Glyph name: E Contours detected: 2 Expected: 1
Glyph name: I Contours detected: 2 Expected: 1
Glyph name: K Contours detected: 3 Expected: 1 or 2
Glyph name: L Contours detected: 3 Expected: 1
Glyph name: Q Contours detected: 3 Expected: 2
Glyph name: S Contours detected: 2 Expected: 1
Glyph name: b Contours detected: 1 Expected: 2
Glyph name: q Contours detected: 3 Expected: 2
Glyph name: s Contours detected: 2 Expected: 1
Glyph name: Adieresis Contours detected: 6 Expected: 4
Glyph name: AE Contours detected: 4 Expected: 2
Glyph name: Egrave Contours detected: 3 Expected: 2
Glyph name: Eacute Contours detected: 3 Expected: 2
Glyph name: Ecircumflex Contours detected: 3 Expected: 2
Glyph name: Edieresis Contours detected: 6 Expected: 3
Glyph name: Igrave Contours detected: 3 Expected: 2
Glyph name: Iacute Contours detected: 3 Expected: 2
Glyph name: Icircumflex Contours detected: 3 Expected: 2
Glyph name: Idieresis Contours detected: 6 Expected: 3
Glyph name: Eth Contours detected: 3 Expected: 2
Glyph name: Odieresis Contours detected: 6 Expected: 4
Glyph name: Oslash Contours detected: 4 Expected: 2 or 3
Glyph name: Udieresis Contours detected: 5 Expected: 3
Glyph name: germandbls Contours detected: 2 Expected: 1
Glyph name: aring Contours detected: 3 Expected: 4
Glyph name: ydieresis Contours detected: 5 Expected: 3
Glyph name: aogonek Contours detected: 3 Expected: 2
Glyph name: Cdotaccent Contours detected: 3 Expected: 2
Glyph name: cdotaccent Contours detected: 3 Expected: 2
Glyph name: Dcaron Contours detected: 4 Expected: 3
Glyph name: Dcroat Contours detected: 3 Expected: 2
Glyph name: dcroat Contours detected: 3 Expected: 2
Glyph name: Emacron Contours detected: 3 Expected: 2
Glyph name: Edotaccent Contours detected: 4 Expected: 2
Glyph name: edotaccent Contours detected: 4 Expected: 3
Glyph name: Eogonek Contours detected: 3 Expected: 1 or 2
Glyph name: eogonek Contours detected: 3 Expected: 2
Glyph name: Ecaron Contours detected: 3 Expected: 2
Glyph name: Gdotaccent Contours detected: 3 Expected: 2
Glyph name: uni0122 Contours detected: 1 Expected: 2
Glyph name: Itilde Contours detected: 3 Expected: 2
Glyph name: Imacron Contours detected: 3 Expected: 2
Glyph name: Iogonek Contours detected: 3 Expected: 1 or 2
Glyph name: Idotaccent Contours detected: 4 Expected: 2
Glyph name: IJ Contours detected: 3 Expected: 1 or 2
Glyph name: uni0136 Contours detected: 4 Expected: 2 or 3
Glyph name: Lacute Contours detected: 4 Expected: 2
Glyph name: uni013B Contours detected: 4 Expected: 2
Glyph name: uni013C Contours detected: 3 Expected: 2
Glyph name: Lcaron Contours detected: 4 Expected: 2
Glyph name: Lslash Contours detected: 3 Expected: 1
Glyph name: OE Contours detected: 3 Expected: 2
Glyph name: Racute Contours detected: 2 Expected: 3
Glyph name: uni0156 Contours detected: 2 Expected: 3
Glyph name: Rcaron Contours detected: 2 Expected: 3
Glyph name: Sacute Contours detected: 3 Expected: 2
Glyph name: sacute Contours detected: 3 Expected: 2
Glyph name: Scedilla Contours detected: 3 Expected: 1 or 2
Glyph name: scedilla Contours detected: 3 Expected: 1 or 2
Glyph name: Scaron Contours detected: 3 Expected: 2
Glyph name: scaron Contours detected: 3 Expected: 2
Glyph name: Tbar Contours detected: 2 Expected: 1
Glyph name: tbar Contours detected: 2 Expected: 1
Glyph name: Uogonek Contours detected: 2 Expected: 1
Glyph name: uogonek Contours detected: 2 Expected: 1
Glyph name: Wcircumflex Contours detected: 3 Expected: 2
Glyph name: Ydieresis Contours detected: 5 Expected: 3
Glyph name: Zdotaccent Contours detected: 3 Expected: 2
Glyph name: zdotaccent Contours detected: 3 Expected: 2
Glyph name: florin Contours detected: 2 Expected: 1
Glyph name: Uhorn Contours detected: 2 Expected: 1
Glyph name: uhorn Contours detected: 2 Expected: 1
Glyph name: uni0218 Contours detected: 3 Expected: 2
Glyph name: uni0219 Contours detected: 3 Expected: 2
Glyph name: dotaccent Contours detected: 2 Expected: 1
Glyph name: uni0307 Contours detected: 2 Expected: 1
Glyph name: dotbelowcomb Contours detected: 2 Expected: 1
Glyph name: Wgrave Contours detected: 3 Expected: 2
Glyph name: Wacute Contours detected: 3 Expected: 2
Glyph name: Wdieresis Contours detected: 4 Expected: 3
Glyph name: uni1E9E Contours detected: 4 Expected: 1
Glyph name: uni1EA0 Contours detected: 4 Expected: 3
Glyph name: uni1EA1 Contours detected: 4 Expected: 3
Glyph name: uni1EAC Contours detected: 5 Expected: 4
Glyph name: uni1EAD Contours detected: 5 Expected: 4
Glyph name: uni1EB6 Contours detected: 5 Expected: 4
Glyph name: uni1EB7 Contours detected: 5 Expected: 4
Glyph name: uni1EB8 Contours detected: 4 Expected: 2
Glyph name: uni1EB9 Contours detected: 4 Expected: 3
Glyph name: uni1EBA Contours detected: 3 Expected: 2
Glyph name: uni1EBC Contours detected: 3 Expected: 2
Glyph name: uni1EBE Contours detected: 4 Expected: 3
Glyph name: uni1EC0 Contours detected: 4 Expected: 3
Glyph name: uni1EC2 Contours detected: 4 Expected: 3
Glyph name: uni1EC4 Contours detected: 4 Expected: 3
Glyph name: uni1EC6 Contours detected: 5 Expected: 3
Glyph name: uni1EC7 Contours detected: 5 Expected: 4
Glyph name: uni1EC8 Contours detected: 3 Expected: 2
Glyph name: uni1ECA Contours detected: 4 Expected: 2
Glyph name: uni1ECB Contours detected: 4 Expected: 3
Glyph name: uni1ECC Contours detected: 4 Expected: 3
Glyph name: uni1ECD Contours detected: 4 Expected: 3
Glyph name: uni1ED8 Contours detected: 5 Expected: 4
Glyph name: uni1ED9 Contours detected: 5 Expected: 4
Glyph name: uni1EE2 Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EE3 Contours detected: 4 Expected: 3
Glyph name: uni1EE4 Contours detected: 3 Expected: 2
Glyph name: uni1EE5 Contours detected: 3 Expected: 2
Glyph name: uni1EE8 Contours detected: 3 Expected: 2
Glyph name: uni1EE9 Contours detected: 3 Expected: 2
Glyph name: uni1EEA Contours detected: 3 Expected: 2
Glyph name: uni1EEB Contours detected: 3 Expected: 2
Glyph name: uni1EEC Contours detected: 3 Expected: 2
Glyph name: uni1EED Contours detected: 3 Expected: 2
Glyph name: uni1EEE Contours detected: 3 Expected: 2
Glyph name: uni1EEF Contours detected: 3 Expected: 2
Glyph name: uni1EF0 Contours detected: 4 Expected: 2
Glyph name: uni1EF1 Contours detected: 4 Expected: 2
Glyph name: uni1EF4 Contours detected: 3 Expected: 2
Glyph name: uni1EF5 Contours detected: 3 Expected: 2
Glyph name: AE Contours detected: 4 Expected: 2
Glyph name: Adieresis Contours detected: 6 Expected: 4
Glyph name: Cdotaccent Contours detected: 3 Expected: 2
Glyph name: D Contours detected: 3 Expected: 2
Glyph name: Dcaron Contours detected: 4 Expected: 3
Glyph name: Dcroat Contours detected: 3 Expected: 2
Glyph name: E Contours detected: 2 Expected: 1
Glyph name: Eacute Contours detected: 3 Expected: 2
Glyph name: Ecaron Contours detected: 3 Expected: 2
Glyph name: Ecircumflex Contours detected: 3 Expected: 2
Glyph name: Edieresis Contours detected: 6 Expected: 3
Glyph name: Edotaccent Contours detected: 4 Expected: 2
Glyph name: Egrave Contours detected: 3 Expected: 2
Glyph name: Emacron Contours detected: 3 Expected: 2
Glyph name: Eogonek Contours detected: 3 Expected: 1 or 2
Glyph name: Eth Contours detected: 3 Expected: 2
Glyph name: Gdotaccent Contours detected: 3 Expected: 2
Glyph name: I Contours detected: 2 Expected: 1
Glyph name: IJ Contours detected: 3 Expected: 1 or 2
Glyph name: Iacute Contours detected: 3 Expected: 2
Glyph name: Icircumflex Contours detected: 3 Expected: 2
Glyph name: Idieresis Contours detected: 6 Expected: 3
Glyph name: Idotaccent Contours detected: 4 Expected: 2
Glyph name: Igrave Contours detected: 3 Expected: 2
Glyph name: Imacron Contours detected: 3 Expected: 2
Glyph name: Iogonek Contours detected: 3 Expected: 1 or 2
Glyph name: Itilde Contours detected: 3 Expected: 2
Glyph name: K Contours detected: 3 Expected: 1 or 2
Glyph name: L Contours detected: 3 Expected: 1
Glyph name: Lacute Contours detected: 4 Expected: 2
Glyph name: Lcaron Contours detected: 4 Expected: 2
Glyph name: Lslash Contours detected: 3 Expected: 1
Glyph name: OE Contours detected: 3 Expected: 2
Glyph name: Odieresis Contours detected: 6 Expected: 4
Glyph name: Oslash Contours detected: 4 Expected: 2 or 3
Glyph name: Q Contours detected: 3 Expected: 2
Glyph name: Racute Contours detected: 2 Expected: 3
Glyph name: Rcaron Contours detected: 2 Expected: 3
Glyph name: S Contours detected: 2 Expected: 1
Glyph name: Sacute Contours detected: 3 Expected: 2
Glyph name: Scaron Contours detected: 3 Expected: 2
Glyph name: Tbar Contours detected: 2 Expected: 1
Glyph name: Udieresis Contours detected: 5 Expected: 3
Glyph name: Uhorn Contours detected: 2 Expected: 1
Glyph name: Uogonek Contours detected: 2 Expected: 1
Glyph name: Wacute Contours detected: 3 Expected: 2
Glyph name: Wcircumflex Contours detected: 3 Expected: 2
Glyph name: Wdieresis Contours detected: 4 Expected: 3
Glyph name: Wgrave Contours detected: 3 Expected: 2
Glyph name: Ydieresis Contours detected: 5 Expected: 3
Glyph name: Zdotaccent Contours detected: 3 Expected: 2
Glyph name: aogonek Contours detected: 3 Expected: 2
Glyph name: aring Contours detected: 3 Expected: 4
Glyph name: at Contours detected: 3 Expected: 2
Glyph name: b Contours detected: 1 Expected: 2
Glyph name: cdotaccent Contours detected: 3 Expected: 2
Glyph name: dcroat Contours detected: 3 Expected: 2
Glyph name: dotaccent Contours detected: 2 Expected: 1
Glyph name: edotaccent Contours detected: 4 Expected: 3
Glyph name: eogonek Contours detected: 3 Expected: 2
Glyph name: five Contours detected: 2 Expected: 1
Glyph name: fl Contours detected: 1 Expected: 2
Glyph name: germandbls Contours detected: 2 Expected: 1
Glyph name: percent Contours detected: 4 Expected: 5
Glyph name: q Contours detected: 3 Expected: 2
Glyph name: s Contours detected: 2 Expected: 1
Glyph name: sacute Contours detected: 3 Expected: 2
Glyph name: scaron Contours detected: 3 Expected: 2
Glyph name: tbar Contours detected: 2 Expected: 1
Glyph name: uhorn Contours detected: 2 Expected: 1
Glyph name: uni0122 Contours detected: 1 Expected: 2
Glyph name: uni0136 Contours detected: 4 Expected: 2 or 3
Glyph name: uni013B Contours detected: 4 Expected: 2
Glyph name: uni013C Contours detected: 3 Expected: 2
Glyph name: uni0156 Contours detected: 2 Expected: 3
Glyph name: uni0218 Contours detected: 3 Expected: 2
Glyph name: uni0219 Contours detected: 3 Expected: 2
Glyph name: uni0307 Contours detected: 2 Expected: 1
Glyph name: uni1E9E Contours detected: 4 Expected: 1
Glyph name: uni1EA0 Contours detected: 4 Expected: 3
Glyph name: uni1EA1 Contours detected: 4 Expected: 3
Glyph name: uni1EAC Contours detected: 5 Expected: 4
Glyph name: uni1EAD Contours detected: 5 Expected: 4
Glyph name: uni1EB6 Contours detected: 5 Expected: 4
Glyph name: uni1EB7 Contours detected: 5 Expected: 4
Glyph name: uni1EB8 Contours detected: 4 Expected: 2
Glyph name: uni1EB9 Contours detected: 4 Expected: 3
Glyph name: uni1EBA Contours detected: 3 Expected: 2
Glyph name: uni1EBC Contours detected: 3 Expected: 2
Glyph name: uni1EBE Contours detected: 4 Expected: 3
Glyph name: uni1EC0 Contours detected: 4 Expected: 3
Glyph name: uni1EC2 Contours detected: 4 Expected: 3
Glyph name: uni1EC4 Contours detected: 4 Expected: 3
Glyph name: uni1EC6 Contours detected: 5 Expected: 3
Glyph name: uni1EC7 Contours detected: 5 Expected: 4
Glyph name: uni1EC8 Contours detected: 3 Expected: 2
Glyph name: uni1ECA Contours detected: 4 Expected: 2
Glyph name: uni1ECB Contours detected: 4 Expected: 3
Glyph name: uni1ECC Contours detected: 4 Expected: 3
Glyph name: uni1ECD Contours detected: 4 Expected: 3
Glyph name: uni1ED8 Contours detected: 5 Expected: 4
Glyph name: uni1ED9 Contours detected: 5 Expected: 4
Glyph name: uni1EE2 Contours detected: 5 Expected: 3 or 4
Glyph name: uni1EE3 Contours detected: 4 Expected: 3
Glyph name: uni1EE4 Contours detected: 3 Expected: 2
Glyph name: uni1EE5 Contours detected: 3 Expected: 2
Glyph name: uni1EE8 Contours detected: 3 Expected: 2
Glyph name: uni1EE9 Contours detected: 3 Expected: 2
Glyph name: uni1EEA Contours detected: 3 Expected: 2
Glyph name: uni1EEB Contours detected: 3 Expected: 2
Glyph name: uni1EEC Contours detected: 3 Expected: 2
Glyph name: uni1EED Contours detected: 3 Expected: 2
Glyph name: uni1EEE Contours detected: 3 Expected: 2
Glyph name: uni1EEF Contours detected: 3 Expected: 2
Glyph name: uni1EF0 Contours detected: 4 Expected: 2
Glyph name: uni1EF1 Contours detected: 4 Expected: 2
Glyph name: uni1EF4 Contours detected: 3 Expected: 2
Glyph name: uni1EF5 Contours detected: 3 Expected: 2
Glyph name: uogonek Contours detected: 2 Expected: 1
Glyph name: ydieresis Contours detected: 5 Expected: 3
Glyph name: zdotaccent Contours detected: 3 Expected: 2 [code: contour-count]

⚠ WARN: Are there caret positions declared for every ligature?
--- Rationale ---

All ligatures in a font must have corresponding caret (text cursor) positions
defined in the GDEF table, otherwhise, users may experience issues with caret
rendering.

If using GlyphsApp, ligature carets can be set directly on canvas by accessing
the `Glyph -> Set Anchors` menu option or by pressing the `Cmd+U` keyboard
shortcut.

If designing with UFOs, (as of Oct 2020) ligature carets are not yet compiled
by ufo2ft, and therefore will not build via FontMake. See
googlefonts/ufo2ft/issues/329


  • ⚠ WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
⚠ WARN: Is there kerning info for non-ligated sequences?
--- Rationale ---

Fonts with ligatures should have kerning on the corresponding non-ligated
sequences for text where ligatures aren't used (eg
https://github.com/impallari/Raleway/issues/14).


  • ⚠ WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • f + i
    • i + l

    [code: lacks-kern-info]

⚠ WARN: Do any segments have colinear vectors?
--- Rationale ---

This test looks for consecutive line segments which have the same angle. This
normally happens if an outline point has been added by accident.

This test is not run for variable fonts, as they may legitimately have colinear
vectors.


  • ⚠ WARN The following glyphs have colinear vectors:
    • four: L<<622.0,615.0>--<624.0,618.0>> -> L<<624.0,618.0>--<633.0,632.0>> [code: found-colinear-vectors]
⚠ WARN: Do outlines contain any jaggy segments?
--- Rationale ---

This test heuristically detects outline segments which form a particularly
small angle, indicative of an outline error. This may cause false positives in
cases such as extreme ink traps, so should be regarded as advisory and backed
up by manual inspection.


  • ⚠ WARN The following glyphs have jaggy segments:
    • B: B<<772.0,357.0>-<706.0,334.0>-<630.0,333.0>>/B<<630.0,333.0>-<689.0,330.0>-<728.0,291.0>> = 3.664686159238357
    • Eng: B<<551.0,272.0>-<531.0,238.0>-<504.0,197.0>>/B<<504.0,197.0>-<535.0,236.0>-<605.0,296.0>> = 5.113832247283459
    • Eng: B<<613.5,-267.5>-<602.0,-289.0>-<603.0,-287.0>>/B<<603.0,-287.0>-<581.0,-328.0>-<551.5,-347.5>> = 1.6523046776507706
    • M: B<<606.0,361.0>-<588.0,324.0>-<525.0,226.0>>/L<<525.0,226.0>--<602.0,324.0>> = 5.422000315261428
    • M: B<<821.0,242.0>-<815.0,220.0>-<813.0,217.0>>/B<<813.0,217.0>-<817.0,222.0>-<832.5,240.5>> = 4.969740728110216
    • N: B<<551.0,272.0>-<531.0,238.0>-<504.0,197.0>>/B<<504.0,197.0>-<535.0,236.0>-<605.0,296.0>> = 5.113832247283459
    • Nacute: B<<551.0,272.0>-<531.0,238.0>-<504.0,197.0>>/B<<504.0,197.0>-<535.0,236.0>-<605.0,296.0>> = 5.113832247283459
    • Ncaron: B<<551.0,272.0>-<531.0,238.0>-<504.0,197.0>>/B<<504.0,197.0>-<535.0,236.0>-<605.0,296.0>> = 5.113832247283459
    • Ntilde: B<<551.0,272.0>-<531.0,238.0>-<504.0,197.0>>/B<<504.0,197.0>-<535.0,236.0>-<605.0,296.0>> = 5.113832247283459
    • S: B<<247.5,-67.0>-<269.0,-75.0>-<297.0,-82.0>>/L<<297.0,-82.0>--<296.0,-82.0>> = 14.036243467926484 and 49 more. [code: found-jaggy-segments]
⚠ WARN: Do outlines contain any semi-vertical or semi-horizontal lines?
--- Rationale ---

This test detects line segments which are nearly, but not quite, exactly
horizontal or vertical. Sometimes such lines are created by design, but often
they are indicative of a design error.

This test is disabled for italic styles, which often contain nearly-upright
lines.


  • ⚠ WARN The following glyphs have semi-vertical/semi-horizontal lines:
    • numbersign: L<<41.0,257.0>--<207.0,258.0>>
    • numbersign: L<<430.0,213.0>--<233.0,212.0>>
    • numbersign: L<<496.0,258.0>--<640.0,259.0>>
    • numbersign: L<<508.0,433.0>--<316.0,432.0>> and yen: L<<408.0,309.0>--<546.0,310.0>> [code: found-semi-vertical]

Summary

πŸ’” ERROR πŸ”₯ FAIL ⚠ WARN πŸ’€ SKIP β„Ή INFO 🍞 PASS πŸ”Ž DEBUG
0 1 8 91 9 86 0
0% 1% 4% 47% 5% 44% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • INFO
  • PASS
  • DEBUG

Font Production

  • Review/Adjust metrics and alignment zones
  • Adjust Vertical metrics for the update
  • Include License strings
  • fsSelection bit 7
  • fsType bit 0
  • Copyright strigs
  • Bump version number
  • Build
  • CI build & test
  • FB QA
  • Regression QA
  • Visual QA
  • PR

Font Production L1 - Update to GF Plus

  • Pull new source from DropBox
  • Inspect anchors and composite glyphs
  • Review/update OT feas
  • Review/Update Kerning (basic pairs)
  • Add sample image to repo
  • Add build instructions to repo
  • Diffenator poofs
  • PR

Diacritics improvements needed

Hi @crystaltype, after pulling the latest source file and producing the new font, there are still some diacritics issues. Please inspect the following and the list in the Font Mastering Issue to address all the improvements needed in the font.

  • The combining marks created have gone way too up of the base glyph, they should be at a hight similar to the original position of the font. Please add the original glyphs to the background as a reference.
  • All the composite glyphs should be produced combining a base glyph + comb mark
  • DIacritics should be aligned
  • Subtly balancing the overall thickness, size and visual weight among marks. E.g., the circumflex seems to be lighter or smaller than acute or grave
  • Balancing the sidebearing/spacing of the marks to prevent them to alter the spacing of the composite glyphs
  • Stacked diacritics distance and position should be balanced
  • Uppercase diacritics comb.case are needed for Caps as they differ in size and thickness

Original diacritics
Alex-Brush-misaligned-diacritics

Current diacritics
Screen Shot 2021-03-02 at 20 13 58

Stacked diacritics before
Screen Shot 2021-03-02 at 20 15 21

Stacked diacritics after
Screen Shot 2021-03-02 at 20 15 47

Diffenator report

Diffenator Report comparing published fonts against the one provided by the designer.

glyphs_modified
glyphs_new

Outline Quality Checklist

Outline Quality Checklist

Make sure your font is ready for mastering by fulfilling this checklist. Design is not particularly judged here, we are talking from the point of view of the technical quality aspect of a font, i.e: what you see in your font editor is what will everyone see on their own screen or printed matter.

Contours

Segments

  • Mixed outline type : The outlines of one font must be either PostScript (OpenType Fonts font with CFF compression / .otf) or TrueType (OpenType Fonts with TrueType compression / .ttf). Fontlab 5 allows mixed curve type within the same glyph.
  • Wrong direction: For PS outlines, the outer-shape goes counter-clockwise, and the inner-shape (or counter-shape) goes clockwise. It is the reverse for TT outlines: outer-shape goes clockwise and counter-shape goes counter-clockwise. We usually use PS curves for design, and they are then converted to TT when exporting TTF fonts. Whatever the chosen outlines, make sure it is consistent across the entire family.
  • Almost straight: If a segment is misaligned of one or two units, it may be a mistake from the designer. This small offset can cause a big misinterpretation form the rasterizer at small ppm sizes.
  • Missing inflexion point: It is considered that a curve has a suspicious inflexion when it is a single segment going from convex to concave (and vice versa). We need to divide this segment by adding a node at the point where the curve is changing condition, therefore the tangent represented by the two handles crosses the curve.
  • Collinear: If two line-segments are connected with the same angle (or almost the same angle), or with a slight offset, it means that the entire line could be made with one segment (two points not more).
  • Short: Segments of 1 or 2 units are often used to make ink traps, but they are also sometimes unwanted and, again, can be wildly rendered on some screens.
  • Open: A contour can only be considered as such if it has a closed path, otherwise, it won't be rendered at all.
  • Overlaying: It disturbs rendering, interpolation and variation.
  • Overlapping: The crossing of two independent contours is not such a problem in VF (although small overlaps are preferred), and generally merged during the generation of static binaries. If you want to control the result of the merging, it is better to do it yourself. If not, try to keep them in a small overlapped area. Also try not to overlap more than 2 contours in the same area (contour crossing a contour itself crossing another contour, like an asterisk, creates confusion during generation and rendering). In any case, try to avoid overlapping shapes which cross a plain shape and a closed counter-shape (typically, Oslash should be manually merged for example).
  • Self-crossing: Often known as open-corners, it is very helpful while designing and recommended for nice interpolations. They will be preserved for VF fonts and merged during generation to static binaries. To better control the result, pay attention to the size of it (not too big, not too small) as well as not leaving portions of it outside the main shape like the stem, since it can cause unwanted rendering issues. If you want to control the result of the merging, do it yourself if not, the same advice as above.

On-curve points (nodes)

  • Overlaying: Also called "empty segments” because they don't have a length. They are often useless and sometimes confusing for hinting and rendering β€” except for some rare cases of variations.
  • Missing on extremes: Points at X and Y extremes of the paths are required for hinting reasons since they attach hints to the extremum of the stem. Also, by having them you could control better the curves and probably reduce the necessity of extra nodes.
  • Fractional coordinates :
  • Broken smooth connection: Ensure the right type of node according to the connection, smooth (between to curve segments) or sharp (between a curve and a line segment; or two line segments)

Off-curve points (handles)

  • Almost straight
  • Inside node

Components

  • Transformed components: Transformed components ((scaled, mirrored, stretched, rotated) are not processed correctly while generating variable ttf. This could cause issues like the original component is displayed instead, or unwanted fractional coordinates, as well as the wrong direction in outlines.
  • Nested components: Component referring to another component (nested) are not exported correctly to the ttf variable format. They take back the coordinates of the original glyph. E.g. Issue #2961
  • Overlapping components: While generated ttf static binaries, Fontmake doesn't decompose overlapping components, which is good for Variable Fonts but can cause some issues in static TTF.

Font Mastering

Diacritics

  • Composite glyphs need to be made out of components using anchors
  • Comb.case are missing
  • Misaligned diacritics

Glyphs & Outlines

  • Missing glyphs: 0x2074 (SUPERSCRIPT FOUR) and 0x2215 (DIVISION SLASH)
  • Some extreme points are missing
  • Caron.alt missing
  • Caron.alt glyphs need to be adjusted
  • Inspect the Outline Quality Checklist and ensure everything is working well in Alex Brush

OT Features

  • OT features missing

Alex-Brush-misaligned-diacritics

Screen Shot 2021-02-26 at 12 57 50

Browser Preview

These are the Browser preview images after pulling the latest source file at commit b22fd73 and producing new fonts.

OS X High Sierra Safari 11

Desktop_OS_X_High_Sierra_safari_11 1_
Desktop_OS_X_High_Sierra_safari_11 1_
Desktop_OS_X_High_Sierra_safari_11 1_

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.