hahaha ich bin so gut
ich hab es selber rausbekommen ^^
also
zuerst muss man wissen dass 16px = 12pt sind ^^
der webbrowser nimmt das als pt an.
und 16 pt ist größer als 16px ^^
ich hab meine schrift immer auf fsBold
dann muss man wissen, dass Font.Style:=[fsBold]
eine erhebliche verbreiterung der schrift nach sich zieht, wodurch sich meine autowrap funktion dahingehen verändetr hat :
Edit: funktion überarbeitet
Delphi-Quellcode:
procedure TForm1.autowrap(var str:string;maxwidth,fontsize:integer;fontfamiliy:string)
var i,j,linewidth,linecount:integer;
tempstr,wrapstr:string;
font1:TFont;
begin
font1:=TFont.Create;
font1.Size:=fontsize-4; // wichtig
font1.Name:=fontfamiliy;
font1.Style:=[fsBold]; // wichtig FontStyle solltet ihr mit übergeben, ich brauch das nicht ^^
linewidth:=TrueFontWidth(font1,str);
linecount:=linewidth DIV maxwidth;
if (linewidth - maxwidth)>0 then begin
i:=1;
j:=1;
tempstr:=str[1];
wrapstr:=str[1];
repeat
inc(i);
if (str[i]=#13) then
wrapstr:='';
wrapstr:=wrapstr+str[i];
tempstr:=tempstr+str[i];
if (TrueFontWidth(font1,wrapstr)>(maxwidth*j)) then begin
inc(j);
tempstr:=tempstr+' ';
end;
until i>=Length(str);
str:=tempstr;
end;
str:=str+'
';
font1.Free;
end;
diese prozedur funktioniert einwandfrei
danke für eure postings lol