Ich habe mit folgender Routine eine Lösung gefunden:

 dim c as Color
 dim i,j,bis as integer
 dim p as Picture
 dim g as Graphics
 dim black as Boolean

 p=NewPicture(500,50,32)
 if p=nil then Return -1
 g=p.Graphics
 g.TextSize=GOriginal.TextSize
 g.TextFont=GOriginal.TextFont
 bis=g.StringWidth(Text)*1.2
 p=NewPicture(bis,30,32)
 if p=nil then Return -1
 g=p.Graphics
 g.TextSize=GOriginal.TextSize
 g.TextFont=GOriginal.TextFont
 g.DrawString(Text,0,25)

 for i =bis-1 downto 1
   for j=1 to 29
     c=g.Pixel(i,j)
     if c<> &cFFFFFF then
       black=true
       Return i+1
     end if
     if black then exit
   next
 next

Für meine Zwecke hat es gereicht und vor allem hat es mir gezeigt,
dass StringWidth identische Werte ermittelt hat.

Im Ergebnis konnte ich dann feststellen, dass bei mir einige Zeilen in
Fett ausgegeben wurden und ich das nicht berücksichtigt hatte.

Nachdem ich nun vor der Ermittlung der Textlänge das Attribut Bold
korrekt setze, passt auch die von RS ermittelte Länge.

Für alle, die dasselbe Problem mit der falschen Länge haben,
empfehle ich eine ähliche Überprüfung.

MfG, Metti.

Antwort per Email an