├── vimeo_screenshot.png ├── InterpolationInterface_01.png ├── InterpolationInterface_02.png ├── Interpolation-Root-Method_Visualisation.png ├── Interpolation-Root-Method_Visualisation-extended.png ├── Interpolation-Root-Method_Slider-Interface-Sketch.png ├── Interpolation-Root-Method_Multiverse-Structure-Interface.png ├── xmultiplemastersinterpolation.py └── README.md /vimeo_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manuel87/TypeMultiverse/HEAD/vimeo_screenshot.png -------------------------------------------------------------------------------- /InterpolationInterface_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manuel87/TypeMultiverse/HEAD/InterpolationInterface_01.png -------------------------------------------------------------------------------- /InterpolationInterface_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manuel87/TypeMultiverse/HEAD/InterpolationInterface_02.png -------------------------------------------------------------------------------- /Interpolation-Root-Method_Visualisation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manuel87/TypeMultiverse/HEAD/Interpolation-Root-Method_Visualisation.png -------------------------------------------------------------------------------- /Interpolation-Root-Method_Visualisation-extended.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manuel87/TypeMultiverse/HEAD/Interpolation-Root-Method_Visualisation-extended.png -------------------------------------------------------------------------------- /Interpolation-Root-Method_Slider-Interface-Sketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manuel87/TypeMultiverse/HEAD/Interpolation-Root-Method_Slider-Interface-Sketch.png -------------------------------------------------------------------------------- /Interpolation-Root-Method_Multiverse-Structure-Interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Manuel87/TypeMultiverse/HEAD/Interpolation-Root-Method_Multiverse-Structure-Interface.png -------------------------------------------------------------------------------- /xmultiplemastersinterpolation.py: -------------------------------------------------------------------------------- 1 | #Interplolating x Masters 2 | 3 | # 1 2 3 4 5 6 7 4 | #interpol = [0.4, 0.0, 0.0, 0.0, 0.0, 1.0, 5.0] #set 1 5 | #interpol = [0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0] #set 2 6 | interpol = [0.0, 1.8, 0.5, 1.0, -0.3, 0.0, 0.0] #set 3 7 | 8 | #editing instance 9 | i = Font.instances[0] 10 | 11 | 12 | interpol_sum = 0 13 | Masters = Font.masters 14 | i.setManualInterpolation_(True) 15 | 16 | 17 | #calc interpol_sum 18 | for k in range(0, len(interpol), 1): 19 | interpol_sum += interpol[k] 20 | 21 | 22 | #apply 23 | for k in range(0, len(interpol), 1): 24 | #convert values so its sum equals 1.0 25 | interpol[k] = interpol[k] / interpol_sum 26 | #apply to instance 27 | i.instanceInterpolations()[Masters[k].id] = interpol[k] 28 | 29 | #new distribution 30 | print i.instanceInterpolations() -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Multiverse Type Design Space (parametrical) Interpolation Interface 2 | =========== 3 | This is a proposal extending the well known Noordzij Cube (with three dimensions) to an infinite number of dimensions, while still being able to handle it. :) 4 | 5 | This visualisation shows an example with about 16 dimensions/axes 6 | ![Multiverse Root-Method Interpolation Interface](Interpolation-Root-Method_Multiverse-Structure-Interface.png) 7 | 8 | Working Example (Linear Interpolation / Rudimentary Interface) 9 | --- 10 | [![Working Example Vimeo Screenshot](vimeo_screenshot.png)](https://vimeo.com/118806744) 11 | https://vimeo.com/118806744 12 | 13 | Each Point represents either a … 14 | --- 15 | • Master (editable/already edited Instance, any other/extern compatible design …)
16 | • Instance (a possiblity represented by any point in the design-space multiverse ;)
17 | • Parameter/Effect/Filter/Algorithm (a designed and engineered formal modifcation, using data from the Masters/Instances + other (user) inputs. (e.g. Path-Offset,Slant, Cursivy, box-shadow, Tension, RMX-Tools, …) 18 | 19 | 20 | The main Root-Point represents a user defined default setup, which can be either a Master or an Instance. All other Points in the system are reffering to the Root-Point. This not only makes it much easier to grasp, suddenly the actual calculations e.g. for an interpolation are getting much easier. (ToDo: adding an calculation example) 21 | 22 | 23 | The actual technique is irrelevant! It could be … 24 | ---- 25 | • Standard linear vector calculation (Interpolation)
26 | (restrictions like actual rotation of forms,… are made quite clear here: http://partners.adobe.com/public/developer/en/font/5091.Design_MM_Fonts.pdf (p.12-17)
27 | • Elaborated vector calculation, only eliminating the interpolation restrictions (not seen yet … e.g. adding a visual interpolation path similar to animation paths in aftereffects…)
28 | • Kalliculator calculations
29 | • Metafont calculations (Metapolation)
30 | • Prototypo calculations
31 | • Font Chamelion calculations :)
32 | • …
33 | • A combination of all :D (is Metapolator actually trying that?)
34 | • Or just sketching it, using beziers or a penci!, etc.
35 | 36 | No matter what input/output format (open/proprietary): Postscript Type 1, MM, …, OTF, …, UFO3, Glyphs, VFB, Metafont, Prototypo,Knoths Typy, …) — sure, the more it offers the better… 37 | 38 | 39 | Math for Interpolation 40 | --- 41 | The Basic Math of an Interpolation looks like that: 42 | 43 | I = M1·a + M2·b + M3·c .. n·M[N]
44 | and the sum of all the factors (a, b, c .. n) equals 100%. 45 | 46 | The above description is from: https://github.com/metapolator/metapolator/wiki/metapolation#the-math 47 | 48 | ----- 49 | And here an example to extend that a bit: 50 | 51 | Actually the math for an ›root interpolation‹ is not any different from an basic interpolation between only two masters:
52 | I = M1·0% + M2·100% (basic) = M1·100%-100% + M2·100% = M1·a-b + M2·b (M1 = root)
53 | 54 | or three/more:
55 | I = M1·a-b-c-… + M2·b + M3·c + …
56 | if b and c is set to 100%, M2 and M3 will get applied in full extend 57 | at least if you think of M2 and M3 as changes made to M1. 58 | 59 | So you only add the changes rather than adding or averaging everything. 60 | And the 100% rule for the factors isn’t touched by that. 61 | 62 | 63 | 64 | ------- 65 | 66 | 67 | A more basic visualisation:
68 | ![Interpolation Interface](Interpolation-Root-Method_Visualisation.png) 69 | 70 | 71 | ----------- 72 | ----------- 73 | ----------- 74 | 75 | 76 | 77 | And some more sketches for another interface 78 | ---- 79 | Sliders
80 | ![Interpolation Interface](Interpolation-Root-Method_Slider-Interface-Sketch.png) 81 | 82 | 83 | This specific example is inspired by Tim Ahrens RMX Scaler:
84 | ![Interpolation Interface](InterpolationInterface_02.png) 85 | 86 | 87 | 88 | Less suitable interpolation technique 89 | ---- 90 | This Example uses a more basic interpolation method/calculation (no Root-Method), wich makes it quite complicated if you have more than three masters:
91 | ![Interpolation Interface](InterpolationInterface_01.png)
92 | The script doing the calculation you find in this repository. (for Glyphs) 93 | (even though simple ›parameters‹ as spacing, kerning, x-Interpolation, y-Interpolation wouldn’t be that hard… this is not implemented there) 94 | 95 | // TODO: upload another script with the ›root-method‹ 96 | 97 | 98 | 99 | # License 100 | 101 | The content of this project is licensed under the CC BY 4.0 – So feel free to implement it anywhere!

Type Design Multiverse by Manuel von Gebhardi is licensed under a Creative Commons Attribution 4.0 International License. 102 | --------------------------------------------------------------------------------