Nach sehr vielen Jahren der Abstinenz wollte ich ein neues Projekt starten.
Sehr positiv überrascht bin ich über die Vector-Funktionalität gestolpert, die früher noch nicht vorhanden war.
Abgesehen davon, dass die Dokumentation hierzu relativ dürftig ist und einen Einstieg nicht gerade einfach macht, habe ich einige Dinge mit Trial and Error dann auch selbst rausbekommen.
Für mein Projekt ist es nötig, dass ich einen ttf-Font nachlade. Jedoch egal welchen Font ich per ttf-Datei nachlade, VectorFont möchte damit nicht zurecht etwas anfangen wollen.
Ich habe es mit vielen verschiedenen Fonts getestet. Standard-Systemfonts, die man nicht nachladen muss und viele extern nachzuladende. Es ist immer das gleiche Resultat.
VectorFont zeichnet keine einzige Schrift, außer Fonts die schon im System installiert sind.
Zum Vergleich wird exakt der selbe Font mit DrawingFont und DrawText wiederum ohne Probleme dargestellt.
PS: Auch VectorTextWidth und VectorTextHeight resultieren im Wert 0 oder Null (wird von mir im eigentlichen Projekt verwendet)
Hier jetzt ein Beispielcode, der den Fehler aufzeigen soll:
(Bei RegisterFontFile und LoadFont natürlich einen entsprechenden Font eintragen, der nicht im System installiert ist)
Code: Alles auswählen
Procedure CreateNormalImage(image, font)
CreateImage(image, 175, 30)
If StartDrawing(ImageOutput(image))
DrawingFont(FontID(font))
Box(0, 0, 175, 30, RGB(255,255,255))
DrawText(0, 0, "Testtext 12345678", RGB(0,0,0), RGB(255,255,255))
StopDrawing()
EndIf
EndProcedure
Procedure createVectorImage(image, font)
CreateImage(image, 175, 30)
If StartVectorDrawing(ImageVectorOutput(image, #PB_Unit_Pixel))
AddPathBox(0, 0, 175, 30)
VectorSourceColor(RGBA(255, 255, 255, 255))
FillPath()
VectorFont(FontID(font), 16)
MovePathCursor(0, 0)
VectorSourceColor(RGBA(0, 0, 0, 255))
DrawVectorText("Testtext 12345678")
StopVectorDrawing()
EndIf
EndProcedure
LoadFont(1, "Arial", 16)
If RegisterFontFile("Attentica 4F UltraLight.ttf")
LoadFont(2, "Attentica 4F UltraLight", 16)
Debug "Laden des Font geglückt"
Else
LoadFont(2, "Calibri", 16)
Debug "Laden des Font gescheitert"
EndIf
CreateNormalImage(1, 1)
createVectorImage(2, 1)
CreateNormalImage(3, 2)
createVectorImage(4, 2)
OpenWindow(0, 0, 0, 250, 250, "Test")
For i = 1 To 4
ImageGadget(i, 0, i * 40, 175, 30, ImageID(i))
Next i
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
Mein System läuft auf Win10 x64
An den Compiler-Einstellungen habe ich nichts verändert, hier ist "Moderne Themen-Unterstützung aktivieren" als einziges abgehakt.
Auch mit zusätzlichen Subsystemen habe ich noch nichts zu tun.
Jetzt bin ich mal gespannt, ob diese Verhalten bei anderen auch auftaucht und/oder ich zu dusselig bin und hier etwas nicht bedacht habe.