Only want to interpolate the x axis

Is it possible to interpolate only the x axis with two masters?

Yes, technically. What result are you trying to achieve?


I want to only interpolate where I put the red arrows

Yes, I understand that, but what do you want to achieve? Do you want this to happen only on export? Or in edit view? What for?

Are you aware of the remix-tools.com?

I’ve slanted a roman and I want to add a bit of weight to the vertical since the slanting makes the vertical a tiny bit thiner.
I want this to happen in the edit view.
I am aware of remix tools but as far as I understand it doesn’t allow different interpolations for x and y axis

It’s not directly possible with a native functionality or existing plugin. In order to achieve the same effect, I would recommend the following workaround:

Use the remix tools to scale horizontally (103% or so). This retains the stem weight. Then scale normally by 97% (100/103, in his example). This will scale the shapes back to their original proportions, but the stems will be slightly thinner.

If you don’t want to use the remix tools, have a look at the interpolationWeightY custom parameter for exports. This way, you’re essentially doing the same as the remix tools (after scaling back).

will try that, thanks you

You can get interpolation by x with a short script like this. Adjust interpolation value and master names, and run on selected glyphs. It’s probably better to use a copy of the italic master as the target.

interpolation = 0.5
targetMaster = 'Normal Bold New'
sourceMaster1 = 'Normal Thin'
sourceMaster2 = 'Normal Bold'

for l in Font.selectedLayers:
	glyph = l.parent
	targetLayer = glyph.layers[targetMaster]
	sourceLayer1 = glyph.layers[sourceMaster1]
	sourceLayer2 = glyph.layers[sourceMaster2]
	if not targetLayer.paths:
		continue

	for path in targetLayer.paths:
		for node in path.nodes:
			indexPath = targetLayer.indexPathOfNode_(node)
			sourceNode1 = sourceLayer1.nodeAtIndexPath_(indexPath)
			sourceNode2 = sourceLayer2.nodeAtIndexPath_(indexPath)

			node.x = (1 - interpolation) * sourceNode1.x + interpolation * sourceNode2.x