├── 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 | 
7 |
8 | Working Example (Linear Interpolation / Rudimentary Interface)
9 | ---
10 | [](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 | 
69 |
70 |
71 | -----------
72 | -----------
73 | -----------
74 |
75 |
76 |
77 | And some more sketches for another interface
78 | ----
79 | Sliders
80 | 
81 |
82 |
83 | This specific example is inspired by Tim Ahrens RMX Scaler:
84 | 
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 | 
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 |
--------------------------------------------------------------------------------