If you think a check is flawed or have an idea for a check, please file an issue at https://github.com/fonttools/fontbakery/issues and remember to include a pointer to the repo and branch you're checking.
Summary
💥 ERROR | ☠ FATAL | 🔥 FAIL | ⚠️ WARN | ⏩ SKIP | ℹ️ INFO | ✅ PASS |
---|---|---|---|---|---|---|
1 | 0 | 5 | 12 | 87 | 8 | 123 |
0% | 0% | 2% | 5% | 37% | 3% | 52% |
Meaning of check results:
- 💥 An ERROR is something wrong with FontBakery itself, possibly a bug.
- ☠ A FATAL is an extremely severe issue that must be addressed immediately.
- 🔥 A FAIL is a problem with the font that must be fixed.
- ⚠️ A WARN is something that you should consider addressing.
- ℹ️ An INFO result simply prints something useful. Typically stats.
- ✅ A PASS means the font looks good for the given checking routine.
- ⏩ And a SKIP happens when the check does not apply to the given font.
If you get ERRORs, please help us improve the tool by reporting them at our issue tracker.
(but other kinds of bug reports and/or feature requests are also always welcome, of course!)
FontBakery version: 1.0.0
OpenType Specification Checks
🔥⚠️⏩⏩⏩⏩⏩⏩⏩Check hhea.caretSlopeRise and hhea.caretSlopeRun
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Is the CFF2 subr/gsubr call depth > 10?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: is_cff2
[code: unfulfilled-conditions]
Does the font's CFF table top dict strings fit into the ASCII range?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: is_cff
[code: unfulfilled-conditions]
Is the CFF subr/gsubr call depth > 10?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: is_cff
[code: unfulfilled-conditions]
Does the font use deprecated CFF operators or operations?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: is_cff
[code: unfulfilled-conditions]
Check code page character ranges
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
The font should not need a DSIG table anymore.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check that OS/2.fsSelection bold & italic settings are unique for each NameID1
✅ Family Check
-
✅ PASS
All looks good!
[code: ok]
Verify that family names in the name table are consistent across all fonts in the family. Checks Typographic Family name (nameID 16) if present, otherwise uses Font Family name (nameID 1)
✅ Family Check
-
✅ PASS
All looks good!
[code: ok]
Make sure all font files have the same version value.
✅ Family Check
-
✅ PASS
All looks good!
[code: ok]
Verify that each group of fonts with the same nameID 1 has maximum of 4 fonts.
✅ Family Check
-
✅ PASS
All looks good!
[code: ok]
Font follows the family naming recommendations?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Fonts have consistent PANOSE family type?
✅ Family Check
-
✅ PASS
All looks good!
[code: ok]
Fonts have consistent underline thickness?
✅ Family Check
-
✅ PASS
Fonts have consistent underline thickness.
Checking font version fields (head and name table).
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Checking OS/2 fsSelection value.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Axes and named instances fall within correct ranges?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Axes and named instances fall within correct ranges?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check mark characters are in GDEF mark glyph class.
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ WARN
The following mark characters could be in the GDEF mark glyph class: acutemacroncomb (U+1DC7), gravemacroncomb (U+1DC5), macronacutecomb (U+1DC4), macrongravecomb (U+1DC6), uni0329 (U+0329), uni0955 (U+0955), uni0BC0 (U+0BC0) and uni0BCD (U+0BCD)
[code: mark-chars]
Check GDEF mark glyph class doesn't have characters that are not marks.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check glyphs in mark glyph class are non-spacing.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check glyphs do not have duplicate components which have the same x,y coordinates.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Is there any unused data at the end of the glyf table?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
There is no unused data at the end of the glyf table.
Checking post.italicAngle value.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Value of post.italicAngle is 0.0 with style="Bold".
Is there a usable "kern" table declared in the font?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Font does not declare an optional "kern" table.
Does the font have any invalid feature tags?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Does the font have any invalid language tags?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Does the font have any invalid script tags?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Does the number of glyphs in the loca table match the maxp table?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Checking head.macStyle value.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
head macStyle ITALIC bit is properly set.
-
✅ PASS
head macStyle BOLD bit is properly set.
MaxAdvanceWidth is consistent with values in the Hmtx and Hhea tables?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Checking correctness of monospaced metadata.
🔥 Samaano[slnt,wdth,wght].ttf
-
⚠️ 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 1417 instead. Please read https://github.com/fonttools/fonttools/issues/3014 to decide whether this makes sense for your font.
[code: bad-numberOfHMetrics] -
🔥 FAIL
On monospaced fonts, the value of post.isFixedPitch must be set to a non-zero value (meaning 'fixed width monospaced'), but got 0 instead.
[code: mono-bad-post-isFixedPitch]
Check name table for empty records.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Does full font name begin with the font family name?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Name table ID 6 (PostScript name) must be consistent across platforms.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
CFF table FontName must match name table ID 6 (PostScript name).
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: is_cff
[code: unfulfilled-conditions]
Check for points out of bounds.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
PostScript name follows OpenType specification requirements?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Font has correct post table version?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Font has an acceptable post format 2.0 table version.
Checking direction of slnt axis angles.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Ensure VFs have 'ital' STAT axis.
⏩ Family Check
-
⏩ SKIP
Font {font.file} doesn't have an ital axis
Checking unitsPerEm value is reasonable.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Are there unwanted Apple tables?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Validates that all of the instance records in a given font have distinct data.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check that family axis ranges are indentical
✅ Family Check
-
✅ PASS
All looks good!
[code: ok]
Validate foundry-defined design-variation axis tag names.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Validates that all of the instance records in a given font have the same size.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
All fvar axes have a correspondent Axis Record on STAT table?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
STAT table has all necessary Axis Records.
Validates subfamilyNameID and postScriptNameID for the default instance record
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Validates that all of the name IDs in an instance record are within the correct range
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Checking OS/2 achVendID against configuration.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Add the
vendor_id
key to afontbakery.yaml
file on your font project directory to enable this check. You'll also need to use the--configuration
flag when invoking fontbakery.
Checking if OS/2 usWeightClass matches fvar.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check if OS/2 xAvgCharWidth is correct.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
OS/2 xAvgCharWidth value is correct.
Superfamily Checks
⏩ℹ️List all superfamily filepaths
ℹ️ Samaano[slnt,wdth,wght].ttf
-
ℹ️ INFO
fonts/variable
[code: family-path]
Each font in set of sibling families must have the same set of vertical metrics values.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Sibling families were not detected.
Universal Profile Checks
🔥🔥⚠️⚠️⚠️⚠️⚠️⚠️⏩⏩⏩⏩⏩⏩⏩⏩⏩ℹ️ℹ️ℹ️Check accent of Lcaron, dcaron, lcaron, tcaron
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ 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] -
✅ PASS
Looks good!
Check that glyph for U+0674 ARABIC LETTER HIGH HAMZA is not a mark.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
This check will only run on fonts that have U+0674 glyph
[code: glyphs-missing]
Check that Arabic spacing symbols U+FBB2–FBC1 aren't classified as marks.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
EXPERIMENTAL CHECK - Since 2024/12/28
Check base characters have non-zero advance width.
🔥 Samaano[slnt,wdth,wght].ttf
-
🔥 FAIL
The following glyphs had zero advance width: - anoteleia (U+0387)
[code: zero-width-bases]- uni1FBE (U+1FBE)
Check if uppercase glyphs are vertically centered.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Uppercase glyphs are vertically centered in the em box.
Ensure the font supports case swapping for all its glyphs.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Does the font contain chws and vchw features?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: is_cjk_font
[code: unfulfilled-conditions]
Any CJK font should contain at least a minimal set of 150 CJK characters.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: is_claiming_to_be_cjk_font
[code: unfulfilled-conditions]
Color layers should have a minimum brightness.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check if each glyph has the recommended amount of contours.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: not is_variable_font
[code: unfulfilled-conditions]
Does font file include unacceptable control character glyphs?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Put an empty glyph on GID 1 right after the .notdef glyph for COLRv0 fonts.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Checking all files are in the same directory.
✅ Family Check
-
✅ PASS
All files are in the same directory.
Each font in a family must have the same set of vertical metrics values.
✅ Family Check
-
✅ PASS
Vertical metrics are the same across the family.
Checking OS/2 usWinAscent & usWinDescent.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
OS/2 usWinAscent & usWinDescent values look good!
All name entries referenced by fvar instances exist on the name table?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Ensure files are not too large.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Font had a reasonable file size
Do we have the latest version of FontBakery installed?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
FontBakery is up-to-date.
Familyname must be unique according to namecheck.fontdata.com
ℹ️ Samaano[slnt,wdth,wght].ttf
-
ℹ️ INFO
The family name "Samaano" seems to be already in use. Please visit http://namecheck.fontdata.com/?q=Samaano for more info.
[code: name-collision]
Ensure that the font can be rasterized by FreeType.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Font can be rasterized by FreeType.
Ensure no GPOS7 lookups are present.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Font has no GPOS7 lookups
Does GPOS table have kerning information? This check skips monospaced fonts as defined by post.isFixedPitch value
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ WARN
GPOS table lacks kerning information.
[code: lacks-kern-info]
Show hinting filesize impact.
ℹ️ Samaano[slnt,wdth,wght].ttf
-
ℹ️ INFO
Hinting filesize impact:
fonts/variable/Samaano[slnt,wdth,wght].ttf Dehinted Size 372.6kb Hinted Size 372.6kb Increase 24 bytes Change 0.0 %
PPEM must be an integer on hinted fonts.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: is_hinted
[code: unfulfilled-conditions]
Detect any interpolation issues in the font.
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ WARN
Interpolation issues were found in the font:
[code: interpolation-issues]- Contour 3 in glyph 'Eth': becomes underweight between slnt=0,wdth=100,wght=100 and slnt=-20,wdth=200,wght=700. - Contour 7 in glyph 'uni20BF': becomes underweight between slnt=0,wdth=100,wght=100 and slnt=-20,wdth=200,wght=700. - Contour 5 in glyph 'whook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour order differs in glyph 'blinebelow': [0, 1, 2, 3, 4] in slnt=0,wdth=200,wght=100, [4, 1, 2, 3, 0] in slnt=-20,wdth=200,wght=100. - Contour 4 in glyph 'Nhookleft': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 4 in glyph 'nhookleft': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 1 in glyph 'uni0312': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour order differs in glyph 'gamma-latin': [0, 1, 2] in slnt=-20,wdth=100,wght=100, [1, 0, 2] in slnt=0,wdth=200,wght=100. - Contour 5 in glyph 'dhook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 5 in glyph 'yhook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 4 in glyph 'khook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 4 in glyph 'Chook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 3 in glyph 'Dcroat': becomes underweight between slnt=0,wdth=100,wght=100 and slnt=-20,wdth=200,wght=700. - Contour 4 in glyph 'chook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 5 in glyph 'Yhook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 4 in glyph 'hhook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 5 in glyph 'bhook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 4 in glyph 'Fhook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour order differs in glyph 'Gamma-latin': [0, 1, 2] in slnt=-20,wdth=100,wght=100, [1, 0, 2] in slnt=0,wdth=200,wght=100. - Contour 6 in glyph 'ghook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour order differs in glyph 'Ramshorn': [0, 1, 2] in slnt=-20,wdth=100,wght=100, [1, 0, 2] in slnt=0,wdth=200,wght=100. - Contour order differs in glyph 'ramshorn': [0, 1, 2] in slnt=-20,wdth=100,wght=100, [1, 0, 2] in slnt=0,wdth=200,wght=100. - Contour 1 start point differs in glyph 'ramshorn' between location slnt=-20,wdth=100,wght=100 and location slnt=0,wdth=200,wght=100 - Contour 3 in glyph 'thook': becomes underweight between slnt=0,wdth=100,wght=700 and slnt=-20,wdth=100,wght=700. - Contour 4 in glyph 'thook': becomes underweight between slnt=0,wdth=100,wght=700 and slnt=-20,wdth=100,wght=700. - Contour 3 in glyph 'thook': becomes underweight between slnt=-20,wdth=100,wght=700 and slnt=0,wdth=200,wght=700. - Contour 4 in glyph 'thook': becomes underweight between slnt=-20,wdth=100,wght=700 and slnt=0,wdth=200,wght=700. - Contour 3 in glyph 'thook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 4 in glyph 'thook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 3 in glyph 'thook': becomes underweight between slnt=0,wdth=200,wght=100 and slnt=-20,wdth=200,wght=100. - Contour 4 in glyph 'thook': becomes underweight between slnt=0,wdth=200,wght=100 and slnt=-20,wdth=200,wght=100. - Contour 5 in glyph 'phook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 4 start point differs in glyph 'uni0BAF' between location slnt=-20,wdth=200,wght=700 and location slnt=-20,wdth=100,wght=100 - Contour 4 start point differs in glyph 'uni0BAF' between location slnt=-20,wdth=100,wght=100 and location slnt=0,wdth=200,wght=100 - Contour 5 in glyph 'Whook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100. - Contour 5 in glyph 'Ghook': becomes underweight between slnt=-20,wdth=100,wght=100 and slnt=0,wdth=200,wght=100.
Check that legacy accents aren't used in composite glyphs.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Looks good!
Are there caret positions declared for every ligature?
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ WARN
This font lacks caret positioning values for these ligature glyphs: - j_uni0308
[code: incomplete-caret-pos-data]- j_uni0311 - uni1ECB_uni0301
Checking Vertical Metric Linegaps.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
OS/2 sTypoLineGap and hhea lineGap are both 0.
Ensure variable fonts include an avar table.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Font contains '.notdef' as its first glyph?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check math signs have the same width.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Looks good.
Ensure small caps glyphs are available.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Are there disallowed characters in the NAME table?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Combined length of family and style must not exceed 32 characters.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Name table records must not have trailing spaces.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
No trailing spaces on name table entries.
Description strings in the name table must not contain copyright info.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check name table IDs 1, 2, 16, 17 to conform to Italic style.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Font is not Italic.
Ensure glyphs do not have components which are themselves components.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Checking OS/2 Metrics match hhea Metrics.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
OS/2.sTypoAscender/Descender values match hhea.ascent/descent.
Checking with ots-sanitize.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check there are no overlapping path segments
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ WARN
The following glyphs have overlapping path segments:
[code: overlapping-path-segments]* Abreve (U+0102): L<<710.0,1769.0>--<710.0,1656.0>> has the same coordinates as a previous segment. * Abreve (U+0102): L<<386.0,1769.0>--<386.0,1656.0>> has the same coordinates as a previous segment. * Atilde (U+00C3): L<<337.0,1857.0>--<337.0,1758.0>> has the same coordinates as a previous segment. * Atilde (U+00C3): L<<687.0,1697.0>--<687.0,1796.0>> has the same coordinates as a previous segment. * B (U+0042): L<<433.0,1023.0>--<433.0,820.0>> has the same coordinates as a previous segment. * B (U+0042): L<<442.0,766.0>--<442.0,567.0>> has the same coordinates as a previous segment. * B (U+0042): L<<433.0,1537.0>--<433.0,1331.0>> has the same coordinates as a previous segment. * Bdotbelow (U+1E04): L<<433.0,1023.0>--<433.0,820.0>> has the same coordinates as a previous segment. * Bdotbelow (U+1E04): L<<442.0,766.0>--<442.0,567.0>> has the same coordinates as a previous segment. * Bdotbelow (U+1E04): L<<433.0,1537.0>--<433.0,1331.0>> has the same coordinates as a previous segment. * Beta (U+0392): L<<433.0,1023.0>--<433.0,820.0>> has the same coordinates as a previous segment. * Beta (U+0392): L<<442.0,766.0>--<442.0,567.0>> has the same coordinates as a previous segment. * Beta (U+0392): L<<433.0,1537.0>--<433.0,1331.0>> has the same coordinates as a previous segment. * Beta-latin (U+A7B4): L<<433.0,1023.0>--<433.0,820.0>> has the same coordinates as a previous segment. * Beta-latin (U+A7B4): L<<442.0,766.0>--<442.0,567.0>> has the same coordinates as a previous segment. * Beta-latin (U+A7B4): L<<433.0,1537.0>--<433.0,1331.0>> has the same coordinates as a previous segment. * Bhook (U+0181): L<<433.0,1023.0>--<433.0,820.0>> has the same coordinates as a previous segment. * Bhook (U+0181): L<<442.0,766.0>--<442.0,567.0>> has the same coordinates as a previous segment. * Bhook (U+0181): L<<433.0,1537.0>--<433.0,1331.0>> has the same coordinates as a previous segment. * Blinebelow (U+1E06): L<<433.0,1023.0>--<433.0,820.0>> has the same coordinates as a previous segment. * Blinebelow (U+1E06): L<<442.0,766.0>--<442.0,567.0>> has the same coordinates as a previous segment. * Blinebelow (U+1E06): L<<433.0,1537.0>--<433.0,1331.0>> has the same coordinates as a previous segment. * Btopbar (U+0182): L<<442.0,766.0>--<442.0,567.0>> has the same coordinates as a previous segment. * D.circled (U+24B9): L<<480.0,1084.0>--<480.0,1004.0>> has the same coordinates as a previous segment. * Ebreve (U+0114): L<<655.0,1769.0>--<655.0,1656.0>> has the same coordinates as a previous segment. * Ebreve (U+0114): L<<331.0,1769.0>--<331.0,1656.0>> has the same coordinates as a previous segment. * Ecedillabreve (U+1E1C): L<<655.0,1769.0>--<655.0,1656.0>> has the same coordinates as a previous segment. * Ecedillabreve (U+1E1C): L<<331.0,1769.0>--<331.0,1656.0>> has the same coordinates as a previous segment. * Etildebelow (U+1E1A): L<<381.0,-134.0>--<381.0,-233.0>> has the same coordinates as a previous segment. * Etildebelow (U+1E1A): L<<731.0,-294.0>--<731.0,-195.0>> has the same coordinates as a previous segment. * Euro (U+20AC): L<<324.0,179.0>--<514.0,179.0>> has the same coordinates as a previous segment. * Gbreve (U+011E): L<<687.0,1777.0>--<687.0,1664.0>> has the same coordinates as a previous segment. * Gbreve (U+011E): L<<363.0,1777.0>--<363.0,1664.0>> has the same coordinates as a previous segment. * Ibreve (U+012C): L<<655.0,1769.0>--<655.0,1656.0>> has the same coordinates as a previous segment. * Ibreve (U+012C): L<<331.0,1769.0>--<331.0,1656.0>> has the same coordinates as a previous segment. * Itilde (U+0128): L<<282.0,1857.0>--<282.0,1758.0>> has the same coordinates as a previous segment. * Itilde (U+0128): L<<632.0,1697.0>--<632.0,1796.0>> has the same coordinates as a previous segment. * Itildebelow (U+1E2C): L<<385.0,-147.0>--<385.0,-246.0>> has the same coordinates as a previous segment. * Itildebelow (U+1E2C): L<<735.0,-307.0>--<735.0,-208.0>> has the same coordinates as a previous segment. * Ntilde (U+00D1): L<<300.0,1858.0>--<300.0,1759.0>> has the same coordinates as a previous segment. * Ntilde (U+00D1): L<<650.0,1698.0>--<650.0,1797.0>> has the same coordinates as a previous segment. * Obreve (U+014E): L<<641.0,1774.0>--<641.0,1661.0>> has the same coordinates as a previous segment. * Obreve (U+014E): L<<317.0,1774.0>--<317.0,1661.0>> has the same coordinates as a previous segment. * Otilde (U+00D5): L<<366.0,1846.0>--<366.0,1747.0>> has the same coordinates as a previous segment. * Otilde (U+00D5): L<<716.0,1686.0>--<716.0,1785.0>> has the same coordinates as a previous segment. * S (U+0053): L<<146.0,1028.0>--<348.0,1028.0>> has the same coordinates as a previous segment. * S (U+0053): L<<918.0,355.0>--<717.0,355.0>> has the same coordinates as a previous segment. * Sacute (U+015A): L<<146.0,1028.0>--<348.0,1028.0>> has the same coordinates as a previous segment. * Sacute (U+015A): L<<918.0,355.0>--<717.0,355.0>> has the same coordinates as a previous segment. * Scaron (U+0160): L<<146.0,1028.0>--<348.0,1028.0>> has the same coordinates as a previous segment. * Scaron (U+0160): L<<918.0,355.0>--<717.0,355.0>> has the same coordinates as a previous segment. * Scedilla (U+015E): L<<146.0,1028.0>--<348.0,1028.0>> has the same coordinates as a previous segment. * Scedilla (U+015E): L<<918.0,355.0>--<717.0,355.0>> has the same coordinates as a previous segment. * Scircumflex (U+015C): L<<146.0,1028.0>--<348.0,1028.0>> has the same coordinates as a previous segment. * Scircumflex (U+015C): L<<918.0,355.0>--<717.0,355.0>> has the same coordinates as a previous segment. * Ubreve (U+016C): L<<693.0,1770.0>--<693.0,1657.0>> has the same coordinates as a previous segment. * Ubreve (U+016C): L<<369.0,1770.0>--<369.0,1657.0>> has the same coordinates as a previous segment. * Utilde (U+0168): L<<320.0,1858.0>--<320.0,1759.0>> has the same coordinates as a previous segment. * Utilde (U+0168): L<<670.0,1698.0>--<670.0,1797.0>> has the same coordinates as a previous segment. * Utildebelow (U+1E74): L<<398.0,-138.0>--<398.0,-237.0>> has the same coordinates as a previous segment. * Utildebelow (U+1E74): L<<748.0,-298.0>--<748.0,-199.0>> has the same coordinates as a previous segment. * abreve (U+0103): L<<685.0,1262.0>--<685.0,1149.0>> has the same coordinates as a previous segment. * abreve (U+0103): L<<361.0,1262.0>--<361.0,1149.0>> has the same coordinates as a previous segment. * approxequal (U+2248): L<<330.0,559.0>--<330.0,395.0>> has the same coordinates as a previous segment. * approxequal (U+2248): L<<680.0,334.0>--<680.0,498.0>> has the same coordinates as a previous segment. * approxequal (U+2248): L<<330.0,898.0>--<330.0,716.0>> has the same coordinates as a previous segment. * approxequal (U+2248): L<<680.0,655.0>--<680.0,837.0>> has the same coordinates as a previous segment. * asciitilde (U+007E): L<<330.0,815.0>--<330.0,663.0>> has the same coordinates as a previous segment. * asciitilde (U+007E): L<<680.0,602.0>--<680.0,754.0>> has the same coordinates as a previous segment. * atilde (U+00E3): L<<312.0,1350.0>--<312.0,1251.0>> has the same coordinates as a previous segment. * atilde (U+00E3): L<<662.0,1190.0>--<662.0,1289.0>> has the same coordinates as a previous segment. * baht (U+0E3F): L<<433.0,1023.0>--<433.0,820.0>> has the same coordinates as a previous segment. * baht (U+0E3F): L<<442.0,766.0>--<442.0,567.0>> has the same coordinates as a previous segment. * baht (U+0E3F): L<<433.0,1537.0>--<433.0,1331.0>> has the same coordinates as a previous segment. * braceleft (U+007B): L<<421.0,838.0>--<567.0,838.0>> has the same coordinates as a previous segment. * braceleft (U+007B): L<<132.0,630.0>--<132.0,690.0>> has the same coordinates as a previous segment. * braceright (U+007D): L<<710.0,690.0>--<710.0,630.0>> has the same coordinates as a previous segment. * braceright (U+007D): L<<423.0,424.0>--<263.0,424.0>> has the same coordinates as a previous segment. * breve (U+02D8): L<<656.0,1548.0>--<656.0,1480.0>> has the same coordinates as a previous segment. * breve (U+02D8): L<<332.0,1548.0>--<332.0,1480.0>> has the same coordinates as a previous segment. * brevecomb_acutecomb: L<<191.0,1214.0>--<191.0,1101.0>> has the same coordinates as a previous segment. * brevecomb_acutecomb: L<<-133.0,1214.0>--<-133.0,1101.0>> has the same coordinates as a previous segment. * brevecomb_gravecomb: L<<191.0,1214.0>--<191.0,1101.0>> has the same coordinates as a previous segment. * brevecomb_gravecomb: L<<-133.0,1214.0>--<-133.0,1101.0>> has the same coordinates as a previous segment. * brevecomb_hookabovecomb: L<<173.0,1141.0>--<173.0,1028.0>> has the same coordinates as a previous segment. * brevecomb_hookabovecomb: L<<-151.0,1141.0>--<-151.0,1028.0>> has the same coordinates as a previous segment. * brevecomb_tildecomb: L<<182.0,904.0>--<182.0,791.0>> has the same coordinates as a previous segment. * brevecomb_tildecomb: L<<-142.0,904.0>--<-142.0,791.0>> has the same coordinates as a previous segment. * brevecomb_tildecomb: L<<-154.0,1241.0>--<-154.0,1142.0>> has the same coordinates as a previous segment. * brevecomb_tildecomb: L<<196.0,1081.0>--<196.0,1180.0>> has the same coordinates as a previous segment. * breveinvertedbelowcomb (U+032F): L<<-185.0,87.0>--<-185.0,155.0>> has the same coordinates as a previous segment. * breveinvertedbelowcomb (U+032F): L<<139.0,87.0>--<139.0,155.0>> has the same coordinates as a previous segment. * circumflexcomb_tildecomb: L<<-158.0,1209.0>--<-158.0,1110.0>> has the same coordinates as a previous segment. * circumflexcomb_tildecomb: L<<192.0,1049.0>--<192.0,1148.0>> has the same coordinates as a previous segment. * dollar (U+0024): L<<126.0,1028.0>--<331.0,1028.0>> has the same coordinates as a previous segment. * dollar (U+0024): L<<898.0,355.0>--<692.0,355.0>> has the same coordinates as a previous segment. * ebreve (U+0115): L<<697.0,1294.0>--<697.0,1181.0>> has the same coordinates as a previous segment. * ebreve (U+0115): L<<373.0,1294.0>--<373.0,1181.0>> has the same coordinates as a previous segment. * ecedillabreve (U+1E1D): L<<697.0,1294.0>--<697.0,1181.0>> has the same coordinates as a previous segment. * ecedillabreve (U+1E1D): L<<373.0,1294.0>--<373.0,1181.0>> has the same coordinates as a previous segment. * gbreve (U+011F): L<<763.0,1304.0>--<763.0,1191.0>> has the same coordinates as a previous segment. * gbreve (U+011F): L<<439.0,1304.0>--<439.0,1191.0>> has the same coordinates as a previous segment. * greater (U+003E): L<<922.0,777.0>--<924.0,568.0>> has the same coordinates as a previous segment. * greaterequal (U+2265): L<<922.0,777.0>--<924.0,568.0>> has the same coordinates as a previous segment. * guillemotleft (U+00AB): L<<134.0,454.0>--<134.0,609.0>> has the same coordinates as a previous segment. * guillemotleft (U+00AB): L<<549.0,454.0>--<549.0,609.0>> has the same coordinates as a previous segment. * guillemotright (U+00BB): L<<920.0,609.0>--<920.0,454.0>> has the same coordinates as a previous segment. * guillemotright (U+00BB): L<<505.0,609.0>--<505.0,454.0>> has the same coordinates as a previous segment. * guilsinglleft (U+2039): L<<103.0,569.0>--<103.0,777.0>> has the same coordinates as a previous segment. * guilsinglright (U+203A): L<<922.0,777.0>--<924.0,568.0>> has the same coordinates as a previous segment. * hryvnia (U+20B4): L<<347.0,355.0>--<146.0,355.0>> has the same coordinates as a previous segment. * hryvnia (U+20B4): L<<716.0,1028.0>--<918.0,1028.0>> has the same coordinates as a previous segment. * ibreve (U+012D): L<<677.0,1319.0>--<677.0,1206.0>> has the same coordinates as a previous segment. * ibreve (U+012D): L<<353.0,1319.0>--<353.0,1206.0>> has the same coordinates as a previous segment. * itilde (U+0129): L<<304.0,1407.0>--<304.0,1308.0>> has the same coordinates as a previous segment. * itilde (U+0129): L<<654.0,1247.0>--<654.0,1346.0>> has the same coordinates as a previous segment. * itildebelow (U+1E2D): L<<389.0,-142.0>--<389.0,-241.0>> has the same coordinates as a previous segment. * itildebelow (U+1E2D): L<<739.0,-302.0>--<739.0,-203.0>> has the same coordinates as a previous segment. * j_uni0303: L<<538.0,1181.0>--<538.0,1082.0>> has the same coordinates as a previous segment. * j_uni0303: L<<888.0,1021.0>--<888.0,1120.0>> has the same coordinates as a previous segment. * j_uni0311: L<<541.0,1099.0>--<541.0,1167.0>> has the same coordinates as a previous segment. * j_uni0311: L<<865.0,1099.0>--<865.0,1167.0>> has the same coordinates as a previous segment. * less (U+003C): L<<103.0,569.0>--<103.0,777.0>> has the same coordinates as a previous segment. * lessequal (U+2264): L<<103.0,569.0>--<103.0,777.0>> has the same coordinates as a previous segment. * ntilde (U+00F1): L<<304.0,1374.0>--<304.0,1275.0>> has the same coordinates as a previous segment. * ntilde (U+00F1): L<<654.0,1214.0>--<654.0,1313.0>> has the same coordinates as a previous segment. * obreve (U+014F): L<<689.0,1286.0>--<689.0,1173.0>> has the same coordinates as a previous segment. * obreve (U+014F): L<<365.0,1286.0>--<365.0,1173.0>> has the same coordinates as a previous segment. * otilde (U+00F5): L<<316.0,1374.0>--<316.0,1275.0>> has the same coordinates as a previous segment. * otilde (U+00F5): L<<666.0,1214.0>--<666.0,1313.0>> has the same coordinates as a previous segment. * parenleft (U+0028): L<<324.0,179.0>--<514.0,179.0>> has the same coordinates as a previous segment. * parenright (U+0029): L<<678.0,1023.0>--<488.0,1023.0>> has the same coordinates as a previous segment. * parenright (U+0029): L<<488.0,179.0>--<678.0,179.0>> has the same coordinates as a previous segment. * peseta (U+20A7): L<<932.0,173.0>--<881.0,173.0>> has the same coordinates as a previous segment. * radical (U+221A): L<<688.0,117.0>--<504.0,117.0>> has the same coordinates as a previous segment. * ringhalfleft (U+02BF): L<<472.0,1200.0>--<404.0,1200.0>> has the same coordinates as a previous segment. * ringhalfleft (U+02BF): L<<472.0,1524.0>--<404.0,1524.0>> has the same coordinates as a previous segment. * ringhalfright (U+02BE): L<<523.0,1530.0>--<591.0,1530.0>> has the same coordinates as a previous segment. * ringhalfright (U+02BE): L<<523.0,1206.0>--<591.0,1206.0>> has the same coordinates as a previous segment. * rupee (U+20A8): L<<853.0,293.0>--<753.0,293.0>> has the same coordinates as a previous segment. * s (U+0073): L<<791.0,293.0>--<591.0,293.0>> has the same coordinates as a previous segment. * sacute (U+015B): L<<791.0,293.0>--<591.0,293.0>> has the same coordinates as a previous segment. * scaron (U+0161): L<<791.0,293.0>--<591.0,293.0>> has the same coordinates as a previous segment. * scedilla (U+015F): L<<791.0,293.0>--<591.0,293.0>> has the same coordinates as a previous segment. * scircumflex (U+015D): L<<791.0,293.0>--<591.0,293.0>> has the same coordinates as a previous segment. * section (U+00A7): L<<146.0,605.0>--<348.0,605.0>> has the same coordinates as a previous segment. * section (U+00A7): L<<927.0,95.0>--<726.0,95.0>> has the same coordinates as a previous segment. * section (U+00A7): L<<146.0,1237.0>--<348.0,1237.0>> has the same coordinates as a previous segment. * section (U+00A7): L<<918.0,442.0>--<717.0,442.0>> has the same coordinates as a previous segment. * sheqel (U+20AA): L<<620.0,1278.0>--<768.0,1277.0>> has the same coordinates as a previous segment. * sheqel (U+20AA): L<<465.0,264.0>--<317.0,265.0>> has the same coordinates as a previous segment. * tilde (U+02DC): L<<359.0,1607.0>--<359.0,1528.0>> has the same coordinates as a previous segment. * tilde (U+02DC): L<<639.0,1479.0>--<639.0,1558.0>> has the same coordinates as a previous segment. * tildebelowcomb (U+0330): L<<-164.0,73.0>--<-164.0,-26.0>> has the same coordinates as a previous segment. * tildebelowcomb (U+0330): L<<186.0,-87.0>--<186.0,12.0>> has the same coordinates as a previous segment. * tildecomb (U+0303): L<<-194.0,994.0>--<-194.0,895.0>> has the same coordinates as a previous segment. * tildecomb (U+0303): L<<156.0,834.0>--<156.0,933.0>> has the same coordinates as a previous segment. * ubreve (U+016D): L<<625.0,1274.0>--<625.0,1161.0>> has the same coordinates as a previous segment. * ubreve (U+016D): L<<301.0,1274.0>--<301.0,1161.0>> has the same coordinates as a previous segment. * undertie (U+203F): L<<750.0,-252.0>--<750.0,-391.0>> has the same coordinates as a previous segment. * undertie (U+203F): L<<304.0,-252.0>--<304.0,-391.0>> has the same coordinates as a previous segment. * uni012F_uni0303: L<<313.0,1258.0>--<313.0,1159.0>> has the same coordinates as a previous segment. * uni012F_uni0303: L<<663.0,1098.0>--<663.0,1197.0>> has the same coordinates as a previous segment. * uni0202 (U+0202): L<<330.0,1695.0>--<330.0,1763.0>> has the same coordinates as a previous segment. * uni0202 (U+0202): L<<654.0,1695.0>--<654.0,1763.0>> has the same coordinates as a previous segment. * uni0203 (U+0203): L<<305.0,1188.0>--<305.0,1256.0>> has the same coordinates as a previous segment. * uni0203 (U+0203): L<<629.0,1188.0>--<629.0,1256.0>> has the same coordinates as a previous segment. * uni0206 (U+0206): L<<275.0,1695.0>--<275.0,1763.0>> has the same coordinates as a previous segment. * uni0206 (U+0206): L<<599.0,1695.0>--<599.0,1763.0>> has the same coordinates as a previous segment. * uni0207 (U+0207): L<<317.0,1220.0>--<317.0,1288.0>> has the same coordinates as a previous segment. * uni0207 (U+0207): L<<641.0,1220.0>--<641.0,1288.0>> has the same coordinates as a previous segment. * uni020A (U+020A): L<<275.0,1695.0>--<275.0,1763.0>> has the same coordinates as a previous segment. * uni020A (U+020A): L<<599.0,1695.0>--<599.0,1763.0>> has the same coordinates as a previous segment. * uni020B (U+020B): L<<297.0,1245.0>--<297.0,1313.0>> has the same coordinates as a previous segment. * uni020B (U+020B): L<<621.0,1245.0>--<621.0,1313.0>> has the same coordinates as a previous segment. * uni020E (U+020E): L<<261.0,1700.0>--<261.0,1768.0>> has the same coordinates as a previous segment. * uni020E (U+020E): L<<585.0,1700.0>--<585.0,1768.0>> has the same coordinates as a previous segment. * uni020F (U+020F): L<<309.0,1212.0>--<309.0,1280.0>> has the same coordinates as a previous segment. * uni020F (U+020F): L<<633.0,1212.0>--<633.0,1280.0>> has the same coordinates as a previous segment. * uni0212 (U+0212): L<<285.0,1696.0>--<285.0,1764.0>> has the same coordinates as a previous segment. * uni0212 (U+0212): L<<609.0,1696.0>--<609.0,1764.0>> has the same coordinates as a previous segment. * uni0213 (U+0213): L<<309.0,1228.0>--<309.0,1296.0>> has the same coordinates as a previous segment. * uni0213 (U+0213): L<<633.0,1228.0>--<633.0,1296.0>> has the same coordinates as a previous segment. * uni0216 (U+0216): L<<313.0,1696.0>--<313.0,1764.0>> has the same coordinates as a previous segment. * uni0216 (U+0216): L<<637.0,1696.0>--<637.0,1764.0>> has the same coordinates as a previous segment. * uni0217 (U+0217): L<<245.0,1200.0>--<245.0,1268.0>> has the same coordinates as a previous segment. * uni0217 (U+0217): L<<569.0,1200.0>--<569.0,1268.0>> has the same coordinates as a previous segment. * uni0218 (U+0218): L<<146.0,1028.0>--<348.0,1028.0>> has the same coordinates as a previous segment. * uni0218 (U+0218): L<<918.0,355.0>--<717.0,355.0>> has the same coordinates as a previous segment. * uni0219 (U+0219): L<<791.0,293.0>--<591.0,293.0>> has the same coordinates as a previous segment. * uni022C (U+022C): L<<366.0,1846.0>--<366.0,1747.0>> has the same coordinates as a previous segment. * uni022C (U+022C): L<<716.0,1686.0>--<716.0,1785.0>> has the same coordinates as a previous segment. * uni022D (U+022D): L<<316.0,1374.0>--<316.0,1275.0>> has the same coordinates as a previous segment. * uni022D (U+022D): L<<666.0,1214.0>--<666.0,1313.0>> has the same coordinates as a previous segment. * uni0306 (U+0306): L<<182.0,904.0>--<182.0,791.0>> has the same coordinates as a previous segment. * uni0306 (U+0306): L<<-142.0,904.0>--<-142.0,791.0>> has the same coordinates as a previous segment. * uni0311 (U+0311): L<<-193.0,834.0>--<-193.0,902.0>> has the same coordinates as a previous segment. * uni0311 (U+0311): L<<131.0,834.0>--<131.0,902.0>> has the same coordinates as a previous segment. * uni032E (U+032E): L<<197.0,-173.0>--<197.0,-241.0>> has the same coordinates as a previous segment. * uni032E (U+032E): L<<-127.0,-173.0>--<-127.0,-241.0>> has the same coordinates as a previous segment. * uni0926_uni094D_uni092F.pres: L<<674.0,428.0>--<674.0,229.0>> has the same coordinates as a previous segment. * uni092F (U+092F): L<<318.0,846.0>--<528.0,846.0>> has the same coordinates as a previous segment. * uni092F_uni0930_uni094D.vatu: L<<318.0,846.0>--<528.0,846.0>> has the same coordinates as a previous segment. * uni092F_uni094D.half: L<<568.0,846.0>--<778.0,846.0>> has the same coordinates as a previous segment. * uni092F_uni094D.haln: L<<330.0,846.0>--<540.0,846.0>> has the same coordinates as a previous segment. * uni0930_uni094D.half: L<<696.0,802.0>--<696.0,603.0>> has the same coordinates as a previous segment. * uni0930_uni094D.rphf: L<<163.0,2162.0>--<163.0,1962.0>> has the same coordinates as a previous segment. * uni0930_uni094D_uni0902.abvs: L<<163.0,2162.0>--<163.0,1962.0>> has the same coordinates as a previous segment. * uni095F (U+095F): L<<318.0,846.0>--<528.0,846.0>> has the same coordinates as a previous segment. * uni095F_uni0930_uni094D.vatu: L<<318.0,846.0>--<528.0,846.0>> has the same coordinates as a previous segment. * uni095F_uni094D.half: L<<318.0,846.0>--<528.0,846.0>> has the same coordinates as a previous segment. * uni095F_uni094D.haln: L<<338.0,846.0>--<548.0,846.0>> has the same coordinates as a previous segment. * uni096A (U+096A): L<<158.0,317.0>--<358.0,317.0>> has the same coordinates as a previous segment. * uni097A (U+097A): L<<318.0,846.0>--<528.0,846.0>> has the same coordinates as a previous segment. * uni0B87 (U+0B87): L<<339.0,57.0>--<539.0,53.0>> has the same coordinates as a previous segment. * uni0B87 (U+0B87): L<<211.0,-410.0>--<11.0,-410.0>> has the same coordinates as a previous segment. * uni0B90 (U+0B90): L<<685.0,556.0>--<880.0,423.0>> has the same coordinates as a previous segment. * uni0B90 (U+0B90): L<<60.0,426.0>--<263.0,257.0>> has the same coordinates as a previous segment. * uni0B95_uni0BB7.akhn: L<<501.0,679.0>--<601.0,679.0>> has the same coordinates as a previous segment. * uni0B95_uni0BC2: L<<803.0,288.0>--<932.0,287.0>> has the same coordinates as a previous segment. * uni0B9C (U+0B9C): L<<685.0,556.0>--<880.0,423.0>> has the same coordinates as a previous segment. * uni0B9C (U+0B9C): L<<60.0,426.0>--<263.0,257.0>> has the same coordinates as a previous segment. * uni0BB0 (U+0BB0): L<<637.0,-15.0>--<841.0,-124.0>> has the same coordinates as a previous segment. * uni0BB4 (U+0BB4): L<<810.0,661.0>--<1010.0,661.0>> has the same coordinates as a previous segment. * uni0BB5 (U+0BB5): L<<438.0,682.0>--<637.0,680.0>> has the same coordinates as a previous segment. * uni0BB9 (U+0BB9): L<<325.0,682.0>--<465.0,680.0>> has the same coordinates as a previous segment. * uni0BF1 (U+0BF1): L<<283.0,1028.0>--<281.0,1216.0>> has the same coordinates as a previous segment. * uni0BF3 (U+0BF3): L<<438.0,682.0>--<637.0,680.0>> has the same coordinates as a previous segment. * uni0BF4 (U+0BF4): L<<931.0,1532.0>--<931.0,1628.0>> has the same coordinates as a previous segment. * uni0BF5 (U+0BF5): L<<360.0,676.0>--<457.0,678.0>> has the same coordinates as a previous segment. * uni0BF7 (U+0BF7): L<<856.0,213.0>--<916.0,212.0>> has the same coordinates as a previous segment. * uni0BF9 (U+0BF9): L<<625.0,1510.0>--<725.0,1509.0>> has the same coordinates as a previous segment. * uni0BFA (U+0BFA): L<<817.0,1451.0>--<897.0,1450.0>> has the same coordinates as a previous segment. * uni1E02 (U+1E02): L<<433.0,1023.0>--<433.0,820.0>> has the same coordinates as a previous segment. * uni1E02 (U+1E02): L<<442.0,766.0>--<442.0,567.0>> has the same coordinates as a previous segment. * uni1E02 (U+1E02): L<<433.0,1537.0>--<433.0,1331.0>> has the same coordinates as a previous segment. * uni1E2A (U+1E2A): L<<701.0,-203.0>--<701.0,-271.0>> has the same coordinates as a previous segment. * uni1E2A (U+1E2A): L<<377.0,-203.0>--<377.0,-271.0>> has the same coordinates as a previous segment. * uni1E2B (U+1E2B): L<<717.0,-215.0>--<717.0,-283.0>> has the same coordinates as a previous segment. * uni1E2B (U+1E2B): L<<393.0,-215.0>--<393.0,-283.0>> has the same coordinates as a previous segment. * uni1E4C (U+1E4C): L<<366.0,1846.0>--<366.0,1747.0>> has the same coordinates as a previous segment. * uni1E4C (U+1E4C): L<<716.0,1686.0>--<716.0,1785.0>> has the same coordinates as a previous segment. * uni1E4D (U+1E4D): L<<316.0,1374.0>--<316.0,1275.0>> has the same coordinates as a previous segment. * uni1E4D (U+1E4D): L<<666.0,1214.0>--<666.0,1313.0>> has the same coordinates as a previous segment. * uni1E4E (U+1E4E): L<<366.0,1846.0>--<366.0,1747.0>> has the same coordinates as a previous segment. * uni1E4E (U+1E4E): L<<716.0,1686.0>--<716.0,1785.0>> has the same coordinates as a previous segment. * uni1E4F (U+1E4F): L<<316.0,1374.0>--<316.0,1275.0>> has the same coordinates as a previous segment. * uni1E4F (U+1E4F): L<<666.0,1214.0>--<666.0,1313.0>> has the same coordinates as a previous segment. * uni1E60 (U+1E60): L<<146.0,1028.0>--<348.0,1028.0>> has the same coordinates as a previous segment. * uni1E60 (U+1E60): L<<918.0,355.0>--<717.0,355.0>> has the same coordinates as a previous segment. * uni1E61 (U+1E61): L<<791.0,293.0>--<591.0,293.0>> has the same coordinates as a previous segment. * uni1E62 (U+1E62): L<<146.0,1028.0>--<348.0,1028.0>> has the same coordinates as a previous segment. * uni1E62 (U+1E62): L<<918.0,355.0>--<717.0,355.0>> has the same coordinates as a previous segment. * uni1E63 (U+1E63): L<<791.0,293.0>--<591.0,293.0>> has the same coordinates as a previous segment. * uni1E64 (U+1E64): L<<146.0,1028.0>--<348.0,1028.0>> has the same coordinates as a previous segment. * uni1E64 (U+1E64): L<<918.0,355.0>--<717.0,355.0>> has the same coordinates as a previous segment. * uni1E65 (U+1E65): L<<791.0,293.0>--<591.0,293.0>> has the same coordinates as a previous segment. * uni1E66 (U+1E66): L<<146.0,1028.0>--<348.0,1028.0>> has the same coordinates as a previous segment. * uni1E66 (U+1E66): L<<918.0,355.0>--<717.0,355.0>> has the same coordinates as a previous segment. * uni1E67 (U+1E67): L<<791.0,293.0>--<591.0,293.0>> has the same coordinates as a previous segment. * uni1E68 (U+1E68): L<<146.0,1028.0>--<348.0,1028.0>> has the same coordinates as a previous segment. * uni1E68 (U+1E68): L<<918.0,355.0>--<717.0,355.0>> has the same coordinates as a previous segment. * uni1E69 (U+1E69): L<<791.0,293.0>--<591.0,293.0>> has the same coordinates as a previous segment. * uni1E78 (U+1E78): L<<320.0,1858.0>--<320.0,1759.0>> has the same coordinates as a previous segment. * uni1E78 (U+1E78): L<<670.0,1698.0>--<670.0,1797.0>> has the same coordinates as a previous segment. * uni1E79 (U+1E79): L<<252.0,1362.0>--<252.0,1263.0>> has the same coordinates as a previous segment. * uni1E79 (U+1E79): L<<602.0,1202.0>--<602.0,1301.0>> has the same coordinates as a previous segment. * uni1E7C (U+1E7C): L<<373.0,1828.0>--<373.0,1729.0>> has the same coordinates as a previous segment. * uni1E7C (U+1E7C): L<<723.0,1668.0>--<723.0,1767.0>> has the same coordinates as a previous segment. * uni1E7D (U+1E7D): L<<344.0,1338.0>--<344.0,1239.0>> has the same coordinates as a previous segment. * uni1E7D (U+1E7D): L<<694.0,1178.0>--<694.0,1277.0>> has the same coordinates as a previous segment. * uni1EAA (U+1EAA): L<<399.0,2109.0>--<399.0,2010.0>> has the same coordinates as a previous segment. * uni1EAA (U+1EAA): L<<749.0,1949.0>--<749.0,2048.0>> has the same coordinates as a previous segment. * uni1EAB (U+1EAB): L<<373.0,1577.0>--<373.0,1478.0>> has the same coordinates as a previous segment. * uni1EAB (U+1EAB): L<<723.0,1417.0>--<723.0,1516.0>> has the same coordinates as a previous segment. * uni1EAE (U+1EAE): L<<710.0,1769.0>--<710.0,1656.0>> has the same coordinates as a previous segment. * uni1EAE (U+1EAE): L<<386.0,1769.0>--<386.0,1656.0>> has the same coordinates as a previous segment. * uni1EAF (U+1EAF): L<<685.0,1262.0>--<685.0,1149.0>> has the same coordinates as a previous segment. * uni1EAF (U+1EAF): L<<361.0,1262.0>--<361.0,1149.0>> has the same coordinates as a previous segment. * uni1EB0 (U+1EB0): L<<710.0,1769.0>--<710.0,1656.0>> has the same coordinates as a previous segment. * uni1EB0 (U+1EB0): L<<386.0,1769.0>--<386.0,1656.0>> has the same coordinates as a previous segment. * uni1EB1 (U+1EB1): L<<685.0,1262.0>--<685.0,1149.0>> has the same coordinates as a previous segment. * uni1EB1 (U+1EB1): L<<361.0,1262.0>--<361.0,1149.0>> has the same coordinates as a previous segment. * uni1EB2 (U+1EB2): L<<710.0,1769.0>--<710.0,1656.0>> has the same coordinates as a previous segment. * uni1EB2 (U+1EB2): L<<386.0,1769.0>--<386.0,1656.0>> has the same coordinates as a previous segment. * uni1EB3 (U+1EB3): L<<685.0,1262.0>--<685.0,1149.0>> has the same coordinates as a previous segment. * uni1EB3 (U+1EB3): L<<361.0,1262.0>--<361.0,1149.0>> has the same coordinates as a previous segment. * uni1EB4 (U+1EB4): L<<428.0,2077.0>--<428.0,1978.0>> has the same coordinates as a previous segment. * uni1EB4 (U+1EB4): L<<778.0,1917.0>--<778.0,2016.0>> has the same coordinates as a previous segment. * uni1EB4 (U+1EB4): L<<710.0,1769.0>--<710.0,1656.0>> has the same coordinates as a previous segment. * uni1EB4 (U+1EB4): L<<386.0,1769.0>--<386.0,1656.0>> has the same coordinates as a previous segment. * uni1EB5 (U+1EB5): L<<399.0,1521.0>--<399.0,1422.0>> has the same coordinates as a previous segment. * uni1EB5 (U+1EB5): L<<749.0,1361.0>--<749.0,1460.0>> has the same coordinates as a previous segment. * uni1EB5 (U+1EB5): L<<685.0,1262.0>--<685.0,1149.0>> has the same coordinates as a previous segment. * uni1EB5 (U+1EB5): L<<361.0,1262.0>--<361.0,1149.0>> has the same coordinates as a previous segment. * uni1EB6 (U+1EB6): L<<688.0,1783.0>--<688.0,1670.0>> has the same coordinates as a previous segment. * uni1EB6 (U+1EB6): L<<364.0,1783.0>--<364.0,1670.0>> has the same coordinates as a previous segment. * uni1EB7 (U+1EB7): L<<676.0,1258.0>--<676.0,1145.0>> has the same coordinates as a previous segment. * uni1EB7 (U+1EB7): L<<352.0,1258.0>--<352.0,1145.0>> has the same coordinates as a previous segment. * uni1EBC (U+1EBC): L<<282.0,1857.0>--<282.0,1758.0>> has the same coordinates as a previous segment. * uni1EBC (U+1EBC): L<<632.0,1697.0>--<632.0,1796.0>> has the same coordinates as a previous segment. * uni1EBD (U+1EBD): L<<324.0,1382.0>--<324.0,1283.0>> has the same coordinates as a previous segment. * uni1EBD (U+1EBD): L<<674.0,1222.0>--<674.0,1321.0>> has the same coordinates as a previous segment. * uni1EC4 (U+1EC4): L<<338.0,2089.0>--<338.0,1990.0>> has the same coordinates as a previous segment. * uni1EC4 (U+1EC4): L<<688.0,1929.0>--<688.0,2028.0>> has the same coordinates as a previous segment. * uni1EC5 (U+1EC5): L<<360.0,1660.0>--<360.0,1561.0>> has the same coordinates as a previous segment. * uni1EC5 (U+1EC5): L<<710.0,1500.0>--<710.0,1599.0>> has the same coordinates as a previous segment. * uni1ECB_uni0303: L<<337.0,1282.0>--<337.0,1183.0>> has the same coordinates as a previous segment. * uni1ECB_uni0303: L<<687.0,1122.0>--<687.0,1221.0>> has the same coordinates as a previous segment. * uni1ED6 (U+1ED6): L<<304.0,2204.0>--<304.0,2105.0>> has the same coordinates as a previous segment. * uni1ED6 (U+1ED6): L<<654.0,2044.0>--<654.0,2143.0>> has the same coordinates as a previous segment. * uni1ED7 (U+1ED7): L<<355.0,1578.0>--<355.0,1479.0>> has the same coordinates as a previous segment. * uni1ED7 (U+1ED7): L<<705.0,1418.0>--<705.0,1517.0>> has the same coordinates as a previous segment. * uni1EE0 (U+1EE0): L<<297.0,1996.0>--<297.0,1897.0>> has the same coordinates as a previous segment. * uni1EE0 (U+1EE0): L<<647.0,1836.0>--<647.0,1935.0>> has the same coordinates as a previous segment. * uni1EE1 (U+1EE1): L<<255.0,1479.0>--<255.0,1380.0>> has the same coordinates as a previous segment. * uni1EE1 (U+1EE1): L<<605.0,1319.0>--<605.0,1418.0>> has the same coordinates as a previous segment. * uni1EEE (U+1EEE): L<<320.0,1903.0>--<320.0,1804.0>> has the same coordinates as a previous segment. * uni1EEE (U+1EEE): L<<670.0,1743.0>--<670.0,1842.0>> has the same coordinates as a previous segment. * uni1EEF (U+1EEF): L<<237.0,1395.0>--<237.0,1296.0>> has the same coordinates as a previous segment. * uni1EEF (U+1EEF): L<<587.0,1235.0>--<587.0,1334.0>> has the same coordinates as a previous segment. * uni1EF8 (U+1EF8): L<<336.0,1854.0>--<336.0,1755.0>> has the same coordinates as a previous segment. * uni1EF8 (U+1EF8): L<<686.0,1694.0>--<686.0,1793.0>> has the same coordinates as a previous segment. * uni1EF9 (U+1EF9): L<<340.0,1358.0>--<340.0,1259.0>> has the same coordinates as a previous segment. * uni1EF9 (U+1EF9): L<<690.0,1198.0>--<690.0,1297.0>> has the same coordinates as a previous segment. * uni207D (U+207D): L<<406.0,771.0>--<513.0,771.0>> has the same coordinates as a previous segment. * uni207E (U+207E): L<<605.0,1243.0>--<499.0,1243.0>> has the same coordinates as a previous segment. * uni207E (U+207E): L<<499.0,769.0>--<605.0,769.0>> has the same coordinates as a previous segment. * uni208D (U+208D): L<<406.0,-229.0>--<513.0,-229.0>> has the same coordinates as a previous segment. * uni208E (U+208E): L<<605.0,243.0>--<499.0,243.0>> has the same coordinates as a previous segment. * uni208E (U+208E): L<<499.0,-231.0>--<605.0,-231.0>> has the same coordinates as a previous segment. * uni20BF (U+20BF): L<<747.0,1023.0>--<747.0,820.0>> has the same coordinates as a previous segment. * uni20BF (U+20BF): L<<756.0,766.0>--<756.0,567.0>> has the same coordinates as a previous segment. * uni20BF (U+20BF): L<<747.0,1537.0>--<747.0,1331.0>> has the same coordinates as a previous segment. * uni27E9 (U+27E9): L<<902.0,741.0>--<902.0,569.0>> has the same coordinates as a previous segment. * utilde (U+0169): L<<252.0,1362.0>--<252.0,1263.0>> has the same coordinates as a previous segment. * utilde (U+0169): L<<602.0,1202.0>--<602.0,1301.0>> has the same coordinates as a previous segment. * utildebelow (U+1E75): L<<364.0,-193.0>--<364.0,-292.0>> has the same coordinates as a previous segment. * utildebelow (U+1E75): L<<714.0,-353.0>--<714.0,-254.0>> has the same coordinates as a previous segment.
Font contains all required tables?
ℹ️ Samaano[slnt,wdth,wght].ttf
-
ℹ️ INFO
This font contains the following optional tables:
[code: optional-tables]- loca - prep - GPOS - GSUB - gasp
-
✅ PASS
Font contains all required tables.
Ensure indic fonts have the Indian Rupee Sign glyph.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Looks good!
Font has the proper sfntVersion value?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Font has the correct sfntVersion value.
Ensure 'smcp' (small caps) lookups are defined before ligature lookups in the 'GSUB' table.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Font lacks 'smcp' or 'liga' features.
Ensure smart dropout control is enabled in "prep" table instructions.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Does the font contain a soft hyphen?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Looks good!
Checking STAT table entries in static fonts.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: not is_variable_font
[code: unfulfilled-conditions]
Check correctness of STAT table strings
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Ensure Stylistic Sets have description.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check tabular widths don't have kerning.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Ensure component transforms do not perform scaling or rotation.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
No glyphs had components with scaling or rotation
Checking with fontTools.ttx
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Checking that the typoAscender exceeds the yMax of the /Agrave.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
OS/2.sTypoAscender value is greater than the yMax of /Agrave.
Font contains unique glyph names?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Glyph names are all unique.
Check font contains no unreachable glyphs
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ WARN
The following glyphs could not be reached by codepoint or substitution rules:
[code: unreachable-glyphs]- brevecomb_acutecomb - brevecomb_gravecomb - brevecomb_hookabovecomb - brevecomb_tildecomb - circumflexcomb_acutecomb - circumflexcomb_gravecomb - circumflexcomb_hookabovecomb - circumflexcomb_tildecomb - idotaccent - uni0B99_uni0BC1 - uni0B99_uni0BC2 - uni0B9A_uni0BC1 - uni0B9A_uni0BC2 - uni0B9E_uni0BC1 - uni0B9E_uni0BC2 - uni0BC1.alt - uni0BC2.alt
Glyph names are all valid?
🔥 Samaano[slnt,wdth,wght].ttf
-
🔥 FAIL
The following glyph names do not comply with naming conventions: Alpha-latin, Beta-latin, Gamma-latin, Iota-latin, Omega-latin, Upsilon-latin, alpha-latin, beta-latin, gamma-latin, iota-latin, omega-latin and upsilon-latin
A glyph name must be entirely comprised of characters from the following set: A-Z a-z 0-9 .(period) (underscore). A glyph name must not start with a digit or period. There are a few exceptions such as the special glyph ".notdef". The glyph names "twocents", "a1", and "" are all valid, while "2cents" and ".twocents" are not.
[code: found-invalid-names]
The variable font 'wght' (Weight) axis coordinate must be 700 on the 'Bold' instance.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Bold:wght is 700.
Ensure that all variable font files have the same set of axes and axis ranges.
✅ Family Check
-
✅ PASS
All looks good!
[code: ok]
Ensure VFs with duplexed axes do not vary horizontal advance.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
This font has no duplexed axes
[code: no-relevant-axes]
Check variable font instances don't have duplicate names
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Ensure the font's instances are in the correct order.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Ensure VFs do not contain (yet) the ital axis.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Font contains glyphs for whitespace characters?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Font contains glyphs for whitespace characters.
Whitespace glyphs have ink?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
There is no whitespace glyph with ink.
Space and non-breaking space have the same width?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Space and non-breaking space have the same width.
Article Checks
⚠️Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ WARN
Family metadata at fonts/variable does not have an article.
[code: lacks-article]
Metadata Checks
⚠️⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩Validate METADATA.pb axes values are within gf_axisregistry bounds.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Validate METADATA.pb axes tags are defined in gf_axisregistry.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Does METADATA.pb copyright field contain broken links?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb: Font styles are named canonically?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata
[code: unfulfilled-conditions]
METADATA.pb: Check that font weight has a canonical value.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata
[code: unfulfilled-conditions]
Check samples can be rendered.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Ensure METADATA.pb category field is valid.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Check if category on METADATA.pb matches what can be inferred from the family name.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Validate VF axes match the ones declared on METADATA.pb.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb: Check URL on copyright string is the same as in repository_url field.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Validate 'date_added' field on METADATA.pb.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb: Designers are listed correctly on the Google Fonts catalog?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Multiple values in font designer field in METADATA.pb must be separated by commas.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
At least one designer is declared in METADATA.pb
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
No applicable arguments
[code: no-arguments]
Ensure METADATA.pb does not use escaped strings.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: metadata_file
[code: unfulfilled-conditions]
Check font family directory name.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Check that METADATA.pb family values are all the same.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb: Font filenames match font.filename entries?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Ensure there is a regular style defined in METADATA.pb.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Check METADATA.pb includes production subsets.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata, listed_on_gfonts_api
[code: unfulfilled-conditions]
METADATA.pb font.filename and font.post_script_name fields have equivalent values?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata, not is_variable_font
[code: unfulfilled-conditions]
METADATA.pb font.full_name and font.post_script_name fields have equivalent values ?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata
[code: unfulfilled-conditions]
METADATA.pb: Check font name is the same as family name.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata, font_metadata
[code: unfulfilled-conditions]
METADATA.pb weight matches postScriptName for static fonts.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata, not is_variable_font
[code: unfulfilled-conditions]
METADATA.pb should contain at least "menu" and "latin" subsets.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb: Validate family.minisite_url field.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb font.name and font.full_name fields match the values declared on the name table?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata
[code: unfulfilled-conditions]
METADATA.pb font.name value should be same as the family name declared on the name table.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata
[code: unfulfilled-conditions]
Checks METADATA.pb font.post_script_name matches postscript name declared on the name table.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata
[code: unfulfilled-conditions]
Check METADATA.pb parse correctly.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Font family at 'fonts/variable' lacks a METADATA.pb file.
[code: file-not-found]
METADATA.pb: Check for primary_script
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb: Regular should be 400.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata, has_regular_style
[code: unfulfilled-conditions]
Check METADATA.pb file only contains a single CJK subset.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb subsets should be alphabetically ordered.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Ensure METADATA.pb lists all font binaries.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb: check if fonts field only has unique "full_name" values.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb: check if fonts field only contains unique style:weight pairs.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Check for codepoints not covered by METADATA subsets.
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ 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+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+0302 COMBINING CIRCUMFLEX ACCENT: try adding one of: math, tifinagh, cherokee, coptic
- U+0305 COMBINING OVERLINE: try adding one of: gothic, elbasan, coptic, math, glagolitic
- U+0306 COMBINING BREVE: try adding one of: tifinagh, old-permic
- U+0307 COMBINING DOT ABOVE: try adding one of: tifinagh, malayalam, duployan, canadian-aboriginal, hebrew, syriac, coptic, math, tai-le, old-permic, todhri
- U+030A COMBINING RING ABOVE: try adding one of: duployan, syriac
- U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: cherokee, osage
- U+030C COMBINING CARON: try adding one of: tai-le, cherokee
- U+030D COMBINING VERTICAL LINE ABOVE: try adding sunuwar
- U+030F COMBINING DOUBLE GRAVE ACCENT: not included in any glyphset definition
- U+0310 COMBINING CANDRABINDU: try adding one of: math, sunuwar
- U+0311 COMBINING INVERTED BREVE: try adding one of: todhri, coptic
- U+0312 COMBINING TURNED COMMA ABOVE: try adding math
- U+0315 COMBINING COMMA ABOVE RIGHT: try adding math
- U+031B COMBINING HORN: not included in any glyphset definition
- U+0324 COMBINING DIAERESIS BELOW: try adding one of: duployan, cherokee, syriac
- U+0325 COMBINING RING BELOW: try adding syriac
- U+0326 COMBINING COMMA BELOW: try adding math
- U+0327 COMBINING CEDILLA: try adding math
- U+0328 COMBINING OGONEK: not included in any glyphset definition
- U+032D COMBINING CIRCUMFLEX ACCENT BELOW: try adding one of: sunuwar, syriac
- U+032E COMBINING BREVE BELOW: try adding syriac
- U+032F COMBINING INVERTED BREVE BELOW: try adding math
- U+0330 COMBINING TILDE BELOW: try adding one of: math, cherokee, syriac
- U+0331 COMBINING MACRON BELOW: try adding one of: tifinagh, sunuwar, gothic, syriac, cherokee, thai, caucasian-albanian
- U+0335 COMBINING SHORT STROKE OVERLAY: not included in any glyphset definition
- U+035F COMBINING DOUBLE MACRON BELOW: not included in any glyphset definition
- U+0E3F THAI CURRENCY SYMBOL BAHT: try adding thai
- U+1DC4 COMBINING MACRON-ACUTE: not included in any glyphset definition
- U+1DC5 COMBINING GRAVE-MACRON: not included in any glyphset definition
- U+1DC6 COMBINING MACRON-GRAVE: not included in any glyphset definition
- U+1DC7 COMBINING ACUTE-MACRON: not included in any glyphset definition
- U+2016 DOUBLE VERTICAL LINE: try adding math
- U+2021 DOUBLE DAGGER: try adding adlam
- U+2030 PER MILLE SIGN: try adding adlam
- U+203F UNDERTIE: not included in any glyphset definition
- U+2042 ASTERISM: not included in any glyphset definition
- U+2052 COMMERCIAL MINUS SIGN: not included in any glyphset definition
- U+2070 SUPERSCRIPT ZERO: try adding math
- U+2071 SUPERSCRIPT LATIN SMALL LETTER I: try adding math
- U+2074 SUPERSCRIPT FOUR: try adding math
- U+2075 SUPERSCRIPT FIVE: try adding math
- U+2076 SUPERSCRIPT SIX: try adding math
- U+2077 SUPERSCRIPT SEVEN: try adding math
- U+2078 SUPERSCRIPT EIGHT: try adding math
- U+2079 SUPERSCRIPT NINE: try adding math
- U+207A SUPERSCRIPT PLUS SIGN: try adding math
- U+207B SUPERSCRIPT MINUS: try adding math
- U+207C SUPERSCRIPT EQUALS SIGN: try adding math
- U+207D SUPERSCRIPT LEFT PARENTHESIS: try adding math
- U+207E SUPERSCRIPT RIGHT PARENTHESIS: try adding math
- U+207F SUPERSCRIPT LATIN SMALL LETTER N: try adding math
- U+2080 SUBSCRIPT ZERO: try adding math
- U+2081 SUBSCRIPT ONE: try adding math
- U+2082 SUBSCRIPT TWO: try adding math
- U+2083 SUBSCRIPT THREE: try adding math
- U+2084 SUBSCRIPT FOUR: try adding math
- U+2085 SUBSCRIPT FIVE: try adding math
- U+2086 SUBSCRIPT SIX: try adding math
- U+2087 SUBSCRIPT SEVEN: try adding math
- U+2088 SUBSCRIPT EIGHT: try adding math
- U+2089 SUBSCRIPT NINE: try adding math
- U+208A SUBSCRIPT PLUS SIGN: try adding math
- U+208B SUBSCRIPT MINUS: try adding math
- U+208C SUBSCRIPT EQUALS SIGN: try adding math
- U+208D SUBSCRIPT LEFT PARENTHESIS: try adding math
- U+208E SUBSCRIPT RIGHT PARENTHESIS: try adding math
- U+20C1 : not included in any glyphset definition
- U+2126 OHM SIGN: try adding math
- U+212E ESTIMATED SYMBOL: try adding math
- U+2153 VULGAR FRACTION ONE THIRD: try adding symbols
- U+2154 VULGAR FRACTION TWO THIRDS: try adding symbols
- U+2190 LEFTWARDS ARROW: try adding one of: math, symbols
- U+2192 RIGHTWARDS ARROW: try adding one of: math, symbols
- U+2194 LEFT RIGHT ARROW: try adding one of: math, symbols
- U+2195 UP DOWN ARROW: try adding one of: math, symbols
- U+2196 NORTH WEST ARROW: try adding one of: math, symbols
- U+2197 NORTH EAST ARROW: try adding one of: math, symbols
- U+2198 SOUTH EAST ARROW: try adding one of: math, symbols
- U+2199 SOUTH WEST ARROW: try adding one of: math, symbols
- U+2202 PARTIAL DIFFERENTIAL: try adding math
- U+2205 EMPTY SET: try adding math
- U+2206 INCREMENT: try adding math
- U+220F N-ARY PRODUCT: try adding math
- U+2211 N-ARY SUMMATION: try adding math
- U+2219 BULLET OPERATOR: try adding one of: math, tai-tham, yi, symbols
- U+221A SQUARE ROOT: try adding math
- U+221E INFINITY: try adding math
- U+222B INTEGRAL: try adding math
- U+2248 ALMOST EQUAL TO: try adding math
- U+2260 NOT EQUAL TO: try adding math
- U+2264 LESS-THAN OR EQUAL TO: try adding math
- U+2265 GREATER-THAN OR EQUAL TO: try adding math
- U+22EF MIDLINE HORIZONTAL ELLIPSIS: try adding math
- U+24B6 CIRCLED LATIN CAPITAL LETTER A: try adding symbols
- U+24B9 CIRCLED LATIN CAPITAL LETTER D: try adding symbols
- U+24D0 CIRCLED LATIN SMALL LETTER A: try adding symbols
- U+25A0 BLACK SQUARE: try adding symbols
- U+25A1 WHITE SQUARE: try adding symbols
- U+25AA BLACK SMALL SQUARE: try adding symbols
- U+25AB WHITE SMALL SQUARE: try adding symbols
- U+25B2 BLACK UP-POINTING TRIANGLE: try adding symbols
- U+25B3 WHITE UP-POINTING TRIANGLE: try adding one of: math, symbols
- U+25B4 BLACK UP-POINTING SMALL TRIANGLE: try adding symbols
- U+25B5 WHITE UP-POINTING SMALL TRIANGLE: try adding symbols
- U+25B6 BLACK RIGHT-POINTING TRIANGLE: try adding symbols
- U+25B7 WHITE RIGHT-POINTING TRIANGLE: try adding one of: math, symbols
- U+25B8 BLACK RIGHT-POINTING SMALL TRIANGLE: try adding symbols
- U+25B9 WHITE RIGHT-POINTING SMALL TRIANGLE: try adding symbols
- U+25BC BLACK DOWN-POINTING TRIANGLE: try adding symbols
- U+25BD WHITE DOWN-POINTING TRIANGLE: try adding one of: math, symbols
- U+25BE BLACK DOWN-POINTING SMALL TRIANGLE: try adding symbols
- U+25BF WHITE DOWN-POINTING SMALL TRIANGLE: try adding symbols
- U+25C0 BLACK LEFT-POINTING TRIANGLE: try adding symbols
- U+25C1 WHITE LEFT-POINTING TRIANGLE: try adding one of: math, symbols
- U+25C2 BLACK LEFT-POINTING SMALL TRIANGLE: try adding symbols
- U+25C3 WHITE LEFT-POINTING SMALL TRIANGLE: try adding symbols
- U+25C6 BLACK DIAMOND: try adding symbols
- U+25C7 WHITE DIAMOND: try adding symbols
- U+25CA LOZENGE: try adding one of: math, symbols
- U+25CB WHITE CIRCLE: try adding symbols
- U+25CF BLACK CIRCLE: try adding symbols
- U+25E6 WHITE BULLET: try adding symbols
- U+27E8 MATHEMATICAL LEFT ANGLE BRACKET: try adding math
- U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET: try adding math
- U+E0FC : not included in any glyphset definition
- U+FB01 LATIN SMALL LIGATURE FI: not included in any glyphset definition
- U+FB02 LATIN SMALL LIGATURE FL: not included in any glyphset definition
Or you can add the above codepoints to one of the subsets supported by the font:
[code: unreachable-subsetting]cyrillic-ext
,devanagari
,greek
,greek-ext
,latin
,latin-ext
,tamil
,vietnamese
Check for METADATA subsets with zero support.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb font.filename field contains font name in right format?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb font.full_name field contains font name in right format?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata
[code: unfulfilled-conditions]
Check name ID 25 to end with "Italic" for Italic VFs.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
METADATA.pb font.post_script_name field contains font name in right format?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata
[code: unfulfilled-conditions]
Check METADATA.pb font weights are correct.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata
[code: unfulfilled-conditions]
Glyphset Checks
💥Shapes languages in all GF glyphsets.
💥 Samaano[slnt,wdth,wght].ttf
-
💥 ERROR
Failed with TypeError: argument 'lang': 'NoneType' object cannot be converted to 'Language'
[code: failed-check]File "/home/runner/work/samaano-fonts/samaano-fonts/venv-test/lib/python3.10/site-packages/fontbakery/checkrunner.py", line 223, in _run_check subresults = list(subresults) File "/home/runner/work/samaano-fonts/samaano-fonts/venv-test/lib/python3.10/site-packages/fontbakery/checks/vendorspecific/googlefonts/glyphsets/shape_languages.py", line 49, in check_glyphsets_shape_languages reporter = shaperglot_checker.check(shaperglot_languages[language_code])
Description Checks
⏩⏩⏩⏩⏩⏩⏩⏩ℹ️Does DESCRIPTION file contain broken links?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: description_and_article_html
[code: unfulfilled-conditions]
DESCRIPTION.en_us.html should end in a linebreak.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: description
[code: unfulfilled-conditions]
On a family update, the DESCRIPTION.en_us.html file should ideally also be updated.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: description
[code: unfulfilled-conditions]
Does DESCRIPTION file contain a upstream Git repo URL?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: description_html
[code: unfulfilled-conditions]
Check for presence of an ARTICLE.en_us.html file
ℹ️ Samaano[slnt,wdth,wght].ttf
-
ℹ️ INFO
This font doesn't have an ARTICLE.en_us.html file.
[code: missing-article]
Check the description doesn't contain unsupported html elements
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: description_and_article
[code: unfulfilled-conditions]
DESCRIPTION.en_us.html must have more than 200 bytes.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: description
[code: unfulfilled-conditions]
URLs on DESCRIPTION file must not display http(s) prefix.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: description_and_article_html
[code: unfulfilled-conditions]
Is this a proper HTML snippet?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: description_and_article
[code: unfulfilled-conditions]
Family Checks
⏩Fonts have equal codepoint coverage
⏩ Family Check
-
⏩ SKIP
Unfulfilled Conditions: stylenames_are_canonical
[code: unfulfilled-conditions]
Ensure Italic styles have Roman counterparts.
✅ Family Check
-
✅ PASS
All looks good!
[code: ok]
All tabular figures must have the same width across the RIBBI-family.
✅ Family Check
-
✅ PASS
All looks good!
[code: ok]
Name table checks
Check family name for GF Guide compliance.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Name table entries should not contain line-breaks.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Licensing Checks
⏩⏩⏩⏩Check font has a license.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: gfonts_repo_structure
[code: unfulfilled-conditions]
Copyright notices match canonical pattern in fonts
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check OFL body text is correct.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check license file has good copyright string.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
METADATA.pb: Copyright notice is the same in all fonts?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
METADATA.pb license is "APACHE2", "UFL" or "OFL"?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: family_metadata
[code: unfulfilled-conditions]
Copyright notice on METADATA.pb should not contain 'Reserved Font Name'.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: font_metadata
[code: unfulfilled-conditions]
Check copyright namerecords match license file.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
License URL matches License text on name table?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Font has a valid license URL in NAME table.
Name table strings must not contain the string 'Reserved Font Name'.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Repository Checks
⏩⏩⏩Directory name in GFonts repo structure must match NameID 1 of the regular.
⏩ Family Check
-
⏩ SKIP
Unfulfilled Conditions: gfonts_repo_structure
[code: unfulfilled-conditions]
A font repository should not include FontBakery report files
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check upstream.yaml file contains all required fields
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: upstream_yaml
[code: unfulfilled-conditions]
A static fonts directory, if present, must contain manually hinted fonts
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: gfonts_repo_structure
[code: unfulfilled-conditions]
A font repository should not include ZIP files
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Shaping Checks
⚠️⏩⏩⏩Ensure dotted circle glyph is present and can attach marks.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All marks were anchored to dotted circle
Check that no collisions are found while shaping
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Shaping test directory not defined in configuration file
Check that no forbidden glyphs are found while shaping
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Shaping test directory not defined in configuration file
Check that texts shape as per expectation
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Shaping test directory not defined in configuration file
Ensure soft_dotted characters lose their dot when combined with marks that replace the dot.
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ WARN
The dot of soft dotted characters used in orthographies must disappear in the following strings: i̍ i̐ i᷆ i᷇ ɨ̀ ɨ́ ɨ̂ ɨ̃ ɨ̄ ɨ̈ ɨ̋ ɨ̌ ɨ̏ ɨ̧̀ ɨ̧́ ɨ̧̂ ɨ̧̌ ɨ̱̀ ɨ̱́ ɨ̱̈ ḭ̀ ḭ́ ḭ̄
The dot of soft dotted characters should disappear in other cases, for example: i̅ i̇ i̒ i᷄ i᷅ i̛̅ i̛̇ i̛̊ i̛̋ i̛̍ i̛̐ i̛̒ i̛᷄ i̛᷅ i̛᷆ i̛᷇ i̤̅ i̤̇ i̤̊ i̤̋
[code: soft-dotted]
Outline Checks
⚠️⏩⏩⏩⏩Are there any misaligned on-curve points?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
So many Y-coordinates of points were close to boundaries that this was probably by design.
Do any segments have colinear vectors?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: not is_variable_font
[code: unfulfilled-conditions]
Check the direction of the outermost contour in each glyph
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ WARN
The following glyphs have a counter-clockwise outer contour:
[code: ccw-outer-contour]* glottalstopreversed (U+0295) has a counter-clockwise outer contour * glottalstopreversed (U+0295) has a counter-clockwise outer contour * glottalstopreversed (U+0295) has a counter-clockwise outer contour * glottalstopreversed (U+0295) has a counter-clockwise outer contour * lambda (U+03BB) has a counter-clockwise outer contour * lambda (U+03BB) has a counter-clockwise outer contour * uni0BB8 (U+0BB8) has a counter-clockwise outer contour
Do outlines contain any jaggy segments?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: not is_variable_font
[code: unfulfilled-conditions]
Do outlines contain any semi-vertical or semi-horizontal lines?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: not is_variable_font
[code: unfulfilled-conditions]
Are any segments inordinately short?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: not is_variable_font
[code: unfulfilled-conditions]
Font File Checks
🔥🔥⚠️⏩⏩⏩⏩⏩ℹ️ℹ️ℹ️Check if the axes match between the font and the Google Fonts version.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: remote_style
[code: unfulfilled-conditions]
Validate defaults on fvar table match registered fallback names in GFAxisRegistry.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Checking file is named canonically.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
Font filename is correct, "Samaano[slnt,wdth,wght].ttf".
Check font follows the Google Fonts CJK vertical metric schema
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: is_cjk_font
[code: unfulfilled-conditions]
Check if the vertical metrics of a CJK family are similar to the same family hosted on Google Fonts.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: is_cjk_font, regular_remote_style
[code: unfulfilled-conditions]
Ensure font has the expected color font tables.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check font names are correct
🔥 Samaano[slnt,wdth,wght].ttf
-
🔥 FAIL
Font names are incorrect:
nameID current expected Family Name Samaano Bold Samaano Subfamily Name Bold Bold Full Name Samaano Bold Samaano Bold Postscript Name Samaano-Bold Samaano-Bold Typographic Family Name Samaano N/A Typographic Subfamily Name Bold N/A
Checking OS/2 fsType does not impose restrictions.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check variable font instances
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
ℹ️ Samaano[slnt,wdth,wght].ttf
-
ℹ️ 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]
Check Google Fonts glyph coverage.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Font has ttfautohint params?
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Font appears to our heuristic as not hinted using ttfautohint.
[code: not-hinted]
Ensure fonts have ScriptLangTags declared on the 'meta' table.
⚠️ Samaano[slnt,wdth,wght].ttf
-
⚠️ WARN
This font file does not have a 'meta' table.
[code: lacks-meta-table]
Description strings in the name table must not exceed 200 characters.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Make sure family name does not begin with a digit.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Font has all mandatory 'name' table entries?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Version format is correct in 'name' table?
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Font has old ttfautohint applied?
ℹ️ Samaano[slnt,wdth,wght].ttf
-
ℹ️ INFO
Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: ['Version 2.400']
[code: version-not-detected]
Ensure font can render its own name.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check axis ordering on the STAT table.
ℹ️ Family Check
-
ℹ️ INFO
None of the fonts lack a STAT table.
[code: summary]And these are the most common STAT axis orderings: ('wdth-wght-slnt', 1)
Validate STAT particle names and values match the fallback names in GFAxisRegistry.
🔥 Samaano[slnt,wdth,wght].ttf
-
🔥 FAIL
On the font variation axis 'slnt', the name 'Oblique' is not among the expected ones (Default) according to the Google Fonts Axis Registry.
[code: invalid-name]
Stricter unitsPerEm criteria for Google Fonts.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
OS/2.fsSelection bit 7 (USE_TYPO_METRICS) is set in all fonts.
✅ Family Check
-
✅ PASS
All looks good!
[code: ok]
Check a static ttf can be generated from a variable font.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
fontTools.varLib.mutator generated a static font instance
Check that variable fonts have an HVAR table.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Checking OS/2 achVendID.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check font follows the Google Fonts vertical metric schema
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]
Check if the vertical metrics of a family are similar to the same family hosted on Google Fonts.
⏩ Samaano[slnt,wdth,wght].ttf
-
⏩ SKIP
Unfulfilled Conditions: regular_remote_style
[code: unfulfilled-conditions]
Check the OS/2 usWeightClass is appropriate for the font's best SubFamily name.
✅ Samaano[slnt,wdth,wght].ttf
-
✅ PASS
All looks good!
[code: ok]