inline void draw_glyph_text(const graphics_context& aGraphicsContext, const point& aPoint, Iter aTextBegin, Iter aTextEnd, const font& aFont, const colour& aColour)
	{
		{
			graphics_context::glyph_drawing gd(aGraphicsContext);
			point pos = aPoint;
			for (Iter i = aTextBegin; i != aTextEnd; ++i)
			{
				aGraphicsContext.draw_glyph(pos + i->offset(), *i, aFont, aColour);
				pos.x += i->advance().cx;
			}
		}
		point pos = aPoint;
		for (Iter i = aTextBegin; i != aTextEnd; ++i)
		{
			if (i->underline() || (aGraphicsContext.mnemonics_shown() && i->mnemonic()))
				aGraphicsContext.draw_glyph_underline(pos, *i, aFont, aColour);
			pos.x += i->advance().cx;
		}
	}