public virtual void ApplyLayoutingInfo()
{
// if we need additional space in the preBeat group we simply
// add a new spacer
_preBeatGlyphs.Width = LayoutingInfo.PreBeatSize;
// on beat glyphs we apply the glyph spacing
var voiceEnd = 0f;
foreach (var voice in _voiceContainers)
{
var c = _voiceContainers[voice];
c.X = _preBeatGlyphs.X + _preBeatGlyphs.Width;
c.ApplyLayoutingInfo(LayoutingInfo);
var newEnd = c.X + c.Width;
if (voiceEnd < newEnd)
{
voiceEnd = newEnd;
}
}
// on the post glyphs we add the spacing before all other glyphs
_postBeatGlyphs.X = voiceEnd;
_postBeatGlyphs.Width = LayoutingInfo.PostBeatSize;
Width = _postBeatGlyphs.X + _postBeatGlyphs.Width;
}