rem: r.corner.x = locPrim.Object.Stamp.origin.x - ((FRAMEPTR)locPrim.Object.Stamp.frame)->HotSpot.x; r.corner.y = locPrim.Object.Stamp.origin.y - ((FRAMEPTR)locPrim.Object.Stamp.frame)->HotSpot.y; r.extent.width = GetFrameWidth (locPrim.Object.Stamp.frame); r.extent.height = GetFrameHeight (locPrim.Object.Stamp.frame); _save_stamp.origin = r.corner; if (BoxIntersect (&r, pClipRect, &r)) { if (FontEffect.Use) { FRAME origFrame = locPrim.Object.Stamp.frame; locPrim.Object.Stamp.frame = Build_Font_Effect( locPrim.Object.Stamp.frame, FontEffect.from, FontEffect.to, FontEffect.type); TFB_Prim_Stamp (&locPrim.Object.Stamp); DestroyDrawable (ReleaseDrawable ( locPrim.Object.Stamp.frame)); locPrim.Object.Stamp.frame = origFrame; } else TFB_Prim_StampFill (&locPrim.Object.Stamp, &color); }  locPrim.Object.Stamp.origin.x += GetFrameWidth ( locPrim.Object.Stamp.frame);
add: locPrim.Object.Stamp.origin.x += GetFrameWidth ( locPrim.Object.Stamp.frame);
context: _text_blt (PRECT pClipRect, PRIMITIVEPTR PrimPtr){	FONTPTR FontPtr;	FontPtr = _CurFontPtr;	if (FontPtr != 0)	{		COUNT num_chars;		wchar_t next_ch;		const unsigned char *pStr;		TEXTPTR TextPtr;		PRIMITIVE locPrim;		TFB_Palette color;		DWORD c32k;		if (FontEffect.Use)			SetPrimType (&locPrim, STAMP_PRIM);		else			SetPrimType (&locPrim, STAMPFILL_PRIM);		c32k = _get_context_fg_color () >> 8;		color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8);		color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8);		color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8);		TextPtr = &PrimPtr->Object.Text;		locPrim.Object.Stamp.origin.x = _save_stamp.origin.x;		locPrim.Object.Stamp.origin.y = TextPtr->baseline.y;		num_chars = TextPtr->CharCount;		pStr = TextPtr->pStr;		next_ch = getCharFromString (&pStr);		if (next_ch == '\0')			num_chars = 0;		while (num_chars--)		{			wchar_t ch;			ch = next_ch;			next_ch = getCharFromString (&pStr);			if (next_ch == '\0')				num_chars = 0;			locPrim.Object.Stamp.frame = getCharFrame (FontPtr, ch);			if (locPrim.Object.Stamp.frame != NULL &&					GetFrameWidth (locPrim.Object.Stamp.frame))			{				RECT r;				r.corner.x = locPrim.Object.Stamp.origin.x						- ((FRAMEPTR)locPrim.Object.Stamp.frame)->HotSpot.x;				r.corner.y = locPrim.Object.Stamp.origin.y						- ((FRAMEPTR)locPrim.Object.Stamp.frame)->HotSpot.y;				r.extent.width = GetFrameWidth (locPrim.Object.Stamp.frame);				r.extent.height = GetFrameHeight (locPrim.Object.Stamp.frame);				_save_stamp.origin = r.corner;				if (BoxIntersect (&r, pClipRect, &r))				{					if (FontEffect.Use)					{						FRAME origFrame = locPrim.Object.Stamp.frame;						locPrim.Object.Stamp.frame = Build_Font_Effect(								locPrim.Object.Stamp.frame, FontEffect.from,								FontEffect.to, FontEffect.type);						TFB_Prim_Stamp (&locPrim.Object.Stamp);						DestroyDrawable (ReleaseDrawable (								locPrim.Object.Stamp.frame));						locPrim.Object.Stamp.frame = origFrame;					}					else						TFB_Prim_StampFill (&locPrim.Object.Stamp, &color);				}				locPrim.Object.Stamp.origin.x += GetFrameWidth (						locPrim.Object.Stamp.frame);#if 0				if (num_chars && next_ch < (UNICODE) MAX_CHARS						&& !(FontPtr->KernTab[ch]						& (FontPtr->KernTab[next_ch] >> 2)))					locPrim.Object.Stamp.origin.x -= FontPtr->KernAmount;#endif			}		}	}}