TiroTypeworks / Indigo

32 stars 3 forks source link

Tiro Devanagari Hindi - FB Report #5

Closed vv-monsalve closed 2 years ago

vv-monsalve commented 2 years ago

Hi @tiroj, this is the FB report for the v1.51 Tiro Devanagari Hindi fonts

Fails and Warns reported seem to be the expected ones. Placing the report here in case you would like to double-check.

Fontbakery report

Fontbakery version: 0.8.7

[12] TiroDevaHindi-Italic.ttf
πŸ”₯ FAIL: Check name table: FONT_FAMILY_NAME entries.
* [com.google.fonts/check/name/familyname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/familyname)
--- Rationale ---
Checks that the family name infered from the font filename matches the string at
nameID 1 (NAMEID_FONT_FAMILY_NAME) if it conforms to RIBBI and otherwise checks
that nameID 1 is the family name + the style name.
* πŸ”₯ **FAIL** Entry [FONT_FAMILY_NAME(1):WINDOWS(3)] on the "name" table: Expected "Tiro Deva Hindi" but got "Tiro Devanagari Hindi". [code: mismatch]
πŸ”₯ FAIL: Check name table: FULL_FONT_NAME entries.
* [com.google.fonts/check/name/fullfontname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/fullfontname)
--- Rationale ---
Requirements for the FULL_FONT_NAME entries in the 'name' table.
* πŸ”₯ **FAIL** [FULL_FONT_NAME(4):WINDOWS(3)] Expected: "Tiro Deva Hindi Italic" But got: "Tiro Devanagari Hindi Italic" [code: bad-entry]
⚠ WARN: Ensure Stylistic Sets have description.
* [com.google.fonts/check/stylisticset_description](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/stylisticset_description)
--- Rationale ---
Stylistic sets should provide description text. Programs such as InDesign,
TextEdit and Inkscape use that info to display to the users so that they know
what a given stylistic set offers.
* ⚠ **WARN** The stylistic set ss02 lacks a description string on the 'name' table. [code: missing-description] * ⚠ **WARN** The stylistic set ss03 lacks a description string on the 'name' table. [code: missing-description] * ⚠ **WARN** The stylistic set ss04 lacks a description string on the 'name' table. [code: missing-description] * ⚠ **WARN** The stylistic set ss05 lacks a description string on the 'name' table. [code: missing-description]
⚠ WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table.
* [com.google.fonts/check/meta/script_lang_tags](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/meta/script_lang_tags)
--- Rationale ---
The OpenType 'meta' table originated at Apple. Microsoft added it to OT with
just two DataMap records:
- dlng: comma-separated ScriptLangTags that indicate which scripts, or languages
and scripts, with possible variants, the font is designed for
- slng: comma-separated ScriptLangTags that indicate which scripts, or languages
and scripts, with possible variants, the font supports
The slng structure is intended to describe which languages and scripts the font
overall supports. For example, a Traditional Chinese font that also contains
Latin characters, can indicate Hant,Latn, showing that it supports Hant, the
Traditional Chinese variant of the Hani script, and it also supports the Latn
script
The dlng structure is far more interesting. A font may contain various glyphs,
but only a particular subset of the glyphs may be truly "leading" in the design,
while other glyphs may have been included for technical reasons. Such a
Traditional Chinese font could only list Hant there, showing that it’s designed
for Traditional Chinese, but the font would omit Latn, because the developers
don’t think the font is really recommended for purely Latin-script use.
The tags used in the structures can comprise just script, or also language and
script. For example, if a font has Bulgarian Cyrillic alternates in the locl
feature for the cyrl BGR OT languagesystem, it could also indicate in dlng
explicitly that it supports bul-Cyrl. (Note that the scripts and languages in
meta use the ISO language and script codes, not the OpenType ones).
This check ensures that the font has the meta table containing the slng and dlng
structures.
All families in the Google Fonts collection should contain the 'meta' table.
Windows 10 already uses it when deciding on which fonts to fall back to. The
Google Fonts API and also other environments could use the data for smarter
filtering. Most importantly, those entries should be added to the Noto fonts.
In the font making process, some environments store this data in external files
already. But the meta table provides a convenient way to store this inside the
font file, so some tools may add the data, and unrelated tools may read this
data. This makes the solution much more portable and universal.
* ⚠ **WARN** This font file does not have a 'meta' table. [code: lacks-meta-table]
⚠ WARN: Font has **proper** whitespace glyph names?
* [com.google.fonts/check/whitespace_glyphnames](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/whitespace_glyphnames)
--- Rationale ---
This check enforces adherence to recommended whitespace (codepoints 0020 and
00A0) glyph names according to the Adobe Glyph List.
* ⚠ **WARN** Glyph 0x00A0 is called "nbspace": Change to "uni00A0" [code: not-recommended-00a0]
⚠ WARN: Glyph names are all valid?
* [com.google.fonts/check/valid_glyphnames](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/valid_glyphnames)
--- Rationale ---
Microsoft's recommendations for OpenType Fonts states the following:
'NOTE: The PostScript glyph name must be no longer than 31 characters, include
only uppercase or lowercase English letters, European digits, the period or the
underscore, i.e. from the set [A-Za-z0-9_.] and should start with a letter,
except the special glyph name ".notdef" which starts with a period.'
https://docs.microsoft.com/en-us/typography/opentype/spec/recom#post-table
In practice, though, particularly in modern environments, glyph names can be as
long as 63 characters.
According to the "Adobe Glyph List Specification" available at:
https://github.com/adobe-type-tools/agl-specification
* ⚠ **WARN** The following glyph names may be too long for some legacy systems which may expect a maximum 31-char length limit: L_ringbelowcomb_macroncomb_acutecomb, R_ringbelowcomb_macroncomb_acutecomb, l_ringbelowcomb_macroncomb_acutecomb, r_ringbelowcomb_macroncomb_acutecomb, L_ringbelowcomb_macroncomb_acutecomb.sc, R_ringbelowcomb_macroncomb_acutecomb.sc, G_macronbelowcomb_H_macronbelowcomb and G_macronbelowcomb_H_macronbelowcomb.sc [code: legacy-long-names]
⚠ WARN: Check font contains no unreachable glyphs
* [com.google.fonts/check/unreachable_glyphs](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/unreachable_glyphs)
--- Rationale ---
Glyphs are either accessible directly through Unicode codepoints or through
substitution rules. Any glyphs not accessible by either of these means are
redundant and serve only to increase the font's file size.
* ⚠ **WARN** The following glyphs could not be reached by codepoint or substitution rules: - dSignOeAnusvara - dSignAyReph - dDd.half - dSignOoeRephAnusvara - dTt.half - dDdMarwari.half - headline100 - dNa.post - headline200 - dCh.halfalt - dSignAwReph - dSignOeRephAnusvara - dSignAyRephAnusvara - dDdh.half - dV.half2 - dH.half - dSignAyAnusvara - dBb.half2 - dSignAwRephAnusvara - dNg.half - dCh.half - dTth.half - dDR.half - headline50 - dB.half2 - And dD.half [code: unreachable-glyphs]
⚠ WARN: Check if each glyph has the recommended amount of contours.
* [com.google.fonts/check/contour_count](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/contour_count)
--- 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 font has a 'Soft Hyphen' character (codepoint 0x00AD) which is supposed to be zero-width and invisible, and is used to mark a hyphenation possibility within a word in the absence of or overriding dictionary hyphenation. It is mostly an obsolete mechanism now, and the character is only included in fonts for legacy codepage coverage. [code: softhyphen] * ⚠ **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: dKha Contours detected: 2 Expected: 1 or 3 - Glyph name: dOm Contours detected: 4 Expected: 3 - Glyph name: dKhha Contours detected: 3 Expected: 2 or 4 - Glyph name: dOne Contours detected: 2 Expected: 1 - Glyph name: dNine Contours detected: 1 Expected: 2 - And Glyph name: rupee Contours detected: 1 Expected: 3 [code: contour-count]
⚠ WARN: Checking Vertical Metric Linegaps.
* [com.google.fonts/check/linegaps](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/hhea.html#com.google.fonts/check/linegaps) * ⚠ **WARN** hhea lineGap is not equal to 0. [code: hhea]
⚠ WARN: Check mark characters are in GDEF mark glyph class.
* [com.google.fonts/check/gdef_mark_chars](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/gdef.html#com.google.fonts/check/gdef_mark_chars)
--- Rationale ---
Mark characters should be in the GDEF mark glyph class.
* ⚠ **WARN** The following mark characters could be in the GDEF mark glyph class: acutecomb (U+0301), brevebelowcomb (U+032E), brevecomb (U+0306), candrabinducomb (U+0310), caroncomb (U+030C), cedillacomb (U+0327), circumflexcomb (U+0302), commaaccentcomb (U+0326), dieresisbelowcomb (U+0324), dieresiscomb (U+0308), dotaccentcomb (U+0307), dotbelowcomb (U+0323), gravecomb (U+0300), macronbelowcomb (U+0331), macroncomb (U+0304), macrondblbelowcomb (U+035F), ringbelowcomb (U+0325), ringcomb (U+030A) and tildecomb (U+0303) [code: mark-chars]
⚠ WARN: Check GDEF mark glyph class doesn't have characters that are not marks.
* [com.google.fonts/check/gdef_non_mark_chars](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/gdef.html#com.google.fonts/check/gdef_non_mark_chars)
--- Rationale ---
Glyphs in the GDEF mark glyph class become non-spacing and may be repositioned
if they have mark anchors.
Only combining mark glyphs should be in that class. Any non-mark glyph must not
be in that class, in particular spacing glyphs.
* ⚠ **WARN** The following non-mark characters should not be in the GDEF mark glyph class: U+0903 [code: non-mark-chars]
⚠ WARN: Do any segments have colinear vectors?
* [com.google.fonts/check/outline_colinear_vectors](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/.html#com.google.fonts/check/outline_colinear_vectors)
--- Rationale ---
This check looks for consecutive line segments which have the same angle. This
normally happens if an outline point has been added by accident.
This check is not run for variable fonts, as they may legitimately have colinear
vectors.
* ⚠ **WARN** The following glyphs have colinear vectors: * b (U+0062): L<<250.0,565.0>--<221.0,424.0>> -> L<<221.0,424.0>--<206.0,364.0>> * h (U+0068): L<<250.0,565.0>--<218.0,413.0>> -> L<<218.0,413.0>--<202.0,345.0>> * hdotbelow (U+1E25): L<<255.0,565.0>--<223.0,413.0>> -> L<<223.0,413.0>--<207.0,345.0>> * hlinebelow (U+1E96): L<<255.0,565.0>--<223.0,413.0>> -> L<<223.0,413.0>--<207.0,345.0>> * k (U+006B): L<<179.0,207.0>--<178.0,203.0>> -> L<<178.0,203.0>--<136.0,0.0>> * k (U+006B): L<<252.0,565.0>--<221.0,415.0>> -> L<<221.0,415.0>--<202.0,337.0>> * kdotbelow (U+1E33): L<<182.0,207.0>--<181.0,203.0>> -> L<<181.0,203.0>--<139.0,0.0>> * kdotbelow (U+1E33): L<<255.0,565.0>--<224.0,415.0>> -> L<<224.0,415.0>--<205.0,337.0>> * klinebelow (U+1E35): L<<182.0,207.0>--<181.0,203.0>> -> L<<181.0,203.0>--<139.0,0.0>> * klinebelow (U+1E35): L<<255.0,565.0>--<224.0,415.0>> -> L<<224.0,415.0>--<205.0,337.0>> * n (U+006E): L<<193.0,190.0>--<191.0,182.0>> -> L<<191.0,182.0>--<149.0,0.0>> * ncommaaccent (U+0146): L<<193.0,190.0>--<191.0,182.0>> -> L<<191.0,182.0>--<149.0,0.0>> * ndotaccent (U+1E45): L<<193.0,190.0>--<191.0,182.0>> -> L<<191.0,182.0>--<149.0,0.0>> * ndotbelow (U+1E47): L<<193.0,190.0>--<191.0,182.0>> -> L<<191.0,182.0>--<149.0,0.0>> * nmacronbelow (U+1E49): L<<193.0,190.0>--<191.0,182.0>> -> L<<191.0,182.0>--<149.0,0.0>> * ntilde (U+00F1): L<<193.0,190.0>--<191.0,182.0>> -> L<<191.0,182.0>--<149.0,0.0>> * q (U+0071): L<<355.0,297.0>--<358.0,309.0>> -> L<<358.0,309.0>--<378.0,393.0>> and thorn (U+00FE): L<<256.0,565.0>--<226.0,420.0>> -> L<<226.0,420.0>--<214.0,365.0>> [code: found-colinear-vectors]

[13] TiroDevaHindi-Regular.ttf
πŸ”₯ FAIL: Check name table: FONT_FAMILY_NAME entries.
* [com.google.fonts/check/name/familyname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/familyname)
--- Rationale ---
Checks that the family name infered from the font filename matches the string at
nameID 1 (NAMEID_FONT_FAMILY_NAME) if it conforms to RIBBI and otherwise checks
that nameID 1 is the family name + the style name.
* πŸ”₯ **FAIL** Entry [FONT_FAMILY_NAME(1):WINDOWS(3)] on the "name" table: Expected "Tiro Deva Hindi" but got "Tiro Devanagari Hindi". [code: mismatch]
πŸ”₯ FAIL: Check name table: FULL_FONT_NAME entries.
* [com.google.fonts/check/name/fullfontname](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/fullfontname)
--- Rationale ---
Requirements for the FULL_FONT_NAME entries in the 'name' table.
* πŸ”₯ **FAIL** [FULL_FONT_NAME(4):WINDOWS(3)] Expected: "Tiro Deva Hindi Regular" But got: "Tiro Devanagari Hindi Regular" [code: bad-entry]
⚠ WARN: Combined length of family and style must not exceed 27 characters.
* [com.google.fonts/check/name/family_and_style_max_length](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/family_and_style_max_length)
--- Rationale ---
According to a GlyphsApp tutorial [1], in order to make sure all versions of
Windows recognize it as a valid font file, we must make sure that the
concatenated length of the familyname (NameID.FONT_FAMILY_NAME) and style
(NameID.FONT_SUBFAMILY_NAME) strings in the name table do not exceed 20
characters.
After discussing the problem in more detail at `FontBakery issue #2179 [2] we
decided that allowing up to 27 chars would still be on the safe side, though.
[1] https://glyphsapp.com/tutorials/multiple-masters-part-3-setting-up-instances
[2] https://github.com/googlefonts/fontbakery/issues/2179
* ⚠ **WARN** The combined length of family and style exceeds 27 chars in the following 'WINDOWS' entries: FONT_FAMILY_NAME = 'Tiro Devanagari Hindi' / SUBFAMILY_NAME = 'Regular' Please take a look at the conversation at https://github.com/googlefonts/fontbakery/issues/2179 in order to understand the reasoning behind these name table records max-length criteria. [code: too-long]
⚠ WARN: Ensure Stylistic Sets have description.
* [com.google.fonts/check/stylisticset_description](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/stylisticset_description)
--- Rationale ---
Stylistic sets should provide description text. Programs such as InDesign,
TextEdit and Inkscape use that info to display to the users so that they know
what a given stylistic set offers.
* ⚠ **WARN** The stylistic set ss02 lacks a description string on the 'name' table. [code: missing-description] * ⚠ **WARN** The stylistic set ss03 lacks a description string on the 'name' table. [code: missing-description] * ⚠ **WARN** The stylistic set ss04 lacks a description string on the 'name' table. [code: missing-description] * ⚠ **WARN** The stylistic set ss05 lacks a description string on the 'name' table. [code: missing-description]
⚠ WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table.
* [com.google.fonts/check/meta/script_lang_tags](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/meta/script_lang_tags)
--- Rationale ---
The OpenType 'meta' table originated at Apple. Microsoft added it to OT with
just two DataMap records:
- dlng: comma-separated ScriptLangTags that indicate which scripts, or languages
and scripts, with possible variants, the font is designed for
- slng: comma-separated ScriptLangTags that indicate which scripts, or languages
and scripts, with possible variants, the font supports
The slng structure is intended to describe which languages and scripts the font
overall supports. For example, a Traditional Chinese font that also contains
Latin characters, can indicate Hant,Latn, showing that it supports Hant, the
Traditional Chinese variant of the Hani script, and it also supports the Latn
script
The dlng structure is far more interesting. A font may contain various glyphs,
but only a particular subset of the glyphs may be truly "leading" in the design,
while other glyphs may have been included for technical reasons. Such a
Traditional Chinese font could only list Hant there, showing that it’s designed
for Traditional Chinese, but the font would omit Latn, because the developers
don’t think the font is really recommended for purely Latin-script use.
The tags used in the structures can comprise just script, or also language and
script. For example, if a font has Bulgarian Cyrillic alternates in the locl
feature for the cyrl BGR OT languagesystem, it could also indicate in dlng
explicitly that it supports bul-Cyrl. (Note that the scripts and languages in
meta use the ISO language and script codes, not the OpenType ones).
This check ensures that the font has the meta table containing the slng and dlng
structures.
All families in the Google Fonts collection should contain the 'meta' table.
Windows 10 already uses it when deciding on which fonts to fall back to. The
Google Fonts API and also other environments could use the data for smarter
filtering. Most importantly, those entries should be added to the Noto fonts.
In the font making process, some environments store this data in external files
already. But the meta table provides a convenient way to store this inside the
font file, so some tools may add the data, and unrelated tools may read this
data. This makes the solution much more portable and universal.
* ⚠ **WARN** This font file does not have a 'meta' table. [code: lacks-meta-table]
⚠ WARN: Font has **proper** whitespace glyph names?
* [com.google.fonts/check/whitespace_glyphnames](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/whitespace_glyphnames)
--- Rationale ---
This check enforces adherence to recommended whitespace (codepoints 0020 and
00A0) glyph names according to the Adobe Glyph List.
* ⚠ **WARN** Glyph 0x00A0 is called "nbspace": Change to "uni00A0" [code: not-recommended-00a0]
⚠ WARN: Glyph names are all valid?
* [com.google.fonts/check/valid_glyphnames](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/valid_glyphnames)
--- Rationale ---
Microsoft's recommendations for OpenType Fonts states the following:
'NOTE: The PostScript glyph name must be no longer than 31 characters, include
only uppercase or lowercase English letters, European digits, the period or the
underscore, i.e. from the set [A-Za-z0-9_.] and should start with a letter,
except the special glyph name ".notdef" which starts with a period.'
https://docs.microsoft.com/en-us/typography/opentype/spec/recom#post-table
In practice, though, particularly in modern environments, glyph names can be as
long as 63 characters.
According to the "Adobe Glyph List Specification" available at:
https://github.com/adobe-type-tools/agl-specification
* ⚠ **WARN** The following glyph names may be too long for some legacy systems which may expect a maximum 31-char length limit: L_ringbelowcomb_macroncomb_acutecomb, R_ringbelowcomb_macroncomb_acutecomb, l_ringbelowcomb_macroncomb_acutecomb, r_ringbelowcomb_macroncomb_acutecomb, L_ringbelowcomb_macroncomb_acutecomb.sc, R_ringbelowcomb_macroncomb_acutecomb.sc, G_macronbelowcomb_H_macronbelowcomb and G_macronbelowcomb_H_macronbelowcomb.sc [code: legacy-long-names]
⚠ WARN: Check font contains no unreachable glyphs
* [com.google.fonts/check/unreachable_glyphs](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/unreachable_glyphs)
--- Rationale ---
Glyphs are either accessible directly through Unicode codepoints or through
substitution rules. Any glyphs not accessible by either of these means are
redundant and serve only to increase the font's file size.
* ⚠ **WARN** The following glyphs could not be reached by codepoint or substitution rules: - dSignOeAnusvara - dSignAyReph - dDd.half - dSignOoeRephAnusvara - dTt.half - dDdMarwari.half - headline100 - dNa.post - headline200 - dCh.halfalt - dSignAwReph - dSignOeRephAnusvara - dSignAyRephAnusvara - dDdh.half - dV.half2 - dH.half - dSignAyAnusvara - dBb.half2 - dSignAwRephAnusvara - dNg.half - dCh.half - dTth.half - dDR.half - headline50 - dB.half2 - And dD.half [code: unreachable-glyphs]
⚠ WARN: Check if each glyph has the recommended amount of contours.
* [com.google.fonts/check/contour_count](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/contour_count)
--- 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 font has a 'Soft Hyphen' character (codepoint 0x00AD) which is supposed to be zero-width and invisible, and is used to mark a hyphenation possibility within a word in the absence of or overriding dictionary hyphenation. It is mostly an obsolete mechanism now, and the character is only included in fonts for legacy codepage coverage. [code: softhyphen] * ⚠ **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: dKha Contours detected: 2 Expected: 1 or 3 - Glyph name: dOm Contours detected: 4 Expected: 3 - Glyph name: dKhha Contours detected: 3 Expected: 2 or 4 - Glyph name: dOne Contours detected: 2 Expected: 1 - Glyph name: dNine Contours detected: 1 Expected: 2 - And Glyph name: rupee Contours detected: 1 Expected: 3 [code: contour-count]
⚠ WARN: Checking Vertical Metric Linegaps.
* [com.google.fonts/check/linegaps](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/hhea.html#com.google.fonts/check/linegaps) * ⚠ **WARN** hhea lineGap is not equal to 0. [code: hhea]
⚠ WARN: Check mark characters are in GDEF mark glyph class.
* [com.google.fonts/check/gdef_mark_chars](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/gdef.html#com.google.fonts/check/gdef_mark_chars)
--- Rationale ---
Mark characters should be in the GDEF mark glyph class.
* ⚠ **WARN** The following mark characters could be in the GDEF mark glyph class: acutecomb (U+0301), brevebelowcomb (U+032E), brevecomb (U+0306), candrabinducomb (U+0310), caroncomb (U+030C), cedillacomb (U+0327), circumflexcomb (U+0302), commaaccentcomb (U+0326), dieresisbelowcomb (U+0324), dieresiscomb (U+0308), dotaccentcomb (U+0307), dotbelowcomb (U+0323), gravecomb (U+0300), macronbelowcomb (U+0331), macroncomb (U+0304), macrondblbelowcomb (U+035F), ringbelowcomb (U+0325), ringcomb (U+030A) and tildecomb (U+0303) [code: mark-chars]
⚠ WARN: Check GDEF mark glyph class doesn't have characters that are not marks.
* [com.google.fonts/check/gdef_non_mark_chars](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/gdef.html#com.google.fonts/check/gdef_non_mark_chars)
--- Rationale ---
Glyphs in the GDEF mark glyph class become non-spacing and may be repositioned
if they have mark anchors.
Only combining mark glyphs should be in that class. Any non-mark glyph must not
be in that class, in particular spacing glyphs.
* ⚠ **WARN** The following non-mark characters should not be in the GDEF mark glyph class: U+0903 [code: non-mark-chars]
⚠ WARN: Do outlines contain any semi-vertical or semi-horizontal lines?
* [com.google.fonts/check/outline_semi_vertical](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/.html#com.google.fonts/check/outline_semi_vertical)
--- Rationale ---
This check 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 check is disabled for italic styles, which often contain nearly-upright
lines.
* ⚠ **WARN** The following glyphs have semi-vertical/semi-horizontal lines: * dA (U+0905): L<<610.0,42.0>--<611.0,243.0>> * dA (U+0905): L<<698.0,545.0>--<700.0,-10.0>> * dAa (U+0906): L<<610.0,42.0>--<611.0,243.0>> * dAa (U+0906): L<<698.0,545.0>--<700.0,-10.0>> * dAa (U+0906): L<<870.0,37.0>--<874.0,545.0>> * dAa (U+0906): L<<958.0,545.0>--<960.0,-15.0>> * dAu (U+0914): L<<610.0,42.0>--<611.0,243.0>> * dAu (U+0914): L<<698.0,545.0>--<700.0,-10.0>> * dAu (U+0914): L<<868.0,37.0>--<872.0,545.0>> * dAu (U+0914): L<<956.0,545.0>--<958.0,-15.0>> * dAw (U+0975): L<<610.0,42.0>--<611.0,243.0>> * dAw (U+0975): L<<698.0,545.0>--<700.0,-10.0>> * dBa (U+092C): L<<425.0,42.0>--<426.0,202.0>> * dBa (U+092C): L<<428.0,357.0>--<429.0,545.0>> * dBa (U+092C): L<<513.0,545.0>--<515.0,-10.0>> * dBba (U+097F): L<<425.0,57.0>--<426.0,207.0>> * dBba (U+097F): L<<428.0,362.0>--<429.0,545.0>> * dBba (U+097F): L<<513.0,545.0>--<515.0,0.0>> * dBha (U+092D): L<<539.0,42.0>--<540.0,235.0>> * dBha (U+092D): L<<541.0,310.0>--<543.0,545.0>> * dBha (U+092D): L<<627.0,545.0>--<629.0,-10.0>> * dCa (U+091A): L<<499.0,42.0>--<500.0,180.0>> * dCa (U+091A): L<<501.0,283.0>--<503.0,545.0>> * dCa (U+091A): L<<587.0,545.0>--<589.0,-10.0>> * dCandraA (U+0972): L<<610.0,42.0>--<611.0,243.0>> * dCandraA (U+0972): L<<698.0,545.0>--<700.0,-10.0>> * dCandraO (U+0911): L<<610.0,42.0>--<611.0,243.0>> * dCandraO (U+0911): L<<698.0,545.0>--<700.0,-10.0>> * dCandraO (U+0911): L<<870.0,37.0>--<874.0,545.0>> * dCandraO (U+0911): L<<958.0,545.0>--<960.0,-15.0>> * dDdaMarwari (U+0978): L<<124.0,385.0>--<125.0,545.0>> * dDdaMarwari (U+0978): L<<207.0,545.0>--<208.0,401.0>> * dDha (U+0927): L<<478.0,41.0>--<479.0,161.0>> * dDha (U+0927): L<<480.0,264.0>--<482.0,545.0>> * dDha (U+0927): L<<565.0,545.0>--<567.0,-10.0>> * dFa (U+095E): L<<362.0,44.0>--<363.0,201.0>> * dFa (U+095E): L<<364.0,305.0>--<366.0,545.0>> * dFa (U+095E): L<<449.0,545.0>--<450.0,367.0>> * dFa (U+095E): L<<451.0,265.0>--<452.0,-10.0>> * dFive (U+096B): L<<460.0,528.0>--<458.0,273.0>> * dGa (U+0917): L<<142.0,347.0>--<143.0,545.0>> * dGa (U+0917): L<<225.0,545.0>--<227.0,195.0>> * dGa (U+0917): L<<407.0,41.0>--<411.0,545.0>> * dGa (U+0917): L<<494.0,545.0>--<496.0,-10.0>> * dGga (U+097B): L<<142.0,357.0>--<143.0,545.0>> * dGga (U+097B): L<<225.0,545.0>--<227.0,205.0>> * dGga (U+097B): L<<407.0,57.0>--<411.0,545.0>> * dGga (U+097B): L<<494.0,545.0>--<496.0,0.0>> * dGha (U+0918): L<<447.0,42.0>--<448.0,170.0>> * dGha (U+0918): L<<449.0,273.0>--<451.0,545.0>> * dGha (U+0918): L<<535.0,545.0>--<537.0,-10.0>> * dGhha (U+095A): L<<142.0,347.0>--<143.0,545.0>> * dGhha (U+095A): L<<225.0,545.0>--<227.0,195.0>> * dGhha (U+095A): L<<407.0,41.0>--<411.0,545.0>> * dGhha (U+095A): L<<494.0,545.0>--<496.0,-10.0>> * dJa (U+091C): L<<558.0,42.0>--<560.0,355.0>> * dJa (U+091C): L<<561.0,430.0>--<562.0,545.0>> * dJa (U+091C): L<<646.0,545.0>--<648.0,-10.0>> * dJha (U+091D): L<<581.0,42.0>--<582.0,217.0>> * dJha (U+091D): L<<583.0,309.0>--<585.0,545.0>> * dJha (U+091D): L<<669.0,545.0>--<671.0,-10.0>> * dJja (U+097C): L<<553.0,57.0>--<555.0,369.0>> * dJja (U+097C): L<<641.0,545.0>--<643.0,0.0>> * dJjya (U+097A): L<<410.0,42.0>--<411.0,167.0>> * dJjya (U+097A): L<<412.0,263.0>--<414.0,545.0>> * dJjya (U+097A): L<<498.0,545.0>--<500.0,-10.0>> * dKa (U+0915): L<<364.0,44.0>--<365.0,203.0>> * dKa (U+0915): L<<451.0,545.0>--<452.0,369.0>> * dKa (U+0915): L<<453.0,268.0>--<454.0,-10.0>> * dKha (U+0916): L<<638.0,42.0>--<639.0,211.0>> * dKha (U+0916): L<<726.0,545.0>--<728.0,-10.0>> * dKhha (U+0959): L<<638.0,42.0>--<639.0,211.0>> * dKhha (U+0959): L<<726.0,545.0>--<728.0,-10.0>> * dLa (U+0932): L<<509.0,42.0>--<511.0,368.0>> * dLa (U+0932): L<<512.0,414.0>--<513.0,545.0>> * dLa (U+0932): L<<597.0,545.0>--<599.0,-10.0>> * dLla (U+0933): L<<463.0,426.0>--<462.0,545.0>> * dLla (U+0933): L<<543.0,545.0>--<544.0,430.0>> * dLlla (U+0934): L<<463.0,426.0>--<462.0,545.0>> * dLlla (U+0934): L<<543.0,545.0>--<544.0,430.0>> * dMa (U+092E): L<<132.0,310.0>--<133.0,545.0>> * dMa (U+092E): L<<215.0,545.0>--<216.0,310.0>> * dMa (U+092E): L<<435.0,42.0>--<436.0,235.0>> * dMa (U+092E): L<<437.0,310.0>--<439.0,545.0>> * dMa (U+092E): L<<523.0,545.0>--<525.0,-10.0>> * dNa (U+0928): L<<393.0,42.0>--<395.0,293.0>> * dNa (U+0928): L<<481.0,545.0>--<483.0,-10.0>> * dNna (U+0923): L<<159.0,545.0>--<161.0,315.0>> * dNna (U+0923): L<<536.0,42.0>--<540.0,545.0>> * dNna (U+0923): L<<624.0,545.0>--<626.0,-10.0>> * dNnna (U+0929): L<<393.0,42.0>--<395.0,293.0>> * dNnna (U+0929): L<<481.0,545.0>--<483.0,-10.0>> * dNya (U+091E): L<<598.0,42.0>--<599.0,220.0>> * dNya (U+091E): L<<686.0,545.0>--<688.0,-10.0>> * dO (U+0913): L<<610.0,42.0>--<611.0,243.0>> * dO (U+0913): L<<698.0,545.0>--<700.0,-10.0>> * dO (U+0913): L<<868.0,37.0>--<872.0,545.0>> * dO (U+0913): L<<956.0,545.0>--<958.0,-15.0>> * dOe (U+0973): L<<610.0,42.0>--<611.0,243.0>> * dOe (U+0973): L<<697.0,756.0>--<698.0,620.0>> * dOe (U+0973): L<<698.0,545.0>--<700.0,-10.0>> * dOne (U+0967): L<<413.0,367.0>--<415.0,-15.0>> * dOoe (U+0974): L<<610.0,42.0>--<611.0,243.0>> * dOoe (U+0974): L<<698.0,545.0>--<700.0,-10.0>> * dOoe (U+0974): L<<870.0,37.0>--<874.0,545.0>> * dOoe (U+0974): L<<957.0,756.0>--<958.0,620.0>> * dOoe (U+0974): L<<958.0,545.0>--<960.0,-15.0>> * dPa (U+092A): L<<380.0,42.0>--<381.0,200.0>> * dPa (U+092A): L<<382.0,304.0>--<384.0,545.0>> * dPa (U+092A): L<<468.0,545.0>--<470.0,-10.0>> * dPha (U+092B): L<<362.0,44.0>--<363.0,201.0>> * dPha (U+092B): L<<364.0,305.0>--<366.0,545.0>> * dPha (U+092B): L<<449.0,545.0>--<450.0,367.0>> * dPha (U+092B): L<<451.0,265.0>--<452.0,-10.0>> * dQa (U+0958): L<<364.0,44.0>--<365.0,203.0>> * dQa (U+0958): L<<451.0,545.0>--<452.0,369.0>> * dQa (U+0958): L<<453.0,268.0>--<454.0,-10.0>> * dSa (U+0938): L<<502.0,42.0>--<503.0,239.0>> * dSa (U+0938): L<<590.0,545.0>--<592.0,-10.0>> * dSha (U+0936): L<<531.0,37.0>--<535.0,545.0>> * dSha (U+0936): L<<619.0,545.0>--<621.0,-15.0>> * dShortA (U+0904): L<<610.0,42.0>--<611.0,243.0>> * dShortA (U+0904): L<<698.0,545.0>--<700.0,-10.0>> * dShortO (U+0912): L<<610.0,42.0>--<611.0,243.0>> * dShortO (U+0912): L<<698.0,545.0>--<700.0,-10.0>> * dShortO (U+0912): L<<868.0,37.0>--<872.0,545.0>> * dShortO (U+0912): L<<956.0,545.0>--<958.0,-15.0>> * dSignAa (U+093E): L<<178.0,545.0>--<180.0,-15.0>> * dSignAa (U+093E): L<<90.0,37.0>--<94.0,545.0>> * dSignAu (U+094C): L<<178.0,545.0>--<180.0,-15.0>> * dSignAu (U+094C): L<<90.0,37.0>--<94.0,545.0>> * dSignAw (U+094F): L<<178.0,545.0>--<180.0,-15.0>> * dSignAw (U+094F): L<<90.0,37.0>--<94.0,545.0>> * dSignCandraO (U+0949): L<<178.0,545.0>--<180.0,-15.0>> * dSignCandraO (U+0949): L<<90.0,37.0>--<94.0,545.0>> * dSignEPrish (U+094E): L<<103.0,37.0>--<107.0,620.0>> * dSignEPrish (U+094E): L<<191.0,545.0>--<193.0,-15.0>> * dSignI (U+093F): L<<178.0,545.0>--<180.0,-15.0>> * dSignI (U+093F): L<<90.0,37.0>--<94.0,545.0>> * dSignIi (U+0940): L<<178.0,545.0>--<180.0,-15.0>> * dSignIi (U+0940): L<<90.0,37.0>--<94.0,545.0>> * dSignO (U+094B): L<<178.0,545.0>--<180.0,-15.0>> * dSignO (U+094B): L<<90.0,37.0>--<94.0,545.0>> * dSignOe (U+093A): L<<-90.0,756.0>--<-89.0,608.0>> * dSignOoe (U+093B): L<<177.0,756.0>--<178.0,620.0>> * dSignOoe (U+093B): L<<178.0,545.0>--<180.0,-15.0>> * dSignOoe (U+093B): L<<90.0,37.0>--<94.0,545.0>> * dSignShortO (U+094A): L<<178.0,545.0>--<180.0,-15.0>> * dSignShortO (U+094A): L<<90.0,37.0>--<94.0,545.0>> * dSsa (U+0937): L<<395.0,42.0>--<396.0,187.0>> * dSsa (U+0937): L<<483.0,545.0>--<485.0,-10.0>> * dTa (U+0924): L<<396.0,42.0>--<398.0,360.0>> * dTa (U+0924): L<<484.0,545.0>--<486.0,-10.0>> * dTha (U+0925): L<<475.0,42.0>--<476.0,183.0>> * dTha (U+0925): L<<477.0,286.0>--<479.0,545.0>> * dTha (U+0925): L<<563.0,545.0>--<565.0,-10.0>> * dUe (U+0976): L<<610.0,42.0>--<611.0,243.0>> * dUe (U+0976): L<<698.0,545.0>--<700.0,-10.0>> * dUue (U+0977): L<<610.0,42.0>--<611.0,243.0>> * dUue (U+0977): L<<698.0,545.0>--<700.0,-10.0>> * dVa (U+0935): L<<420.0,42.0>--<421.0,201.0>> * dVa (U+0935): L<<508.0,545.0>--<510.0,-10.0>> * dVocalicLl (U+0961): L<<514.0,545.0>--<515.0,430.0>> * dVocalicR (U+090B): L<<378.0,42.0>--<379.0,243.0>> * dVocalicR (U+090B): L<<466.0,545.0>--<467.0,328.0>> * dVocalicR (U+090B): L<<467.0,278.0>--<468.0,-10.0>> * dVocalicRr (U+0960): L<<378.0,42.0>--<379.0,243.0>> * dVocalicRr (U+0960): L<<466.0,545.0>--<467.0,331.0>> * dVocalicRr (U+0960): L<<467.0,285.0>--<468.0,-10.0>> * dYa (U+092F): L<<405.0,42.0>--<406.0,172.0>> * dYa (U+092F): L<<407.0,270.0>--<409.0,545.0>> * dYa (U+092F): L<<493.0,545.0>--<495.0,-10.0>> * dYya (U+095F): L<<405.0,42.0>--<406.0,172.0>> * dYya (U+095F): L<<407.0,270.0>--<409.0,545.0>> * dYya (U+095F): L<<493.0,545.0>--<495.0,-10.0>> * dZa (U+095B): L<<558.0,42.0>--<560.0,355.0>> * dZa (U+095B): L<<561.0,430.0>--<562.0,545.0>> * dZa (U+095B): L<<646.0,545.0>--<648.0,-10.0>> * dZha (U+0979): L<<558.0,42.0>--<560.0,355.0>> * dZha (U+0979): L<<561.0,430.0>--<562.0,545.0>> * dZha (U+0979): L<<646.0,545.0>--<648.0,-10.0>> and fivesuperior (U+2075): L<<101.0,783.0>--<334.0,785.0>> [code: found-semi-vertical]

Summary

πŸ’” ERROR πŸ”₯ FAIL ⚠ WARN πŸ’€ SKIP β„Ή INFO 🍞 PASS πŸ”Ž DEBUG
0 4 21 218 15 172 0
0% 1% 5% 51% 3% 40% 0%

Note: The following loglevels were omitted in this report:

tiroj commented 2 years ago

v1.51

Warnings reviewed and confirmed as expected for this release: issues either accepted compatibility names, features not implementable in current tool chain, by design, or harmless artifacts of outline merging.