pax_global_header 0000666 0000000 0000000 00000000064 13247374471 0014526 g ustar 00root root 0000000 0000000 52 comment=b47d21f808fbf4784565feccde2213ef2af924b3
Hack-3.003/ 0000775 0000000 0000000 00000000000 13247374471 0012401 5 ustar 00root root 0000000 0000000 Hack-3.003/.gitignore 0000664 0000000 0000000 00000000064 13247374471 0014371 0 ustar 00root root 0000000 0000000 # remove backup FontLab Studio source files
*.vfbak
Hack-3.003/CHANGELOG.md 0000664 0000000 0000000 00000153441 13247374471 0014222 0 ustar 00root root 0000000 0000000 # Version 3.003
- U+005B, increased length of square brackets' horizontal strokes (symmetrically reducing left and right sidebearing), all variants
- U+005D, increased length of square brackets' horizontal strokes (symmetrically reducing left and right sidebearing), all variants
- U+0051, extended length of tail, all variants
- U+051A, extended length of tail, all variants
- U+0061, simplified and improved contours, all variants
- U+0062, simplified and improved contours, all variants
- U+0063, simplified and improved contours, all variants
- U+0064, simplified and improved contours, all variants
- U+0065, simplified and improved contours, all variants
- U+0066, simplified and improved contours, all variants
- U+0067, simplified and improved contours, all variants
- U+0068, simplified and improved contours, all variants
- U+0069, simplified and improved contours, all variants
- U+006A, simplified and improved contours, all variants
- U+006B, simplified and improved contours, all variants
- U+006C, simplified and improved contours, all variants
- U+006D, simplified and improved contours, all variants
- U+006E, simplified and improved contours, all variants
- U+006F, simplified and improved contours, all variants
- U+0070, simplified and improved contours, all variants
- U+0071, simplified and improved contours, all variants
- U+0072, simplified and improved contours, all variants
- U+0073, simplified and improved contours, all variants
- U+0074, simplified and improved contours, all variants
- U+0075, simplified and improved contours, all variants
- U+0076, simplified and improved contours, all variants
- U+0077, simplified and improved contours, all variants
- U+0078, simplified and improved contours, all variants
- U+0079, simplified and improved contours, all variants
- U+007A, simplified and improved contours, all variants
- added config/fontconfig/45-Hack.conf for use on Linux distros to define Hack as a monospaced typeface
- added ttdiff.sh shell script for OpenType table diffs of ttx XML dumps of font binaries
- added checksum.py to scripts directory, supports the generation of SHA1 checksum files of font binaries and ttx dumps of OpenType tables
- ttfautohint-build.sh, fixed backtick and expr syntax shellcheck warnings (SC2003/2006)
- converted to Semaphore CI (from Travis CI) as CI testing service, eliminated .travis.yml settings file
# Version 3.002
- bugfix for https://github.com/source-foundry/Hack/issues/377 (affects Windows users)
- bugfix for https://github.com/source-foundry/Hack/issues/379 (affects Linux users)
- bugfix included removal of blue zone reference font in ttfautohint instruction set processing (-R flag). This led to variable lowercase glyph heights on Linux and Windows platforms
# Version 3.001
- U+017F, added long s glyph to all four variant sets, completes Latin Extended A character sets
- U+2024, added onedotenleader glyph to all four variant sets (general punctuation set)
- U+2025, added twodotenleader glyph to all four variant sets (general punctuation set)
- U+2027, added hyphenationpoint glyph to all four variant sets (general punctuation set)
- U+2032, added minute glyph to all four variant sets (general punctuation set)
- U+2033, added second glyph to all four variant sets (general punctuation set)
- U+2034, modified glyph name to "millisecond" in all four variant sets (general punctuation set)
- U+2012, modified figure dash to width of numeral glyphs in all four variant sets
- U+2013, modified en dash to half width of em in all four variant sets
- U+2014, modified em dash, slight adjustment to height in all four variant sets, horizontal position in italic and bold italic sets
- U+0031, increased angle of top stroke vs. horizontal, all sets (legibility vs. U+006C)
- U+0031, increased length of the top stroke, all sets (legibility vs. U+006C)
- U+0031, decreased width of the top stroke, bold and bold italic sets (legibility vs. U+006C)
- removed name table, ID=5 record ttfautohint metadata (previously included in this version string)
- updated Harbuzz build dependency to v1.7.4
- updated FreeType build dependency to v2.8.1
- removed FreeType build patches in ttfautohint-build.sh script (not necessary after above upgrade)
- modified ttfautohint-build.sh license to MIT License
- added ink CSS file templates for automated git sha1 short code writes for releases
- added new CSS file template build shell script
- added new make target for CSS template file builds (make css)
# Version 3.000
### New license
- Eliminated Hack Open Font License
- Added MIT License for Hack work
- These license changes eliminated the Reserved Font Name "Hack" in the typeface license
- No changes to co-licensure with the Bitstream Vera license from upstream source
### New source and build tooling
- converted to valid UFO v2 source files with cubic curves
- added automated build from scratch approach with make + FLOSS software only for desktop fonts
- added automated build from scratch approach with make + FLOSS software only for web fonts (complete sets and subsets)
- added automated cross platform build dependency installation as a make target
- added ttfautohint build from source scripting support (includes support for builds on OS X platform)
- added automated ttf build autohinting scripting with ttfautohint as part of the make build workflow
- added Font Bakery fstype post-compilation fix
- added Font Bakery DSIG table post-compilation fix
- modified default zopfli iterations to 3 from 15 for woff builds (improved build time vs file size balance)
- created a (workaround) approach to web font subset builds from UFO source files with fontmake
- created new font archive preparation script
- repository path modifications to support above changes
- eliminated old, unnecessary repository scripts
- added fontmake build dependency
- added fontTools build dependency
- added ttfautohint build dependency (includes Harfbuzz and FreeType build dependencies)
- added Font Bakery fstype post-compilation fix dependency (script housed in repo)
- added Font Bakery DSIG table fix dependency (script housed in repo)
- added sfnt2woff-zopfli build dependency
- added woff2 build dependency (uses customized Source Foundry fork that is modified to address build bug on OS X platforms)
- added Source Foundry SRC vendor ID to source files
### Continuous integration testing
- added Travis CI desktop font build testing on Linux and OS X platforms
- added Travis CI web font build testing on Linux and OS X platforms
- added ufolint UFO source file linting to CI testing
- added shellcheck shell script source file linting to CI testing
### Desktop font build changes
- eliminated otf builds
### Web font build changes
- eliminated eot web font builds
- eliminated ttf web font builds
- modified CSS file paths (affects web font CDN URL for all v3.0+ builds)
### Design changes
- added U+0114 and U+0115, all sets
- added U+012C and U+012D, all sets
- added U+014E and U+014F, all sets
- Bold set: reduced dimensions of middle dot glyph (U+00B7)
- improved design of the Powerline glyph set (addresses alignment rendering on Linux and Windows platforms)
- added web font subset character set targets of ASCII, Latin-1, Latin Extended A, General Punctuation, and Currency sets
- ttfautohint updated to v1.6
- added Regular set as blue zone reference font for ttfautohint ttf build autohinting
- defined x height pixel grid rounding up size range as 6ppem - 10ppem for ttfautohint ttf build autohinting
- examined and improved manual hinting adjustments across the entire ASCII glyph set x sizes 8 - 14 ppem
- Regular set: modified manual hints U+0023 @ size 13
- Regular set: modified manual hints U+0025 @ sizes 10, 11, 14
- Regular set: modified manual hints U+002B @ sizes 12, 13
- Regular set: modified manual hints U+0030 @ 8, 12, 13, 14
- Bold set: modified manual hints U+0021 @ size 14
- Bold set: modified manual hints U+0025 @ sizes 10, 11, 14
- Bold set: modified manual hints U+002B @ sizes 10, 11
- Bold set: modified manual hints U+0038 @ sizes 12, 13, 14
- Italic set: modified manual hints U+0025 @ sizes 10, 11, 14
- BoldItalic set: modified manual hints U+002B @ sizes 10, 11
### Documentation changes
- added design guidelines to CONTRIBUTING.md documentation
- added issue reporting guidelines to CONTRIBUTING.md documentation
- added pull request guidelines to CONTRIBUTING.md documentation
- added contributors definition to CONTRIBUTING.md documentation
- added build documentation in docs/BUILD.md
- added Frequently Asked Questions documentation as FAQ.md
### Fixes
- modified openTypeNamePreferredSubfamilyName key definition in fontinfo.plist to support proper naming on Windows platform
- added middle dot glyph (U+00B7) to BoldItalic set
- fixed superscript OpenType features scripts in features.fea x all four variant sets
# Version 2.020
- divided the vertical stroke in the pipe glyph (U+007C), italic and bold italic sets
- modified U+007C hints in TrueType builds at 6, 7, 10, 11, 12, 13, 14 ppem italic set
- modified U+007C hints in TrueType builds at 6, 7, 10, 14 ppem bold italic set
- modified slant angle and stroke length (U+005C), italic and bold italic sets
- centered U+007C and U+005C, all sets
- modified zero (U+0030) oval fill hints in regular set
- added Powerline glyphs to the bold, italic, and bold italic sets
- U+2502 upper terminal to 1950, lower terminal to -530, all sets
- U+2503 upper terminal to 1950, lower terminal to -530, all sets
- U+250C lower terminal to -530, all sets
- U+250D lower terminal to -530, all sets
- U+250E lower terminal to -530, all sets
- U+250F lower terminal to -530, all sets
- U+2510 lower terminal to -530, all sets
- U+2511 lower terminal to -530, all sets
- U+2512 lower terminal to -530, all sets
- U+2513 lower terminal to -530, all sets
- U+2514 upper terminal to 1950, all sets
- U+2515 upper terminal to 1950, all sets
- U+2516 upper terminal to 1950, all sets
- U+2517 upper terminal to 1950, all sets
- U+2518 upper terminal to 1950, all sets
- U+2519 upper terminal to 1950, all sets
- U+251A upper terminal to 1950, all sets
- U+251B upper terminal to 1950, all sets
- U+251C upper terminal to 1950, lower terminal to -530, all sets
- U+251D upper terminal to 1950, lower terminal to -530, all sets
- U+251E upper terminal to 1950, lower terminal to -530, all sets
- U+251F upper terminal to 1950, lower terminal to -530, all sets
- U+2520 upper terminal to 1950, lower terminal to -530, all sets
- U+2521 upper terminal to 1950, lower terminal to -530, all sets
- U+2522 upper terminal to 1950, lower terminal to -530, all sets
- U+2523 upper terminal to 1950, lower terminal to -530, all sets
- U+2524 upper terminal to 1950, lower terminal to -530, all sets
- U+2525 upper terminal to 1950, lower terminal to -530, all sets
- U+2526 upper terminal to 1950, lower terminal to -530, all sets
- U+2527 upper terminal to 1950, lower terminal to -530, all sets
- U+2528 upper terminal to 1950, lower terminal to -530, all sets
- U+2529 upper terminal to 1950, lower terminal to -530, all sets
- U+252A upper terminal to 1950, lower terminal to -530, all sets
- U+252B upper terminal to 1950, lower terminal to -530, all sets
- U+252C lower terminal to -530, all sets
- U+252D lower terminal to -530, all sets
- U+252E lower terminal to -530, all sets
- U+252F lower terminal to -530, all sets
- U+2530 lower terminal to -530, all sets
- U+2531 lower terminal to -530, all sets
- U+2532 lower terminal to -530, all sets
- U+2533 lower terminal to -530, all sets
- U+2534 upper terminal to 1950, all sets
- U+2535 upper terminal to 1950, all sets
- U+2536 upper terminal to 1950, all sets
- U+2537 upper terminal to 1950, all sets
- U+2538 upper terminal to 1950, all sets
- U+2539 upper terminal to 1950, all sets
- U+253A upper terminal to 1950, all sets
- U+253B upper terminal to 1950, all sets
- U+252C upper terminal to 1950, lower terminal to -530, all sets
- U+252D upper terminal to 1950, lower terminal to -530, all sets
- U+253E upper terminal to 1950, lower terminal to -530, all sets
- U+253F upper terminal to 1950, lower terminal to -530, all sets
- U+2540 upper terminal to 1950, lower terminal to -530, all sets
- U+2541 upper terminal to 1950, lower terminal to -530, all sets
- U+2542 upper terminal to 1950, lower terminal to -530, all sets
- U+2543 upper terminal to 1950, lower terminal to -530, all sets
- U+2544 upper terminal to 1950, lower terminal to -530, all sets
- U+2545 upper terminal to 1950, lower terminal to -530, all sets
- U+2546 upper terminal to 1950, lower terminal to -530, all sets
- U+2547 upper terminal to 1950, lower terminal to -530, all sets
- U+2548 upper terminal to 1950, lower terminal to -530, all sets
- U+2549 upper terminal to 1950, lower terminal to -530, all sets
- U+254A upper terminal to 1950, lower terminal to -530, all sets
- U+254B upper terminal to 1950, lower terminal to -530, all sets
- U+2551 upper terminal to 1950, lower terminal to -530, all sets
- U+2552 lower terminal to -530, all sets
- U+2553 lower terminals to -530, all sets
- U+2554 lower terminals to -530, all sets
- U+2555 lower terminal to -530, all sets
- U+2556 lower terminals to -530, all sets
- U+2557 lower terminals to -530, all sets
- U+2558 upper terminal to 1950, all sets
- U+2558 upper terminals to 1950, all sets
- U+2559 upper terminals to 1950, all sets
- U+255A upper terminals to 1950, all sets
- U+255B upper terminal to 1950, all sets
- U+255C upper terminals to 1950, all sets
- U+255D upper terminals to 1950, all sets
- U+255E upper terminal to 1950, lower terminal to -530, all sets
- U+255F upper terminals to 1950, lower terminals to -530, all sets
- U+2560 upper terminals to 1950, lower terminals to -530, all sets
- U+2561 upper terminal to 1950, lower terminal to -530, all sets
- U+2562 upper terminals to 1950, lower terminals to -530, all sets
- U+2563 upper terminals to 1950, lower terminals to -530, all sets
- U+2564 lower terminal to -530, all sets
- U+2565 lower terminals to -530, all sets
- U+2566 lower terminals to -530, all sets
- U+2567 upper terminal to 1950, all sets
- U+2568 upper terminals to 1950, all sets
- U+2569 upper terminals to 1950, all sets
- U+256A upper terminal to 1950, lower terminal to -530, all sets
- U+256B upper terminals to 1950, lower terminals to -530, all sets
- U+256C upper terminals to 1950, lower terminals to -530, all sets
- U+256D lower terminal to -530, all sets
- U+256E lower terminal to -530, all sets
- U+256F upper terminal to 1950, all sets
- U+2570 upper terminal to 1950, all sets
- U+2571 adjusted horizontal position and length of strokes
- U+2572 adjusted horizontal position and length of strokes
- U+2573 adjusted horizontal position and length of strokes
- U+2575 upper terminal to 1950, all sets
- U+2577 lower terminal to -530, all sets
- U+2578 horizontal alignment of superior margin of the stroke (1 unit adjustment)
- U+2579 upper terminal to 1950, all sets
- U+257B lower terminal to -530, all sets
- U+257D upper terminal to 1950, lower terminal to -530, all sets
- U+257F upper terminal to 1950, lower terminal to -530, all sets
- updated OpenType name table field 1 0 0
- updated OpenType name table field 3 1 1033
- new [Windows installer](https://github.com/source-foundry/Hack-windows-installer)
- added line spacing adjustment shell scripts
- added font-tables.py OpenType table reporting script
- updated dev-versioner.py OpenType table versioning script to support UTF16 big endian encoding of nameID=5, platformID=3 name table
# Version 2.019 (release build)
ttf, otf, webfont builds
- removed SVG from webfont releases
- Corrected U+2588 glyph shape in regular set (had inappropriately small width and height)
- decreased width U+2580 all sets
- decreased width U+2581 all sets
- decreased width U+2582 all sets
- decreased width U+2583 all sets
- decreased width U+2584 all sets
- decreased width U+2585 all sets
- decreased width U+2586 all sets
- decreased width U+2857 all sets
- adjusted left sidebearing U+2589 all sets
- adjusted left sidebearing U+258A all sets
- adjusted left sidebearing U+258B all sets
- adjusted left sidebearing U+258C all sets
- adjusted left sidebearing U+258D all sets
- adjusted left sidebearing U+258E all sets
- adjusted left sidebearing U+258F all sets
- adjusted right sidebearing U+2590 all sets
- decreased width of U+2594 all sets
- adjusted right sidebearing U+2595 all sets
- adjusted left sidebearing U+2596 all sets
- adjusted right sidebearing U+2597 all sets
- adjusted left sidebearing U+2598 all sets
- decreased width of U+2599 all sets
- decreased width of U+259A all sets
- decreased width of U+259B all sets
- decreased width of U+259C all sets
- adjusted right sidebearing U+259D all sets
- decreased width of U+259E all sets
- decreased width of U+259F all sets
- increased upper terminal position to 1950 units U+2580 all sets
- increased upper terminal position to 1950 units U+2588 all sets
- increased upper terminal position to 1950 units U+2589 all sets
- increased upper terminal position to 1950 units U+258A all sets
- increased upper terminal position to 1950 units U+258B all sets
- increased upper terminal position to 1950 units U+258C all sets
- increased upper terminal position to 1950 units U+258D all sets
- increased upper terminal position to 1950 units U+258E all sets
- increased upper terminal position to 1950 units U+258F all sets
- increased upper terminal position to 1950 units U+2590 all sets
- increased upper terminal position to 1950 units U+2594 all sets
- increased upper terminal position to 1950 units U+2595 all sets
- increased upper terminal position to 1950 units U+2598 all sets
- increased upper terminal position to 1950 units U+2599 all sets
- increased upper terminal position to 1950 units U+259A all sets
- increased upper terminal position to 1950 units U+259B all sets
- increased upper terminal position to 1950 units U+259C all sets
- increased upper terminal position to 1950 units U+259D all sets
- increased upper terminal position to 1950 units U+259E all sets
- increased upper terminal position to 1950 units U+259F all sets
- reverted Cyrillic lower case es glyph (U+0441) to Latin lower case c shape
- reverted Cyrillic upper case es glyph (U+0421) to Latin upper case C shape
# Version 2.018 (release build)
ttf, otf, webfont builds
Patch for missing glyphs in regular set:
- added U+016C (upper case U breve), regular set - Issue #21
- added U+016D (lower case u breve), regular set - Issue #21
# Version 2.017 (release build)
ttf, otf, webfont builds
Changes vs. release v2.015:
- increased vertical position of the tilde (U+007E) to improve alignment with other glyphs - Issue #23
- increased width of the vertical stroke on the dollar symbol (U+0024) - Issue #92
- modified Cyrillic upper case C (U+0421) to differentiate from Latin C - Issues #22 & #29
- modified Cyrillic lower case c (U+0441) to differentiate from Latin c - Issues #22 & #29
- modified upper case theta (U+0398) to differentiate from lower case theta - Issue #36
- added U+0132 (IJ) glyph - Issue #52
- added U+0133 (ij) glyph - Issue #52
- added U+013F (upper case L dot) glyph - Issue #52
- added U+0140 (lower case l dot) glyph - Issue #52
- added U+0162 (upper case T cedilla) glyph - Issue #52
- added U+0163 (lower case t cedilla) glyph - Issue #52
- added U+0138 (kgreenlandic) glyph - Issue #52
- added U+266A (musical note) glyph - Issue #52
- added U+0149 (lower case n apostrophe) - Issue #52
- added U+1EF9 (lower case y tilde) glyph - Issue #102
- added U+1EF8 (upper case Y tilde) glyph - Issue #102
- added U+1EBD (lower case e tilde) glyph - Issue #102
- added U+1EBC (upper case E tilde) glyph - Issue #102
- added U+2116 (numero) glyph - Issues #22 & #114
- added U+01A4 (p hook) glyph - Issue #105
- added U+0108 (upper case C circumflex) - Issue #21
- added U+0109 (lower case c circumflex) - Issue #21
- added U+011C (upper case G circumflex) - Issue #21
- added U+011D (lower case g circumflex) - Issue #21
- added U+0124 (upper case H circumflex) - Issue #21
- added U+0125 (lower case h circumflex) - Issue #21
- added U+0134 (upper case J circumflex) - Issue #21
- added U+0135 (lower case j circumflex) - Issue #21
- added U+015C (upper case S circumflex) - Issue #21
- added U+015D (lower case s circumflex) - Issue #21
- added U+016C (upper case U breve) - Issue #21
- added U+016D (lower case u breve) - Issue #21
- added U+20B7 (spesmilo) - Issue #21
- fixed missing null glyph (U+0000) in regular, italic, bolditalic sets
- removed duplicate CR glyph (U+000D) in all sets - Issue #149
- updated ttfautohint to version 1.4.1 for TrueType (.ttf) build instruction sets
# Version 2.016 (testing build)
- increased vertical position of the tilde (U+007E) to improve alignment with other glyphs - Issue #23
- increased width of the vertical stroke on the dollar symbol (U+0024) - Issue #92
- modified Cyrillic upper case C (U+0421) to differentiate from Latin C - Issues #22 & #29
- modified Cyrillic lower case c (U+0441) to differentiate from Latin c - Issues #22 & #29
- modified upper case theta (U+0398) to differentiate from lower case theta - Issue #36
- added U+1EF9 (lower case y tilde) glyph - Issue #102
- added U+1EF8 (upper case Y tilde) glyph - Issue #102
- added U+1EBD (lower case e tilde) glyph - Issue #102
- added U+1EBC (upper case E tilde) glyph - Issue #102
- added U+2116 (numero) glyph - Issues #22 & #114
- added U+01A4 (p hook) glyph - Issue #105
- added U+0108 (upper case C circumflex) - Issue #21
- added U+0109 (lower case c circumflex) - Issue #21
- added U+011C (upper case G circumflex) - Issue #21
- added U+011D (lower case g circumflex) - Issue #21
- added U+0124 (upper case H circumflex) - Issue #21
- added U+0125 (lower case h circumflex) - Issue #21
- added U+0134 (upper case J circumflex) - Issue #21
- added U+0135 (lower case j circumflex) - Issue #21
- added U+015C (upper case S circumflex) - Issue #21
- added U+015D (lower case s circumflex) - Issue #21
- added U+016C (upper case U breve) - Issue #21
- added U+016D (lower case u breve) - Issue #21
- added U+20B7 (spesmilo) - Issue #21
- updated ttfautohint to version 1.4 for TrueType (.ttf) build instruction sets
# Version 2.015 (release build)
ttf, otf, webfont builds
Changes vs. release v2.013:
- new vertical metrics = decreased line spacing height - Issues #28, #32, #39, #41, #95, #103
- adjusted vertical position of the colon to a higher position, improves alignment with other punctuation glyphs (U+003A) - Issue #66
- changed vertical position of the dash (U+002D) so that regular and oblique, bold and bold oblique are properly aligned - Issue #107
- updated hinting algorithm for bold set (improved point position over stem of lowercase j/i for some text sizes) - Issue #84
- underscore (U+005F) centered, increased width, increased height & aligned vertical position closer to baseline - Issues #97, #98, #100, 103,
- increased vertical position of dieresis mark on lowercase u dieresis (U+00FC) - Issue #61
- increased vertical position of dieresis mark on lowercase i dieresis (U+00EF)
- increased vertical position of dieresis mark on lowercase e dieresis (U+00EB)
- decreased vertical position of the asterisk (U+002A) - Issue #34
- new design for ascii tilde - broader curves, taller glyph with goal to improve appearance at small text sizes where it tended to render like a dash (U+007E) - Issue #37
- new ttf build autohinting script (./postbuild_processing/tt-hinting/autohint.sh)
- new ttf build autohinting Control Instructions File - bold set (./postbuild_processing/tt-hinting/Hack-Bold-TA.txt)
- new ttf build release script (./postbuild_processing/tt-hinting/release.sh)
- new web font release script (./postbuild_processing/webfonts/releasewebfonts.sh)
- new vfb to UFO source file conversion script (./tools/makeufo.sh)
- new UFO source file types - includes separate source files for TrueType (`*-TT.ufo`) and PostScript (`*-PS.ufo`) releases
- source file path changes: now includes separate `ufo` and `vfb` directories under the `./source` repository directory
- Hack Open Font license updated to version 2.0. The license changes better define the Hack project as a derivative project of the Bitstream Vera Sans Mono typeface project and are intended to make the license more consistent with the Bitstream Vera libre, open source license under which Hack is co-licensed. There are no new restrictions on use of the fonts with these license changes. Embedding permissions are made explicit in this version of the Hack Open Font license.
# Version 2.014 (testing build)
- ttf only build for testing
- updated hinting algorithm for bold set (corrected incorrect point position of lowercase j/i at some sizes) - Issue #84
- adjusted vertical metrics - Issues #28, #32, #39, #41, #95, #103
- centered, increased width, & adjusted vertical position of underscore - Issues #97, #98, #100, 103,
- increased vertical position of dieresis mark on lowercase u dieresis (U+00FC) - Issue #61
- increased vertical position of dieresis mark on lowercase i dieresis (U+00EF)
- increased vertical position of dieresis mark on lowercase e dieresis (U+00EB)
- decreased vertical position of the asterisk (U+002A) - Issue #34
- new design for ascii tilde (U+007E) - Issue #37
# Version 2.013 (release build)
ttf, otf, webfont builds
Changes vs. release v2.010
- Fixed missing middle dot glyph (U+00B7), adjusted width of U+00B7 em box to address spacing issues in editors that highlight empty spaces (Issues #27 & 46)
- Powerline glyph alignment and size adjustments (Issue #33)
- Fixed name tables to address:
- incorrect oblique rendering with Java type renderers on OS X (Issue #26)
- incorrect italic + bold + bold oblique rendering in some syntax highlighters (Issues #42, #50, #60)
- backslash character took inappropriate vertical alignment because of incorrect slant angle in some editors (Issue #67)
- Changed oblique and bold oblique font names to "Hack Italic" and "Hack Bold Italic" to address Windows listings
- Changed oblique and bold oblique webfont names to "hack-italic-webfont.[xxx]" and "hack-bolditalic-webfont.[xxx]"
- Changed oblique and bold oblique basic Latin + Latin-1 webfont subsets to the names "hack-italic-latin-webfont.[xxx]" and "hack-bolditalic-latin-webfont.[xxx]"
- Changed license name from "Modified SIL Open Font License" to "Hack Open Font License" to comply with SIL regulations for SIL Open Font License modifications
- Removed all license references to SIL to comply with SIL regulations for modifications of the SIL Open Font License
- Removed SIL Open Font License preamble from the Hack Open Font License to comply with SIL regulations for modifications of the SIL Open Font License
- Removed the following statement from Hack Open Font License condition #3: "This restriction only applies to the primary font name as presented to the users." to address a reserved font name conflict with the Bitstream Vera license
- Modified the build directory structure for the Hack web fonts
- Added Hack webfont CSS files to the build directory
# Version 2.012 (testing build)
- ttf only build for testing
- Powerline glyph alignment and size adjustments (Issue #33)
- Fixed name tables to address:
- incorrect oblique rendering with Java type renderers on OS X (Issue #26)
- incorrect italic + bold + bold oblique rendering in some syntax highlighters (Issues #42, #50, #60)
- backslash character took inappropriate vertical alignment because of incorrect slant angle in some editors (Issue #67)
# Version 2.011 (testing build)
- ttf only build for testing
- fixed missing middle dot glyph (U+00B7), adjusted width of U+00B7 em box to address spacing issues in editors that highlight empty spaces (Issues 27 & 46)
# Version 2.010
### New Glyphs
- New glyphs for Revised Western European (ISO-8859-15, Latin-9) character set (shapes from DejaVu Sans Mono typeface)
- New glyphs for Central European (ISO-8859-2, Latin-2) character set (shapes from DejaVu Sans Mono typeface)
- New glyphs for South European (ISO-8859-3, Latin-3) character set (shapes from DejaVu Sans Mono typeface)
- New glyphs for Vietnamese character set (shapes from DejaVu Sans Mono typeface)
- New glyphs for Pan African Latin character set (shapes from DejaVu Sans Mono typeface)
- New glyphs for Cyrillic (ISO-8859-5) character set (shapes from DejaVu Sans Mono typeface)
- New glyphs for Greek (ISO-8859-7) character set (shapes from DejaVu Sans Mono typeface)
- New glyphs for Armenian character set (shapes from DejaVu Sans Mono typeface)
- New glyphs for Georgian character set (shapes from DejaVu Sans Mono typeface)
- New punctuation glyphs
- New Powerline glyphs
- New number glyphs
- New scientific inferior numerals
- New superscript numerals
- New subscript numerals
- New symbol glyphs
- New **dotlessi**
- New **iacute**
- New **icircumflex**
- New **idieresis**
- New **igrave**
- New **imacron**
- New **iogonek**
- New **itilde**
- New **uppercase upsilon**
- New **uppercase upsilon tonos**
- New uni0069
- New uni0457
- New uni0458
### Modified Glyphs
##### Latin Character Set
- Modified **uppercase Q** - added flared tail and modified tail angle
- Modified **uppercase F** - central arm lowered to fill open gap at the base
- Modified **lowercase a** - added curved tail/spur
- Modified **lowercase b** - decreased width of terminal, opened angle
- Modified **lowercase d** - decreased width of terminal, opened angle
- Modified **lowercase g** - decreased width of terminal, opened angle
- Modified **lowercase i** - rounded corners of the dot, oriented dot position left of center relative to vertical stem, adjusted vertical position of the horizontal stem to x-height, lengthened the vertical stem to slightly overshoot baseline with the curved tail, decreased width of horizontal stem
- Modified **lowercase j** - rounded corners of the dot, oriented dot position left of center relative to vertical stem
- Modified **lowercase l** - lengthened the vertical stem to overshoot the baseline with the curved tail
- Modified **lowercase m** - decreased width of terminal, opened angle
- Modified **lowercase n** - decreased width of terminal, opened angle
- Modified **lowercase p** - decreased width of terminal, opened angle
- Modified **lowercase q** - decreased width of terminal, opened angle
- Modified **lowercase r** - decreased width of terminal, opened angle
- Modified **lowercase t** - added angle to the upper terminal, increased length of the vertical stem to allow the curved tail to slightly overshoot the baseline
- Modified **lowercase y** - modified curves
- Modified **0** - modified width and length of central oval fill, improved symmetry of the oval fill in all sets
- Modified **2** - rounded the upper left corner of the base, decreased width of the spine of the hook
- Modified **Abreve** - modified curves
- Modified **Aogonek** - modified curve, decreased the width of the tail to meet typeface metrics
- Modified **Eogonek** - modified tail curve
- Modified **Iogonek** - modified tail curve
- Modified **Itilde** - modified tilde curve
- Modified **Ohorn** - modified horn curve
- Modified **Oslash** - modified curves
- Modified **Oslashacute** - modified curves
- Modified **Otilde** - modified tilde curve
- Modified **Racute** - modified bowl and leg curves
- Modified **Rcaron** - modiifed bowl and leg curves
- Modified **Rcommaaccent** - modified bowl and leg curves
- Modified **Scommaaccent** - modified curves
- Modified **Tcommaaccent** - modified comma accent curves
- Modified **Ucircumflex** - modified curves
- Modified **Udieresis** - modified curves
- Modified **Ugrave** - modified curves
- Modified **Uhorn** - modified curves
- Modified **Uhungarumlaut** - modified curves
- Modified **Umacron** - modified curves
- Modified **Uogonek** - modified curves
- Modified **Uring** - modified curves
- Modified **Utilde** - modified curves
- Modified **agrave** - decreased width of terminal, opened angle in regular and bold sets
- Modified **aacute** - decreased width of terminal, opened angle in regular and bold sets
- Modified **abreve** - decreased width of upper terminal to create an angled stem
- Modified **acircumflex** - decreased width of terminal, opened angle
- Modified **atilde** - decreased width of terminal, opened angle
- Modified **adieresis** - decreased width of terminal, opened angle
- Modified **amacron** - decreased width of upper terminal to create an angled stem
- Modified **aring** - decreased width of terminal, opened angle
- Modified **dcroat** - decreased width of terminal, opened angle
- Modified **dcaron** - decreased width of lower terminal to create angled stem
- Modified **ecaron** - modified curves
- Modified **ecircumflex** - modified curves
- Modified **edieresis** - modified curves
- Modified **egrave** - modified curves
- Modified **emacron** - modified curves
- Modified **eogonek** - modified curves
- Modified **gbreve** - modified curves of bowl and tail
- Modified **gcaron** - modified curves of bowl and tail, decreased width of upper terminal to create angled stem
- Modified **gcommaaccent** - modified curves of bowl and tail, decreased width of upper terminal to create angled stem
- Modified **gdotaccent** - modified curves of bowl and tail, decreased width of upper terminal to create angled stem
- Modified **hbar** - adjusted curves
- Modified **dotlessi** - decreased width of horizontal stem
- Modified **iacute** - decreased width of horizontal stem
- Modified **icircumflex** - decreased width of horizontal stem
- Modified **idieresis** - decreased width of horizontal stem
- Modified **igrave** - decreased width of horizontal stem
- Modified **imacron** - decreased width of horizontal stem
- Modified **iogonek** - decreased width of horizontal stem
- Modified **itilde** -decreased width of horizontal stem
- Modified **nacute** - adjusted curves
- Modified **ncaron** - adjusted curves
- Modified **ncommaaccent** - adjusted curves
- Modified **eng** - adjusted curves, decreased the upper terminal width to create an angled stem
- Modified **nacute** - decreased width of upper terminal to create angled stem
- Modified **ncaron** - decreased width of upper terminal to create angled stem
- Modified **ncommaaccent** - decreased width of upper terminal to create angled stem
- Modified **ntilde** - adjusted curves
- Modified **ohorn** - adjusted curves
- Modified **ohungarumlaut** - adjusted curves
- Modified **omacron** - adjusted curves
- Modified **oslash** - adjusted curves
- Modified **oslashacute** - adjusted curves
- Modified **otilde** - adjusted curves
- Modified **racute** - adjusted curves, decreased width of upper terminal to create angled stem
- Modified **rcaron** - adjusted curves, decreased width of upper terminal to create angled stem
- Modified **rcommaaccent** - adjusted curves, decreased width of upper terminal to create angled stem
- Modified **sacute** - adjusted curves
- Modified **scedila** - adjusted curves
- Modified **scommaaccent** - adjusted curves
- Modified **lowercase t** - decreased length of the left terminal to angle the horizontal stem
- Modified **tbar** - decreased length of the left terminal to angle the horizontal stem
- Modified **tcaron** - decreased length of the left terminal to angle the horizontal stem
- Modified **tcommaaccent** - adjusted curves, decreased length of the left terminal to angle the horizontal stem
- Modified **uhorn** - adjusted curves, decreased width of lower terminal to create angled stem
- Modified **uhungarumlaut** - adjusted curves, decreased width of lower terminal to create angled stem
- Modified **umacron** - adjusted curves, decreased width of lower terminal to create angled stem
- Modified **uogonek** - adjusted curves, decreased width of lower terminal to create angled stem
- Modified **uring** - adjusted curves, decreased width of lower terminal to create angled stem
- Modified **utilde** - adjusted curves, decreased width of lower terminal to create angled stem
- Modified **yacute** - adjusted curves
- Modified **ycircumflex** - adjusted curves
- Modified **ydieresis** - adjusted curves
- Modified **ygrave** - adjusted curves
- Modified **zdotaccent** - rounded corners of dot
- Modified **gbreve** - decreased width of terminal, opened angle in regular and bold sets
- Modified **ntilde** - decreased width of terminal, opened angle in regular and bold sets
- Modified **ugrave** - decreased width of terminal, opened angle in regular and bold sets
- Modified **uacute** - decreased width of terminal, opened angle in regular and bold sets
- Modified **ucircumflex** - decreased width of terminal, opened angle in regular and bold sets
- Modified **udieresis** - decreased width of terminal, opened angle in regular and bold sets
- Modified **exclamdown** - rounded corners of the dot
- Modified **dieresis** - rounded corners
- Modified **questionmarkdown** - rounded corners of the dot
- Modified **ordfeminine** - decreased width of lower terminal on the a character to create angled stem
- Modified **Adieresis** - rounded corners of dieresis component of glyph
- Modified **Edieresis** - rounded corners of dieresis component of glyph
- Modified **Idieresis** - rounded corners of dieresis component of glyph
- Modified **Odieresis** - rounded corners of dieresis component of glyph
- Modified **Udieresis** - rounded corners of dieresis component of glyph
- Modified **Ydieresis** - rounded corners of dieresis component of glyph
- Modified **adieresis** - rounded corners of dieresis component of glyph
- Modified **edieresis** - rounded corners of dieresis component of glyph
- Modified **idieresis** - rounded corners of dieresis component of glyph
- Modified **odieresis** - rounded corners of dieresis component of glyph
- Modified **udieresis** - rounded corners of dieresis component of glyph
- Modified **ydieresis** - rounded corners of dieresis component of glyph
- Modified **Idotaccent** - rounded corners of the dot
- Modified **dotaccent** - rounded corners of the dot
- Modified **ellipsis** - rounded corners of the dots
- Modified **periodcentered** - rounded corners of the dot
##### Greek Character Set
- Modified **upsilondieresistonos** - adjusted vertical position to properly position on the baseline
- Modified **iotadieresistonos** - adjusted vertical position to properly position on the baseline
- Modified **eth** - altered curve of the neck
- Modified **uppercase eta** - modified the curves
- Modified **uppercase theta** - modified the curves
- Modified **uppercase omicron** - modified the curves
- Modified **uppercase rho** - modified the curves
- Modified **uppercase psi** - modified the curves
- Modified **uppercase upsilon** - new glyph style (change from Latin Y shape)
- Modified **uppercase omega** - modified the curves
- Modified **uppercase alphatonos** - adjusted right and left sidebearings, corrected position of the tonos symbol
- Modified **uppercase epsilontonos** - adjusted right and left sidebearings, corrected position of the tonos symbol
- Modified **uppercase etatonos** - adjusted right and left sidebearings, corrected position of the tonos symbol
- Modified **uppercase iotatonos** - adjusted right and left sidebearings, corrected position of the tonos symbol
- Modified **uppercase omicrontonos** - adjusted right and left sidebearings, corrected position of the tonos symbol
- Modified **uppercase upsilontonos** - adjusted right and left sidebearings, corrected position of the tonos symbol
- Modified **uppercase omegatonos** - adjusted right and left sidebearings, corrected position of the tonos symbol
- Modified **uppercase iotadieresis** - rounded the dieresis points
- Modified **uppercase upsilondieresis** - new upsilon shape, rounded the dieresis points
- Modified **lowercase alpha** - adjusted curves
- Modified **lowercase beta** - adjusted curves
- Modified **lowercase gamma** - adjusted curves
- Modified **lowercase delta** - adjusted curves
- Modified **lowercase epsilon** - adjusted curves
- Modified **lowercase zeta** - adjusted curves
- Modified **lowercase eta** - decreased width of the top terminal to create angled stem, adjusted curves
- Modified **lowercase theta** - adjusted curves
- Modified **lowercase iota** - adjusted curves
- Modified **lowercase lambda** - adjusted curves
- Modified **lowercase mu** - adjusted curves
- Modified **lowercase nu** - adjusted curves
- Modified **lowercase xi** - adjusted curves
- Modified **lowercase omicron** - adjusted curves
- Modified **lowercase pi** - adjusted curves
- Modified **lowercase rho** - adjusted curves
- Modified **lowercase sigmafinal** - adjusted curves
- Modified **lowercase sigma** - adjusted curves
- Modified **lowercase tau** - adjusted curves
- Modified **lowercase upsilon** - adjusted curves
- Modified **lowercase phi** - adjusted curves
- Modified **lowercase chi** - adjusted curves
- Modified **lowercase psi** - adjusted curves
- Modified **lowercase omega** - adjusted curves
- Modified **lowercase iotatonos** - adjusted curves
- Modified **lowercase iotadieresis** - rounded points of the dieresis, adjusted curves
- Modified **iotadieresistonos** - rounded corners of points of dieresis mark, appropriately positioned tonos mark, adjusted curves
- Modified **lowercase upsilontonos** - adjusted curves
- Modified **lowercase upsilondieresis** - rounded points of dieresis mark, adjusted curves
- Modified **upsilondieresistonos** - rounded corners of points of dieresis mark, appropriately positioned tonos mark, adjusted curves
- Modified **lowercase omicrontonos** - adjusted curves
- Modified **lowercase omegatonos** - adjusted curves
- Modified **lowercase alphatonos** - adjusted curves
- Modified **lowercase epsilontonos** - adjusted curves
- Modified **lowercase etatonos** - decreased width of top terminal to create angled stem, adjusted curves
##### Cyrillic Character Set
- Modified curves in uni0411, uni0412, uni0401, uni0417, uni041B, uni041E, uni0420, uni0421, uni0423, uni040E, uni0424, uni0427, uni042F, uni042C, uni042A, uni042B, uni0409, uni040A, uni0405, uni0404, uni042D, uni0408, uni040B, uni042E, uni0402, uni0462, uni0472, uni0494, uni0498, uni04AA, uni04BA, uni04CB, uni04D0, uni04D2, uni04D6, uni04D8, uni04DA, uni04DC, uni04DE, uni04E0, uni04E4, uni04E6, uni04E8, uni04EA, uni04EC, uni04EE, uni04F0, uni04F2, uni04F4, uni04F8, uni0510, uni051A, uni0430, uni0431, uni0432, uni0434, uni0435, uni0450, uni0451, uni0437, uni0439, uni043B, uni043E, uni0440, uni0441, uni0443, uni045E, uni0444, uni0447, uni044F, uni044C, uni044A, uni044B, uni0459, uni045A, uni0455, uni0454, uni044D, uni0456, uni0457, uni0458, uni045B, uni044E, uni0452, uni0463, uni0473, uni0499, uni04AB, uni04BB, uni04CC, uni04D1, uni04D3, uni04D7, uni04D9, uni04DB, uni04DD, uni04DF, uni04E1, uni04E5, uni04E7, uni04E9, uni04EB, uni04ED, uni04EF, uni04F1, uni04F3, uni04F5, uni04F9, uni0511, uni051B, uni04D5
- Rounded corners of points of dieresis marks in uni0401, uni0407, uni04D2, uni04DA, uni04DC, uni04DE, uni04E4, uni04E6, uni04EA, uni04EC, uni04F0, uni04F4, uni04F8, uni0451, uni0457, uni04D3, uni04DB, uni04DD, uni04DF, uni04E5, uni04E7, uni04EB, uni04ED, uni04F1, uni04F5, uni04F9
- Rounded corners of dots in uni0456, uni0458
- Modified **lowercase i** glyphs (uni0456, uni0457) so that they are consistent with the shape of the Hack Latin lowercase i
- Modified **uni0430** - decreased width of lower terminal to create angle
- Modified **uni0440** - decreased width of upper terminal to create angle
- Modified **uni04D1** - decreased width of lower terminal to create angle
- Modified **uni04D3** - decreased width of lower terminal to create angle
- Modified **uni051B** - decreased width of upper terminal to create angle
- Numerous metrics changes to better align the Cyrillic glyphs in a fixed width format
##### Armenian Character Set
- Modified curves in uni0531, uni0532, uni0533, uni0534, uni0535, uni0536, uni0538, uni0539, uni053A, uni053B, uni053D, uni053E, uni053F, uni0540, uni0541, uni0542, uni0543, uni0544, uni0545, uni0546, uni0547, uni0548, uni0549, uni054A, uni054B, uni054C, uni054D, uni054E, uni054F, uni0550, uni0551, uni0553, uni0554, uni0555, uni0556, uni0561, uni0562, uni0563, uni0564, uni0565, uni0566, uni0568, uni0569, uni056A, uni056B, uni056D, uni056E, uni056F, uni0570, uni0571, uni0572, uni0573, uni0574, uni0575, uni0576, uni0577, uni0578, uni0579, uni057A, uni057B, uni057C, uni057D, uni057E, uni057F, uni0580, uni0581, uni0583, uni0584, uni0585, uni0586, uni0587
- Modified **uni0563** - decreased width of the upper terminal to create angle
- Modified **uni0564** - decreased width of the upper terminal to create angle
- Modified **uni0566** - decreased width of the upper terminal to create angle
- Modified **uni0568** - decreased width of the upper terminal to create angle
- Modified **uni0569** - decreased width of the upper terminal to create angle
- Modified **uni0572** - decreased width of the upper terminal to create angle
- Modified **uni0573** - decreased width of the upper terminal to create angle
- Modified **uni0574** - decreased width of the upper terminal to create angle
- Modified **uni0576** - decreased width of the upper terminal to create angle
- Modified **uni0578** - decreased width of the upper terminal to create angle
- Modified **uni057C** - decreased width of the upper terminal to create angle
- Modified **uni057D** - decreased width of the upper terminal to create angle
- Modified **uni0580** - decreased width of the upper terminal to create angle
- Modified **uni0581** - decreased width of the upper terminal to create angle
- Modified **uni0584** - decreased width of the upper terminal to create angle
##### Georgian Character Set
- Modified curves in uni10D0, uni10D1, uni10D2, uni10D3, uni10D4, uni10D5, uni10D6, uni10D7, uni10D8, uni10D9, uni10DA, uni10DB, uni10DC, uni10DD, uni10DE, uni10DF, uni10E0, uni10E1, uni10E2, uni10E3, uni10E4, uni10E5, uni10E6, uni10E7, uni10E8, uni10E9, uni10EA, uni10EB, uni10EC, uni10ED, uni10EE, uni10EF, uni10F0, uni10F1, uni10F2, uni10F3, uni10F4, uni10F5, uni10F6, uni10F7, uni10F8, uni10F9, uni10FA, uni10FC, uni055C, uni055E
- Rounded corners of points in uni10FB, uni0589
##### Punctuation Character Set
- Modified curves in uni2047, questiondown, uni203D, uni203F, uni2048, uni2049, uni204B, uni2E18, uni2E1F, uni2E2E, uni2E18.case, questiondown.case, uni208E, uni207E, uni2768, uni2769, uni276B, uni27C5, uni27C6, uni2987, uni2988, uni055C, uni055E, uni061F, H18533, circle, uni25EF, uni25D0, uni25D1, uni25D2, uni25D3, uni25D6, uni25D7, uni25D4, uni25D5, uni25F4, uni25F5, uni25F6, uni25F7, uni25CD, uni25C9, uni25CE, openbullet, invbullet, invcircle, uni25DA, uni25DB, uni25E0, uni25E1, uni25DC, uni25DD, uni25DE, uni25DF, ampersand, copyright, registered, section, degree
- Modified **dong** - decreased width of the lower terminal to create an angled stem
- Modified **uni20A5** - decreased width of the upper terminal to create an angled stem
- Modified **uni225D** - decreased width of the lower terminal on the d character to create an angled stem
- Modified **uni225E** - decreased width of the upper terminal to create an angled stem
##### Symbol Character Set
- Modified curves in cent, colonmonetary, dong, euro, florin, lira, peseta, sterling, uni0E3F, uni20A0, uni20A2, uni20A5, uni20A8, uni20AA, uni20AF, uni20B0, uni20B1, uni20B2, uni20B4, uni20B5, uni20B9, approxequal, asciitilde, circlemultiply, circleplus, congruent, element, emptyset, infinity, integral, integralbt, integraltp, intersection, notelement, notsubset, partialdiff, percent, perthousand, propersubset, propersuperset, proportional, reflexsubset, reflexsuperset, similar, suchthat, therefore, uni2031, uni2126, uni2201, uni220A, uni220C, uni220D, uni2218, uni221B, uni222C, uni222D, uni2235, uni2236, uni2237, uni2238, uni2239, uni223A, uni223B, uni223D, uni2241, uni2242, uni2243, uni2244, uni2246, uni2247, uni2249, uni224A, uni224B, uni224C, uni224E, uni224F, uni2250, uni2251, uni2252, uni2253, uni2254, uni2255, uni2256, uni2257, uni2258, uni225D, uni225E, uni225F, uni2272, uni2273, uni2274, uni2275, uni227C, uni227D, uni227E, uni227F, uni2285, uni2288, uni2289, uni228B, uni228D, uni2296, uni2298, uni2299, uni229A, uni229B, uni229C, uni229D, uni22B8, uni22CD, uni22D0, uni22D1, uni22DE, uni22DF, uni22E0, uni22E1, uni22E6, uni22E7, uni22E8, uni22E9, uni22EF, uni23A8, uni23AC, uni27DC, uni2A00, uni2A6A, uni2A6B, union, uni219C, uni219D, uni21AD, uni21A9, uni21AA, uni21AB, uni21AC, uni21B6, uni21B7, uni21BA, uni21BB, uni21F4, H18533, circle, uni25EF, uni25D0, uni25D1, uni25D2, uni25D3, uni25D6, uni25D7, uni25D4, uni25D5, uni25F4, uni25F5, uni25F6, uni25F7, uni25CD, uni25C9, uni25CE, openbullet, invbullet, invcircle, uni25DA, uni25DB, uni25E0, uni25E1, uni25DC, uni25DD, uni25DE, uni25DF, at, ampersand, copyright, registered, section, degree, uni0606, uni03F6
### Metrics Changes
- Changed line gap / typo line gap to 275 units
- Modified **uppercase P** - increased right sidebearing to equal sidebearing of uppercase O glyph
- Modified **uppercase Z** - changed to right = left sidebearing (shifts orientation to left) for regular, bold, oblique sets
- Modified **uppercase Z** - reduced left sidebearing for bold oblique set, not necessary to make this equal as with above sets
- Modified **lowercase a** - reduced left sidebearing
- Modified **lowercase c** - reduced left sidebearing
- Modified **lowercase e** - increased left sidebearing
- Modified **lowercase g** - increased left sidebearing
- Modified **lowercase i** - increased left sidebearing
- Modified **lowercase j** - increased left sidebearing
- Modified **lowercase k** - reduced left sidebearing
- Modified **lowercase r** - reduced left sidebearing
- Modified **3** - increased left sidebearing
- Modified **Zacute** - centered glyph (reduced left sidebearing, increased right sidebearing)
- Modified **Zcaron** - centered glyph (reduced left sidebearing, increased right sidebearing)
- Modified **Zdotaccent** - centered glyph (reduced left sidebearing, increased right sidebearing)
- Modified **aacute** - increased left sidebearing
- Modified **abreve** - increased left sidebearing
- Modified **acircumflex** - increased left sidebearing
- Modified **adieresis** - increased left sidebearing
- Modified **agrave** - increased left sidebearing
- Modified **amacron** - increased left sidebearing
- Modified **aogonek** - increased left sidebearing
- Modified **aring** - increased left sidebearing
- Modified **atilde** - increased left sidebearing
- Modified **kcommaaccent** - decreased left sidebearing
- Modified **racute** - decreased left sidebearing
- Modified **rcaron** - decreased left sidebearing
- Modified **rcommaaccent** - decreased left sidebearing
- Mofified **Mu** - increased left sidebearing
- Modified **Zeta** - reduced left sidebearing to center the glyph
- Modified **Rho** - reduced left sidebearing
- Modified **Phi** - increased left sidebearing
- Modified **left guillemet** - increased right sidebearing
- Modified **right guillemet** - increased left sidebearing
- Modified **left brace** - increased right sidebearing
- Modified **right brace** - increased left sidebearing
- Modified **left bracket** - increased right sidebearing
- Modified **right bracket** - increased left sidebearing
- Modified **left parenthesis** - increased right sidebearing
- Modified **right parenthesis** - increased left sidebearing
- Adjusted spacing on all diacritic marks in the regular, bold, oblique, and bold oblique set
### True Type Instructions / PostScript Hinting
- New TrueType instructions / PostScript hinting across the entire glyph set
### Removed
- Removed **fi** and **fl** ligatures. Spacing issues that require these ligatures are not present in this monospaced typeface
# Version 1.3
### Modified Glyphs
- Curve adjustments & curve smoothing across all glyphs in the font collection
- hinting improvements
### Build Files
- New binary build system - should result in improved cross-platform compatibility for font binaries
# Version 1.2
### Modified Glyphs
- Modified **lowercase i** glyph. Removed serif and added curved tail
- Modified **hyphen** glyph. Widened
- Modified **zero** glyph. Adjusted alignment and shape of the oval fill
- Modified **left parenthesis** glyph. Increased right sidebearing length
- Modified **right parenthesis** glyph. Increased left sidebearing length
### Source
- Converted to UFO formatted source
# Version 1.0.1
- Modified the SIL license to permit dual licensing with the Bitstream Vera license. This modification removed the stipulation that multiple licenses are not possible (preamble and section #5) and was intended to create the new Reserved Font Name Hack for this typeface modification and preserve the right (for myself and others) to define Reserved Font Names for all future fonts derived from this typeface. There are no other modifications to either license under which this font is released.
- This release did not introduce changes to the glyphs included in the typeface
# Version 1.0.0
- Branched Bitstream Vera Sans Mono 1.10 release
## Changes
### New Glyphs
- New **exclamation point** glyph. Circular full stop point, tapered line, increased weight relative to other characters.
- New **asterisk** glyph. Glyph shape from Source Code Pro. Modified vertical position of the glyph to orient closer to the ascender.
- New **period** glyph. Circular full stop point, modified from square glyph.
- New **comma** glyph. Rounded comma shape from Source Code Pro, modified from square glyph.
- New **colon** glyph. Circular colon points, modified from square points.
- New **semicolon** glyph. Circular point and rounded comma shape from Source Code Pro, increased vertical spacing between the shapes
### Modified Glyphs
- Modified **percent** glyph. Increased line length and added vertical line ends.
- Modified **zero** glyph. Changed circular fill to oval fill.
- Modified **left square bracket** glyph. Increased height of the glyph.
- Modified **right square bracket** glyph. Increased height of the glyph.
- Modified **left curly bracket** glyph. Modified vertical position, increased length of the horizontal stem, decreased left sidebearing
- Modified **right curly bracket** glyph. Modified vertical position, increased length of the horizontal stem, decreased right sidebearing
- Modified **question mark** glyph. Changed square full stop point to circular full stop point.
- Modified **hyphen** glyph. Raised vertical alignment to center `->` character combinations.
### Font Styles
- **Regular** - includes all changes indicated above
- **Regular Oblique** - includes all changes indicated above
- **Bold** - includes all changes indicated above
- **Bold Oblique** - includes all changes indicated above
Hack-3.003/CONTRIBUTING.md 0000664 0000000 0000000 00000021633 13247374471 0014637 0 ustar 00root root 0000000 0000000 # Hack Typeface Design
Hack is a monospaced typeface that is designed to optimize the display of source code text.
This document outlines the core ideas on which we build to continually improve Hack. Ideally, they serve as a final rationale to decide disputes of whatever nature.
Design is a highly subjective and opinionated topic. Being a collaborative effort, we prefer to focus on the discussion about a change, rather than the final product of a change. In practical terms this means that for any substantial amount of work, we'd like to see an Issue Report or Pull Request which presents an idea or the approach for a change. By keeping the discussion open, not only will you get community feedback, it also allows us to judge your contribution on more than the final product.
## Design Targets
Hack is a general purpose typeface for source code. The _needs of the many_ describe our core design targets. Generally, an issue that affects a majority of users receives higher priority than an issue that affects a minority of users.
### Core
- **ASCII glyph set**; generally speaking, all source code is limited to the ASCII set. Content/comments/documentation, on the other hand, often includes non-ASCII characters. The former gets precedence over the latter.
- We focus on an accepted **single glyph style** for each glyph in the typeface sets. Glyph shape changes that are intended to address our design goals take precedence over changes that are purely subjective in nature. We offer the [alt-hack](https://github.com/source-foundry/alt-hack) repository for alternate Hack glyph styles and contributions of alternate styles are welcomed there.
- Font-sizes between **8-14 px**, line-height >= 1
- **Cross-platform**, cross font renderer support on Linux, OS X, and Windows operating systems. Changes that address cross platform issues take precedence over issues that address platform specific issues. Changes that improve the typeface on some platforms but decrease its usability on others are generally not acceptable and belong in a fork that is intended for the platforms targeted for these changes.
- Usage in **common source code display scenarios** (on digital displays): text editors, terminals, embedded as web fonts, etc.
## Goals, areas of improvement
- **Legibility** - establish differences in the appearance of similar glyph shapes so as to properly identify different Unicode code points
- **Readability** - glyph shape and spacing optimizations to improve the capacity to read character-character, word-word, and code block-code block combinations in source code
- **Visual semantics** - establish semantic commonalities for glyphs used in source code text and create common visual designs within these semantic groups
# Issue Reporting
Issue reports from users are extremely important to foster the ongoing development of the typeface.
Before you report an issue, please confirm that you have installed the current version of the Hack typeface on your system. See the [README.md page](README.md) for details.
If you identify a problem, we request that you report it through a new issue report on the Github repository. Please include the following information in your (bug) issue report:
- Font version (or timeframe when you downloaded the fonts if you do not know)
- Where you obtained the fonts (e.g. repository download, package manager, another source)
- variant(s) of the Hack fonts that are affected (Regular, Bold, Italic, BoldItalic)
- font size at which the problem was observed and whether it occurs at other sizes within the Core design target range (see above)
- operating system and version
- application where the issue was observed and version (important for us to understand the renderer involved)
- screenshot images that visually demonstrate the problem
Please describe what led to the problem in detail.
# Pull Requests
We highly encourage contributions to the Hack typeface source code, repository scripts, and documentation. To view areas where we currently need your help, check out the active issues [Contribute! label](https://github.com/source-foundry/Hack/labels/Contribute%21).
Please read and understand our design philosophy statement above in order to avoid frustration with work that we cannot merge upstream. We are willing to consider pull requests that follow these design guidelines. Having said that, there is never wasted work. If a change is of value to you, it is likely to be of value to others and this is the perfect situation for a downstream fork of Hack that you can maintain and share with other users.
## Pull requests for design changes
Contributors who submit source modifications intended for merge into the Hack repository must license these changes according to [LICENSE.md](LICENSE.md). If this is not acceptable, please do not submit your work for consideration.
Contributors who modify the UFO source code should familiarize themselves with the UFO source specification. The Hack typeface currently uses version 2 of the UFO specification and documentation is available [here](http://unifiedfontobject.org/versions/ufo2/index.html).
For pull requests that modify the design of the typeface, we request that you limit your source commits to the following changes unless we have discussed and explicitly requested additional file changes as part of the contribution.
### Glyph modifications
Modifications include all existing glyph design changes, glyph additions, and glyph deletions.
- Only include the modified `glyphs/*.glif` source files for the modified glyphs in your pull request commits
- Modification of other source files is not acceptable and pull requests will not be accepted until the above condition is met
You can achieve this design modification workflow with one of the following approaches:
- maintain a separate local directory for your design modifications and copy the `glyphs/*.glif` files that are changed to your local clone of the Hack source, then push to your remote repository fork for your pull request
- modify the Hack source in your local clone of the Hack repository and do not commit file changes other than those that are accepted in pull requests (i.e. only include `*.ufo/glyphs/*.glif` files in your commits)
- modify the Hack source in your local clone of the Hack repository, commit all files, replace all `*plist` files with the upstream versions then perform a git squash commit to eliminate the `*.plist` file changes in the git history (this approach can be used for those who didn't read the instructions and have already commited unacceptable file changes)
## Pull requests for script changes
Contributors who submit script source modifications intended for merge into the Hack repository must license these changes according to the license specified in the script header for existing files. For new files, please discuss your license with us in an issue report before you submit your work for consideration.
Please add an issue report that describes the issue that your pull request is intended to address (and that the pull request will close when merged).
We request that you try not to add additional external dependencies to the project with your commits. This has the potential to prevent releases of Hack packages on some platforms. If you need to add a new dependency to the project, we suggest that you discuss this with us in advance through an issue report so that we can confirm that this is acceptable.
## Pull requests for documentation changes
We love help with our docs! This includes anything from simple misspelling or grammar changes to major revisions of poorly written sections. For minor changes, a simple pull request suffices. For major edits, we recommend that you discuss the changes with us in an issue report before you go to the effort.
# Contributors
Contributions to the project come in many forms and we **want** to broadly acknowledge those who spend time and effort to improve the project. We understand that many contributions to open source projects are not in the form of changes to the code base and therefore not automatically recognized in the Github repository UI. Use case specialists play an extremely important role in the improvement of this typeface. Individuals who have knowledge of the intricacies of open source typeface licensing, understand open source project redistribution processes, have the capacity to view errors and test in unique platform x font renderer situations, and many other areas that extend beyond the "source code commit" criterion have contributed their expertise to improve Hack. Understanding this issue, we maintain a [CONTRIBUTORS.md](docs/CONTRIBUTORS.md) list to acknowledge project contributors for their time and efforts under our own defintion of a project contribution. If you feel that you have helped to improve Hack and your contributions have been overlooked (i.e. you are not included on the contributors list), please let us know so that we can rectify this issue! In all likelihood this is an oversight and not intended to be a slight.
Hack-3.003/FAQ.md 0000664 0000000 0000000 00000027600 13247374471 0013337 0 ustar 00root root 0000000 0000000 # FAQ
### Contents
- [Installation](#installation)
- [Bugs/errors](#bugserrors)
- [License](#license)
- [Contribute](#contribute)
- [Modifications/Derivatives](#modificationsderivatives)
- [Tinkering](#tinkering)
## Installation
#### How do I download the current version of the Hack desktop fonts?
You can find the [current release of our desktop fonts](https://github.com/source-foundry/Hack/releases/latest) in our releases list. We recommend that Windows users consider the [Windows installer](https://github.com/source-foundry/Hack-windows-installer) as it addresses font caching issues for initial and repeat installs (for upgrades) that are problematic on the Windows platform. Hack packages are also available through many package managers for those who would prefer to use this approach.
#### What build format are the Hack desktop fonts released in?
The Hack desktop fonts are released in TrueType format (`.ttf`).
#### How do I download the current version of the Hack web fonts?
Please download the [current release of our web fonts](https://github.com/source-foundry/Hack/releases/latest) from our releases list.
#### What build format are the Hack web fonts released in?
The Hack web fonts are released in Web Open Font Format version 1.0 (`*.woff`) and 2.0 (`*.woff2`).
#### How do I install Hack?
Please see the Quick Installation guide on our [README.md](README.md) page. If you have further questions, please refer to the font installation instructions for your platform. A web search should yield all of the information that you need.
#### How do I upgrade Hack?
You can download [the latest release of desktop and web fonts]((https://github.com/source-foundry/Hack/releases/latest)). We recommend that Windows users upgrade with the [Windows installer](https://github.com/source-foundry/Hack-windows-installer) as it addresses problematic font caching issues that take place on the Windows platform. Hack packages are also available through many package managers for those who would prefer to use this approach.
#### Is there a web font CDN that I can use in my web pages?
Yes. See the Web Font Usage section of the [README.md](README.md) document for details.
#### How do I find the changes that occurred in recent releases?
Please review the [CHANGELOG.md](CHANGELOG.md) document.
## Bugs/errors
#### I found a problem with Hack, what do I do?
Please search our issue reports and confirm that your problem has not already been reported or solved. If it appears to be a new issue, please review the issue reporting information in our [CONTRIBUTING.md](CONTRIBUTING.md) document and then file a new issue report with the necessary information to address your problem.
#### How do I find my installed Hack version number?
Please refer to documentation for your operating system to determine how to find the font version string for installed fonts. If you cannot find a solution, you can install and use our [font-v tool](https://github.com/source-foundry/font-v) to view the version string with the command `font-v report [font path]`.
## License
#### How is Hack licensed?
Hack is a derivative of upstream Bitstream Vera Sans Mono and DejaVu Sans Mono source. The Hack changes are licensed under the MIT license. Bitstream Vera Sans Mono is licensed under the Bitstream Vera license and maintains reserved font names “Bitstream†and “Veraâ€. The DejaVu changes to the Bitstream Vera source were committed to the public domain.
You may view the full text of the license in [LICENSE.md](LICENSE.md).
#### Am I allowed to modify glyphs in Hack?
Yes.
#### Am I allowed to extend the character sets in Hack?
Yes.
#### Am I allowed to subset (decrease character set support) Hack?
Yes.
#### Am I allowed to create new build file types for Hack?
Yes.
#### Am I allowed to redistribute an unmodified version of Hack?
Yes.
#### Am I allowed to redistribute a modified version of Hack?
Yes.
#### Do I need to rename a modified version of “Hack�
As of v3.000, the reserved font name "Hack" was removed from our license. You may use the name "Hack" for modified versions of the source, though we encourage you to change the name in a way that indicates how this differs from the upstream source if you intend to release the typeface to others. See the Modifications/Derviatives section of the FAQ below for more information.
#### Do I need to provide attribution when I use Hack?
No.
#### Do I need to maintain the license with modified or unmodified software that is derived from the Hack source?
Yes.
## Contribute
#### Do you accept design contributions to Hack?
Yes. Design contributions are welcomed and encouraged. Please review and familiarize yourself with the design guidelines in the [CONTRIBUTING.md](CONTRIBUTING.md) documentation before you begin work intended as a contribution to the upstream project. If you question whether the work is acceptable in the upstream, we ask that you file a new issue report to discuss it before you begin. Having said that, there is no wasted work and if your changes are not appropriate for the upstream source, a new downstream fork with changes that are important to you (and that you maintain) is very much encouraged.
#### How are my design contributions to Hack licensed?
Changes to the Hack source are licensed under the MIT license. Please confirm that this is acceptable to you before you submit contributions for design changes. We do not accept design contributions under a different license.
#### I am not a professional typeface designer, can I contribute design changes to Hack?
Absolutely. To our knowledge, no contributor who has committed design changes to Hack has a background in professional typeface design or formal typeface design training. We developed an itch that needed to be scratched, combed websites and books for information, viewed lots (and lots and lots more) of typefaces, installed font editors and learned how to use them, and then went to work. We continue to learn ourselves. You are simply at a bit earlier stage of the same journey. Dive in, learn, and let's see what you can come up with.
#### Do you accept source/script contributions to Hack?
Yes. Changes to current scripts are licensed under the MIT license. If you intend to submit new, non-UFO (i.e. typeface design) source and would like to license it in a different way, please file an issue report to discuss this before you perform the work.
#### I have never contributed to an open source project. Does the Hack project support brand new open source contributors?
Yes! Yes! Yes! We would love to have individuals who are brand new to the open source development community experience collaborative free, open source development for the first time through the Hack project. We were all there at one stage and had to get past the initial contribution jitters. Putting your work out in the open for the first time can be a daunting, vulnerable experience and there is a great deal to learn about how the open source contribution workflow works. Don't let this stop you because this could be the first step on a long path of participation in collaborative open source software development. We would love to kickstart the work of a new open source developer and intend to maintain a very receptive environment for new participants. Read the [CONTRIBUTING.md](CONTRIBUTING.md) document, then feel free to pitch ideas that you have as [new issue reports](https://github.com/source-foundry/Hack/issues/new) on the repository. Let us know that you are new in town so that we can provide assistance where you might need it to get started.
#### Can I submit ideas about design changes?
Yes. Please understand our design priorities as defined in the [CONTRIBUTING.md](CONTRIBUTING.md) document and file your ideas as new issue reports. If you feel that the design priorities should be modified, feel free to submit a pull request with suggested changes or file a new issue report. We can discuss these modifications with either approach.
#### How are my contributions to the Hack project recognized?
Contributors are listed in the [CONTRIBUTORS.md](docs/CONTRIBUTORS.md) list.
#### Who is considered a contributor to the Hack project?
We attempt to broadly acknowledge contributions to the project as defined in the Contributors section of the [CONTRIBUTING.md](CONTRIBUTING.md) document. Please refer to that document for further details.
## Modifications/Derivatives
#### I want to modify the Hack design and release it myself. Is this OK?
Yes.
#### I want to add character sets to Hack and release it myself. Is this OK?
Yes.
#### I want to decrease character set support in Hack and release it myself. Is this OK?
Yes.
#### I want to change Hack build file types and release it myself. Is this OK?
Yes.
#### I want to change the hinting approach used in Hack and release it myself. Is this OK?
Yes.
#### Do I need to provide attribution if I release my own project derived from Hack source?
No.
#### Do I need to modify the name of the typeface if I release a modified version?
As of v3.000, the reserved font name "Hack" was removed from the license. It is no longer necessary to change the name for modified versions of the Hack source. Redistribution of modified source under the same name can be confusing to users and we would encourage you to modify the name in a way that clarifies your project goals relative to the upstream source if you intend to release the fonts to others. One approach is to add another term to the basename "Hack". For instance, a derivative that supports source code ligatures might be named "Hack Ligature" and a derivative that replaces the oval filled zero with a forward slash zero might be called "Hack Slash".
#### Can I use Hack in the name of my own derived typeface (e.g. Hack Better)?
Yes, this is highly encouraged if you modify the source and release it with the intent for others to use it.
#### Can I change the name of a derived version and not use Hack in the name?
Yes.
#### If I make minor changes to the source and release this as my own project is this considered plagiarism?
No. Absolutely not. This is well within the bounds of the license and you are welcome to do so. There are niche needs that some users have and our goal is to support these however minor through the development of derivative projects. We are attempting to make the build process, build tooling, and ability to pull any upstream source changes into your own downstream derivative as straightforward and simple as possible in order to support this. Also understand that you must maintain the upstream license in downstream derivatives.
## Tinkering
#### Do you offer alternate styles of Hack glyphs that I can use to customize the fonts?
Yes! The [alt-hack stylistic alternate glyph library](https://github.com/source-foundry/alt-hack) is available with `*.glif` files that contain new glyph designs for glyphs that exist in the Hack character sets. Copy the `.glif` file from the alt-hack library to the Hack source and overwrite the existing `.glif` file. Then rebuild the fonts with the instructions in [docs/BUILD.md](docs/BUILD.md).
#### How do I change the font name?
The simplest approach is to open the UFO source code in a font editor and follow the instructions in the editor documentation, then re-save the UFO source to maintain the name changes (if you plan for repeat builds from source) and rebuild the font files.
#### How do I modify the line spacing in Hack?
We built the tool [font-line](https://github.com/source-foundry/font-line) to increase and decrease line spacing in Hack (and any other font). Please see the documentation in the font-line repository README for details.
#### How do I modify the version string in a derivative that I create from the Hack source?
You can approach this by either modifying the version in the UFO source or through the use of our [font-v](https://github.com/source-foundry/font-v) versioning tool. Please see the font-v repository for detailed usage instructions.
Hack-3.003/LICENSE.md 0000664 0000000 0000000 00000007240 13247374471 0014010 0 ustar 00root root 0000000 0000000 The work in the Hack project is Copyright 2018 Source Foundry Authors and licensed under the MIT License
The work in the DejaVu project was committed to the public domain.
Bitstream Vera Sans Mono Copyright 2003 Bitstream Inc. and licensed under the Bitstream Vera License with Reserved Font Names "Bitstream" and "Vera"
### MIT License
Copyright (c) 2018 Source Foundry Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
### BITSTREAM VERA LICENSE
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions:
The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera".
This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names.
The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org.
Hack-3.003/Makefile 0000664 0000000 0000000 00000001347 13247374471 0014046 0 ustar 00root root 0000000 0000000 all: build
archives:
postbuild_processing/archive_prep/archiver.sh
build: ttf webfonts
build-with-dependencies: source/*.ufo
./build-ttf.sh --install-dependencies
./build-woff.sh --install-dependencies
./build-woff2.sh --install-dependencies
./build-subsets.sh
css:
tools/scripts/css/css-build.sh
lint: shellcheck ufolint
shellcheck: build-ttf.sh build-woff.sh build-woff2.sh build-subsets.sh tools/scripts/install/ttfautohint-build.sh postbuild_processing/archive_prep/archiver.sh tools/scripts/css/css-build.sh
$@ $^
subsets: source/*.ufo
./build-subsets.sh
ttf:
./build-ttf.sh
ufolint: source/*.ufo
$@ $^
webfonts:
./build-woff.sh
./build-woff2.sh
./build-subsets.sh
woff:
./build-woff.sh
woff2:
./build-woff2.sh
Hack-3.003/README.md 0000664 0000000 0000000 00000031461 13247374471 0013665 0 ustar 00root root 0000000 0000000
# Hack
[](https://github.com/source-foundry/Hack/releases/latest)
[](https://semaphoreci.com/sourcefoundry/hack)
[](https://github.com/source-foundry/Hack/blob/master/docs/CONTRIBUTORS.md)
[](https://gitter.im/source-foundry/Hack)
[](https://github.com/source-foundry/Hack/releases/latest)
[](https://www.jsdelivr.com/package/npm/hack-font)
Don't like the development noise from the repository but want to keep up with changes? Check out our [gitter Hack channel](https://gitter.im/source-foundry/Hack). Have a quick question that doesn't require an issue report? Drop by our [gitter Help channel](https://gitter.im/source-foundry/Help) and ask away.
### A typeface designed for source code
Hack is designed to be a workhorse typeface for source code. It has deep roots in the free, open source typeface community and expands upon the contributions of the [Bitstream Vera](https://www.gnome.org/fonts/) & [DejaVu](http://dejavu-fonts.org/wiki/Main_Page) projects. The large x-height + wide aperture + low contrast design make it legible at commonly used source code text sizes with a sweet spot that runs in the 8 - 14 range. The full set of changes to the upstream source are available in the [changelog](CHANGELOG.md).
The project is in active development, and we welcome your input and contributions. You may view our design objectives and instructions on how to contribute in [CONTRIBUTING.md](CONTRIBUTING.md).
Frequently asked questions are answered in our [FAQ](FAQ.md).
### Contents
* [Features](#overview-of-features)
* [Quick installation](#quick-installation)
* [Package manager installation](#package-managers)
* [Web font usage](#web-font-usage)
* [Additional tools for font customization](#additional-tools-for-hack-font-customization)
* [Resources](#resources)
* [Contributing](#contributing)
* [Build tools](#built-with)
* [Acknowledgments](#acknowledgments)
* [License](#license)
### Specimen
## Overview of features
- **Typeface Name**: Hack
- **Category**: Monospaced
- **Character set support**: ASCII, Latin-1, Latin Extended A, Greek, Cyrillic
- **Powerline Support**: Yes, included by default
- **Included Styles**: Regular, Bold, Italic, Bold Italic
## Quick installation
**NOTE ON FONT UPDATES**
*If you are updating your version of Hack, be sure to remove the previously installed version and clear your font cache first to avoid conflicts that can lead to platform-specific rendering errors. Many platforms/distros offer package managers that automate this process. We release a Windows installer to automate the install/update process on the Windows platform. See below for additional details.*
### Linux
1. Download the [latest version of Hack][ttf_latest].
2. Extract the files from the archive (`.zip`).
3. Copy the font files to either your system font folder (often `/usr/share/fonts/`) or user font folder (often `~/.local/share/fonts/` or `/usr/local/share/fonts`).
4. Copy the font configuration file in `config/fontconfig/` to either the system font configuration folder (often `/etc/fonts/conf.d/`) or the font user folder (often `~/.config/fontconfig/conf.d`)
5. Clear and regenerate your font cache and indexes with the following command:
```
$ fc-cache -f -v
```
You can confirm that the fonts are installed with the following command:
```
$ fc-list | grep "Hack"
```
Some Linux users may find that font rendering is improved on their distro with [these instructions](https://wiki.manjaro.org/index.php?title=Improve_Font_Rendering).
### macOS
1. Download the [latest version of Hack][ttf_latest].
2. Extract the files from the archive (`.zip`) and click to open them.
3. Follow the instructions from your operating system.
4. Enjoy!
### Windows
[](https://github.com/source-foundry/Hack-windows-installer/releases/latest)
The [Hack Windows Installer](https://github.com/source-foundry/Hack-windows-installer/releases/latest) simplifies installation on the Windows platform. The tool guides you through the installation process and addresses some common rendering issues that occur with font installs/updates on the Windows platform. This tool is the recommended installation approach for Windows users.
### Chrome/ChromeOS
To use with [Secure Shell](https://chrome.google.com/webstore/detail/secure-shell/pnhechapfaindjhompbnflcldabbghjo),
edit the following fields in Options:
- font-family: `"Hack"`
- user-css: `https://cdn.jsdelivr.net/npm/hack-font@3/build/web/hack.css`
## Package managers
We highly recommend the convenience of a community developed package manager or other auto-updating utility if this is available on your platform. While the package manager releases may be a bit delayed relative to the repository releases, the packages distributed through these package managers were designed to tune and automate font installs and updates on your system.
We are aware of Hack support in the following package managers (with associated package names):
- **Arch Linux**: `ttf-hack`
- **Chocolatey (Windows)**: `hackfont`
- **Debian**: `fonts-hack-ttf`
- **Fedora / CentOS**: `dnf-plugins-core :: heliocastro/hack-fonts :: hack-fonts`
- **Gentoo Linux**: `media-fonts/hack`
- **Homebrew Cask (OS X)**: `caskroom/fonts/font-hack`
- **Open BSD**: `fonts/hack-fonts`
- **OpenSUSE**: `hack-fonts`
- **Ubuntu**: `fonts-hack-ttf`
- **Visual Studio Package Manager**: `hack.font`
For installation issues with Hack packages, please contact the package maintainer directly.
## Web font usage
Hack is available in the woff and woff2 web font formats. **Bold** and *italic* styles are included by default and work out-of-the-box via the `` and `` tags.
Hack is available through the jsDelivr and cdnjs CDN services:
[](https://www.jsdelivr.com/package/npm/hack-font)
[](https://cdnjs.com/libraries/hack-font)
The following snippets provide examples of Hack web font use through the jsDelivr CDN. Adjust the URL paths to those provided by cdnjs (click the link above to find the appropriate URL) to switch to the cdnjs CDN.
#### 1. Add Hack to HTML
Include one of the following in the <head> section of your HTML file:
**Subset web fonts**
```html
```
**Full character set web fonts**
```html
```
#### 2. Add Hack to CSS
```css
pre, code { font-family: Hack, monospace; }
```
See the [WEBFONT_USAGE.md](docs/WEBFONT_USAGE.md) documentation for additional details, including instructions on how to download, host, and serve the web fonts on your web server.
## Additional tools for Hack font customization
### Customize your build with alternate glyph styles
The [alt-hack](https://github.com/source-foundry/alt-hack) library includes a (growing) collection of alternate glyph styles that can be used to customize your Hack fonts. Don't like the default zero style? Swap out the UFO design source with a slashed zero or dotted zero and build new fonts that work better for you.
We welcome contributions of new alternate glyph styles in the alt-hack repository. Design something new that works well with rest of the typeface and submit a pull request to the alt-hack repository so that others can use it in their custom builds.
Detailed build instructions are available on the [alt-hack repository README.md](https://github.com/source-foundry/alt-hack). Font renaming instructions to support side-by-side installs with upstream Hack are available below.
### Line spacing adjustments
[font-line](https://github.com/source-foundry/font-line) is a tool that modifies the default line spacing used in the Hack design (20% UPM).
The following gist installs font-line and modifies line spacing for all desktop font files contained in the same directory:
- [linespace.sh](https://gist.github.com/chrissimpkins/f39e85f5f157d839e46168de1b61a174) ([download .zip](https://gist.github.com/chrissimpkins/f39e85f5f157d839e46168de1b61a174/archive/f3f93dea87d64ddc4684a61cbc96ddf79d30824a.zip))
### Install modified and unmodified versions of Hack on the same system
If you modify the upstream Hack source or the released font binaries and would like to install your modified fonts on the same system with the Hack fonts as released here, you can use the [fontname.py Python script](https://github.com/chrissimpkins/fontname.py) to define a new font name in the binary files. For example, you can install `Hack` on your platform along with a 15% UPM line spacing adjusted version as `Hack Fifteen`. Modify default glyphs with those in our [alt-hack repository](https://github.com/source-foundry/alt-hack) or design your own and define your creation with any name that you'd like. Following installation, your renamed fonts should show under the name that you define with the script so that you can switch between any of them as you need.
Usage details and examples are provided on the fontname.py repository README.
## Resources
* [Full specimen](http://source-foundry.github.io/Hack/font-specimen.html)
* [Changelog](CHANGELOG.md)
* [Project website](http://sourcefoundry.org/hack/)
* [Contributors](docs/CONTRIBUTORS.md)
## Contributing
We welcome contributions to Hack! Please review our [CONTRIBUTING.md](CONTRIBUTING.md) document for details.
## Built With
Hack is built with the following free, open source projects:
- [Font Bakery](https://github.com/googlefonts/fontbakery) - post-compilation modifications
- [fontmake](https://github.com/googlei18n/fontmake) - UFO to ttf compilation
- [fontTools](https://github.com/fonttools/fonttools) - OpenType table read/write
- [font-v](https://github.com/source-foundry/font-v) - font version string editor
- [ink](https://github.com/chrissimpkins/ink) - stream editor for text file templating
- [OpenFV](https://github.com/openfv/openfv) - open specification for semantic typeface versioning
- [sfnt2woff_zopfli](https://github.com/bramstein/sfnt2woff-zopfli) - ttf to woff web font compilation
- [ttfautohint](https://www.freetype.org/ttfautohint/) - ttf instruction sets
- [uni](https://github.com/source-foundry/uni) - Unicode code point search
- [ufodiff](https://github.com/source-foundry/ufodiff) - UFO source diffs
- [ufoLib](https://github.com/unified-font-object/ufoLib) - UFO source file reads/writes/testing
- [ufolint](https://github.com/source-foundry/ufolint) - UFO source file linting for CI testing
- [woff2](https://github.com/google/woff2) - ttf to woff2 web font compilation
## Acknowledgments
We would like to acknowledge and thank the [jsDelivr](https://www.jsdelivr.com/) and [cdnjs](https://cdnjs.com) teams for their support of the Hack project through their free web font CDN services. We greatly appreciate the tremendous support of open source software development by the [Semaphore CI](https://semaphoreci.com/) team. Their free CI testing service and rapid, excellent technical support have been tremendous assets for our project. Lastly, a huge thanks go out to all of those who do the unrecognized work to get Hack out there to users so that it is easy to access, install, upgrade, and use. There are redistribution package managers, review committee members, testers, and others across platforms/distros/applications who perform this thankless work and often go unrecognized. Your efforts are much appreciated.
## License
**Hack** work is © 2018 Source Foundry Authors. MIT License
**Bitstream Vera Sans Mono** © 2003 Bitstream, Inc. (with Reserved Font Names _Bitstream_ and _Vera_). Bitstream Vera License.
The font binaries are released under a license that permits unlimited print, desktop, web, and software embedding use for commercial and non-commercial applications.
See [LICENSE.md](https://github.com/source-foundry/Hack/blob/master/LICENSE.md) for the full texts of the licenses.
[ttf_latest]: https://github.com/source-foundry/Hack/releases/download/v3.003/Hack-v3.003-ttf.zip
Hack-3.003/build-subsets.sh 0000775 0000000 0000000 00000033362 13247374471 0015534 0 ustar 00root root 0000000 0000000 #!/bin/sh
# //////////////////////////////////////////////////////////////////////
#
# build-subsets.sh
# A shell script that builds the Hack web font subsets from UFO source
# Copyright 2018 Christopher Simpkins
# MIT License
#
# Usage: ./build-subsets.sh
#
# NOTE: must install build dependencies in:
# 1) build-ttf.sh
# 2) build-woff.sh
# 3) build-woff2.sh
# before you execute this script. You can do this with:
#
#
# $ ./build-ttf.sh --install-dependencies
# $ ./build-woff.sh --install-dependencies
# $ ./build-woff2.sh --install-dependencies
#
# //////////////////////////////////////////////////////////////////////
# ttfautohint local install path from Werner Lemberg's ttfautohint-build.sh install script
# - This is revised to ttfautohint on the user's PATH if this local install is not identified
# then the identified ttfautohint is used to execute hinting. Versions of ttfautohint < 1.6 exit with status
# code 1 due to use of -R option
# - The intent is to support use of ttfautohint installed on a user's PATH (e.g. they've previously installed it)
TTFAH="$HOME/ttfautohint-build/local/bin/ttfautohint"
# The sfnt2woff-zopfli build directory.
SFNTWOFF_BUILD="$HOME/sfnt2woff-zopfli-build"
# sfnt2woff-zopfli version
SFNTWOFF_VERSION="1.1.0"
SFNTWOFF="sfnt2woff-zopfli-$SFNTWOFF_VERSION"
# Path to sfnt2woff-zopfli executable
SFNTWOFF_BIN="$SFNTWOFF_BUILD/$SFNTWOFF/sfnt2woff-zopfli"
ZOPFLI_ITERATIONS="3"
# The woff2 git clone directory.
WOFF2_BUILD="$HOME"
# woff2 executable path
WOFF2_BIN="$WOFF2_BUILD/woff2/woff2_compress"
# temporary source directory for subset source files
TEMP_SOURCE="source/temp"
# The font build directory paths and file paths for the woff builds
TTF_BUILD="master_ttf"
REGULAR_TTF="Hack-Regular.ttf"
REGULAR_WOFF_PRE="Hack-Regular.woff"
REGULAR_WOFF="hack-regular-subset.woff"
REGULAR_WOFF2_PRE="Hack-Regular.woff2"
REGULAR_WOFF2="hack-regular-subset.woff2"
BOLD_TTF="Hack-Bold.ttf"
BOLD_WOFF_PRE="Hack-Bold.woff"
BOLD_WOFF="hack-bold-subset.woff"
BOLD_WOFF2_PRE="Hack-Bold.woff2"
BOLD_WOFF2="hack-bold-subset.woff2"
ITALIC_TTF="Hack-Italic.ttf"
ITALIC_WOFF_PRE="Hack-Italic.woff"
ITALIC_WOFF="hack-italic-subset.woff"
ITALIC_WOFF2_PRE="Hack-Italic.woff2"
ITALIC_WOFF2="hack-italic-subset.woff2"
BOLDITALIC_TTF="Hack-BoldItalic.ttf"
BOLDITALIC_WOFF_PRE="Hack-BoldItalic.woff"
BOLDITALIC_WOFF="hack-bolditalic-subset.woff"
BOLDITALIC_WOFF2_PRE="Hack-BoldItalic.woff2"
BOLDITALIC_WOFF2="hack-bolditalic-subset.woff2"
# release directory path for web fonts
WEB_BUILD="build/web/fonts"
# test for number of arguments
if [ $# -gt 0 ]
then
echo "Inappropriate arguments included in your command." 1>&2
echo "Usage: ./build-subsets.sh" 1>&2
exit 1
fi
# ////////////////////////////////////////
#
#
# Confirm that dependencies are installed
#
#
# ////////////////////////////////////////
INSTALLFLAG=0
echo "Confirming that build dependencies are installed..."
echo " "
# fontmake installed
if ! which fontmake
then
echo "fontmake was not found. Please install all build dependencies with 'make build-with-dependencies', then attempt your build again." 1>&2
INSTALLFLAG=1
fi
# fontTools python library can be imported
if ! python -c "import fontTools"
then
echo "The fontTools library was not found. Please install all build dependencies with 'make build-with-dependencies', then attempt your build again." 1>&2
INSTALLFLAG=1
else
echo "fontTools Python library identified"
fi
# ttfautohint installed
# - tests for install to local path from ttfautohint-build.sh script
# - if not found on this path, tests for install on system PATH - if found, revises TTFAH to the string "ttfautohint" for execution of instruction sets
if ! [ -f "$TTFAH" ]
then
if ! which ttfautohint
then
echo "ttfautohint was not found. Please install all build dependencies with 'make build-with-dependencies', then attempt your build again." 1>&2
INSTALLFLAG=1
else
TTFAH="ttfautohint" # revise TTFAH variable to ttfautohint installed on the user's PATH for excecution of hints below
echo "ttfautohint executable identified"
fi
else
echo "ttfautohint executable identified"
fi
# sfntwoff-zopfli installed
if ! [ -f "$SFNTWOFF_BIN" ]
then
echo "sfnt2woff-zopfli was not found on the path $SFNTWOFF_BIN. Please install all build dependencies with 'make build-with-dependencies', then attempt your build again." 1>&2
INSTALLFLAG=1
else
echo "sfnt2woff-zopfli executable identified"
fi
# woff2 installed
if ! [ -f "$WOFF2_BIN" ]
then
echo "woff2_compress was not found on the path $WOFF2_BIN. Please install all build dependencies with 'make build-with-dependencies', then attempt your build again." 1>&2
INSTALLFLAG=1
else
echo "woff2_compress executable identified"
fi
# if any of the dependency installs failed, exit and do not attempt build, notify user
if [ $INSTALLFLAG -eq 1 ]
then
echo "Build canceled." 1>&2
exit 1
fi
# ////////////////////////////////////////////////
#
#
# Create temporary source files with lib.plist
# replacements that include subset definitions
#
#
# ////////////////////////////////////////////////
# cleanup any previously created temp directory that was not removed
if ! [ -d "$TEMP_SOURCE" ]; then
rm -rf $TEMP_SOURCE
fi
# create temp directory for subset source files
mkdir $TEMP_SOURCE
# copy source to temporary directory
cp -r source/Hack-Regular.ufo $TEMP_SOURCE/Hack-Regular.ufo
cp -r source/Hack-Italic.ufo $TEMP_SOURCE/Hack-Italic.ufo
cp -r source/Hack-Bold.ufo $TEMP_SOURCE/Hack-Bold.ufo
cp -r source/Hack-BoldItalic.ufo $TEMP_SOURCE/Hack-BoldItalic.ufo
# copy lib.plist files with subset definitions to temporary source directories
cp source/subset-lib/lib-regular.plist $TEMP_SOURCE/Hack-Regular.ufo/lib.plist
cp source/subset-lib/lib-italic.plist $TEMP_SOURCE/Hack-Italic.ufo/lib.plist
cp source/subset-lib/lib-bold.plist $TEMP_SOURCE/Hack-Bold.ufo/lib.plist
cp source/subset-lib/lib-bolditalic.plist $TEMP_SOURCE/Hack-BoldItalic.ufo/lib.plist
# /////////////////////////////////////////////
#
#
# Begin subset ttf font build from UFO source
#
#
# /////////////////////////////////////////////
echo "Starting web font subset build..."
echo " "
# remove master_ttf directory if a previous build failed + exited early and it was not cleaned up
if [ -d "master_ttf" ]; then
rm -rf master_ttf
fi
# build regular subset
if ! fontmake --subset -u "$TEMP_SOURCE/Hack-Regular.ufo" -o ttf
then
echo "Unable to build the Hack-Regular variant subset. Build canceled." 1>&2
exit 1
fi
# build bold subset
if ! fontmake --subset -u "$TEMP_SOURCE/Hack-Bold.ufo" -o ttf
then
echo "Unable to build the Hack-Bold variant subset. Build canceled." 1>&2
exit 1
fi
# build italic subset
if ! fontmake --subset -u "$TEMP_SOURCE/Hack-Italic.ufo" -o ttf
then
echo "Unable to build the Hack-Italic variant subset. Build canceled." 1>&2
exit 1
fi
# build bold italic subset
if ! fontmake --subset -u "$TEMP_SOURCE/Hack-BoldItalic.ufo" -o ttf
then
echo "Unable to build the Hack-BoldItalic variant subset. Build canceled." 1>&2
exit 1
fi
# /////////////////////////////////////////////
#
#
# Post build fixes
#
#
# /////////////////////////////////////////////
# DSIG table fix with adapted fontbakery Python script
echo " "
echo "Attempting DSIG table fixes with fontbakery..."
echo " "
if ! python postbuild_processing/fixes/fix-dsig.py master_ttf/*.ttf
then
echo "Unable to complete DSIG table fixes on the release files"
exit 1
fi
# fstype value fix with adapted fontbakery Python script
echo " "
echo "Attempting fstype fixes with fontbakery..."
echo " "
if ! python postbuild_processing/fixes/fix-fstype.py master_ttf/*.ttf
then
echo "Unable to complete fstype fixes on the release files"
exit 1
fi
# /////////////////////////////////////////////
#
#
# Hinting of ttf subsets
#
#
# /////////////////////////////////////////////
echo " "
echo "Attempting ttfautohint hinting..."
echo " "
# make a temporary directory for the hinted files
mkdir master_ttf/hinted
# Hack-Regular.ttf
if ! "$TTFAH" -l 6 -r 50 -x 10 -H 181 -D latn -f latn -w G -W -t -X "" -I -R "master_ttf/Hack-Regular.ttf" -m "postbuild_processing/tt-hinting/Hack-Regular-TA.txt" "master_ttf/Hack-Regular.ttf" "master_ttf/hinted/Hack-Regular.ttf"
then
echo "Unable to execute ttfautohint on the Hack-Regular variant subset. Build canceled." 1>&2
exit 1
fi
echo "master_ttf/Hack-Regular.ttf subset - successful hinting with ttfautohint"
# Hack-Bold.ttf
if ! "$TTFAH" -l 6 -r 50 -x 10 -H 260 -D latn -f latn -w G -W -t -X "" -I -R "master_ttf/Hack-Regular.ttf" -m "postbuild_processing/tt-hinting/Hack-Bold-TA.txt" "master_ttf/Hack-Bold.ttf" "master_ttf/hinted/Hack-Bold.ttf"
then
echo "Unable to execute ttfautohint on the Hack-Bold variant subset. Build canceled." 1>&2
exit 1
fi
echo "master_ttf/Hack-Bold.ttf subset - successful hinting with ttfautohint"
# Hack-Italic.ttf
if ! "$TTFAH" -l 6 -r 50 -x 10 -H 145 -D latn -f latn -w G -W -t -X "" -I -R "master_ttf/Hack-Regular.ttf" -m "postbuild_processing/tt-hinting/Hack-Italic-TA.txt" "master_ttf/Hack-Italic.ttf" "master_ttf/hinted/Hack-Italic.ttf"
then
echo "Unable to execute ttfautohint on the Hack-Italic variant subset. Build canceled." 1>&2
exit 1
fi
echo "master_ttf/Hack-Italic.ttf subset - successful hinting with ttfautohint"
# Hack-BoldItalic.ttf
if ! "$TTFAH" -l 6 -r 50 -x 10 -H 265 -D latn -f latn -w G -W -t -X "" -I -R "master_ttf/Hack-Regular.ttf" -m "postbuild_processing/tt-hinting/Hack-BoldItalic-TA.txt" "master_ttf/Hack-BoldItalic.ttf" "master_ttf/hinted/Hack-BoldItalic.ttf"
then
echo "Unable to execute ttfautohint on the Hack-BoldItalic variant subset. Build canceled." 1>&2
exit 1
fi
echo "master_ttf/Hack-BoldItalic.ttf subset - successful hinting with ttfautohint"
echo " "
# /////////////////////////////////////////////
#
#
# Build woff subsets
#
#
# /////////////////////////////////////////////
# regular set
if ! "$SFNTWOFF_BIN" -n $ZOPFLI_ITERATIONS "$TTF_BUILD/$REGULAR_TTF"; then
echo "Failed to build $REGULAR_WOFF from $REGULAR_TTF." 1>&2
exit 1
else
echo "Regular woff subset successfully built from $REGULAR_TTF"
fi
# bold set
if ! "$SFNTWOFF_BIN" -n $ZOPFLI_ITERATIONS "$TTF_BUILD/$BOLD_TTF"; then
echo "Failed to build $BOLD_WOFF from $BOLD_TTF" 1>&2
exit 1
else
echo "Bold woff subset successfully built from $BOLD_TTF"
fi
# italic set
if ! "$SFNTWOFF_BIN" -n $ZOPFLI_ITERATIONS "$TTF_BUILD/$ITALIC_TTF"; then
echo "Failed to build $BOLD_WOFF from $ITALIC_TTF" 1>&2
exit 1
else
echo "Italic woff subset successfully built from $ITALIC_TTF"
fi
# bold italic set
if ! "$SFNTWOFF_BIN" -n $ZOPFLI_ITERATIONS "$TTF_BUILD/$BOLDITALIC_TTF"; then
echo "Failed to build $BOLDITALIC_WOFF from $BOLDITALIC_TTF" 1>&2
exit 1
else
echo "Bold Italic woff subset successfully built from $BOLDITALIC_TTF"
fi
# /////////////////////////////////////////////
#
#
# Build woff2 subsets
#
#
# /////////////////////////////////////////////
echo " "
# regular set
if ! "$WOFF2_BIN" "$TTF_BUILD/$REGULAR_TTF"; then
echo "Failed to build woff2 subset from $REGULAR_TTF." 1>&2
exit 1
else
echo "Regular woff2 font subset successfully built from $REGULAR_TTF"
fi
# bold set
if ! "$WOFF2_BIN" "$TTF_BUILD/$BOLD_TTF"; then
echo "Failed to build woff2 subset from $BOLD_TTF" 1>&2
exit 1
else
echo "Bold woff2 subset successfully built from $BOLD_TTF"
fi
# italic set
if ! "$WOFF2_BIN" "$TTF_BUILD/$ITALIC_TTF"; then
echo "Failed to build woff2 subset from $ITALIC_TTF" 1>&2
exit 1
else
echo "Italic woff2 subset successfully built from $ITALIC_TTF"
fi
# bold italic set
if ! "$WOFF2_BIN" "$TTF_BUILD/$BOLDITALIC_TTF"; then
echo "Failed to build woff2 subset from $BOLDITALIC_TTF" 1>&2
exit 1
else
echo "Bold Italic woff2 subset successfully built from $BOLDITALIC_TTF"
fi
# //////////////////////////////////////////////
#
#
# Move web font subset files to build directory
#
#
# //////////////////////////////////////////////
# create the build directory if it does not exist
if ! [ -d "$WEB_BUILD" ]; then
mkdir $WEB_BUILD
fi
echo " "
echo "Moving woff files to build directory..."
# move woff files to appropriate build directory
mv "$TTF_BUILD/$REGULAR_WOFF_PRE" "$WEB_BUILD/$REGULAR_WOFF"
mv "$TTF_BUILD/$BOLD_WOFF_PRE" "$WEB_BUILD/$BOLD_WOFF"
mv "$TTF_BUILD/$ITALIC_WOFF_PRE" "$WEB_BUILD/$ITALIC_WOFF"
mv "$TTF_BUILD/$BOLDITALIC_WOFF_PRE" "$WEB_BUILD/$BOLDITALIC_WOFF"
if [ -f "$WEB_BUILD/$REGULAR_WOFF" ]; then
echo "Regular woff build path: $WEB_BUILD/$REGULAR_WOFF"
fi
if [ -f "$WEB_BUILD/$BOLD_WOFF" ]; then
echo "Bold woff build path: $WEB_BUILD/$BOLD_WOFF"
fi
if [ -f "$WEB_BUILD/$ITALIC_WOFF" ]; then
echo "Italic woff build path: $WEB_BUILD/$ITALIC_WOFF"
fi
if [ -f "$WEB_BUILD/$BOLDITALIC_WOFF" ]; then
echo "Bold Italic woff build path: $WEB_BUILD/$BOLDITALIC_WOFF"
fi
echo "Moving woff2 files to build directory..."
# move woff files to appropriate build directory
mv "$TTF_BUILD/$REGULAR_WOFF2_PRE" "$WEB_BUILD/$REGULAR_WOFF2"
mv "$TTF_BUILD/$BOLD_WOFF2_PRE" "$WEB_BUILD/$BOLD_WOFF2"
mv "$TTF_BUILD/$ITALIC_WOFF2_PRE" "$WEB_BUILD/$ITALIC_WOFF2"
mv "$TTF_BUILD/$BOLDITALIC_WOFF2_PRE" "$WEB_BUILD/$BOLDITALIC_WOFF2"
if [ -f "$WEB_BUILD/$REGULAR_WOFF2" ]; then
echo "Regular woff2 subset build path: $WEB_BUILD/$REGULAR_WOFF2"
fi
if [ -f "$WEB_BUILD/$BOLD_WOFF2" ]; then
echo "Bold woff2 subset build path: $WEB_BUILD/$BOLD_WOFF2"
fi
if [ -f "$WEB_BUILD/$ITALIC_WOFF2" ]; then
echo "Italic woff2 subset build path: $WEB_BUILD/$ITALIC_WOFF2"
fi
if [ -f "$WEB_BUILD/$BOLDITALIC_WOFF2" ]; then
echo "Bold Italic woff2 subset build path: $WEB_BUILD/$BOLDITALIC_WOFF2"
fi
# //////////////////////////////////////////////
#
#
# Cleanup temp directory
#
#
# //////////////////////////////////////////////
rm -rf master_ttf
rm -rf "$TEMP_SOURCE"
Hack-3.003/build-ttf.sh 0000775 0000000 0000000 00000016713 13247374471 0014642 0 ustar 00root root 0000000 0000000 #!/bin/sh
# /////////////////////////////////////////////////////////////////
#
# build-ttf.sh
# A shell script that builds the Hack ttf fonts from UFO source
# Copyright 2018 Christopher Simpkins
# MIT License
#
# Usage: ./build-ttf.sh (--install-dependencies)
# Arguments:
# --install-dependencies (optional) - installs all
# build dependencies prior to the build script execution
#
# /////////////////////////////////////////////////////////////////
# ttfautohint local install path from Werner Lemberg's ttfautohint-build.sh install script
# - This is revised to ttfautohint on the user's PATH if this local install is not identified
# then the identified ttfautohint is used to execute hinting. Versions of ttfautohint < 1.6 exit with status
# code 1 due to use of -R option
# - The intent is to support use of ttfautohint installed on a user's PATH (e.g. they've previously installed it)
TTFAH="$HOME/ttfautohint-build/local/bin/ttfautohint"
# test for number of arguments
if [ $# -gt 1 ]
then
echo "Inappropriate arguments included in your command." 1>&2
echo "Usage: ./build-ttf.sh (--install-dependencies)" 1>&2
exit 1
fi
# Optional build dependency install request with syntax `./build.sh --install-dependencies`
if [ "$1" = "--install-dependencies" ]
then
# fontmake
pip install --upgrade fontmake
# fontTools (installed with fontmake at this time. leave this as dependency check as python scripts for fixes require it should fontTools eliminate dep)
pip install --upgrade fonttools
# ttfautohint v1.6 (must be pinned to v1.6 and above for Hack instruction sets)
tools/scripts/install/ttfautohint-build.sh
fi
# confirm executable installs and library imports for build dependencies
INSTALLFLAG=0
echo "Confirming that build dependencies are installed..."
echo " "
# fontmake installed
if ! which fontmake
then
echo "Unable to install fontmake with 'pip install fontmake'. Please attempt a manual install of this build dependency and then repeat your build attempt." 1>&2
INSTALLFLAG=1
fi
# fontTools python library can be imported
if ! python -c "import fontTools"
then
echo "Unable to install fontTools with 'pip install fonttools'. Please attempt a manual install of this build dependency and then repeat your build attempt." 1>&2
INSTALLFLAG=1
else
echo "fontTools Python library identified"
fi
# ttfautohint installed
# - tests for install to local path from ttfautohint-build.sh script
# - if not found on this path, tests for install on system PATH - if found, revises TTFAH to the string "ttfautohint" for execution of instruction sets
if ! [ -f "$TTFAH" ]
then
if ! which ttfautohint
then
echo "Unable to install ttfautohint from source. Please attempt a manual install of this build dependency and then repeat your build attempt." 1>&2
INSTALLFLAG=1
else
TTFAH="ttfautohint" # revise TTFAH variable to ttfautohint installed on the user's PATH for excecution of hints below
fi
fi
# if any of the dependency installs failed, exit and do not attempt build, notify user
if [ $INSTALLFLAG -eq 1 ]
then
echo "Build canceled." 1>&2
exit 1
fi
# Desktop ttf font build
echo "Starting build..."
echo " "
# remove any existing release files from the build directory
if [ -f "build/ttf/Hack-Regular.ttf" ]; then
rm build/ttf/Hack-Regular.ttf
fi
if [ -f "build/ttf/Hack-Italic.ttf" ]; then
rm build/ttf/Hack-Italic.ttf
fi
if [ -f "build/ttf/Hack-Bold.ttf" ]; then
rm build/ttf/Hack-Bold.ttf
fi
if [ -f "build/ttf/Hack-BoldItalic.ttf" ]; then
rm build/ttf/Hack-BoldItalic.ttf
fi
# remove master_ttf directory if a previous build failed + exited early and it was not cleaned up
if [ -d "master_ttf" ]; then
rm -rf master_ttf
fi
# build regular set
if ! fontmake -u "source/Hack-Regular.ufo" -o ttf
then
echo "Unable to build the Hack-Regular variant set. Build canceled." 1>&2
exit 1
fi
# build bold set
if ! fontmake -u "source/Hack-Bold.ufo" -o ttf
then
echo "Unable to build the Hack-Bold variant set. Build canceled." 1>&2
exit 1
fi
# build italic set
if ! fontmake -u "source/Hack-Italic.ufo" -o ttf
then
echo "Unable to build the Hack-Italic variant set. Build canceled." 1>&2
exit 1
fi
# build bold italic set
if ! fontmake -u "source/Hack-BoldItalic.ufo" -o ttf
then
echo "Unable to build the Hack-BoldItalic variant set. Build canceled." 1>&2
exit 1
fi
# Desktop ttf font post build fixes
# DSIG table fix with adapted fontbakery Python script
echo " "
echo "Attempting DSIG table fixes with fontbakery..."
echo " "
if ! python postbuild_processing/fixes/fix-dsig.py master_ttf/*.ttf
then
echo "Unable to complete DSIG table fixes on the release files"
exit 1
fi
# fstype value fix with adapted fontbakery Python script
echo " "
echo "Attempting fstype fixes with fontbakery..."
echo " "
if ! python postbuild_processing/fixes/fix-fstype.py master_ttf/*.ttf
then
echo "Unable to complete fstype fixes on the release files"
exit 1
fi
# Desktop ttf font hinting
echo " "
echo "Attempting ttfautohint hinting..."
echo " "
# make a temporary directory for the hinted files
mkdir master_ttf/hinted
# Hack-Regular.ttf
if ! "$TTFAH" -l 6 -r 50 -x 10 -H 181 -D latn -f latn -w G -W -t -X "" -I -m "postbuild_processing/tt-hinting/Hack-Regular-TA.txt" "master_ttf/Hack-Regular.ttf" "master_ttf/hinted/Hack-Regular.ttf"
then
echo "Unable to execute ttfautohint on the Hack-Regular variant set. Build canceled." 1>&2
exit 1
fi
echo "master_ttf/Hack-Regular.ttf - successful hinting with ttfautohint"
# Hack-Bold.ttf
if ! "$TTFAH" -l 6 -r 50 -x 10 -H 260 -D latn -f latn -w G -W -t -X "" -I -m "postbuild_processing/tt-hinting/Hack-Bold-TA.txt" "master_ttf/Hack-Bold.ttf" "master_ttf/hinted/Hack-Bold.ttf"
then
echo "Unable to execute ttfautohint on the Hack-Bold variant set. Build canceled." 1>&2
exit 1
fi
echo "master_ttf/Hack-Bold.ttf - successful hinting with ttfautohint"
# Hack-Italic.ttf
if ! "$TTFAH" -l 6 -r 50 -x 10 -H 145 -D latn -f latn -w G -W -t -X "" -I -m "postbuild_processing/tt-hinting/Hack-Italic-TA.txt" "master_ttf/Hack-Italic.ttf" "master_ttf/hinted/Hack-Italic.ttf"
then
echo "Unable to execute ttfautohint on the Hack-Italic variant set. Build canceled." 1>&2
exit 1
fi
echo "master_ttf/Hack-Italic.ttf - successful hinting with ttfautohint"
# Hack-BoldItalic.ttf
if ! "$TTFAH" -l 6 -r 50 -x 10 -H 265 -D latn -f latn -w G -W -t -X "" -I -m "postbuild_processing/tt-hinting/Hack-BoldItalic-TA.txt" "master_ttf/Hack-BoldItalic.ttf" "master_ttf/hinted/Hack-BoldItalic.ttf"
then
echo "Unable to execute ttfautohint on the Hack-BoldItalic variant set. Build canceled." 1>&2
exit 1
fi
echo "master_ttf/Hack-BoldItalic.ttf - successful hinting with ttfautohint"
echo " "
# Move release files to build directory
echo " "
# create directory if it does not exist
# (occurs with git + empty directories)
if ! [ -d build/ttf ]; then
mkdir build/ttf
fi
mv master_ttf/hinted/Hack-Regular.ttf build/ttf/Hack-Regular.ttf
echo "Regular ttf build path: build/ttf/Hack-Regular.ttf"
mv master_ttf/hinted/Hack-Italic.ttf build/ttf/Hack-Italic.ttf
echo "Italic ttf build path: build/ttf/Hack-Italic.ttf"
mv master_ttf/hinted/Hack-Bold.ttf build/ttf/Hack-Bold.ttf
echo "Bold ttf build path: build/ttf/Hack-Bold.ttf"
mv master_ttf/hinted/Hack-BoldItalic.ttf build/ttf/Hack-BoldItalic.ttf
echo "Bold Italic ttf build path: build/ttf/Hack-BoldItalic.ttf"
# Remove master_ttf directory
rm -rf master_ttf
Hack-3.003/build-woff.sh 0000775 0000000 0000000 00000011000 13247374471 0014766 0 ustar 00root root 0000000 0000000 #!/bin/sh
# ///////////////////////////////////////////////////////////////////
#
# build-woff.sh
# A shell script that builds the Hack woff web fonts from ttf files
# Copyright 2018 Christopher Simpkins
# MIT License
#
# Usage: ./build-woff.sh (--install-dependencies)
# Arguments:
# --install-dependencies (optional) - installs all
# build dependencies prior to the build script execution
#
# NOTE: If you change the source, you must build new ttf files
# with build.sh PRIOR to execution of this script.
# This script builds directly from previous ttf builds,
# not source files.
#
# ///////////////////////////////////////////////////////////////////
# The sfnt2woff-zopfli build directory.
BUILD="$HOME/sfnt2woff-zopfli-build"
# sfnt2woff-zopfli version
SFNTWOFF_VERSION="1.1.0"
SFNTWOFF="sfnt2woff-zopfli-$SFNTWOFF_VERSION"
# Path to sfnt2woff-zopfli executable
SFNTWOFF_BIN="$BUILD/$SFNTWOFF/sfnt2woff-zopfli"
ZOPFLI_ITERATIONS="3"
# The font build directory paths and file paths for the woff builds
TTF_BUILD="build/ttf"
WOFF_BUILD="build/web/fonts"
REGULAR_TTF="Hack-Regular.ttf"
REGULAR_PRE="Hack-Regular.woff"
REGULAR_WOFF="hack-regular.woff"
BOLD_TTF="Hack-Bold.ttf"
BOLD_PRE="Hack-Bold.woff"
BOLD_WOFF="hack-bold.woff"
ITALIC_TTF="Hack-Italic.ttf"
ITALIC_PRE="Hack-Italic.woff"
ITALIC_WOFF="hack-italic.woff"
BOLDITALIC_TTF="Hack-BoldItalic.ttf"
BOLDITALIC_PRE="Hack-BoldItalic.woff"
BOLDITALIC_WOFF="hack-bolditalic.woff"
# test for number of arguments
if [ $# -gt 1 ]
then
echo "Inappropriate arguments included in your command." 1>&2
echo "Usage: ./build-woff.sh (--install-dependencies)" 1>&2
exit 1
fi
# Optional build dependency install request with syntax `./build-web.sh --install-dependencies`
if [ "$1" = "--install-dependencies" ]
then
# define the current directory (Hack repository)
CUR_DIR=$(pwd)
if test -d "$BUILD" -o -f "$BUILD"; then
echo "Build directory \`$BUILD' must not exist."
exit 1
fi
mkdir "$BUILD"
cd "$BUILD" || exit 1
echo "#####"
echo "Download archive."
echo "#####"
curl -L -O "https://github.com/bramstein/sfnt2woff-zopfli/archive/v$SFNTWOFF_VERSION.tar.gz"
echo "#####"
echo "Extract archives."
echo "#####"
tar -xzvf "v$SFNTWOFF_VERSION.tar.gz"
cd "$SFNTWOFF" || exit 1
echo "#####"
echo "Build $SFNTWOFF."
echo "#####"
make
# make Hack repository the current directory again following the build
cd "$CUR_DIR" || exit 1
fi
if [ -f "$SFNTWOFF_BIN" ]; then
echo "Beginning web font build with $SFNTWOFF"
else
echo "Unable to locate sfnt2woff-zopfli on the path $SFNTWOFF_BIN. Please attempt a manual install of this build dependency and then repeat your build attempt." 1>&2
exit 1
fi
# Build woff files from ttf files
# regular set
if ! "$SFNTWOFF_BIN" -n $ZOPFLI_ITERATIONS "$TTF_BUILD/$REGULAR_TTF"; then
echo "Failed to build $REGULAR_WOFF from $REGULAR_TTF." 1>&2
exit 1
else
echo "Regular woff set successfully built from $REGULAR_TTF"
fi
# bold set
if ! "$SFNTWOFF_BIN" -n $ZOPFLI_ITERATIONS "$TTF_BUILD/$BOLD_TTF"; then
echo "Failed to build $BOLD_WOFF from $BOLD_TTF" 1>&2
exit 1
else
echo "Bold woff set successfully built from $BOLD_TTF"
fi
# italic set
if ! "$SFNTWOFF_BIN" -n $ZOPFLI_ITERATIONS "$TTF_BUILD/$ITALIC_TTF"; then
echo "Failed to build $BOLD_WOFF from $ITALIC_TTF" 1>&2
exit 1
else
echo "Italic woff set successfully built from $ITALIC_TTF"
fi
# bold italic set
if ! "$SFNTWOFF_BIN" -n $ZOPFLI_ITERATIONS "$TTF_BUILD/$BOLDITALIC_TTF"; then
echo "Failed to build $BOLDITALIC_WOFF from $BOLDITALIC_TTF" 1>&2
exit 1
else
echo "Bold Italic woff set successfully built from $BOLDITALIC_TTF"
fi
echo "Moving woff files to build directory..."
# create directory if it does not exist
# (occurs with git + empty directories)
if ! [ -d "$WOFF_BUILD" ]; then
mkdir $WOFF_BUILD
fi
# move woff files to appropriate build directory
mv "$TTF_BUILD/$REGULAR_PRE" "$WOFF_BUILD/$REGULAR_WOFF"
mv "$TTF_BUILD/$BOLD_PRE" "$WOFF_BUILD/$BOLD_WOFF"
mv "$TTF_BUILD/$ITALIC_PRE" "$WOFF_BUILD/$ITALIC_WOFF"
mv "$TTF_BUILD/$BOLDITALIC_PRE" "$WOFF_BUILD/$BOLDITALIC_WOFF"
echo " "
if [ -f "$WOFF_BUILD/$REGULAR_WOFF" ]; then
echo "Regular woff build path: $WOFF_BUILD/$REGULAR_WOFF"
fi
if [ -f "$WOFF_BUILD/$BOLD_WOFF" ]; then
echo "Bold woff build path: $WOFF_BUILD/$BOLD_WOFF"
fi
if [ -f "$WOFF_BUILD/$ITALIC_WOFF" ]; then
echo "Italic woff build path: $WOFF_BUILD/$ITALIC_WOFF"
fi
if [ -f "$WOFF_BUILD/$BOLDITALIC_WOFF" ]; then
echo "Bold Italic woff build path: $WOFF_BUILD/$BOLDITALIC_WOFF"
fi
Hack-3.003/build-woff2.sh 0000775 0000000 0000000 00000010470 13247374471 0015062 0 ustar 00root root 0000000 0000000 #!/bin/sh
# ///////////////////////////////////////////////////////////////////
#
# build-woff2.sh
# A shell script that builds the Hack woff2 web fonts from ttf files
# Copyright 2018 Christopher Simpkins
# MIT License
#
# Usage: ./build-woff2.sh (--install-dependencies)
# Arguments:
# --install-dependencies (optional) - installs all
# build dependencies prior to the build script execution
#
# NOTE: If you change the source, you must build new ttf files
# with build.sh PRIOR to execution of this script.
# This script builds directly from previous ttf builds,
# not source files.
#
# ///////////////////////////////////////////////////////////////////
# The woff2 git clone directory.
BUILD="$HOME"
INST="$HOME/woff2"
# woff2 executable path
WOFF2_BIN="$BUILD/woff2/woff2_compress"
# The font build directory paths and file paths for the woff builds
TTF_BUILD="build/ttf"
WOFF_BUILD="build/web/fonts"
REGULAR_TTF="Hack-Regular.ttf"
REGULAR_PRE="Hack-Regular.woff2"
REGULAR_WOFF="hack-regular.woff2"
BOLD_TTF="Hack-Bold.ttf"
BOLD_PRE="Hack-Bold.woff2"
BOLD_WOFF="hack-bold.woff2"
ITALIC_TTF="Hack-Italic.ttf"
ITALIC_PRE="Hack-Italic.woff2"
ITALIC_WOFF="hack-italic.woff2"
BOLDITALIC_TTF="Hack-BoldItalic.ttf"
BOLDITALIC_PRE="Hack-BoldItalic.woff2"
BOLDITALIC_WOFF="hack-bolditalic.woff2"
# test for number of arguments
if [ $# -gt 1 ]
then
echo "Inappropriate arguments included in your command." 1>&2
echo "Usage: ./build-woff2.sh (--install-dependencies)" 1>&2
exit 1
fi
# Optional build dependency install request with syntax `./build-web.sh --install-dependencies`
if [ "$1" = "--install-dependencies" ]
then
# define the current directory (Hack repository)
CUR_DIR=$(pwd)
if test -d "$INST" -o -f "$INST"; then
echo "Build directory \`$INST' must not exist."
exit 1
fi
cd "$BUILD" || exit 1
echo "#####"
echo "git clone woff2 project"
echo "#####"
# clone the Source Foundry fork of the woff2 repo
# contains fix for OS X build bug - https://github.com/google/woff2/issues/73
# recursive flag to clone the brotli submodule within the woff2 repo
git clone --recursive https://github.com/source-foundry/woff2.git
cd "$INST" || exit 1
echo "#####"
echo "Build woff2"
echo "#####"
make clean all
# make Hack repository the current directory again following the build
cd "$CUR_DIR" || exit 1
fi
if [ -f "$WOFF2_BIN" ]; then
echo "Beginning web font build with $WOFF2_BIN"
else
echo "Unable to locate woff2_compress on path $WOFF2_BIN. Please attempt a manual install of this build dependency and then repeat your build attempt." 1>&2
exit 1
fi
# Build woff2 files from ttf files
# regular set
if ! "$WOFF2_BIN" "$TTF_BUILD/$REGULAR_TTF"; then
echo "Failed to build woff2 from $REGULAR_TTF." 1>&2
exit 1
else
echo "Regular woff2 font set successfully built from $REGULAR_TTF"
fi
# bold set
if ! "$WOFF2_BIN" "$TTF_BUILD/$BOLD_TTF"; then
echo "Failed to build woff2 from $BOLD_TTF" 1>&2
exit 1
else
echo "Bold woff2 set successfully built from $BOLD_TTF"
fi
# italic set
if ! "$WOFF2_BIN" "$TTF_BUILD/$ITALIC_TTF"; then
echo "Failed to build woff2 from $ITALIC_TTF" 1>&2
exit 1
else
echo "Italic woff2 set successfully built from $ITALIC_TTF"
fi
# bold italic set
if ! "$WOFF2_BIN" "$TTF_BUILD/$BOLDITALIC_TTF"; then
echo "Failed to build woff2 from $BOLDITALIC_TTF" 1>&2
exit 1
else
echo "Bold Italic woff2 set successfully built from $BOLDITALIC_TTF"
fi
echo "Moving woff2 files to build directory..."
# create directory if it does not exist
# (occurs with git + empty directories)
if ! [ -d "$WOFF_BUILD" ]; then
mkdir $WOFF_BUILD
fi
# move woff2 files to appropriate build directory
mv "$TTF_BUILD/$REGULAR_PRE" "$WOFF_BUILD/$REGULAR_WOFF"
mv "$TTF_BUILD/$BOLD_PRE" "$WOFF_BUILD/$BOLD_WOFF"
mv "$TTF_BUILD/$ITALIC_PRE" "$WOFF_BUILD/$ITALIC_WOFF"
mv "$TTF_BUILD/$BOLDITALIC_PRE" "$WOFF_BUILD/$BOLDITALIC_WOFF"
echo " "
if [ -f "$WOFF_BUILD/$REGULAR_WOFF" ]; then
echo "Regular woff2 build path: $WOFF_BUILD/$REGULAR_WOFF"
fi
if [ -f "$WOFF_BUILD/$BOLD_WOFF" ]; then
echo "Bold woff2 build path: $WOFF_BUILD/$BOLD_WOFF"
fi
if [ -f "$WOFF_BUILD/$ITALIC_WOFF" ]; then
echo "Italic woff2 build path: $WOFF_BUILD/$ITALIC_WOFF"
fi
if [ -f "$WOFF_BUILD/$BOLDITALIC_WOFF" ]; then
echo "Bold Italic woff2 build path: $WOFF_BUILD/$BOLDITALIC_WOFF"
fi
Hack-3.003/build/ 0000775 0000000 0000000 00000000000 13247374471 0013500 5 ustar 00root root 0000000 0000000 Hack-3.003/build/ttf/ 0000775 0000000 0000000 00000000000 13247374471 0014275 5 ustar 00root root 0000000 0000000 Hack-3.003/build/ttf/Hack-Bold.ttf 0000664 0000000 0000000 00001154274 13247374471 0016556 0 ustar 00root root 0000000 0000000 DSIG Ø´ GSUBs^‡þ Ð| lOS/2-Ù ˜ `TTFAÚxa Óè Ëcmap0Ã
cvt Ï;!r 6ì fpgm6·œ6 (˜
vgasp Ðt glyft`ž QØ pheadÙ¯ 6hheaUF T $hmtxõƒ ø –loca?\\ 7ø àmaxp œ x nameèñe dH !rpost^« …¼ J¸prep`‰ 6 Ü ÅRÌ1•_<õ Ö€ Öâ¤ú5üÙ°Ñ mþ Ñú5ÿ° T w x š ¬ ‹ b
v Ѽ 3Ì ™3Ì Ì f ¥ ï ¸û SRC þÿþšmã Ÿß× `× Ñ h Ñ Ñ Ñ !Ñ !Ñ !Ñ !Ñ !Ñ !Ñ !Ñ Ñ }Ñ Ñ Ñ Ñ Ñ Ñ ‰Ñ Ñ ‰Ñ Ñ ¨Ñ ¨Ñ ¨Ñ ¨Ñ ¨Ñ ¨Ñ ¨Ñ ¨Ñ ¨Ñ ¶Ñ uÑ uÑ uÑ uÑ uÑ ‰Ñ Ñ ¬Ñ ¬Ñ ¬Ñ ¬Ñ ¬Ñ ¬Ñ ¬Ñ ¬Ñ ¬Ñ mÑ uÑ uÑ áÑ áÑ áÑ áÑÿÙÑ VÑ wÑ wÑ wÑ wÑ jÑ wÑ \Ñ \Ñ \Ñ \Ñ \Ñ Ñ \Ñ \ÑÿúÑÿúÑ \Ñ DÑ ¦Ñ ¢Ñ \Ñ …Ñ …Ñ …Ñ …Ñ Ñ Ñ Ñ Ñ Ñ ZÑ ZÑ ZÑ ZÑ jÑ jÑ jÑ jÑ jÑ Ñ jÑ jÑ jÑ jÑ jÑ 9Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ ^Ñ sÑ sÑ sÑ _Ñ _Ñ _Ñ _Ñ _Ñ _Ñ _Ñ _Ñ _Ñ _Ñ Ñ –Ñ ”Ñ ¨Ñ ¨Ñ ¨Ñ ¨Ñ ZÑ bÑ ZÑ ZÑ RÑ RÑ RÑ RÑ RÑ RÑ \Ñ RÑ ¨Ñ RÑ RÑ šÑ bÑ bÑ bÑ bÑ bÑ ¬Ñ Ñ ¸Ñ ¸Ñ ¸Ñ ¸Ñ ¸Ñ ŸÑ ¸Ñ ¬Ñ ¸Ñ ¸Ñ ¸Ñ ªÑ ®Ñ ®Ñ dÑ ZÑ ZÑ šÑ ZÑ %Ñ RÑ ¬Ñ ¬Ñ ¬Ñ ¬Ñ ¬Ñ ¬Ñ bÑ bÑ bÑ bÑ bÑ Ñ bÑ bÑ \Ñ bÑ Ñ Ñ bÑ Ñ –Ñ –Ñ ZÑ ñÑ#Ñ#Ñ üÑ ¬Ñ ¬Ñ ¬Ñ ¬Ñ ¬Ñ Ñ oÑ oÑ oÑ oÑ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ PÑ Ñ Ñ Ñ Ñ Ñ 7Ñ EÑ EÑ EÑ EÑ EÑ ¢Ñ ¢Ñ ¢Ñ ¢Ñ ÑÑ !Ñ ˜Ñ }Ñ ¶Ñ ¶Ñ ÞÑ (Ñ žÑ žÑ žÑ
Ñ }Ñ wÑ wÑ wÑ kÑ kÑ Ñ VÑ ‰Ñ \Ñ ‰Ñ ¢Ñ Ñ ZÑ &Ñ &Ñ Ñ Ñ ]Ñ „Ñ NÑ RÑ ‰Ñ !Ñ ¤Ñ Ñ (Ñ Ñ Ñ Ñ zÑ ÀÑ ¬Ñ ¬Ñ mÑÿÞÑ ÑÿÞÑ Ñ \Ñ WÑ ¢Ñ
Ñ }Ñ uÑ WÑ Ñ ZÑ Ñ Ñ Ñ yÑ ¬Ñ
Ñ uÑ ‰Ñ _Ñ !Ñ !Ñ ¨Ñ \Ñ \Ñ
Ñ }Ñ
Ñ wÑ wÑ \Ñ \Ñ \Ñ ±Ñ Ñ Ñ Ñ [Ñ ¶Ñ (Ñ }Ñ \Ñ Ñ _Ñ UÑ ‹ÑÑÑÑ DÑ \Ñ \Ñ \Ñ Ñ ¥Ñ ˜Ñ ˜Ñ ˜Ñ ®Ñ ®Ñ 'Ñ VÑ ¬Ñ bÑ ¬Ñ –Ñ ”Ñ ¤Ñ EÑ EÑ PÑ 7Ñ €Ñ ¢Ñ NÑ GÑ «Ñ DÑ ÙÑ 2Ñ Ñ Ñ )Ñ ¬Ñ Ñ ÁÑ ¸Ñ ¸Ñ ªÑ (Ñ dÑ #Ñ #Ñ bÑ ¢Ñ ÞÑ Ñ ™Ñ ®Ñ -Ñ ™Ñ ¤Ñ 9Ñ 9Ñ 7Ñ ¬ÑƒÑ Ñ ®Ñ ¬Ñ ‚Ñ _Ñ _Ñ \Ñ fÑ fÑ Ñ ™Ñ nÑ ˜Ñ ˜Ñ bÑ bÑ bÑ ÆÑ ;Ñ ;Ñ ;Ñ {Ñ èÑ Ñ •Ñ ZÑ Ñ bÑ fÑ Ñ Ñ !Ñ \Ñ ®Ñ GÑ bÑ !Ñ !Ñ bÑ MÑ pÑ bÑ +Ñ !Ñ jÑ ™Ñ NÑ #Ñ jÑ @Ñ GÑ !Ñ GÑ !Ñ 2Ñ !Ñ JÑ jÑ MÑ 4Ñ HÑ !Ñ jÑ !Ñ iÑ jÑ 2Ñ pÑ Ñ 3Ñ \Ñ Ñ PÑ •Ñ AÑ gÑ Ñ AÑ ´Ñ •Ñ 6Ñ AÑ §ÑHÑ OÑ bÑ ¦Ñ ¨Ñ ™Ñ gÑ ŠÑ ¦ÑÑ gÑ žÑ ¨Ñ âÑ PÑ ŠÑ uÑ ¦Ñ aÑ QÑ §Ñ uÑ ¼Ñ QÑ AÑ bÑ *Ñ .Ñ bÑ dÑ PÑ Ñ aÑ bÑ bÑ Ñ aÑ bÑ bÑ dÑ aÑ Ñ bÑ aÑ Ñ aÑ Ñ Ñ Ñ bÑ Ñ ^Ñ Ñ bÑ 9Ñ bÑ ^Ñ bÑ aÑ aÑ bÑ cÑ bÑ aÑ aÑ mÑ Ñ MÑ cÑ OÑ Ñ~Ñ {Ñ šÑ sÑ }Ñ fÑ Ñ ƒÑ ‡Ñ Ñ oÑ qÑ /Ñ /Ñ Ñ /Ñ Ñ /Ñ /Ñ /Ñ Ñ #Ñ Ñ9ÑÑÑ aÑ pÑÆÑ Ñ»Ñ|ÑÕÑ éÑ 9Ñ¹Ñ †Ñ¹Ñ Ñ´Ñ åÑ &Ñ °Ñ çÑçÑuÑ qÑ ^Ñ ÑÑ ÑÆÑ éÑ Ñÿ½Ñ¦Ñ/Ñ &Ñ Ñ ¨Ñ ®Ñ XÑ ¨Ñ¹Ñ ®Ñ °Ñ¾Ñ¾Ñ `Ñ æÑÑ ôѦÑ/ѦÑ/ÑÑ™Ñ¾Ñ¾Ñ ðÑ ðÑgÑnÑDÑDÑ ÓÑ ÓÑ ÎÑ ÎÑÉÑÉÑÑ úÑ ÷Ñ Ñ ÿÑ ÿÑ|Ñ ÜÑ Ñ#Ñ Ñ ÝÑ-Ñ-Ñ-Ñ Ñ ÑþÑ –Ñ ˜Ñ –ѰѰѰÑjÑ –Ñ‡Ñ ÌÑ Ñ‡Ñ ÉÑ Ñ)Ñ ýÑRÑRÑ XÑ XÑÑšÑÑ ˆÑÑ CÑ ¼ÑÂÑ-Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ !Ñ Ñ “Ñ YÑ ºÑ ¤Ñ ìÑ Ñ Ñ Ñ nÑ Ñ wÑ Ñ Ñ EÑ 'Ñ Ñ Ñ Ñ Ñ 2Ñ Ñ Ñ Ñ <Ñ ,Ñ Ñ Ñ .Ñ ZÑ gÑ Ñ XÑ XÑ yÑ DÑ Ñ Ñ XÑ BÑÁÑ dÑ @Ñ XÑ XÑ £ÑÿúÑ XÑ XÑ Ñ HÑ CÑåÑ ¶Ñ XÑ XÑ ¶Ñ XÑ ¶Ñ BÑ wÑ dÑ NÑ XÑ XÑ ‘Ñ !Ñ BÑ Ñ BÑ XÑ ˜Ñ XÑ XÑ ±Ñ 1Ñ XÑ XÑ XÑ XÑ dÑ Ñ “Ñ ÑÑÑÑÑÑÑ ZÑ Ñ £Ñ cÑ dÑ cÑ úÑ ˜Ñ XÑÑ 1Ñ 1ÑöÑ ÑÿÖÑ ”ÑÀÑ “Ñ BÑ JÑ /Ñ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ WÑ XÑ XÑ XÑ XÑ XÑ XÑ QÑ QÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ VÑ VÑ XÑ XÑ XÑ XÑ XÑ XÑ WÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ VÑ VÑ XÑ XÑ XÑ XÑ VÑ VÑ XÑ XÑ XÑ XÑ XÑ ZÑ ZÑ XÑ XÑ XÑ XÑ >Ñ >Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ 2Ñ 2Ñ 2Ñ 2Ñ BÑ BÑ BÑ XÑ XÑ XÑ XÑ Ñ ZÑ ZÑ Ñ âÑ XÑÿþÑÿþÑ ZÑ ZÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ XÑ 9ѦÑ/ѦÑ/Ñ èÑ èÑ èÑ éÑÆÑ éÑ èÑ èÑ èÑ èÑÅÑ èÑÜÑ ÑÜÑÜÑ ÑÛÑ ÑåÑ Ñ uÑ uÑ BÑ BÑ PÑ wÑ XÑ XÑ ¶Ñ !Ñ þÑ ¤Ñ BÑ £Ñ þÑ šÑ BÑ šÑ BÑ þÑ Ñ BÑ BÑ BÑ BÑ BÑ BÑ BÑ BÑ BÑ <Ñ JÑ BÑ BÑ þÑ BÑ þÑ BÑ BÑ BÑ þÑ BÑ þÑ þÑ BÑ BÑ BÑ BÑ BÑ BÑ BÑ 9Ñ ¸Ñ šÑ ¸Ñ šÑ ºÑ @Ñ 2Ñ 2Ñ 2Ñ (Ñ ,Ñ 7Ñ 7Ñ BÑ BÑøÑ þÑ BÑ BÑøÑ þÑ BÑ BÑ BÑ Ñ BÑ Ñ BÑ Ñ BÑ þÑ ›Ñ BÑ ›Ñ þÑ }Ñ BÑ }Ñ BÑ þÑ BÑ BÑ BÑ BÑ BÑ BÑ BÑ BÑ þÑ BÑ þÑ ÂÑ BÑ ÂÑ Ñ ÂÑ ÂÑ ÂÑ ÂÑ ÂÑ BÑ ÂÑ BÑ BÑ Ñ BÑ Ñ ’Ñ TÑ tÑ TÑ tÑ .Ñ JÑ TÑ .Ñ 6Ñ TÑ1Ñ ‹Ñ ðÑ1Ñ ‹Ñ TÑ ðÑ TÑ1Ñ `Ñ {Ñ {Ñ 6Ñ 6ÑPÑ 6Ñ eÑ eÑ 6Ñ aÑ ~Ñ UÑ 3Ñ *Ñ ‘Ñ XÑ uÑ TÑ tÑ uÑ +Ñ OÑ 6Ñ Ñ &Ñ &Ñ 2ÑÿœÑÿœÑÿœÑ TÑ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ ÑiÑFÑ ÑiÑ Ñ Ñ Ñ Ñ ÑiÑ Ñ Ñ Ñ Ñ Ñ Ñ ÑÿìÑ Ñ Ñ Ñ Ñ8Ñ8Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ ÑÿìÑÿìÑÿìÑÿìÑ Ñ Ñ7Ñ8Ñ8Ñ7Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ ,Ñ uÑ Ñ ÑDÑ Ñ ÑDÑÑÑÿìÑÿìÑÿìÑÿìÑÿìÑÑÿìÑÿìÑÑÿìÑÿìÑÿìÑÿìÑÿìÑxÑÿìÑÿìÑÿìÑÿìÑÑxÑxÑxÑÿìÑÿìÑxÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑxÑÑÑxÑÿìÑÿìÑ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ ÛÑ ÛÑ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ aÑ aÑ ¯Ñ ¯Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ ÛÑ ÛÑ ÛÑ ÛÑ ÛÑ ÛÑ ÛÑ ÛÑ Ñ Ñ Ñ Ñ Ñ Ñ Ñ ÑÿìÑÈÑ <Ñ <ÑÑÈÑ <Ñ <ÑÑÈÑÑÈÑÈÑÿìÑÿìÑÿìÑÑÈÑÈÑÿìÑÿìÑÿìÑÑÈÑÈÑÈÑÈÑÈÑÈÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑÿìÑ <Ñ <ÑÑÈÑÑÿìÑÿìÑÑÿ©Ñÿ©Ñÿ©ÑÿìÑÑhÑÑÿìÑÈÑhÑÈÑÿìÑÈÑÿìÑÈÑöÑöÑ Ñ %Ñ FÑ Ñ Ñ ªÑ ÑÑ 9Ñ œÑ œ ý ý ûö üµ ü; ü ü\ û/ üH ý ü\ ü{ üX ü ý9 ü û½ üH üH üî ý ý ý ü} ü} üŸ ý ü‚ üÏ ý* ü† üj ü ü‚ ý^ ûÖ ü\ ü¼ ü£ üž üÁ ý9 ü] ü ü ü üH üH ü; ü\ û/ û/ û‡ ûï û/ ûH û) ý* ü] üy ü ü ý û/ þè ú5 üH üH ûž ý ü7 ü\ÑôѰѰÑàÑÚÑÚÑHÑHÑ
Ñ-Ñ
Ñ-Ñ)ÑsћћÑÕÑÑ ðÑoÑ ðÑ-ÑßÑ ÇÑ)Ñ-ѾÑLÑÑÚÑÑ !Ñ-ÑÕÑÑÑ ðÑ ðÑ /Ñ öÑÑßÑ !Ñ }Ñ ¶Ñ ¨Ñ sÑ ‰Ñ
Ñ ¬Ñ uÑ !Ñ VÑ wÑ ‰Ñ \Ñ ‰Ñ ¢Ñ bÑ ZÑ Ñ \Ñ Ñ PÑ ZÑÿ¯Ñþ¡ÑþyÑþµÑÿUÑýèÑÿ‚Ñ ¬Ñ Ñ 6Ñ ƒÑ LÑ bÑ •Ñ ŸÑ ¬Ñ aÑÑ ®Ñ UÑ /Ñ ™Ñ bÑ Ñ –Ñ ¨Ñ NÑ ˆÑ LÑ AÑ HÑ EÑ ;ÑÑÑ µÑ LÑ LÑ LÑ bÑ ;Ñ 6Ñ •Ñ ¬ÑÑ9ÑÑÑ öÑ%ÑÑÑÑÑ /Ñ Ñ ÑÿôÑ /Ñ #Ñ /Ñ /ÑÑ öÑ%ÑÑÑÑÑ ;Ñ ýÑ šÑÿúÑÕÑ µ Ñ ! ” u b ‰ ¬ m ª j ¬ E ¨ R ‡ ƒ á ( Z o ® 6ÿÎ bÿì  u ò F F
/ 9 ~’¡¤°çÿ¹ÁÉÑÝ "#?Xa†ŠŒ”¡©°»¼ÉÎô#:C_cs›¥³»ÄÈÌùVY_‡Š?úü…½óù
' 1 7 : ? I K _ p y ~ Ž ¬ µ ¹!!"!&!Q!_!‰!!¨!®!¸!¹!Ã!Ý!é!ð""" "#"-"="H"_"i""‹"”"—"¤"µ"¸"Æ"Ñ"é"ï####!#®%%%<%O%l%%”%Ÿ%ÿ&j'V'u'”' '¡'¯'¹'¾'Â'Æ'Ü'à'ë'÷)ˆ)˜)ë)û* */*k+
+,}...%..à¢à³þÿÿÿ
0 : ’ ¤¯æþ¹»ÆÌØ
#$Xa„ˆŒŽ•£ª±¼½Êô $;Dbr¢ªºÀÇËÏ1YZa‰?Ðû€¼òø / 2 9 < D K _ p t z Š ·!!"!&!P!S!‰!!ž!©!¯!¹!º!Ä!à!ë!ñ"""#"'"4"A"I"`"m"‚""•"˜"²"¸"Â"Í"Ú"ï#### #›% %%%=%P%m%€%•% &j'V'h'”'˜'¡'¢'±'º'Â'Å'Ü'à'æ'õ)‡)—)ë)ú* */*j++,}..."..à à°þÿÿÿ ÿõ û 9 ¾
\~f^ € ^] _ýõ^ ý¼ üë ý&