├── DesignspaceEditor2.roboFontExt
├── lib
│ ├── designspaceEditor
│ │ ├── parsers
│ │ │ ├── __init__.py
│ │ │ ├── testParser.py
│ │ │ ├── glyphNameParser.py
│ │ │ ├── mapParser.py
│ │ │ ├── parserTools.py
│ │ │ ├── rulesParser.py
│ │ │ ├── variableFontsParser.py
│ │ │ └── labelsParser.py
│ │ ├── __init__.py
│ │ ├── designspaceLexer.py
│ │ ├── designspaceSubscribers.py
│ │ ├── tools.py
│ │ └── locationPreview.py
│ ├── newDesignspaceEditor.py
│ ├── openDesignspaceEditor.py
│ ├── main.py
│ └── install.py
├── html
│ ├── previewWindow.jpg
│ ├── sparse_master.png
│ ├── previewWindow_options2.png
│ ├── questionmark.circle2x.png
│ ├── square.and.arrow.down2x.png
│ ├── chart.bar.doc.horizontal2x.png
│ ├── toolbar_500_500_icon_axes.png
│ ├── toolbar_500_500_icon_notes.png
│ ├── toolbar_500_500_icon_rules.png
│ ├── toolbar_500_500_icon_save.png
│ ├── toolbar_500_500_icon_problems.png
│ ├── toolbar_500_500_icon_settings.png
│ ├── toolbar_500_500_icon_sources.png
│ ├── screenshot_mutatorsans_axestab.jpg
│ ├── screenshot_mutatorsans_axestab.png
│ ├── screenshot_mutatorsans_rulestab.jpg
│ ├── toolbar_500_500_icon_instances.png
│ ├── screenshot_mutatorsans_problemstab.jpg
│ ├── screenshot_mutatorsans_sourcestab.jpg
│ ├── toolbar_500_500_icon_notifications.png
│ ├── screenshot_mutatorsans_instancestab.png
│ ├── screenshot_mutatorsans_previewwindow1.jpg
│ ├── toolbar_500_500_icon_location_labels.png
│ ├── toolbar_500_500_icon_variable_fonts.png
│ ├── screenshot_mutatorsans_variablefontstab.jpg
│ ├── toolbar_25_25_info.circle.fill.svg
│ └── styles.css
├── resources
│ ├── toolbar_30_30_atom.pdf
│ ├── toolbar_30_30_icon_axes.pdf
│ ├── toolbar_30_30_icon_notes.pdf
│ ├── toolbar_30_30_icon_rules.pdf
│ ├── toolbar_30_30_icon_problems.pdf
│ ├── toolbar_30_30_icon_sources.pdf
│ ├── toolbar_30_30_icon_instances.pdf
│ ├── toolbar_30_30_wand.and.stars.pdf
│ ├── toolbar_30_30_icon_notifications.pdf
│ ├── toolbar_30_30_icon_variablefonts.pdf
│ ├── toolbar_30_30_mappin.and.ellipse.pdf
│ ├── toolbar_30_30_icon_location_labels.pdf
│ ├── toolbar_30_30_icon_variable_fonts.pdf
│ ├── toolbar_30_30_questionmark.circle.pdf
│ ├── toolbar_30_30_square.and.arrow.down.pdf
│ ├── toolbar_30_30_chart.bar.doc.horizontal.pdf
│ ├── toolbar_30_30_smallcircle.filled.circle.pdf
│ ├── toolbar_30_30_smallcircle.filled.circle.fill.pdf
│ └── toolbar_30_30_arrow.right.filled.filter.arrow.right_arrow.right.filled.filter.arrow.right.pdf
└── info.plist
├── icons
├── toolbar_30_30_atom.pdf
├── toolbar_1000_1000_icon_axes.png
├── toolbar_30_30_info.circle.pdf
├── toolbar_500_500_info.circle.png
├── toolbar_1000_1000_icon_notes.png
├── toolbar_1000_1000_icon_rules.png
├── toolbar_1000_1000_info.circle.pdf
├── toolbar_30_30_wand.and.stars.pdf
├── all_icons_1000_1000_dse2_preview.pdf
├── toolbar_1000_1000_icon_instances.png
├── toolbar_1000_1000_icon_problems.png
├── toolbar_1000_1000_icon_sources.png
├── toolbar_30_30_info.bubble.fill.pdf
├── toolbar_30_30_info.circle.fill.pdf
├── toolbar_500_500_info.bubble.fill.png
├── toolbar_500_500_info.circle.fill.png
├── toolbar_1000_1000_info.bubble.fill.pdf
├── toolbar_1000_1000_info.circle.fill.pdf
├── toolbar_30_30_questionmark.circle.pdf
├── toolbar_1000_1000_icon_notifications.png
├── toolbar_1000_1000_icon_variable_fonts.png
├── toolbar_1000_1000_questionmark.circle.pdf
├── toolbar_30_30_square.and.arrow.down.pdf
├── toolbar_500_500_questionmark.circle.png
├── toolbar_500_500_square.and.arrow.down.png
├── toolbar_1000_1000_icon_location_labels.png
├── toolbar_1000_1000_square.and.arrow.down.pdf
├── toolbar_1000_1000_icon_variable_notifications.png
├── toolbar_30_30_arrow.right.filled.filter.arrow.right_arrow.right.filled.filter.arrow.right.pdf
├── export_SF_Symbol.py
├── square.and.arrow.down_square.and.arrow.down.svg
├── info.circle.fill_info.circle.fill.svg
├── info.bubble.fill_info.bubble.fill.svg
├── info.circle_info.circle.svg
├── questionmark.circle_questionmark.circle.svg
├── roundedRect.py
├── wand.and.stars_wand.and.stars.svg
├── makeIcons_dse1.py
└── makeIcons_dse2.py
├── assets
├── designSpaceFileIcon.png
├── toolbar_100_100_icon_axes.png
├── toolbar_100_100_icon_notes.png
├── toolbar_100_100_icon_rules.png
├── toolbar_100_100_icon_save.png
├── toolbar_500_500_icon_axes.png
├── toolbar_500_500_icon_notes.png
├── toolbar_500_500_icon_rules.png
├── toolbar_100_100_icon_sources.png
├── toolbar_100_100_info.circle.png
├── toolbar_500_500_icon_sources.png
├── toolbar_100_100_icon_instances.png
├── toolbar_100_100_icon_problems.png
├── toolbar_100_100_icon_settings.png
├── toolbar_500_500_icon_instances.png
├── toolbar_500_500_icon_problems.png
├── toolbar_100_100_info.bubble.fill.png
├── toolbar_100_100_info.circle.fill.png
├── toolbar_100_100_icon_location_labels.png
├── toolbar_100_100_icon_notifications.png
├── toolbar_100_100_icon_variable_fonts.png
├── toolbar_100_100_questionmark.circle.png
├── toolbar_500_500_icon_location_labels.png
├── toolbar_500_500_icon_notifications.png
├── toolbar_500_500_icon_variable_fonts.png
├── toolbar_100_100_square.and.arrow.down.png
├── toolbar_100_100_icon_variable_notifications.png
├── toolBar_100_100_icon_ chart.bar.doc.horizontal.png
└── info.circle.fill.svg
├── instancestab_mathmodel_dialog.png
├── .gitignore
├── Scripting examples
├── rf_change_previewLocation_of_all_open_designspaces.py
├── rf_getBasicValues.py
├── db_simpleGlyphPreview.py
├── rf_close_all_sources_from_designspace.py
├── db_currentDesignspace.py
├── rf_makeOneKerning.py
├── rf_open_all_sources_from_designspace.py
├── db_werkman.py
├── db_sliders.py
├── db_currentDesignspace_grid.py
└── rf_previewFont_to_spacecenter.py
├── LICENSE
├── .github
└── workflows
│ └── static.yml
├── README.md
└── DSEezui.py
/DesignspaceEditor2.roboFontExt/lib/designspaceEditor/parsers/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/lib/designspaceEditor/__init__.py:
--------------------------------------------------------------------------------
1 | extensionIdentifier = "com.letterror.designspaceEditor"
--------------------------------------------------------------------------------
/icons/toolbar_30_30_atom.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_30_30_atom.pdf
--------------------------------------------------------------------------------
/assets/designSpaceFileIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/designSpaceFileIcon.png
--------------------------------------------------------------------------------
/instancestab_mathmodel_dialog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/instancestab_mathmodel_dialog.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_axes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_axes.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_notes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_notes.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_rules.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_rules.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_save.png
--------------------------------------------------------------------------------
/assets/toolbar_500_500_icon_axes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_500_500_icon_axes.png
--------------------------------------------------------------------------------
/assets/toolbar_500_500_icon_notes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_500_500_icon_notes.png
--------------------------------------------------------------------------------
/assets/toolbar_500_500_icon_rules.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_500_500_icon_rules.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_icon_axes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_icon_axes.png
--------------------------------------------------------------------------------
/icons/toolbar_30_30_info.circle.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_30_30_info.circle.pdf
--------------------------------------------------------------------------------
/icons/toolbar_500_500_info.circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_500_500_info.circle.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_sources.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_sources.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_info.circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_info.circle.png
--------------------------------------------------------------------------------
/assets/toolbar_500_500_icon_sources.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_500_500_icon_sources.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_icon_notes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_icon_notes.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_icon_rules.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_icon_rules.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_info.circle.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_info.circle.pdf
--------------------------------------------------------------------------------
/icons/toolbar_30_30_wand.and.stars.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_30_30_wand.and.stars.pdf
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_instances.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_instances.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_problems.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_problems.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_settings.png
--------------------------------------------------------------------------------
/assets/toolbar_500_500_icon_instances.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_500_500_icon_instances.png
--------------------------------------------------------------------------------
/assets/toolbar_500_500_icon_problems.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_500_500_icon_problems.png
--------------------------------------------------------------------------------
/icons/all_icons_1000_1000_dse2_preview.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/all_icons_1000_1000_dse2_preview.pdf
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_icon_instances.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_icon_instances.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_icon_problems.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_icon_problems.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_icon_sources.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_icon_sources.png
--------------------------------------------------------------------------------
/icons/toolbar_30_30_info.bubble.fill.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_30_30_info.bubble.fill.pdf
--------------------------------------------------------------------------------
/icons/toolbar_30_30_info.circle.fill.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_30_30_info.circle.fill.pdf
--------------------------------------------------------------------------------
/icons/toolbar_500_500_info.bubble.fill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_500_500_info.bubble.fill.png
--------------------------------------------------------------------------------
/icons/toolbar_500_500_info.circle.fill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_500_500_info.circle.fill.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/lib/newDesignspaceEditor.py:
--------------------------------------------------------------------------------
1 | from designspaceEditor.ui import DesignspaceEditorController
2 |
3 | DesignspaceEditorController()
4 |
--------------------------------------------------------------------------------
/assets/toolbar_100_100_info.bubble.fill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_info.bubble.fill.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_info.circle.fill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_info.circle.fill.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_info.bubble.fill.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_info.bubble.fill.pdf
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_info.circle.fill.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_info.circle.fill.pdf
--------------------------------------------------------------------------------
/icons/toolbar_30_30_questionmark.circle.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_30_30_questionmark.circle.pdf
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | test.designspace
2 | build.py
3 | __pycache__
4 | *.pyc
5 | DesignSpaceEditor.roboFontExt/lib/.pytest_cache
6 | issues
7 | .DS_Store
8 | .pytest_cache
9 |
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_location_labels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_location_labels.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_notifications.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_notifications.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_variable_fonts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_variable_fonts.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_questionmark.circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_questionmark.circle.png
--------------------------------------------------------------------------------
/assets/toolbar_500_500_icon_location_labels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_500_500_icon_location_labels.png
--------------------------------------------------------------------------------
/assets/toolbar_500_500_icon_notifications.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_500_500_icon_notifications.png
--------------------------------------------------------------------------------
/assets/toolbar_500_500_icon_variable_fonts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_500_500_icon_variable_fonts.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_icon_notifications.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_icon_notifications.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_icon_variable_fonts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_icon_variable_fonts.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_questionmark.circle.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_questionmark.circle.pdf
--------------------------------------------------------------------------------
/icons/toolbar_30_30_square.and.arrow.down.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_30_30_square.and.arrow.down.pdf
--------------------------------------------------------------------------------
/icons/toolbar_500_500_questionmark.circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_500_500_questionmark.circle.png
--------------------------------------------------------------------------------
/icons/toolbar_500_500_square.and.arrow.down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_500_500_square.and.arrow.down.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_square.and.arrow.down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_square.and.arrow.down.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_icon_location_labels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_icon_location_labels.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_square.and.arrow.down.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_square.and.arrow.down.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/previewWindow.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/previewWindow.jpg
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/sparse_master.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/sparse_master.png
--------------------------------------------------------------------------------
/assets/toolbar_100_100_icon_variable_notifications.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolbar_100_100_icon_variable_notifications.png
--------------------------------------------------------------------------------
/Scripting examples/rf_change_previewLocation_of_all_open_designspaces.py:
--------------------------------------------------------------------------------
1 | for ds in AllDesignspaces():
2 | loc = ds.randomLocation()
3 | print(loc)
4 | ds.setPreviewLocation(loc)
--------------------------------------------------------------------------------
/assets/toolBar_100_100_icon_ chart.bar.doc.horizontal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/assets/toolBar_100_100_icon_ chart.bar.doc.horizontal.png
--------------------------------------------------------------------------------
/icons/toolbar_1000_1000_icon_variable_notifications.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_1000_1000_icon_variable_notifications.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/previewWindow_options2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/previewWindow_options2.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/questionmark.circle2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/questionmark.circle2x.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/square.and.arrow.down2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/square.and.arrow.down2x.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_atom.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_atom.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/chart.bar.doc.horizontal2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/chart.bar.doc.horizontal2x.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_axes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_axes.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_notes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_notes.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_rules.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_rules.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_save.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_problems.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_problems.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_settings.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_sources.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_sources.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_axes.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_axes.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_notes.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_notes.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_rules.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_rules.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_axestab.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_axestab.jpg
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_axestab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_axestab.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_rulestab.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_rulestab.jpg
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_instances.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_instances.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_problems.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_problems.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_sources.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_sources.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_problemstab.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_problemstab.jpg
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_sourcestab.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_sourcestab.jpg
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_notifications.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_notifications.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_instances.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_instances.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_wand.and.stars.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_wand.and.stars.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_instancestab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_instancestab.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_previewwindow1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_previewwindow1.jpg
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_location_labels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_location_labels.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_variable_fonts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/toolbar_500_500_icon_variable_fonts.png
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_notifications.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_notifications.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_variablefonts.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_variablefonts.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_mappin.and.ellipse.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_mappin.and.ellipse.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_variablefontstab.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/html/screenshot_mutatorsans_variablefontstab.jpg
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_location_labels.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_location_labels.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_variable_fonts.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_icon_variable_fonts.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_questionmark.circle.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_questionmark.circle.pdf
--------------------------------------------------------------------------------
/Scripting examples/rf_getBasicValues.py:
--------------------------------------------------------------------------------
1 |
2 | d = CurrentDesignspace()
3 |
4 | # go through all axes and see what we have
5 | for a in d.axes:
6 | print(a)
7 |
8 | # ask for discrete axes specifically
9 | print(d.discreteAxes())
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_square.and.arrow.down.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_square.and.arrow.down.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_chart.bar.doc.horizontal.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_chart.bar.doc.horizontal.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_smallcircle.filled.circle.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_smallcircle.filled.circle.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_smallcircle.filled.circle.fill.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_smallcircle.filled.circle.fill.pdf
--------------------------------------------------------------------------------
/icons/toolbar_30_30_arrow.right.filled.filter.arrow.right_arrow.right.filled.filter.arrow.right.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/icons/toolbar_30_30_arrow.right.filled.filter.arrow.right_arrow.right.filled.filter.arrow.right.pdf
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_arrow.right.filled.filter.arrow.right_arrow.right.filled.filter.arrow.right.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LettError/designSpaceRoboFontExtension/HEAD/DesignspaceEditor2.roboFontExt/resources/toolbar_30_30_arrow.right.filled.filter.arrow.right_arrow.right.filled.filter.arrow.right.pdf
--------------------------------------------------------------------------------
/Scripting examples/db_simpleGlyphPreview.py:
--------------------------------------------------------------------------------
1 | #drawbot
2 | d = CurrentDesignspace()
3 | if d is not None:
4 | previewLoc = d.randomLocation()
5 | d.setPreviewLocation(previewLoc)
6 |
7 | loc = dict(weight=800, width=800)
8 | r = d.makeOneGlyph("R", loc)
9 |
10 | translate(100, 100)
11 | scale(0.8)
12 | drawGlyph(r)
--------------------------------------------------------------------------------
/Scripting examples/rf_close_all_sources_from_designspace.py:
--------------------------------------------------------------------------------
1 |
2 | # save and close all open fonts that belong
3 | # to the current designspace.
4 |
5 | ds = CurrentDesignspace()
6 |
7 | dsFontPaths = [f.path for f, l in ds.getFonts()]
8 |
9 | for f in AllFonts():
10 | if f.path in dsFontPaths:
11 | f.save()
12 | f.close()
--------------------------------------------------------------------------------
/Scripting examples/db_currentDesignspace.py:
--------------------------------------------------------------------------------
1 | #drawbot
2 | size(1000, 600)
3 | d = CurrentDesignspace()
4 | fill(None)
5 | stroke(0)
6 | strokeWidth(.5)
7 | with savedState():
8 | translate(100, 100)
9 | scale(0.5)
10 | for i in range(20):
11 | loc = d.randomLocation()
12 | g = d.makeOneGlyph("A", location=loc)
13 | drawGlyph(g)
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/lib/openDesignspaceEditor.py:
--------------------------------------------------------------------------------
1 | from mojo.UI import GetFile
2 | from designspaceEditor.ui import DesignspaceEditorController
3 |
4 |
5 | paths = GetFile(
6 | message="Open a designspace document:",
7 | allowsMultipleSelection=True,
8 | fileTypes=['designspace'],
9 | )
10 |
11 | if paths:
12 | for path in paths:
13 | DesignspaceEditorController(path)
14 |
--------------------------------------------------------------------------------
/Scripting examples/rf_makeOneKerning.py:
--------------------------------------------------------------------------------
1 | d = CurrentDesignspace()
2 |
3 | #loc = d.newDefaultLocation()
4 | loc = {'width': 140, 'weight': 400}
5 | print(loc)
6 |
7 | pairs = [('T', 'A')]
8 | #pairs = None
9 |
10 | k = d.makeOneKerning(loc, pairs)
11 | k.round()
12 | print(k.items())
13 |
14 | info = d.makeOneInfo(loc)
15 | info.round()
16 | print("info.ascender", info.ascender, "info.descender", info.descender)
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/lib/main.py:
--------------------------------------------------------------------------------
1 |
2 | try:
3 | import install
4 | except ImportError:
5 | # fails cause of the old version is alreayd installed
6 | from mojo.UI import dontShowAgainMessage
7 |
8 | dontShowAgainMessage(
9 | messageText="Designspace editor requires a RoboFont restart.",
10 | informativeText='',
11 | dontShowAgainKey="com.letterror.designspaceEditor"
12 | )
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/lib/designspaceEditor/parsers/testParser.py:
--------------------------------------------------------------------------------
1 |
2 | def run():
3 | import os
4 | import sys
5 | import glob
6 |
7 | import pytest
8 |
9 | root = os.path.dirname(os.path.abspath(__file__))
10 | if root not in sys.path:
11 | sys.path.append(root)
12 | args = [
13 | "--doctest-modules",
14 | ]
15 | args += [file for file in glob.glob(f"{root}/*.py")]
16 | return not bool(pytest.main(args))
17 |
18 |
19 | if __name__ == '__main__':
20 | run()
21 |
--------------------------------------------------------------------------------
/Scripting examples/rf_open_all_sources_from_designspace.py:
--------------------------------------------------------------------------------
1 | # open all the ufos used in the current designspace
2 | # See how DSE2 keeps track of which fonts are open
3 | # and that edits in the fonts are reflected in the previews.
4 | ds = CurrentDesignspace()
5 | done = []
6 |
7 | discreteLocation = {'slab': 0}
8 | discreteLocation = None
9 |
10 | for font, loc in ds.getFonts():
11 | if discreteLocation is not None:
12 | if loc | discreteLocation != loc:
13 | continue
14 | if font.path not in done:
15 | font.asFontParts().openInterface()
16 | # a ufo can appear multiple times in the designspace
17 | # and we don't want to open duplicate font windows
18 | # so, keep track of what fonts we've opened.
19 | done.append(font.path)
20 |
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | addToMenu
6 |
7 |
8 | developer
9 | Letterror
10 | developerURL
11 | https://letterror.com
12 | html
13 |
14 | launchAtStartUp
15 | 1
16 | mainScript
17 | main.py
18 | name
19 | Designspace Editor 2
20 | requiresVersionMajor
21 | 4
22 | requiresVersionMinor
23 | 5b
24 | timeStamp
25 | 1653936779.9141068
26 | version
27 | 2.8.2
28 |
29 |
30 |
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/lib/designspaceEditor/parsers/glyphNameParser.py:
--------------------------------------------------------------------------------
1 | """
2 | # glyphname text spec
3 |
4 | ...
5 | """
6 |
7 |
8 | def parseGlyphNames(text):
9 | return [glyphName.strip() for glyphName in text.split()]
10 |
11 |
12 | def dumpGlyphNames(glyphNames):
13 | return " ".join(glyphNames)
14 |
15 |
16 | # tests
17 |
18 | def test_parseGlyphNames():
19 | text = "a b c agrave \tb.alt ccedilla"
20 | expected = ["a", "b", "c", "agrave", "b.alt", "ccedilla"]
21 | result = parseGlyphNames(text)
22 | assert expected == result
23 |
24 |
25 | def test_dumpGlyphNames():
26 | glyphNames = ["a", "b", "c", "agrave", "b.alt", "ccedilla"]
27 | expected = "a b c agrave b.alt ccedilla"
28 | result = dumpGlyphNames(glyphNames)
29 | assert expected == result
30 |
31 |
32 | if __name__ == '__main__':
33 | import pytest
34 | pytest.main([__file__])
35 |
--------------------------------------------------------------------------------
/Scripting examples/db_werkman.py:
--------------------------------------------------------------------------------
1 | #drawbot
2 |
3 | # choose a random glyph
4 | # and a random designspace location
5 | # and be surprised!
6 |
7 | size(1000, 600)
8 | d = CurrentDesignspace()
9 | fill(.5)
10 | stroke(None)
11 | blendMode("multiply")
12 | names = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "arrowdown", "arrowleft", "arrowright", "arrowup"]
13 |
14 | clr = [(1,0,0), (0,0,1), (1,.9,0)]
15 |
16 | with savedState():
17 | translate(0, 100)
18 | for c in clr:
19 | with savedState():
20 | translate(.5 * width(), 0)
21 | scale(0.5)
22 | fill(*c)
23 | loc = d.randomLocation()
24 | glyphName = choice(names)
25 | g = d.makeOneGlyph(glyphName, decomposeComponents=True, location=loc)
26 | if g is not None:
27 | translate(-.5*g.width,0)
28 | bp = BezierPath()
29 | g.draw(bp)
30 | drawPath(bp)
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 Erik van Blokland
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Scripting examples/db_sliders.py:
--------------------------------------------------------------------------------
1 | # drawbot
2 | ds = CurrentDesignspace()
3 |
4 | settings = [
5 | dict(name="glyphName", ui="EditText", args=dict(text="A"))
6 | ]
7 |
8 | for axis in ds.getOrderedContinuousAxes():
9 | aD_minimum, aD_default, aD_maximum = ds.getAxisExtremes(axis)
10 | settings.append(dict(
11 | name=axis.name,
12 | ui="Slider",
13 | args=dict(
14 | value=aD_default,
15 | minValue=aD_minimum,
16 | maxValue=aD_maximum
17 | )
18 | )
19 | )
20 | for axis in ds.getOrderedDiscreteAxes():
21 | print(axis.name)
22 | settings.append(dict(
23 | name=axis.name,
24 | ui="PopUpButton",
25 | args=dict(
26 | items=[str(v) for v in axis.values],
27 | )
28 | )
29 | )
30 | location = dict()
31 | Variable(settings, location)
32 |
33 | for axis in ds.getOrderedDiscreteAxes():
34 | if axis.name in location:
35 | location[axis.name] = axis.values[location[axis.name]]
36 |
37 | glyphName = location.pop("glyphName")
38 | if glyphName:
39 | result = ds.makeOneGlyph(glyphName=glyphName, location=location)
40 | drawGlyph(result)
--------------------------------------------------------------------------------
/icons/export_SF_Symbol.py:
--------------------------------------------------------------------------------
1 | #for n in installedFonts():
2 | # if "SF" in n:
3 | # print(n)
4 |
5 |
6 | # width and height of the square output document
7 | dim = 275
8 |
9 | names = [
10 | ("", "SFPro-Regular", "info.circle"),
11 | ("", "SFPro-Regular", "square.and.arrow.down"),
12 | ("", "SFPro-Regular", "questionmark.circle"),
13 | ("", "SFPro-Regular", "info.circle.fill"),
14 | ("", "SFPro-Regular", "info.bubble.fill"),
15 | ("", "SFPro-Regular", "wand.and.stars"),
16 | ("", "SFPro-Regular", "arrow.right.filled.filter.arrow.right"),
17 | ("", "SFPro-Regular", "atom"),
18 | ]
19 |
20 | for sym, fontName, symbolName in names:
21 | newDrawing()
22 | newPage(dim,dim)
23 | margin = 54/325 * width()
24 | bp = BezierPath()
25 | fs = FormattedString()
26 | fs.font(fontName)
27 | fs.fontSize(250/275 * width())
28 | fs.append(sym)
29 | bp.text(fs)
30 | xMin, yMin, xMax, yMax = bp.bounds()
31 | w = xMax-xMin
32 | h = yMax-yMin
33 | s = w/(width()-2*margin)
34 | with savedState():
35 | fill(0)
36 | translate(width()*.5, height()*.5)
37 | translate(-xMin, -yMin)
38 | translate(-.5*w, -.5*h)
39 | drawPath(bp)
40 | saveImage(f"{symbolName}_{symbolName}.svg")
41 |
42 |
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/lib/designspaceEditor/designspaceLexer.py:
--------------------------------------------------------------------------------
1 | from pygments.lexer import RegexLexer, include, bygroups
2 | from pygments.lexers.special import TextLexer
3 | from pygments.token import *
4 |
5 |
6 | class DesignspaceLexer(RegexLexer):
7 | name = "Designspace"
8 | aliases = ['designspace']
9 | filenames = ['*.designspace']
10 |
11 | tokens = {
12 | 'root': [
13 | (r'\n', Whitespace),
14 | (r'#.*$', Comment),
15 | (r'[\'|\"].*[\'|\"]', String),
16 | (r'(\?)\s+((?:[a-zA-Z0-9\-]+))\s+', bygroups(Name.Builtin, Name.Variable)),
17 | (r'\((elidable|olderSibling)\)', Name.Variable),
18 | (r'\[([0-9\.]+)\]', Name.Variable),
19 | (r'\>|\?|\-|\*', Name.Builtin),
20 | include('numbers'),
21 | (r'^[^\s].*$', Keyword.Namespace), # Name.Class
22 | (r'(weight|width|italic|optical|slant)\b', Keyword),
23 | (r'[\w\.\*\+\-\:\^\|\~]+', Text),
24 | ],
25 | 'numbers': [
26 | (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?', Number.Float),
27 | (r'\d+[eE][+-]?[0-9]+j?', Number.Float),
28 | (r'0[0-7]+j?', Number.Oct),
29 | (r'0[xX][a-fA-F0-9]+', Number.Hex),
30 | (r'\d+L', Number.Integer.Long),
31 | (r'\d+j?', Number.Integer)
32 | ]
33 | }
34 |
--------------------------------------------------------------------------------
/.github/workflows/static.yml:
--------------------------------------------------------------------------------
1 | # Simple workflow for deploying static content to GitHub Pages
2 | name: Deploy static content to Pages
3 |
4 | on:
5 | # Runs on pushes targeting the default branch
6 | push:
7 | branches: ["master"]
8 |
9 | # Allows you to run this workflow manually from the Actions tab
10 | workflow_dispatch:
11 |
12 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13 | permissions:
14 | contents: read
15 | pages: write
16 | id-token: write
17 |
18 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20 | concurrency:
21 | group: "pages"
22 | cancel-in-progress: false
23 |
24 | jobs:
25 | # Single deploy job since we're just deploying
26 | deploy:
27 | environment:
28 | name: github-pages
29 | url: ${{ steps.deployment.outputs.page_url }}
30 | runs-on: ubuntu-latest
31 | steps:
32 | - name: Checkout
33 | uses: actions/checkout@v3
34 | - name: Setup Pages
35 | uses: actions/configure-pages@v3
36 | - name: Upload artifact
37 | uses: actions/upload-pages-artifact@v3
38 | with:
39 | # Upload entire repository
40 | path: './DesignspaceEditor2.roboFontExt/html'
41 | - name: Deploy to GitHub Pages
42 | id: deployment
43 | uses: actions/deploy-pages@v4
44 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | 
3 |
4 | DesignSpaceEditor2
5 | ==================
6 |
7 | Create and edit designspaces with Robofont 4.5+, with support for scripting.
8 |
9 | ## Documentation
10 |
11 | [DesignspaceEditor2 documentation](https://letterror.github.io/designSpaceRoboFontExtension/) (or click the (?) symbol in the toolbar.)
12 |
13 | ## Goals
14 |
15 | * Open, edit and save existing [designspaces format 5](https://fonttools.readthedocs.io/en/latest/designspaceLib/index.html) files.
16 | * You can create a new designspace and fill it with axes, sources and instances.
17 | * You can edit all sorts of axis labels, location labels and localisations.
18 | * You can quickly open the UFOs listed as sources.
19 | * You can generate UFOs for defined instances.
20 | * You can preview and add instances.
21 | * You can check designspaces and find structural problems and compatibility issues.
22 | * DSE2 collects and sends designspace-related notifications about changes to the designspace, and also changes in the source font data. Other tools in RF can request interpolated glyphs, kerning and font info at specific locations, using MutatorMath as well as Varlib interpolation models.
23 | * You can experiment with *extrapolation* and *anisotropic interpolations* and see previews for such exotic things. *Even if these are not supported as Variable fonts, you can export them as UFO.*
24 | * You can write scripts that use the current designspace.
25 |
26 |
27 |
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/html/toolbar_25_25_info.circle.fill.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/icons/square.and.arrow.down_square.and.arrow.down.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/DesignspaceEditor2.roboFontExt/lib/designspaceEditor/parsers/mapParser.py:
--------------------------------------------------------------------------------
1 | """
2 | # map text spac
3 |
4 | >