├── .gitignore ├── README.md ├── Resources ├── mathShape.js ├── snap.svg.js ├── styles.css └── template.html ├── ResponsiveLettering.glyphsPlugin └── Contents │ ├── Info.plist │ ├── MacOS │ ├── plugin │ └── python │ ├── PkgInfo │ └── Resources │ ├── __boot__.py │ ├── __error__.sh │ ├── mathShape │ ├── __init__.py │ ├── cmd_exportCurrentFont.py │ ├── cmd_prepareNewShape.py │ ├── cmd_scalePastedSVGs.py │ ├── cmd_validateMathShape.py │ ├── exportTools.py │ ├── makePage.py │ └── mathImageSVGPathPen.py │ ├── plugin.py │ ├── resources │ ├── mathShape.js │ ├── placeholder_ms │ │ ├── files.json │ │ ├── narrow-bold.svg │ │ ├── narrow-thin.svg │ │ ├── wide-bold.svg │ │ └── wide-thin.svg │ ├── styles.css │ └── template.html │ └── site.py ├── ResponsiveLettering.roboFontExt ├── Icon ├── info.plist ├── lib │ └── mathShape │ │ ├── __init__.py │ │ ├── cmd_exportCurrentFont.py │ │ ├── cmd_exportVariableFont.py │ │ ├── cmd_prepareNewShape.py │ │ ├── cmd_scalePastedSVGs.py │ │ ├── cmd_validateMathShape.py │ │ ├── exportTools.py │ │ ├── makePage.py │ │ └── mathImageSVGPathPen.py └── resources │ ├── mathShape.js │ ├── placeholder_ms │ ├── files.json │ ├── narrow-bold.svg │ ├── narrow-thin.svg │ ├── wide-bold.svg │ └── wide-thin.svg │ ├── styles.css │ └── template.html ├── RoboFontMathShapeExporter_screen.gif ├── buildExtension.py ├── lib └── mathShape │ ├── __init__.py │ ├── cmd_exportCurrentFont.py │ ├── cmd_exportVariableFont.py │ ├── cmd_prepareNewShape.py │ ├── cmd_scalePastedSVGs.py │ ├── cmd_validateMathShape.py │ ├── exportTools.py │ ├── makePage.py │ └── mathImageSVGPathPen.py ├── peace.png ├── responsiveLettering_screen.jpg └── www ├── example ├── 00_Hnib_original_scan.jpg ├── 01_initial_digitisation_in_robofont_Hnib.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── H_.glif │ │ ├── I_.glif │ │ └── contents.plist │ ├── lib.plist │ └── metainfo.plist ├── 02_template_with_glyphs.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── contents.plist │ │ ├── narrow-bold.glif │ │ ├── narrow-thin.glif │ │ ├── wide-bold.glif │ │ └── wide-thin.glif │ ├── lib.plist │ └── metainfo.plist ├── 02_template_with_glyphs_preview.html ├── 03_more_variations.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── contents.plist │ │ ├── narrow-bold.glif │ │ ├── narrow-thin.glif │ │ ├── wide-bold.glif │ │ └── wide-thin.glif │ ├── lib.plist │ └── metainfo.plist ├── 03_more_variations_preview.html ├── 04_new_version_in_responsive_lettering_template.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── contents.plist │ │ ├── narrow-bold.glif │ │ ├── narrow-thin.glif │ │ ├── wide-bold.glif │ │ └── wide-thin.glif │ ├── lib.plist │ └── metainfo.plist ├── contourordernarrow.jpg ├── contourorderwide.jpg ├── fontwindow.jpg ├── newtemplate.jpg ├── paste.jpg ├── readme.html ├── readme.md ├── readme.pdf ├── responsivedialog.jpg └── spacecenter.jpg ├── example_ms ├── files.json ├── narrow-bold.svg ├── narrow-thin.svg ├── wide-bold.svg └── wide-thin.svg ├── img ├── basicUFO.jpg ├── example.jpg ├── excellence.jpg ├── mathShape.jpg └── peace.jpg ├── index.html ├── introduction.html ├── mathShape.js ├── snap.svg.js ├── styles.css └── template_ms ├── files.json ├── narrow-bold.svg ├── narrow-thin.svg ├── wide-bold.svg └── wide-thin.svg /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | *.pyc 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # responsiveLettering 2 | 3 |  4 | 5 | Responsive lettering: scalable, interpolating vector shapes that can make themselves fit in a range of rectangles. 6 | 7 | * More examples here. 8 | * An introduction of the parts is here. 9 | 10 | The python code consists of a couple of scripts to generate the SVG needed for responsive lettering. These are also included in the RoboFontExtension. All scripts are for RoboFont. 11 | 12 | The www/ folder contains a working example. As it is loading .js and .json files it might be necessary to serve the files from a real server. When everything works it should look something like this. 13 | 14 | The www code depends on 15 | 16 | * jQuery, but probably not a very specific version 17 | * snap.js, a very handy library for manipulating SVG data. 18 | 19 | All the vector data comes from json, so in theory it might be possible to rewrite all this without snap.js. 20 | 21 | ## Robofont extension 22 | 23 |  24 | 25 | The RoboFont extension is a useful tool for previewing and exporting vector work in a UFO to mathshape data. It can also be installed director from RoboFontMechanic. 26 | 27 | ## Export to Designspace 28 | 29 |  30 | Version 1.7 introduces a simple export to [designspace](https://github.com/LettError/designSpaceDocument) with separate master UFOs, which is useful if you want to generate a variable font from the data using [Batch](https://github.com/typemytype/batchRoboFontExtension). The exporter makes some assumptions about the glyph names in the source file. These are valid glyphnames (depending on the model): 31 | 32 | * narrow-thin 33 | * wide-thin 34 | * medium-thin 35 | * narrow-bold 36 | * wide-bold 37 | 38 | The script checks the `font.lib entry` at `com.letterror.mathshape.designspace` for information about the designspace topology. If you worked from a template generated with this extension then the settings are probably right. If there is no entry in the lib the script assumes a twobytwo designspace. 39 | 40 | * `twobytwo`: two axes, four masters 41 | * `twobyone`: one axis, two masters 42 | * `threebyone`: one axis, three masters 43 | 44 | ## Credits 45 | 46 | Ideas and code very much in debt to Jeremie Hornus, Nina Stössinger, Andrew Johnson, Onur Yazıcıgil, and Nick Sherman. 47 | 48 | ## License 49 | 50 | The Responsive Lettering package is published under the [BSD-3 license](http://opensource.org/licenses/BSD-3-Clause). 51 | -------------------------------------------------------------------------------- /Resources/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: "Verdana"; 3 | font-size: 10pt; 4 | color: orange; 5 | margin: 0; 6 | padding: 0; 7 | background-color: black; 8 | } 9 | h1{ 10 | font-family: "LTRCondensedNo3-Grade2"; 11 | font-size: 40pt; 12 | margin-bottom: 10pt; 13 | margin-top: 2pt; 14 | font-weight: normal; 15 | } 16 | h2{ 17 | font-family: "LTRCondensedNo1-Grade2"; 18 | font-size: 30pt; 19 | margin-bottom: 5pt; 20 | font-weight: normal; 21 | } 22 | .value{ 23 | color:white; 24 | } 25 | 26 | #svgcontainer{ 27 | padding: 0; 28 | margin:0; 29 | height: 100vh; 30 | background-color: none; 31 | margin: auto; 32 | } 33 | 34 | 35 | /*show or hide the reporter*/ 36 | .hideReporter{ 37 | display: hidden; 38 | } 39 | #heyheyhey{ 40 | display: block; 41 | position: fixed; 42 | top: 0; 43 | width: 50vw; 44 | z-index: 1000; 45 | margin-left: 50%; 46 | font-size: 1em; 47 | color: white; 48 | background-color: rgba(100, 100, 100, 0.8); 49 | } 50 | .control{ 51 | position: fixed; 52 | top: 0; 53 | left: 0; 54 | color: white; 55 | padding: 10px; 56 | background-color:black; 57 | } 58 | #outline ul{ 59 | display: table; 60 | } 61 | .cmd { 62 | display: table-row; 63 | } 64 | p.comment{ 65 | color: white; 66 | z-index: 1000; 67 | } -------------------------------------------------------------------------------- /Resources/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
89 | Responsive lettering: scalable, interpolating vector shapes that can make themselves fit in a range of rectangles. More examples here.
90 |
91 | Ideas and code very much in debt to Jeremie Hornus, Nina Stössinger, Andrew Johnson, Onur Yazıcıgil, and Nick Sherman. Find all the code on Github.. Introduction here
92 |
93 |
94 |
95 | Depends on Snap.svg and jQuery. November 2015.
96 |