Imagine a button gadget with a locked width. Then the user changes the text to something longer than the button is wide. How do I clip the text off at the end of the button (inner width)? So it doesn't keep printing past the gadget.

IGraphics->Text() would be great if it printed by PIXEL length instead of CHARACTERS length.

My box is not static,though. The width/height can change with window resizing.

Normal clipping routines of layers.library should do. See http://wiki.amigaos.net/wiki/Graphics_Regions

Here is an exampe: http://thomas-rapp.homepage.t-online.de/examples/scalespace.c
It hides the region creation and the necessary handling of Begin/EndRefresh in two support functions set_clip_region resp. remove_clip_region.

At first I thought you was printng text from a button until i stopped making sense. ;-)

Graphics is a touch low level. I would have expected there to be Reaction functions for this built in. But you could also try Intution functions since this is in the BOOPSI domain. Such as PrintIText(). But it may have the same problems.