A module for working with the rules for placing anchors in a font. The rule describes the position of one or several anchors at once. Several rules can be applied to one glyph at once. The rules are stored in a separate text file, for example anchors-list.txt
@Label1=Anchor:Alignment:VertPosition
@Label2=..
# a comment
GlyphName=@Label1,@Label2,..
@Label=Anchor:Alignment:VertPosition, ...
@Label - the name of the rule label, always starting with @
Anchor - the name of the anchor, in names to indicate anchors in accents you must use the _ sign
Alignment - horizontal alignment of the anchor.
If a numeric value is specified, this will be the horizontal position of the anchor.
left/center/right - anchor position on the left/right border of the glyph (glyph.bounds) or in the middle of the glyph glyph.width/2;
centerpos - in the middle glyph.bounds
leftinter/rightinter - position is calculated by intersection with the glyph outline at the height specified after $.. (intersection)
VertPosition - anchor height. Numeric value, or the height of the glyph indicated by $..
after $GlyphName you can write the fractional value of the anchor height using the * sign
1/2 - in the middle in height,
1/3 - in the first lower third of the height,
2/3 - in the upper third of the height
For example:
@bar=bar:center:$H*2/3 - @bar label, bar anchor, aligned to the center of the character width, height - 2/3 of the H glyph height
@back=back:left:700 - @back label, back anchor, on the left border of the glyph, at height 700
If the glyph name ends with _ the height is calculated by its lower bound glyph.bounds, can be used for multi-story accents
Example:
@_grave=_grave:center:$gravecomb_
the _grave anchor will be centered, but at the height of the bottom border of the gravecomb glyph
One rule can have several anchors; they are listed with a comma
@=top:center:700,bottom:center:0
If there are alternatives in the font, they can be indicated via a label
@SFXLIST=alt,alt01
in this case, alternatives with suffixes *.alt, *.alt01 will be found for all glyphs listed in the file and the same anchor rules will be applied as for the base character