Actually, you “COULD” use verse buttons which by default have Clip To Bounds for the text. Although the text WILL scroll so it won’t replace the text with eg. Mineb… but rather show Mineb and slowly scroll through the entire name.
Here’s the code from the screenshot, you can Change the X value in ?Size to make it longer or shorter. I would recommend when Applying the UI to make sure input mode is set to None just to be sure players won’t try to click the button
AtM<localizes>(Agent:agent):message="{Agent}"
TestDevice:=class(creative_device):
OnBegin<override>()<suspends>:void=
if(Player:=GetPlayspace().GetPlayers()[0],PlayerUI:=GetPlayerUI[Player]):
Canvas:=canvas:
Slots:=array. canvas_slot:
Anchors:=anchors{Minimum:=vector2{X:=0.5,Y:=0.5},Maximum:=vector2{X:=0.5,Y:=0.5}}
Widget:=canvas:
Slots:= array:
MakeCanvasSlot(button_quiet{DefaultText:=AtM(Player)},vector2{},?Size:=vector2{X:=150.0,Y:=50.0})
PlayerUI.AddWidget(Canvas)```