I’m writing scripts to set all the sidebearings. With Hebrew it’s mostly straightforeward, I set the sidebearings for letters but not the composites. When the letter (a simple glyph) gets moved the composites also move by themselves.
Now I’m setting the sidebearing for punctuation which has more problems, for instance ‘exclam’ which is a simple glyph and ‘exclamdown’ which is a composite of ‘exclam’. If ‘exclam’ gets moved to the left then the ‘exclamdown’ moves to the right! Is there a way of avoiding this?
Mike
After adjusting the side-bearings for simple glyphs:
- Select all composites,
- Make simple,
- Complete composites without losing your selection
Bhikkhu,
Thanks for your advice. I would like to apply it in a transformation script. Roughly like this:
Select the composites for which I will change sidebearings using GlyphOverride Range.
Make Simple
Change the sidebearings using MetricsLeftSideBearing, OutlinePosition etc
CompleteComposites
However I don’t see a MakeSimple command in the transformations.
Mike
What does “Decompose Composites” do?
I haven’t actually tried it myself.
I tried your suggestion for an example: period & comma (simple) make colon and semicolon (composite)
and then I set the sidebearings. This transformation script seems to work:

This means that ‘Make Simple’ is similar to ‘Decompose Composites’.
Mike
For characters, such as punctuation and a host of symbols like dollar, asterisk etc I’m using a script like the one in my previous post above which first sets all the left side bearings and then a slightly different script sets all the right side bearings.
There are many problems.
Right bearing set relative to old glyph position.
The character slash ($2F) just happened to be shifted a lot to the right of the right hand bearing line.
Run the script. The glyph is moved so that the left bearing space is now correct but the right bearing is moved to be in a place based on the position of the glyph before it was moved, that is the right bearing line is way far the right. After running the transformation script again this problem is corrected.
A similar things happens if I move the slash to the left of where it should be. Run the script and the glyph is moved so the left sidebearing is OK. The right bearing however is set relative to the place were the slash was before it moved!
Broken bar stretched on the Rack
I use bar ($7C) to make broken bar ($A6). Two instances of bar were scaled and shifted.
For both of them, left sidebearing space was 100 on left and 200 on right. After running the script
broken bar has the correct sidebearings but the vertical settings are lost.
The composite broken bar suffers a bug with the top instance of bar jumps up so that its top is at WinAscent and the lower instnce of bar jumps down so that its bottom is touching WinDecent.
Composite rises from the grave.
I use plus ($2B) to make multiply ($D7) by rotating plus by 45 degerees. After running the script the 45 degree rotation is lost. Now for an amazing trick. I corrected multiply by restoring the 45 degree rotation and with only multiply selected I pressed [Make Simple]. A double click on the glyph confirmed it no longer had a composite window and that the nodes defining its shape appeared.
I then ran the script to set the sidebearings and multiply changed into a plus! A double click showed that the composite window had returned but with all default settings (that is no transformations).
Mike
If it is aligning with WinAscent and WinDescent, then that may be something wrong. What it is designed to do is align with TypoAscender and TypoDescender:
<Composite><!-- Broken Bar -->
<GlyphMapping>166</GlyphMapping>
<Member id="1">
<GlyphMapping>124</GlyphMapping>
<UseMetrics>TRUE</UseMetrics>
<YScale>0.43</YScale>
</Member>
<Member id="2">
<GlyphMapping>124</GlyphMapping>
<YScale>0.43</YScale>
</Member>
<AlignVertical>
<Source>
<Position>TypoAscender</Position>
</Source>
<Dest>
<Member>1</Member>
<Position>Top</Position>
</Dest>
</AlignVertical>
<AlignVertical>
<Source>
<Position>TypoDescender</Position>
</Source>
<Dest>
<Member>2</Member>
<Position>Bottom</Position>
</Dest>
</AlignVertical>
</Composite>

Also “By Design”
<Composite><!-- Multiply -->
<GlyphMapping>215</GlyphMapping>
<Member id="1">
<GlyphMapping>43</GlyphMapping>
<UseMetrics>TRUE</UseMetrics>
</Member>
</Composite>
Complete Composites doesn’t rotate the glyph, it just copies the + sign and uses the same metrics. The design of + signs vary, especially for italics. Regular and bold may not have a square aspect ratio, so rotating 45° won’t be right anyway. The font designer should decide what is appropriate for his/her font after using Complete Composites to copy an appropriate glyph and glyph metrics.
