gitextract_ga8pht78/ ├── .coldtype.win.py ├── .gitignore ├── .python-version ├── CHANGELOG.md ├── LICENSE ├── README_EXTRAS.md ├── assets/ │ ├── .gitignore │ ├── ColdtypeObviously.designspace │ ├── ColdtypeObviously_BlackItalic.ufo/ │ │ ├── fontinfo.plist │ │ ├── glyphs/ │ │ │ ├── C_.glif │ │ │ ├── D_.glif │ │ │ ├── E_.glif │ │ │ ├── L_.glif │ │ │ ├── O_.glif │ │ │ ├── P_.glif │ │ │ ├── T_.glif │ │ │ ├── Y_.glif │ │ │ ├── contents.plist │ │ │ ├── layerinfo.plist │ │ │ └── space.glif │ │ ├── groups.plist │ │ ├── layercontents.plist │ │ ├── lib.plist │ │ └── metainfo.plist │ ├── ColdtypeObviously_CompressedBlackItalic.otf │ ├── ColdtypeObviously_CompressedBlackItalic.ufo/ │ │ ├── fontinfo.plist │ │ ├── glyphs/ │ │ │ ├── C_.glif │ │ │ ├── D_.glif │ │ │ ├── E_.glif │ │ │ ├── L_.glif │ │ │ ├── O_.glif │ │ │ ├── P_.glif │ │ │ ├── T_.glif │ │ │ ├── Y_.glif │ │ │ ├── contents.plist │ │ │ ├── layerinfo.plist │ │ │ └── space.glif │ │ ├── groups.plist │ │ ├── layercontents.plist │ │ ├── lib.plist │ │ └── metainfo.plist │ ├── README.md │ ├── logos.ufo/ │ │ ├── fontinfo.plist │ │ ├── glyphs/ │ │ │ ├── contents.plist │ │ │ ├── goodhertz_logo_2019.glif │ │ │ └── layerinfo.plist │ │ ├── glyphs.background/ │ │ │ ├── contents.plist │ │ │ └── layerinfo.plist │ │ ├── layercontents.plist │ │ ├── lib.plist │ │ └── metainfo.plist │ └── noto.py ├── buildenv ├── docs/ │ ├── .gitignore │ └── tutorials/ │ ├── midi.rst │ └── type_design.rst ├── examples/ │ ├── .gitignore │ ├── alphabet.py │ ├── animations/ │ │ ├── 808.py │ │ ├── _audio.py │ │ ├── _drumsolo.py │ │ ├── _simple.py │ │ ├── access_frame.py │ │ ├── adsr.py │ │ ├── adsr_ascii.py │ │ ├── alphabet.py │ │ ├── alternate_glyphs.py │ │ ├── ascii_choreography.py │ │ ├── ascii_keyframe_positions.py │ │ ├── ascii_keyframes.py │ │ ├── ascii_keyframes2.py │ │ ├── ascii_keyframes_entrance.py │ │ ├── ascii_pixels.py │ │ ├── ascii_simple.py │ │ ├── ascii_twostep.py │ │ ├── ascii_words.py │ │ ├── avoidance.py │ │ ├── banner.py │ │ ├── bitmap_font.py │ │ ├── blendmode.py │ │ ├── bounce.py │ │ ├── colrv1_foldit.py │ │ ├── colrv1_nabla.py │ │ ├── countdown.py │ │ ├── custom_ease.py │ │ ├── custom_output.py │ │ ├── delay.py │ │ ├── drumsolo2.py │ │ ├── dswatch.py │ │ ├── dvd.py │ │ ├── ec.py │ │ ├── flyin.py │ │ ├── glyphwise.py │ │ ├── glyphwise2_rtl.py │ │ ├── glyphwise_keyframes.py │ │ ├── glyphwise_wave.py │ │ ├── glyphwise_wave2.py │ │ ├── house.py │ │ ├── interpolate_roughen.py │ │ ├── ipa_vowels.py │ │ ├── ives.py │ │ ├── letters_easing.py │ │ ├── linewise.py │ │ ├── midi_cc.py │ │ ├── moire1.py │ │ ├── officehours.py │ │ ├── original_demo.py │ │ ├── penangle.py │ │ ├── physics2d.py │ │ ├── pixels.py │ │ ├── pseudomorph.py │ │ ├── recursive_shape.py │ │ ├── recursive_text.py │ │ ├── retails/ │ │ │ ├── casual.py │ │ │ ├── chopper.py │ │ │ ├── colorfont.py │ │ │ ├── digestive_snake.py │ │ │ ├── digestive_wind.py │ │ │ ├── gridsystems.py │ │ │ ├── hansjorg.py │ │ │ ├── montreuil.py │ │ │ ├── stacked_and_justified.py │ │ │ ├── vulfbach.py │ │ │ ├── wavinghand.py │ │ │ └── welcome.py │ │ ├── rgbsplit.py │ │ ├── roundandround.py │ │ ├── separation.py │ │ ├── simple_recording.json │ │ ├── simplevarfont.py │ │ ├── slicer.py │ │ ├── sonification.py │ │ ├── spreadstack.py │ │ ├── superoutline.py │ │ ├── tapered_shadow.py │ │ ├── texttopoints.py │ │ ├── transparent_gifski.py │ │ ├── transparent_understroke.py │ │ ├── truchet.py │ │ ├── truchet3.py │ │ ├── twister.py │ │ ├── ulrich_e.py │ │ ├── versioned.py │ │ ├── versioned_with_sidecar.py │ │ ├── versioned_with_sidecar_versions.py │ │ ├── vertical_scale.py │ │ ├── warpblur.py │ │ └── wheee.py │ ├── apkjr.py │ ├── apng.py │ ├── axidraw/ │ │ ├── hatching.py │ │ ├── nextdraw.py │ │ ├── sheet.py │ │ └── sheet_read.py │ ├── bg_fn.py │ ├── bg_img.py │ ├── blender/ │ │ ├── arch.py │ │ ├── array_separate.py │ │ ├── bauhaus_book_14.py │ │ ├── boston.py │ │ ├── direct_objects.py │ │ ├── displace.py │ │ ├── dof.py │ │ ├── dominos.py │ │ ├── dominos2.py │ │ ├── dominos3.py │ │ ├── hobeauxborders.py │ │ ├── ifg.py │ │ ├── img.py │ │ ├── liveimage.py │ │ ├── noordzijcube.py │ │ ├── parched.py │ │ ├── physics_direct.py │ │ ├── physics_upright.py │ │ ├── reprojection.py │ │ ├── rome.py │ │ ├── rome_preview.py │ │ ├── rotating.py │ │ ├── sequence.py │ │ ├── sequence_text3d.py │ │ ├── sequence_text3d_rich.py │ │ ├── simple_single.py │ │ ├── simplebeat.py │ │ ├── timedtext.py │ │ ├── varfont.py │ │ ├── varfont2.py │ │ └── wip/ │ │ ├── bake.py │ │ ├── blends/ │ │ │ └── boston.blend.json │ │ ├── boston.py │ │ ├── bump.py │ │ ├── physics.py │ │ ├── physics_semi2d.py │ │ ├── physics_visible.py │ │ └── timed3d.py │ ├── blog.py │ ├── borders.py │ ├── chessboard.py │ ├── circle_text.py │ ├── colrv1_arabic.py │ ├── cropandrepeat.py │ ├── custom_hotkey.py │ ├── diagram.py │ ├── direct_uharfbuzz.py │ ├── drawbot/ │ │ ├── both.py │ │ ├── composition.py │ │ ├── pdfdoc.py │ │ ├── pixellation.py │ │ └── varfont.py │ ├── easing.py │ ├── example.py │ ├── freeze.py │ ├── github_social.py │ ├── grid_shapes.py │ ├── image_in_path.py │ ├── image_rotate.py │ ├── image_rotated_quality.py │ ├── instancer.py │ ├── interpolated_spiral.py │ ├── interrupted_lines.py │ ├── layers.py │ ├── letter_lighttrail.py │ ├── linealigning.py │ ├── linebreaking.py │ ├── logo.py │ ├── logo_state.json │ ├── metaprogramming.py │ ├── mirror.py │ ├── misc/ │ │ └── no_command_line.py │ ├── opentypesvgimagefont.py │ ├── potracer.py │ ├── printer.py │ ├── random_shape.py │ ├── restmake.py │ ├── richtext.py │ ├── rounded_corners.py │ ├── scaffold.py │ ├── scripts/ │ │ ├── player.py │ │ ├── prores.py │ │ ├── prores_to_frames.py │ │ └── symbolfinder.py │ ├── shapes.py │ ├── simple.py │ ├── simplest.py │ ├── sites/ │ │ ├── .gitignore │ │ ├── blog.coldtype.xyz/ │ │ │ ├── .gitignore │ │ │ ├── assets/ │ │ │ │ └── style.css │ │ │ ├── blog.coldtype.xyz.py │ │ │ ├── pages/ │ │ │ │ └── posts/ │ │ │ │ ├── a-blog.ipynb │ │ │ │ ├── transparent-unclickable.ipynb │ │ │ │ └── truchet-experiments.ipynb │ │ │ └── templates/ │ │ │ ├── _footer.j2 │ │ │ ├── _header.j2 │ │ │ ├── _post.j2 │ │ │ └── index.j2 │ │ ├── coldtype.goodhertz.com/ │ │ │ ├── assets/ │ │ │ │ └── style.css │ │ │ ├── coldtype.goodhertz.com.py │ │ │ ├── pages/ │ │ │ │ ├── about.ipynb │ │ │ │ ├── cheatsheets/ │ │ │ │ │ ├── easing.md │ │ │ │ │ ├── oneletter.md │ │ │ │ │ ├── rectangles.ipynb │ │ │ │ │ ├── text.ipynb │ │ │ │ │ └── viewer.md │ │ │ │ ├── classes_functions.ipynb │ │ │ │ ├── install.ipynb │ │ │ │ ├── introduction.ipynb │ │ │ │ ├── overview.ipynb │ │ │ │ └── tutorials/ │ │ │ │ ├── animation.ipynb │ │ │ │ ├── blender.ipynb │ │ │ │ ├── drawbot.ipynb │ │ │ │ ├── geometry.ipynb │ │ │ │ ├── shapes.ipynb │ │ │ │ └── text.ipynb │ │ │ └── templates/ │ │ │ ├── _docs.j2 │ │ │ ├── _footer.j2 │ │ │ ├── _header.j2 │ │ │ ├── _page.j2 │ │ │ ├── index.j2 │ │ │ └── partials/ │ │ │ └── sidebar.j2 │ │ ├── coldtype.p5js/ │ │ │ ├── assets/ │ │ │ │ ├── hb.wasm │ │ │ │ ├── hbjs.js │ │ │ │ └── script.js │ │ │ └── coldtype.p5js.py │ │ ├── coldtype.xyz/ │ │ │ └── coldtype.xyz.py │ │ ├── portfolio/ │ │ │ ├── assets/ │ │ │ │ └── style.css │ │ │ ├── build.py │ │ │ ├── pages/ │ │ │ │ ├── about.md │ │ │ │ └── posts/ │ │ │ │ └── example.md │ │ │ └── templates/ │ │ │ ├── _footer.j2 │ │ │ ├── _header.j2 │ │ │ ├── _page.j2 │ │ │ ├── _post.j2 │ │ │ └── index.j2 │ │ └── skeleton/ │ │ └── skeleton.py │ ├── skia_direct.py │ ├── skia_paragraph.py │ ├── skia_shader.py │ ├── skia_shader.sksl │ ├── skia_shader2.py │ ├── skia_shader_clouds.sksl │ ├── snakes.py │ ├── spacing_clusters.py │ ├── src_macro.py │ ├── stacking.py │ ├── svg_viewer.py │ ├── transparency.py │ ├── transparent_understroke.py │ ├── ufo.py │ ├── vector_pixels.py │ └── wip/ │ ├── capture.py │ ├── displace_map.py │ ├── drawbot_image.py │ ├── google_font.py │ ├── toggle.py │ └── ui.py ├── packages/ │ ├── coldtype/ │ │ ├── README.md │ │ └── pyproject.toml │ └── coldtype-core/ │ ├── MANIFEST.in │ ├── README.md │ ├── pyproject.toml │ └── src/ │ └── coldtype/ │ ├── __init__.py │ ├── __main__.py │ ├── assets/ │ │ └── glyphNamesToUnicode.txt │ ├── axidraw.py │ ├── beziers.py │ ├── blender/ │ │ ├── __init__.py │ │ ├── fluent.py │ │ ├── livepreview.py │ │ ├── panel3d.py │ │ ├── render.py │ │ ├── timedtext.py │ │ ├── util.py │ │ └── watch.py │ ├── capture/ │ │ └── __init__.py │ ├── color/ │ │ ├── __init__.py │ │ └── html.py │ ├── css.py │ ├── demo/ │ │ ├── blank.py │ │ ├── boiler.py │ │ ├── boiler_renderable.py │ │ ├── demo.py │ │ ├── demoblender.py │ │ ├── docstrings.py │ │ ├── gifski.py │ │ └── glfw34.py │ ├── drawbot.py │ ├── fx/ │ │ ├── chainable.py │ │ ├── diagram.py │ │ ├── motion.py │ │ ├── shapes.py │ │ ├── skia.py │ │ ├── warping.py │ │ └── xray.py │ ├── geometry/ │ │ ├── __init__.py │ │ ├── atom.py │ │ ├── curve.py │ │ ├── edge.py │ │ ├── geometrical.py │ │ ├── line.py │ │ ├── point.py │ │ ├── primitives.py │ │ └── rect.py │ ├── grid/ │ │ └── __init__.py │ ├── helpers.py │ ├── img/ │ │ ├── abstract.py │ │ ├── blendmode.py │ │ ├── drawbotimage.py │ │ ├── skiaimage.py │ │ └── skiasvg.py │ ├── interpolation/ │ │ └── __init__.py │ ├── midi/ │ │ └── controllers.py │ ├── notebook/ │ │ ├── __init__.py │ │ └── parser.py │ ├── osutil.py │ ├── pens/ │ │ ├── axidrawpen.py │ │ ├── blenderpen.py │ │ ├── drawablepen.py │ │ ├── drawbotpen.py │ │ ├── jsonpen.py │ │ ├── misc.py │ │ ├── outlinepen.py │ │ ├── rendererdrawbotpen.py │ │ ├── reportlabpen.py │ │ ├── skiapathpen.py │ │ ├── skiapen.py │ │ ├── svgpen.py │ │ └── translationpen.py │ ├── physics/ │ │ └── pymunk.py │ ├── random.py │ ├── raster.py │ ├── renderable/ │ │ ├── __init__.py │ │ ├── animation.py │ │ ├── renderable.py │ │ ├── tools.py │ │ └── ui.py │ ├── renderer/ │ │ ├── __init__.py │ │ ├── config.py │ │ ├── keyboard.py │ │ ├── reader.py │ │ ├── state.py │ │ ├── ui.py │ │ ├── utils.py │ │ └── winman/ │ │ ├── __init__.py │ │ ├── audio.py │ │ ├── blender.py │ │ ├── glfwskia.py │ │ ├── midi.py │ │ └── passthrough.py │ ├── runon/ │ │ ├── __init__.py │ │ ├── _path.py │ │ ├── mixins/ │ │ │ ├── DrawingMixin.py │ │ │ ├── FXMixin.py │ │ │ ├── GeometryMixin.py │ │ │ ├── GlyphMixin.py │ │ │ ├── LayoutMixin.py │ │ │ ├── PathopsMixin.py │ │ │ ├── SegmentingMixin.py │ │ │ ├── SerializationMixin.py │ │ │ ├── SonificationMixin.py │ │ │ └── StylingMixin.py │ │ ├── path.py │ │ ├── runon.py │ │ └── scaffold.py │ ├── skiashim.py │ ├── test.py │ ├── text/ │ │ ├── __init__.py │ │ ├── colr/ │ │ │ ├── brsurface.py │ │ │ └── skia.py │ │ ├── composer.py │ │ ├── font.py │ │ ├── reader.py │ │ ├── richtext.py │ │ └── shaper.py │ ├── timing/ │ │ ├── __init__.py │ │ ├── audio.py │ │ ├── clip.py │ │ ├── easing.py │ │ ├── midi.py │ │ ├── nle/ │ │ │ ├── .gitignore │ │ │ ├── ableton.py │ │ │ ├── ascii.py │ │ │ └── premiere.py │ │ ├── sequence.py │ │ ├── timeable.py │ │ ├── timeline.py │ │ └── viewer.py │ ├── tool.py │ ├── tools/ │ │ ├── chars.py │ │ ├── dsview.py │ │ ├── find.py │ │ ├── findappicon.py │ │ ├── glyphloop.py │ │ ├── glyphs.py │ │ ├── instances.py │ │ ├── midi.py │ │ ├── midicc.py │ │ ├── vf.py │ │ └── viewseq.py │ ├── warping.py │ └── web/ │ ├── fonts.py │ ├── page.py │ ├── server.py │ ├── site.py │ └── templates/ │ ├── notebook.j2 │ └── page.j2 ├── pyproject.toml ├── release.sh ├── run_tests.sh ├── scripts/ │ ├── inline_mixins.py │ ├── keyboard_layout_converter.py │ └── robofont_coldtype.py ├── test/ │ ├── drawbot/ │ │ ├── db_cli.py │ │ ├── direct_import.py │ │ └── style_test.py │ ├── source_file.py │ ├── source_file_adjacent.py │ ├── source_file_with_config.py │ ├── test_geometry.py │ ├── test_helpers.py │ ├── test_p.py │ ├── test_pens.py │ ├── test_pens_rendered.py │ ├── test_runon.py │ ├── test_syntax_mods.py │ ├── test_time.py │ └── visuals/ │ ├── .gitignore │ ├── test_color_palette.py │ ├── test_gs.py │ ├── test_image_font.py │ ├── test_midi_ctrl.py │ └── test_reader_mod.py ├── tests/ │ ├── _img_only.py │ ├── test_color.py │ ├── test_drawbot.py │ ├── test_fonts.py │ ├── test_fx.py │ ├── test_glyphwise.py │ ├── test_i18n.py │ ├── test_pens.py │ ├── test_reader.py │ ├── test_rect.py │ ├── test_richtext.py │ ├── test_scaffold.py │ ├── test_src_macro.py │ ├── test_text.py │ ├── test_versions.py │ └── test_versions_versions.py └── upload_docs.sh