fonttools / fontbakery

🧁 A font quality assurance tool for everyone
https://fontbakery.readthedocs.io
Apache License 2.0
549 stars 102 forks source link

fontbakery-build.py fails to build when the path has spaces #572

Closed davelab6 closed 8 years ago

davelab6 commented 9 years ago

fontbakery-build.py fails to build when the path has spaces:

$ fontbakery-build.py .
note: ERROR: bakery_lint/fonttests/test_ufo.py: TestDiacritic.test_diacritic_made_as_component():  Check that diacritic glyph are made completely with composite
note: ERROR: bakery_lint/fonttests/test_ufo.py: TestDiacritic.test_diacritic_made_as_mark_to_mark():  Check that diacritic glyph are made completely with mark method
note: ERROR: bakery_lint/fonttests/test_ufo.py: TestDiacritic.test_diacritic_made_as_own_glyphs():  Check that diacritic glyph are made completely with flat method
required: FAIL: bakery_lint/fonttests/test_upstream.py: CheckTextFilesExist.test_copyrighttxt_exists():  Font folder should contains COPYRIGHT.txt : ['COPYRIGHT.txt'] does not exist in project
required: FAIL: bakery_lint/fonttests/test_upstream.py: CheckTextFilesExist.test_description_exists():  Font folder should contains DESCRIPTION.en_us.html : ['DESCRIPTION.en_us.html'] does not exist in project
note: FAIL: bakery_lint/fonttests/test_upstream.py: CheckTextFilesExist.test_fontlogtxt_exists():  Font folder should contains FONTLOG.txt : ['FONTLOG.txt'] does not exist in project
required: FAIL: bakery_lint/fonttests/test_upstream.py: CheckTextFilesExist.test_licensetxt_exists():  Font folder should contains LICENSE.txt : ['LICENSE.txt', 'OFL.txt'] does not exist in project
note: FAIL: bakery_lint/fonttests/test_upstream.py: TestUpstreamRepo.test_bakery_yaml_exists():  Repository contains bakery.yaml configuration file? : File `bakery.yaml` does not exist in root of upstream repository
note: FAIL: bakery_lint/fonttests/test_upstream.py: TestUpstreamRepo.test_metadata_json_exists():  Repository contains METADATA.json file? : File `METADATA.json` does not exist in root of upstream repository
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_gasp_table_type():  Font table gasp should be 15 : gaspRange[65535] value is not 15
no table gasp
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_gasp_table_type():  Font table gasp should be 15 : gaspRange[65535] value is not 15
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_glyf_table_length():  Check if there is unused data at the end of the glyf table : Glyf table has unreachable data at the end of the table. Expected glyf table length 2572 (from loca table), got length 218280 (difference: 215708)
required: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_nbsp_width_matches_sp_width():  Check non-breaking space's advancewidth is the same as space : Font does not contain a tab glyph
required: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_nbsp_width_matches_sp_width():  Check non-breaking space's advancewidth is the same as space : Font does not contain a tab glyph
note: ERROR: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_no_problematic_formats():  Check that font contain required tables : unsupported operand type(s) for +: 'set' and 'set'
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_opentype_familyname():  OT Family Name for Windows should be equal to Family Name : '' != u'Caveat Brush'

CaveatBrush-Regular.ttf

NAMEID 1: "Caveat Brush Regular" NAMEID 2: "Regular" NAMEID 4: "Caveat Brush Regular" NAMEID 6: "CaveatBrush-Regular" NAMEID 1: "Caveat Brush Regular" NAMEID 2: "Regular" NAMEID 4: "Caveat Brush Regular" NAMEID 6: "CaveatBrush-Regular" NAMEID 16: "Caveat Brush" NAMEID 17: "Regular" NAMEID 18: "Caveat Brush Regular"

note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_opentype_familyname():  OT Family Name for Windows should be equal to Family Name : '' != u'Caveat Brush'
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_opentype_fullname():  Full name matches Windows-only Opentype-specific FullName : '' != u'Caveat Brush'

CaveatBrush-Regular.ttf

NAMEID 1: "Caveat Brush Regular" NAMEID 2: "Regular" NAMEID 4: "Caveat Brush Regular" NAMEID 6: "CaveatBrush-Regular" NAMEID 1: "Caveat Brush Regular" NAMEID 2: "Regular" NAMEID 4: "Caveat Brush Regular" NAMEID 6: "CaveatBrush-Regular" NAMEID 16: "Caveat Brush" NAMEID 17: "Regular" NAMEID 18: "Caveat Brush Regular"

note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_opentype_fullname():  Full name matches Windows-only Opentype-specific FullName : '' != u'Caveat Brush'
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_stylename_is_under_recommendations():  Style name must be equal to one of the following four             values: "Regular", "Italic", "Bold" or "Bold Italic" : '' not found in ['Regular', 'Italic', 'Bold', 'Bold Italic']

CaveatBrush-Regular.ttf

NAMEID 1: "Caveat Brush Regular" NAMEID 2: "Regular" NAMEID 4: "Caveat Brush Regular" NAMEID 6: "CaveatBrush-Regular" NAMEID 1: "Caveat Brush Regular" NAMEID 2: "Regular" NAMEID 4: "Caveat Brush Regular" NAMEID 6: "CaveatBrush-Regular" NAMEID 16: "Caveat Brush" NAMEID 17: "Regular" NAMEID 18: "Caveat Brush Regular"

note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_stylename_is_under_recommendations():  Style name must be equal to one of the following four             values: "Regular", "Italic", "Bold" or "Bold Italic" : '' not found in ['Regular', 'Italic', 'Bold', 'Bold Italic']
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_check_upm_heigths_less_120():  Check if UPM Heights NOT more than 120% : UPM:Height is 126%, consider redesigning to 120% or less
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_epar_in_keys():  EPAR table present in font? : No
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_font_unencoded_glyphs():  Font does not have unencoded glyphs : There should not be unencoded glyphs
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_font_unencoded_glyphs():  Font does not have unencoded glyphs : There should not be unencoded glyphs
The following table(s) in the font have been ignored by FontForge
  Ignoring 'DSIG' digital signature table
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_fontname_is_equal_to_macstyle():  Check that fontname is equal to macstyle flags : macStyle (b0) supposed style ended with "Regular"
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_glyphname_does_not_contain_disallowed_chars():  GlyphName length < 30 and does contain allowed chars only : Glyph ".null" does not comply conventions. A glyph name may be up to 31 characters in length, must be entirely comprised of characters from the following set: A-Z a-z 0-9 .(period) _(underscore). and must not start with a digit or period. The only exception is the special character ".notdef". "twocents", "a1", and "_" are valid glyph names. "2cents" and ".twocents" are not.
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_metrics_ascents_equal_bbox():  Check that ascents values are same as max glyph point : [CaveatBrush-Regular.ttf] ascents differ to maximum value: 900
note: ERROR: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_name_id_apache_license():  Is there Apache in nameId (13) ?
note: ERROR: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_name_id_apache_license_url():  Is there OFL in nameId (13) ?
note: ERROR: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_name_id_of_license():  Is there OFL in nameId (13) ?
note: ERROR: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_name_id_of_license_url():  Is there OFL in nameId (13) ?
required: ERROR: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_ots():  Is TTF file correctly sanitized for Firefox and Chrome : run() got an unexpected keyword argument 'log'
note: ERROR: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_prep_magic_code():  Font contains in PREP table magic code : 0
info: ERROR: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_source_ttf_font_filename_equals_familystyle():  Source TTF Font filename equals family style : global name 'family_name' is not defined
note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_suggested_subfamily_name():  Family does not contain subfamily in `name` table : u'Caveat Brush' != u'Caveat' - Caveat Brush + Caveat

CaveatBrush-Regular.ttf

NAMEID 1: "Caveat Brush Regular" NAMEID 2: "Regular" NAMEID 4: "Caveat Brush Regular" NAMEID 6: "CaveatBrush-Regular" NAMEID 1: "Caveat Brush Regular" NAMEID 2: "Regular" NAMEID 4: "Caveat Brush Regular" NAMEID 6: "CaveatBrush-Regular" NAMEID 16: "Caveat Brush" NAMEID 17: "Regular" NAMEID 18: "Caveat Brush Regular"

note: FAIL: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_suggested_subfamily_name():  Family does not contain subfamily in `name` table : u'Caveat Brush' != u'Caveat' - Caveat Brush + Caveat
note: ERROR: bakery_lint/fonttests/test_ttf.py: TTFTestCase.test_ttx_family_naming_recommendation(): The font follows the font family naming recommendation.: 'NoneType' object has no attribute 'string'
note: FAIL: bakery_lint/fonttests/test_ttf.py: FontForgeValidateStateTest.test_missing_extrema_in_glyphs():  Glyphs have points at extremas : True is not false
note: FAIL: bakery_lint/fonttests/test_ttf.py: FontForgeValidateStateTest.test_validation_glyph_intersect():  Contours do not intersect : True is not false
required: FAIL: bakery_lint/fonttests/test_ttf.py: CheckFontAgreements.test_latin_file_exists():  GF requires a latin subset, so we check that font file exists : False is not true
required: FAIL: bakery_lint/fonttests/test_ttf.py: CheckFontAgreements.test_menu_file_exists():  GF requires a menu subset, so we check that font file exists : False is not true
ls: /Users/dcrossland/Documents/GOOG/2015-09-09: No such file or directory ls: /Users/dcrossland/Documents/GOOG/2015-09-09: No such file or directory ls: all: No such file or directory ls: all: No such file or directory ls: caveat: No such file or directory ls: caveat: No such file or directory ls: hands: No such file or directory ls: hands: No such file or directory ls: v1.000/caveatbrush/builds/build/CaveatBrush-Regular.ttf: No such file or directory ls: v1.000/caveatbrush/builds/build/CaveatBrush-Regular.ttf.fix: No such file or directory
Usage: ttfautohint [OPTION]... [IN-FILE [OUT-FILE]] Replace hints in TrueType font IN-FILE and write output to OUT-FILE. If OUT-FILE is missing, standard output is used instead; if IN-FILE is missing also, standard input and output are used. The new hints are based on FreeType's auto-hinter. This program is a simple front-end to the `ttfautohint' library. Long options can be given with one or two dashes, and with and without equal sign between option and argument. This means that the following forms are acceptable: `-foo=bar', `--foo=bar', `-foo bar', `--foo bar'. Mandatory arguments to long options are mandatory for short options too. Options:       --debug                print debugging information   -c, --composites           hint glyph composites also   -d, --dehint               remove all hints   -D, --default-script=S     set default OpenType script (default: latn)   -f, --fallback-script=S    set fallback script (default: none)   -F, --family-suffix=S      append suffix to the family name string(s)                              in the `name' table   -G, --hinting-limit=N      switch off hinting above this PPEM value                              (default: 200); value 0 means no limit   -h, --help                 display this help and exit   -H, --fallback-stem-width=N                              set fallback stem width                              (default: 50 font units at 2048 UPEM)   -i, --ignore-restrictions  override font license restrictions   -I, --detailed-info        add detailed ttfautohint info                              to the version string(s) in the `name' table   -l, --hinting-range-min=N  the minimum PPEM value for hint sets                              (default: 8)   -m, --control-file=FILE    get control instructions from FILE   -n, --no-info              don't add ttfautohint info                              to the version string(s) in the `name' table   -p, --adjust-subglyphs     handle subglyph adjustments in exotic fonts   -r, --hinting-range-max=N  the maximum PPEM value for hint sets                              (default: 50)   -s, --symbol               input is symbol font   -t, --ttfa-table           add TTFA information table   -v, --verbose              show progress information   -V, --version              print version information and exit   -w, --strong-stem-width=S  use strong stem width routine for modes S,                              where S is a string of up to three letters                              with possible values `g' for grayscale,                              `G' for GDI ClearType, and `D' for                              DirectWrite ClearType (default: G)   -W, --windows-compatibility                              add blue zones for `usWinAscent' and                              `usWinDescent' to avoid clipping   -x, --increase-x-height=N  increase x height for sizes in the range                              6<=PPEM<=N; value 0 switches off this feature                              (default: 14)   -X, --x-height-snapping-exceptions=STRING                              specify a comma-separated list of                              x-height snapping exceptions, for example                              "-9, 13-17, 19" (default: "") The program accepts both TTF and TTC files as input. Use option -i only if you have a legal permission to modify the font. The used PPEM value for option -p is FUnits per em, normally 2048. With option -s, use default values for standard stem width and height, otherwise they are derived from script-specific characters resembling the shape of character `o'. A hint set contains the optimal hinting for a certain PPEM value; the larger the hint set range (as given by options -l and -r), the more hint sets get computed, usually increasing the output font size. The `gasp' table of the output file always enables grayscale hinting for all sizes (limited by option -G, which is handled in the bytecode). Increasing the value of -G does not increase the output font size. Options -f and -D take a four-letter string that identifies a script. Option -f sets the script used as a fallback for glyphs that have character codes outside of known script ranges.  Option -D sets the default script for handling OpenType features.  Possible values are   cyrl (Cyrillic),   deva (Devanagari),   grek (Greek),   hebr (Hebrew),   latn (Latin),   telu (Telugu),   none (no script). A control instructions file contains entries of the form   [<subfont idx>] <glyph id> l|r <points> [(<left offset>,<right offset>)] or   [<subfont idx>] <glyph id> n <points> or   [<subfont idx>] <glyph id> t|p <points> [x <shift>] [y <shift>] @ <ppems> `l' (`r') creates one-point segments with direction left (right). <left offset> and <right offset> specify offsets (in font units) relative to the corresponding points to give the segments a length. `n' removes points from horizontal segments, making them `weak' points. `t' (`p') applies delta exceptions to the given points before (after) IUP. <glyph id> is a glyph name or index, <shift> is a real number in px, <points> and <ppems> are integer ranges as with option `-X'. `#' starts a line comment, which gets ignored. Empty lines are ignored, too. Key letters `l', `r', `n', `p', `t', `x', and `y' have the verbose aliases `left', `right', `nodir', `point', `touch', `xshift', and `yshift'. A GUI version of this program is called `ttfautohintGUI'. Report bugs to: freetype-devel@nongnu.org ttfautohint home page: <http://www.freetype.org/ttfautohint>
BUILD FAILED
Run with --verbose to get stacktrace info.
vitalyvolkov commented 9 years ago

Please email me with attached source you run for

davelab6 commented 9 years ago

You can recreate this by making a space in the path

davelab6 commented 8 years ago

Font Bakery is no longer a build tool; if you want to access the old versions, install them from pypi with pip; current development is focused on simple imperative 'lint' script in a single file :)