Running FontBakery from a Python script #3621
Replies: 3 comments
-
That's a really good question! I agree that we should have something like that. There's something similar to that in our code-tests. Take a look at https://github.com/googlefonts/fontbakery/blob/main/tests/profiles/universal_test.py#L68 The |
Beta Was this translation helpful? Give feedback.
-
Of course it is possible, but without knowing your actual use case, the following maybe a bit pointless. I hope it helps though. from fontbakery.checkrunner import CheckRunner, get_module_profile
from fontbakery.profiles import universal
profile = get_module_profile(universal)
path = "../fonts/ofl/abeezee/ABeeZee-Regular.ttf"
values = {'fonts': [path], 'ufos': [], 'designspaces': [], 'glyphs_files': [], 'readme_md': [], 'metadata_pb': []}
config = {'custom_order': None, 'explicit_checks': None, 'exclude_checks': None, 'full_lists': False}
runner = CheckRunner(profile, values, config)
result = list(runner.run()) (NOTE: I'm not happy about having to configure empty items in Where # > result
[(<Status START>,
((<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/single_directory>,
()),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/fontbakery_version>,
()),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/vertical_metrics>,
()),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/name/trailing_spaces>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/win_ascent_and_descent>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/os2_metrics_match_hhea>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/ots>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/mandatory_glyphs>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_glyphs>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_glyphnames>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_ink>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/required_tables>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unwanted_tables>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/STAT_strings>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/valid_glyphnames>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unique_glyphnames>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/ttx-roundtrip>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/superfamily/list>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/superfamily/vertical_metrics>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/rupee>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unreachable_glyphs>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/contour_count>,
(('font', 0),)),
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/cjk_chws_feature>,
(('font', 0),)),
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff_call_depth>,
(('font', 0),)),
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff2_call_depth>,
(('font', 0),)),
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff_deprecated_operators>,
(('font', 0),)),
(<Section: fontbakery.profiles.cmap>,
<FontBakeryCheck:com.google.fonts/check/family/equal_unicode_encodings>,
()),
(<Section: fontbakery.profiles.cmap>,
<FontBakeryCheck:com.google.fonts/check/all_glyphs_have_codepoints>,
(('font', 0),)),
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/family/equal_font_versions>,
()),
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/unitsperem>,
(('font', 0),)),
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/font_version>,
(('font', 0),)),
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/family/panose_proportion>,
()),
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/family/panose_familytype>,
()),
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.adobe.fonts/check/family/bold_italic_unique_for_nameid1>,
()),
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/xavgcharwidth>,
(('font', 0),)),
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.adobe.fonts/check/fsselection_matches_macstyle>,
(('font', 0),)),
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/code_pages>,
(('font', 0),)),
(<Section: fontbakery.profiles.post>,
<FontBakeryCheck:com.google.fonts/check/family/underline_thickness>,
()),
(<Section: fontbakery.profiles.post>,
<FontBakeryCheck:com.google.fonts/check/post_table_version>,
(('font', 0),)),
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/family/max_4_fonts_per_family_name>,
()),
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/empty_records>,
(('font', 0),)),
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/name/no_copyright_on_description>,
(('font', 0),)),
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/monospace>,
(('font', 0),)),
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/name/match_familyname_fullfont>,
(('font', 0),)),
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/family_naming_recommendations>,
(('font', 0),)),
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/postscript_vs_cff>,
(('font', 0),)),
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/postscript_name_consistency>,
(('font', 0),)),
(<Section: fontbakery.profiles.loca>,
<FontBakeryCheck:com.google.fonts/check/loca/maxp_num_glyphs>,
(('font', 0),)),
(<Section: fontbakery.profiles.hhea>,
<FontBakeryCheck:com.google.fonts/check/linegaps>,
(('font', 0),)),
(<Section: fontbakery.profiles.hhea>,
<FontBakeryCheck:com.google.fonts/check/maxadvancewidth>,
(('font', 0),)),
(<Section: fontbakery.profiles.dsig>,
<FontBakeryCheck:com.google.fonts/check/dsig>,
(('font', 0),)),
(<Section: fontbakery.profiles.hmtx>,
<FontBakeryCheck:com.google.fonts/check/whitespace_widths>,
(('font', 0),)),
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_spacing_marks>,
(('font', 0),)),
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_mark_chars>,
(('font', 0),)),
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_non_mark_chars>,
(('font', 0),)),
(<Section: fontbakery.profiles.gpos>,
<FontBakeryCheck:com.google.fonts/check/gpos_kerning_info>,
(('font', 0),)),
(<Section: fontbakery.profiles.kern>,
<FontBakeryCheck:com.google.fonts/check/kern_table>,
(('font', 0),)),
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/glyf_unused_data>,
(('font', 0),)),
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/points_out_of_bounds>,
(('font', 0),)),
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/glyf_non_transformed_duplicate_components>,
(('font', 0),)),
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_wght_coord>,
(('font', 0),)),
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_wdth_coord>,
(('font', 0),)),
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_slnt_coord>,
(('font', 0),)),
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_ital_coord>,
(('font', 0),)),
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_opsz_coord>,
(('font', 0),)),
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/bold_wght_coord>,
(('font', 0),)),
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/wght_valid_range>,
(('font', 0),)),
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/wdth_valid_range>,
(('font', 0),)),
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/slnt_range>,
(('font', 0),)),
(<Section: fontbakery.profiles.stat>,
<FontBakeryCheck:com.google.fonts/check/varfont/stat_axis_record_for_each_axis>,
(('font', 0),)),
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_feature_tags>,
(('font', 0),)),
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_script_tags>,
(('font', 0),)),
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_language_tags>,
(('font', 0),)),
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_alignment_miss>,
(('font', 0),)),
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_short_segments>,
(('font', 0),)),
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_colinear_vectors>,
(('font', 0),)),
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_jaggy_segments>,
(('font', 0),)),
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_semi_vertical>,
(('font', 0),)),
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/regression>,
(('font', 0),)),
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/forbidden>,
(('font', 0),)),
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/collides>,
(('font', 0),))),
(None, None, None)),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/single_directory>,
())),
(<Status PASS>,
'All files are in the same directory.',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/single_directory>,
())),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/single_directory>,
())),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/fontbakery_version>,
())),
(<Status SKIP>,
'No applicable arguments',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/fontbakery_version>,
())),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/fontbakery_version>,
())),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/vertical_metrics>,
())),
(<Status PASS>,
'Vertical metrics are the same across the family.',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/vertical_metrics>,
())),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/vertical_metrics>,
())),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/name/trailing_spaces>,
(('font', 0),))),
(<Status PASS>,
'No trailing spaces on name table entries.',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/name/trailing_spaces>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/name/trailing_spaces>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/win_ascent_and_descent>,
(('font', 0),))),
(<Status PASS>,
'OS/2 usWinAscent & usWinDescent values look good!',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/win_ascent_and_descent>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/family/win_ascent_and_descent>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/os2_metrics_match_hhea>,
(('font', 0),))),
(<Status PASS>,
'OS/2.sTypoAscender/Descender values match hhea.ascent/descent.',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/os2_metrics_match_hhea>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/os2_metrics_match_hhea>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/ots>,
(('font', 0),))),
(<Status PASS>,
'ots-sanitize passed this file',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/ots>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/ots>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/mandatory_glyphs>,
(('font', 0),))),
(<Status PASS>,
'OK',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/mandatory_glyphs>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/mandatory_glyphs>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_glyphs>,
(('font', 0),))),
(<Status PASS>,
'Font contains glyphs for whitespace characters.',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_glyphs>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_glyphs>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_glyphnames>,
(('font', 0),))),
(<Status WARN>,
Glyph 0x00A0 is called "nonbreakingspace": Change to "uni00A0" [code: not-recommended-00a0],
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_glyphnames>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status WARN>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_glyphnames>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_ink>,
(('font', 0),))),
(<Status PASS>,
'There is no whitespace glyph with ink.',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_ink>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/whitespace_ink>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/required_tables>,
(('font', 0),))),
(<Status INFO>,
This font contains the following optional tables:
- cvt
- fpgm
- loca
- prep
- GPOS
- gasp
- hdmx
- And LTSH [code: optional-tables],
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/required_tables>,
(('font', 0),))),
(<Status PASS>,
'Font contains all required tables.',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/required_tables>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status INFO>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/required_tables>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unwanted_tables>,
(('font', 0),))),
(<Status PASS>,
'There are no unwanted tables.',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unwanted_tables>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unwanted_tables>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/STAT_strings>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: STAT_table',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/STAT_strings>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/STAT_strings>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/valid_glyphnames>,
(('font', 0),))),
(<Status PASS>,
'Glyph names are all valid.',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/valid_glyphnames>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/valid_glyphnames>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unique_glyphnames>,
(('font', 0),))),
(<Status PASS>,
'Font contains unique glyph names.',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unique_glyphnames>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unique_glyphnames>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/ttx-roundtrip>,
(('font', 0),))),
(<Status PASS>,
'Hey! It all looks good!',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/ttx-roundtrip>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/ttx-roundtrip>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/superfamily/list>,
(('font', 0),))),
(<Status INFO>,
../fonts/ofl/abeezee [code: family-path],
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/superfamily/list>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status INFO>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/superfamily/list>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/superfamily/vertical_metrics>,
(('font', 0),))),
(<Status SKIP>,
'Sibling families were not detected.',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/superfamily/vertical_metrics>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/superfamily/vertical_metrics>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/rupee>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_indic_font',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/rupee>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/rupee>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unreachable_glyphs>,
(('font', 0),))),
(<Status WARN>,
The following glyphs could not be reached by codepoint or substitution rules:
- .null
- nonmarkingreturn
- ring.cap
- foundryicon
- And dotaccentcmb.cap
[code: unreachable-glyphs],
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unreachable_glyphs>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status WARN>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/unreachable_glyphs>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/contour_count>,
(('font', 0),))),
(<Status 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],
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/contour_count>,
(('font', 0),))),
(<Status 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: uni00AD Contours detected: 1 Expected: 0
- And Glyph name: uni00AD Contours detected: 1 Expected: 0
[code: contour-count],
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/contour_count>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status WARN>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/contour_count>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/cjk_chws_feature>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_cjk_font',
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/cjk_chws_feature>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: Universal>,
<FontBakeryCheck:com.google.fonts/check/cjk_chws_feature>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff_call_depth>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_cff',
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff_call_depth>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff_call_depth>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff2_call_depth>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_cff2',
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff2_call_depth>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff2_call_depth>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff_deprecated_operators>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_cff',
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff_deprecated_operators>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.cff>,
<FontBakeryCheck:com.adobe.fonts/check/cff_deprecated_operators>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.cmap>,
<FontBakeryCheck:com.google.fonts/check/family/equal_unicode_encodings>,
())),
(<Status PASS>,
'Fonts have equal unicode encodings.',
(<Section: fontbakery.profiles.cmap>,
<FontBakeryCheck:com.google.fonts/check/family/equal_unicode_encodings>,
())),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.cmap>,
<FontBakeryCheck:com.google.fonts/check/family/equal_unicode_encodings>,
())),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.cmap>,
<FontBakeryCheck:com.google.fonts/check/all_glyphs_have_codepoints>,
(('font', 0),))),
(<Status PASS>,
'All glyphs have a codepoint value assigned.',
(<Section: fontbakery.profiles.cmap>,
<FontBakeryCheck:com.google.fonts/check/all_glyphs_have_codepoints>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.cmap>,
<FontBakeryCheck:com.google.fonts/check/all_glyphs_have_codepoints>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/family/equal_font_versions>,
())),
(<Status PASS>,
'All font files have the same version.',
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/family/equal_font_versions>,
())),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/family/equal_font_versions>,
())),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/unitsperem>,
(('font', 0),))),
(<Status PASS>,
"The unitsPerEm value (1000) on the 'head' table is reasonable.",
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/unitsperem>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/unitsperem>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/font_version>,
(('font', 0),))),
(<Status PASS>,
'All font version fields match.',
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/font_version>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.head>,
<FontBakeryCheck:com.google.fonts/check/font_version>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/family/panose_proportion>,
())),
(<Status PASS>,
'Fonts have consistent PANOSE proportion.',
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/family/panose_proportion>,
())),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/family/panose_proportion>,
())),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/family/panose_familytype>,
())),
(<Status PASS>,
'Fonts have consistent PANOSE family type.',
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/family/panose_familytype>,
())),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/family/panose_familytype>,
())),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.adobe.fonts/check/family/bold_italic_unique_for_nameid1>,
())),
(<Status PASS>,
'The OS/2.fsSelection bold & italic settings were unique within each compatible family group.',
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.adobe.fonts/check/family/bold_italic_unique_for_nameid1>,
())),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.adobe.fonts/check/family/bold_italic_unique_for_nameid1>,
())),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/xavgcharwidth>,
(('font', 0),))),
(<Status PASS>,
'OS/2 xAvgCharWidth value is correct.',
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/xavgcharwidth>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/xavgcharwidth>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.adobe.fonts/check/fsselection_matches_macstyle>,
(('font', 0),))),
(<Status PASS>,
'The OS/2.fsSelection and head.macStyle bold and italic settings match.',
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.adobe.fonts/check/fsselection_matches_macstyle>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.adobe.fonts/check/fsselection_matches_macstyle>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/code_pages>,
(('font', 0),))),
(<Status PASS>,
'At least one code page is defined.',
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/code_pages>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.os2>,
<FontBakeryCheck:com.google.fonts/check/code_pages>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.post>,
<FontBakeryCheck:com.google.fonts/check/family/underline_thickness>,
())),
(<Status PASS>,
'Fonts have consistent underline thickness.',
(<Section: fontbakery.profiles.post>,
<FontBakeryCheck:com.google.fonts/check/family/underline_thickness>,
())),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.post>,
<FontBakeryCheck:com.google.fonts/check/family/underline_thickness>,
())),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.post>,
<FontBakeryCheck:com.google.fonts/check/post_table_version>,
(('font', 0),))),
(<Status PASS>,
'Font has post table version 2.',
(<Section: fontbakery.profiles.post>,
<FontBakeryCheck:com.google.fonts/check/post_table_version>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.post>,
<FontBakeryCheck:com.google.fonts/check/post_table_version>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/family/max_4_fonts_per_family_name>,
())),
(<Status PASS>,
'There were no more than 4 fonts per family name.',
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/family/max_4_fonts_per_family_name>,
())),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/family/max_4_fonts_per_family_name>,
())),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/empty_records>,
(('font', 0),))),
(<Status PASS>,
'No empty name table records found.',
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/empty_records>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/empty_records>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/name/no_copyright_on_description>,
(('font', 0),))),
(<Status PASS>,
'Description strings in the name table do not contain any copyright string.',
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/name/no_copyright_on_description>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/name/no_copyright_on_description>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/monospace>,
(('font', 0),))),
(<Status PASS>,
Font is not monospaced and all related metadata look good. [code: good],
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/monospace>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/monospace>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/name/match_familyname_fullfont>,
(('font', 0),))),
(<Status PASS>,
'Full font name begins with the font family name.',
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/name/match_familyname_fullfont>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/name/match_familyname_fullfont>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/family_naming_recommendations>,
(('font', 0),))),
(<Status PASS>,
'Font follows the family naming recommendations.',
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/family_naming_recommendations>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.google.fonts/check/family_naming_recommendations>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/postscript_vs_cff>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_cff',
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/postscript_vs_cff>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/postscript_vs_cff>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/postscript_name_consistency>,
(('font', 0),))),
(<Status PASS>,
'Entries in the "name" table for ID 6 (PostScript name) are consistent.',
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/postscript_name_consistency>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.name>,
<FontBakeryCheck:com.adobe.fonts/check/name/postscript_name_consistency>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.loca>,
<FontBakeryCheck:com.google.fonts/check/loca/maxp_num_glyphs>,
(('font', 0),))),
(<Status PASS>,
"'loca' table matches numGlyphs in 'maxp' table.",
(<Section: fontbakery.profiles.loca>,
<FontBakeryCheck:com.google.fonts/check/loca/maxp_num_glyphs>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.loca>,
<FontBakeryCheck:com.google.fonts/check/loca/maxp_num_glyphs>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.hhea>,
<FontBakeryCheck:com.google.fonts/check/linegaps>,
(('font', 0),))),
(<Status PASS>,
'OS/2 sTypoLineGap and hhea lineGap are both 0.',
(<Section: fontbakery.profiles.hhea>,
<FontBakeryCheck:com.google.fonts/check/linegaps>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.hhea>,
<FontBakeryCheck:com.google.fonts/check/linegaps>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.hhea>,
<FontBakeryCheck:com.google.fonts/check/maxadvancewidth>,
(('font', 0),))),
(<Status PASS>,
'MaxAdvanceWidth is consistent with values in the Hmtx and Hhea tables.',
(<Section: fontbakery.profiles.hhea>,
<FontBakeryCheck:com.google.fonts/check/maxadvancewidth>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.hhea>,
<FontBakeryCheck:com.google.fonts/check/maxadvancewidth>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.dsig>,
<FontBakeryCheck:com.google.fonts/check/dsig>,
(('font', 0),))),
(<Status WARN>,
This font has a digital signature (DSIG table) which is only required - even if only a placeholder - on old programs like MS Office 2013 in order to work properly.
The current recommendation is to completely remove the DSIG table. [code: found-DSIG],
(<Section: fontbakery.profiles.dsig>,
<FontBakeryCheck:com.google.fonts/check/dsig>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status WARN>,
(<Section: fontbakery.profiles.dsig>,
<FontBakeryCheck:com.google.fonts/check/dsig>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.hmtx>,
<FontBakeryCheck:com.google.fonts/check/whitespace_widths>,
(('font', 0),))),
(<Status PASS>,
'Space and non-breaking space have the same width.',
(<Section: fontbakery.profiles.hmtx>,
<FontBakeryCheck:com.google.fonts/check/whitespace_widths>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.hmtx>,
<FontBakeryCheck:com.google.fonts/check/whitespace_widths>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_spacing_marks>,
(('font', 0),))),
(<Status SKIP>,
'Font does not declare an optional "GDEF" table or has any GDEF glyph class definition.',
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_spacing_marks>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_spacing_marks>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_mark_chars>,
(('font', 0),))),
(<Status SKIP>,
'Font does not declare an optional "GDEF" table or has any GDEF glyph class definition.',
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_mark_chars>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_mark_chars>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_non_mark_chars>,
(('font', 0),))),
(<Status SKIP>,
'Font does not declare an optional "GDEF" table or has any GDEF glyph class definition.',
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_non_mark_chars>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.gdef>,
<FontBakeryCheck:com.google.fonts/check/gdef_non_mark_chars>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.gpos>,
<FontBakeryCheck:com.google.fonts/check/gpos_kerning_info>,
(('font', 0),))),
(<Status PASS>,
'GPOS table check for kerning information passed.',
(<Section: fontbakery.profiles.gpos>,
<FontBakeryCheck:com.google.fonts/check/gpos_kerning_info>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.gpos>,
<FontBakeryCheck:com.google.fonts/check/gpos_kerning_info>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.kern>,
<FontBakeryCheck:com.google.fonts/check/kern_table>,
(('font', 0),))),
(<Status PASS>,
'Font does not declare an optional "kern" table.',
(<Section: fontbakery.profiles.kern>,
<FontBakeryCheck:com.google.fonts/check/kern_table>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.kern>,
<FontBakeryCheck:com.google.fonts/check/kern_table>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/glyf_unused_data>,
(('font', 0),))),
(<Status PASS>,
'There is no unused data at the end of the glyf table.',
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/glyf_unused_data>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/glyf_unused_data>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/points_out_of_bounds>,
(('font', 0),))),
(<Status PASS>,
'All glyph paths have coordinates within bounds!',
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/points_out_of_bounds>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/points_out_of_bounds>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/glyf_non_transformed_duplicate_components>,
(('font', 0),))),
(<Status PASS>,
'Glyphs do not contain duplicate components which have the same x,y coordinates.',
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/glyf_non_transformed_duplicate_components>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.glyf>,
<FontBakeryCheck:com.google.fonts/check/glyf_non_transformed_duplicate_components>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_wght_coord>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_variable_font, regular_wght_coord',
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_wght_coord>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_wght_coord>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_wdth_coord>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_variable_font, regular_wdth_coord',
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_wdth_coord>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_wdth_coord>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_slnt_coord>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_variable_font, regular_slnt_coord',
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_slnt_coord>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_slnt_coord>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_ital_coord>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_variable_font, regular_ital_coord',
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_ital_coord>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_ital_coord>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_opsz_coord>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_variable_font, regular_opsz_coord',
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_opsz_coord>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/regular_opsz_coord>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/bold_wght_coord>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_variable_font, bold_wght_coord',
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/bold_wght_coord>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/bold_wght_coord>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/wght_valid_range>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_variable_font',
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/wght_valid_range>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/wght_valid_range>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/wdth_valid_range>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_variable_font',
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/wdth_valid_range>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/wdth_valid_range>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/slnt_range>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_variable_font, slnt_axis',
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/slnt_range>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.fvar>,
<FontBakeryCheck:com.google.fonts/check/varfont/slnt_range>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.stat>,
<FontBakeryCheck:com.google.fonts/check/varfont/stat_axis_record_for_each_axis>,
(('font', 0),))),
(<Status SKIP>,
'Unfulfilled Conditions: is_variable_font',
(<Section: fontbakery.profiles.stat>,
<FontBakeryCheck:com.google.fonts/check/varfont/stat_axis_record_for_each_axis>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: fontbakery.profiles.stat>,
<FontBakeryCheck:com.google.fonts/check/varfont/stat_axis_record_for_each_axis>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_feature_tags>,
(('font', 0),))),
(<Status PASS>,
'No invalid feature tags were found',
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_feature_tags>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_feature_tags>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_script_tags>,
(('font', 0),))),
(<Status PASS>,
'No invalid script tags were found',
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_script_tags>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_script_tags>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_language_tags>,
(('font', 0),))),
(<Status PASS>,
'No invalid language tags were found',
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_language_tags>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: fontbakery.profiles.layout>,
<FontBakeryCheck:com.google.fonts/check/layout_valid_language_tags>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_alignment_miss>,
(('font', 0),))),
(<Status WARN>,
The following glyphs have on-curve points which have potentially incorrect y coordinates:
* percent (U+0025): X=199.0,Y=-2.0 (should be at baseline 0?)
* percent (U+0025): X=696.0,Y=702.0 (should be at cap-height 700?)
* ampersand (U+0026): X=257.5,Y=699.0 (should be at cap-height 700?)
* ampersand (U+0026): X=225.0,Y=1.5 (should be at baseline 0?)
* two (U+0032): X=379.5,Y=699.0 (should be at cap-height 700?)
* three (U+0033): X=355.5,Y=698.0 (should be at cap-height 700?)
* five (U+0035): X=164.5,Y=1.5 (should be at baseline 0?)
* six (U+0036): X=429.0,Y=702.0 (should be at cap-height 700?)
* six (U+0036): X=448.5,Y=701.5 (should be at cap-height 700?)
* eight (U+0038): X=216.5,Y=699.5 (should be at cap-height 700?) and 77 more.
Use -F or --full-lists to disable shortening of long lists. [code: found-misalignments],
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_alignment_miss>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status WARN>,
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_alignment_miss>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_short_segments>,
(('font', 0),))),
(<Status WARN>,
The following glyphs have segments which seem very short:
* at (U+0040) contains a short segment B<<705.0,148.0>-<702.0,125.0>-<702.0,113.0>> [code: found-short-segments],
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_short_segments>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status WARN>,
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_short_segments>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_colinear_vectors>,
(('font', 0),))),
(<Status WARN>,
The following glyphs have colinear vectors:
* exclam (U+0021): L<<119.0,207.0>--<106.0,480.0>> -> L<<106.0,480.0>--<106.0,729.0>>
* exclam (U+0021): L<<206.0,729.0>--<206.0,480.0>> -> L<<206.0,480.0>--<193.0,207.0>>
* exclamdown (U+00A1): L<<105.0,-220.0>--<105.0,41.0>> -> L<<105.0,41.0>--<118.0,314.0>> and exclamdown (U+00A1): L<<192.0,314.0>--<205.0,41.0>> -> L<<205.0,41.0>--<205.0,-220.0>> [code: found-colinear-vectors],
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_colinear_vectors>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status WARN>,
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_colinear_vectors>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_jaggy_segments>,
(('font', 0),))),
(<Status PASS>,
'No jaggy segments found.',
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_jaggy_segments>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_jaggy_segments>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_semi_vertical>,
(('font', 0),))),
(<Status PASS>,
'No semi-horizontal/semi-vertical lines found.',
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_semi_vertical>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status PASS>,
(<Section: Outline Correctness Checks>,
<FontBakeryCheck:com.google.fonts/check/outline_semi_vertical>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/regression>,
(('font', 0),))),
(<Status SKIP>,
'Shaping test directory not defined in configuration file',
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/regression>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/regression>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/forbidden>,
(('font', 0),))),
(<Status SKIP>,
'Shaping test directory not defined in configuration file',
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/forbidden>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/forbidden>,
(('font', 0),))),
(<Status STARTCHECK>,
None,
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/collides>,
(('font', 0),))),
(<Status SKIP>,
'Shaping test directory not defined in configuration file',
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/collides>,
(('font', 0),))),
(<Status ENDCHECK>,
<Status SKIP>,
(<Section: Shaping Checks>,
<FontBakeryCheck:com.google.fonts/check/shaping/collides>,
(('font', 0),))),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/family/single_directory>, ()),
(<FontBakeryCheck:com.google.fonts/check/fontbakery_version>, ()),
(<FontBakeryCheck:com.google.fonts/check/family/vertical_metrics>, ()),
(<FontBakeryCheck:com.google.fonts/check/name/trailing_spaces>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/family/win_ascent_and_descent>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/os2_metrics_match_hhea>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/ots>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/mandatory_glyphs>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/whitespace_glyphs>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/whitespace_glyphnames>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/whitespace_ink>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/required_tables>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/unwanted_tables>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/STAT_strings>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/valid_glyphnames>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/unique_glyphnames>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/ttx-roundtrip>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/superfamily/list>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/superfamily/vertical_metrics>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/rupee>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/unreachable_glyphs>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/contour_count>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/cjk_chws_feature>,
(('font', 0),))],
Counter({'PASS': 13, 'SKIP': 5, 'WARN': 3, 'INFO': 2})),
(<Section: Universal>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.adobe.fonts/check/cff_call_depth>, (('font', 0),)),
(<FontBakeryCheck:com.adobe.fonts/check/cff2_call_depth>, (('font', 0),)),
(<FontBakeryCheck:com.adobe.fonts/check/cff_deprecated_operators>,
(('font', 0),))],
Counter({'SKIP': 3})),
(<Section: fontbakery.profiles.cff>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/family/equal_unicode_encodings>,
()),
(<FontBakeryCheck:com.google.fonts/check/all_glyphs_have_codepoints>,
(('font', 0),))],
Counter({'PASS': 2})),
(<Section: fontbakery.profiles.cmap>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/family/equal_font_versions>, ()),
(<FontBakeryCheck:com.google.fonts/check/unitsperem>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/font_version>, (('font', 0),))],
Counter({'PASS': 3})),
(<Section: fontbakery.profiles.head>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/family/panose_proportion>, ()),
(<FontBakeryCheck:com.google.fonts/check/family/panose_familytype>, ()),
(<FontBakeryCheck:com.adobe.fonts/check/family/bold_italic_unique_for_nameid1>,
()),
(<FontBakeryCheck:com.google.fonts/check/xavgcharwidth>, (('font', 0),)),
(<FontBakeryCheck:com.adobe.fonts/check/fsselection_matches_macstyle>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/code_pages>, (('font', 0),))],
Counter({'PASS': 6})),
(<Section: fontbakery.profiles.os2>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/family/underline_thickness>, ()),
(<FontBakeryCheck:com.google.fonts/check/post_table_version>,
(('font', 0),))],
Counter({'PASS': 2})),
(<Section: fontbakery.profiles.post>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.adobe.fonts/check/family/max_4_fonts_per_family_name>,
()),
(<FontBakeryCheck:com.adobe.fonts/check/name/empty_records>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/name/no_copyright_on_description>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/monospace>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/name/match_familyname_fullfont>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/family_naming_recommendations>,
(('font', 0),)),
(<FontBakeryCheck:com.adobe.fonts/check/name/postscript_vs_cff>,
(('font', 0),)),
(<FontBakeryCheck:com.adobe.fonts/check/name/postscript_name_consistency>,
(('font', 0),))],
Counter({'PASS': 7, 'SKIP': 1})),
(<Section: fontbakery.profiles.name>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/loca/maxp_num_glyphs>,
(('font', 0),))],
Counter({'PASS': 1})),
(<Section: fontbakery.profiles.loca>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/linegaps>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/maxadvancewidth>,
(('font', 0),))],
Counter({'PASS': 2})),
(<Section: fontbakery.profiles.hhea>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/dsig>, (('font', 0),))],
Counter({'WARN': 1})),
(<Section: fontbakery.profiles.dsig>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/whitespace_widths>,
(('font', 0),))],
Counter({'PASS': 1})),
(<Section: fontbakery.profiles.hmtx>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/gdef_spacing_marks>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/gdef_mark_chars>, (('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/gdef_non_mark_chars>,
(('font', 0),))],
Counter({'SKIP': 3})),
(<Section: fontbakery.profiles.gdef>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/gpos_kerning_info>,
(('font', 0),))],
Counter({'PASS': 1})),
(<Section: fontbakery.profiles.gpos>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/kern_table>, (('font', 0),))],
Counter({'PASS': 1})),
(<Section: fontbakery.profiles.kern>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/glyf_unused_data>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/points_out_of_bounds>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/glyf_non_transformed_duplicate_components>,
(('font', 0),))],
Counter({'PASS': 3})),
(<Section: fontbakery.profiles.glyf>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/varfont/regular_wght_coord>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/varfont/regular_wdth_coord>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/varfont/regular_slnt_coord>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/varfont/regular_ital_coord>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/varfont/regular_opsz_coord>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/varfont/bold_wght_coord>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/varfont/wght_valid_range>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/varfont/wdth_valid_range>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/varfont/slnt_range>,
(('font', 0),))],
Counter({'SKIP': 9})),
(<Section: fontbakery.profiles.fvar>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/varfont/stat_axis_record_for_each_axis>,
(('font', 0),))],
Counter({'SKIP': 1})),
(<Section: fontbakery.profiles.stat>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/layout_valid_feature_tags>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/layout_valid_script_tags>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/layout_valid_language_tags>,
(('font', 0),))],
Counter({'PASS': 3})),
(<Section: fontbakery.profiles.layout>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/outline_alignment_miss>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/outline_short_segments>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/outline_colinear_vectors>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/outline_jaggy_segments>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/outline_semi_vertical>,
(('font', 0),))],
Counter({'WARN': 3, 'PASS': 2})),
(<Section: Outline Correctness Checks>, None, None)),
(<Status SECTIONSUMMARY>,
([(<FontBakeryCheck:com.google.fonts/check/shaping/regression>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/shaping/forbidden>,
(('font', 0),)),
(<FontBakeryCheck:com.google.fonts/check/shaping/collides>,
(('font', 0),))],
Counter({'SKIP': 3})),
(<Section: Shaping Checks>, None, None)),
(<Status END>,
Counter({'PASS': 47, 'SKIP': 25, 'WARN': 7, 'INFO': 2}),
(None, None, None))] |
Beta Was this translation helpful? Give feedback.
-
As mentioned in #4128 this kind if API would be great:
I don’t need those reporters or runners. They do too much in the background. |
Beta Was this translation helpful? Give feedback.
-
Hey!
Premise: it's probably a dumb question, be kind : )
I was wondering if it is possible to run fontBakery as a Python functions instead of a CLI. Something like:
I know I can
subprocess.call
the terminal commands, and I'll do it if necessary, but before making my own API, I was curious to know if there is an official API to be accessed from within a Python script. I could not find examples going in this direction and if Idir()
fontbakery once imported I only getBeta Was this translation helpful? Give feedback.
All reactions