Font, DrawText, "wahre" Breite ermitteln
Verfasst: 08.04.2010 00:11
Tachchen,
Wie ihr sicherlich wisst gibt TextWidth() einem die Breite des Textes zurück, den er "in einem anderen Text" einnehmen würde.
Bei den meisten Fonts erhält man so auch die genaue Breite des Textes.
Nun gibt es aber Fonts bzw Zeichen, die weniger Platz im Text einnehmen, als sie in wirklichkeit groß sind:
Klassisches Beispiel: das "f" bei Times New Roman (Kursiv):
Wie man sieht wird der "Fuß" und der "Kopf" links bzw rechts abgeschnitten, bzw nicht mit berücksichtig,
weil eben diese Stellen in einem ganzen Wort schon in nächsten Zeichen wären.
Nun brauch ich aber genau diese Überbreite,
Kann man die irgendwie über API herausbekommen, mit der FontID
Wie ihr sicherlich wisst gibt TextWidth() einem die Breite des Textes zurück, den er "in einem anderen Text" einnehmen würde.
Bei den meisten Fonts erhält man so auch die genaue Breite des Textes.
Nun gibt es aber Fonts bzw Zeichen, die weniger Platz im Text einnehmen, als sie in wirklichkeit groß sind:
Klassisches Beispiel: das "f" bei Times New Roman (Kursiv):
Code: Alles auswählen
Enumeration
#Window : #Gadget : #Image
EndEnumeration
Global Font = FontID(LoadFont(#PB_Any, "Times New Roman", 32, #PB_Font_Italic))
CreateImage(#Image, 256, 256)
StartDrawing(ImageOutput(#Image))
DrawingFont(Font)
DrawingMode(#PB_2DDrawing_Transparent)
Box(10, 10, TextWidth("f"), TextHeight("f"), $808080)
DrawText(10, 10, "f", $FFFFFF)
Box(10, 110, TextWidth(" f "), TextHeight(" f "), $808080)
DrawText(10, 110, " f ", $FFFFFF)
StopDrawing()
SetClipboardImage(#Image)
OpenWindow(#Window, 0, 0, ImageWidth(#Image), ImageHeight(#Image), "Image", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
ImageGadget(#Gadget, 0, 0, ImageWidth(#Image), ImageHeight(#Image), ImageID(#Image))
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
weil eben diese Stellen in einem ganzen Wort schon in nächsten Zeichen wären.
Nun brauch ich aber genau diese Überbreite,
Kann man die irgendwie über API herausbekommen, mit der FontID