Page 1 of 1
DrawVectorText(), DrawVectorParagraph() is different result
Posted: Wed Mar 07, 2018 11:25 am
by damn
Hi all.
I'm having a trouble on use DrawVectorText() and DrawVectorParagraph() for drawing some text on CanvasGadget. On attached screenshot you can see different quality at result ("Push the button..." and following text paragraph). If use DrawVectorParagraph() - quality is fine, but if use DrawVectorText() - quality is very bad. Text is too smooth and blurred and looking terrible.
Anybody know, how to fix this? I can use only DrawVectorParagraph() for drawing single or multiline strings, but this is bad practics i think.
PB 5.60, Win 10 Pro x64

Re: DrawVectorText(), DrawVectorParagraph() is different res
Posted: Wed Mar 07, 2018 12:17 pm
by damn
Simple code for tests
Code: Select all
EnableExplicit
Enumeration
#window
#canvas
#font
EndEnumeration
Define string.s = "The quick brown fox jumped over the lazy doc"
If OpenWindow(#window, 0, 0, 320, 240, "Test window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(#canvas, 0, 0, 320, 240)
LoadFont(#font, "Consolas", 14)
If StartVectorDrawing(CanvasVectorOutput(#canvas))
VectorFont(FontID(#font), 14)
VectorSourceColor(RGBA(0, 0, 0, 255))
MovePathCursor(5, 5)
DrawVectorText(string.s)
MovePathCursor(5, 30)
DrawVectorParagraph(string.s, 320, 205)
StopVectorDrawing()
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Re: DrawVectorText(), DrawVectorParagraph() is different res
Posted: Wed Mar 07, 2018 12:28 pm
by Phantomas
Windows 7 x64 confirm:

Re: DrawVectorText(), DrawVectorParagraph() is different res
Posted: Wed Mar 07, 2018 12:34 pm
by walbus
Very interesting,
it look, its a additional interpolation
I think, self you can here make nothing
Re: DrawVectorText(), DrawVectorParagraph() is different res
Posted: Wed Mar 07, 2018 4:02 pm
by Demivec
Try adding 0.5 to the test coordinates for DrawVectorText().
Re: DrawVectorText(), DrawVectorParagraph() is different res
Posted: Wed Mar 07, 2018 4:10 pm
by walbus
Yeah, that fixes it....
Re: DrawVectorText(), DrawVectorParagraph() is different res
Posted: Thu Mar 08, 2018 9:28 am
by srod
Not fixed here; Win 7, PB 5.62x64.
Re: DrawVectorText(), DrawVectorParagraph() is different res
Posted: Thu Mar 08, 2018 1:13 pm
by RASHAD
Maybe it is related to ResetCoordinates() bug
http://www.purebasic.fr/english/viewtop ... vector+lib
Try
Code: Select all
ResetCoordinates()
MovePathCursor(5, 5)
DrawVectorText(string.s)
MovePathCursor(5, 30)
DrawVectorParagraph(string.s, 320, 205)
Re: DrawVectorText(), DrawVectorParagraph() is different res
Posted: Thu Mar 08, 2018 1:35 pm
by walbus
I have tested on 561 / 562 Win10 x64
It doesn't matter, it's not okay
Re: DrawVectorText(), DrawVectorParagraph() is different res
Posted: Sun Mar 14, 2021 4:12 pm
by STARGÅTE
I have to push this topic, because similar problems occur in different ways through different operating systems:
There are obvious quality issues under Windows 10 with the DrawVectorText() function.
Further the way how
kerning is used is different in DrawVectorText(), AddPathText() and DrawVectorParagraph() as well as on different operating systems:
Windows 7:
Windows 10:
Ubuntu:
As you can see, kerning is active under Ubuntu for all drawings, kerning is non-active under Windows7 for all drawings, but on Windows 10, kerning is active only in AddPathText().
Further the quality of DrawVectorText() under Windows 10 is worse compared to other OS or other drawing techniques.
It seems like, PureBasic uses in some cases only the default properties for drawings, but I think in some cases PureBasic have to force flags for properties like anti-aliasing, kerning or compositing quality to result in same results in all cases.
Code: Select all
Enumeration
#Window
#Gadget
#Font
EndEnumeration
LoadFont(#Font, "DejaVu Sans", 32, #PB_Font_HighQuality)
OpenWindow(#Window, 0, 0, 1150, 180, "Vector Canvas Gadget", #PB_Window_MaximizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
CanvasGadget(#Gadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window), #PB_Canvas_Keyboard)
If StartVectorDrawing(CanvasVectorOutput(#Gadget))
VectorSourceColor($FF202020)
FillVectorOutput()
VectorSourceColor($FF0080FF)
VectorFont(FontID(#Font), 12)
MovePathCursor(5, 5)
DrawVectorParagraph("DrawVectorText:", 300, 20)
MovePathCursor(5, 60)
DrawVectorParagraph("AddPathText:", 300, 20)
MovePathCursor(5, 115)
DrawVectorParagraph("DrawVectorParagraph:", 300, 20)
VectorSourceColor($FFE0E0E0)
VectorFont(FontID(#Font), 14)
MovePathCursor(20, 20)
DrawVectorText("AVAVAVAVAVAVAV Du kannst den Anzeigebereich mit gedrückter Mittelmaustaste verschieben und mit dem Mausrad den Ausschnitt vergrößern/verkleiner.")
MovePathCursor(20, 40)
DrawVectorText("AAAAAAAVVVVVVV Du kannst den Anzeigebereich mit gedrückter Mittelmaustaste verschieben und mit dem Mausrad den Ausschnitt vergrößern/verkleiner.")
MovePathCursor(20, 75)
AddPathText("AVAVAVAVAVAVAV Du kannst den Anzeigebereich mit gedrückter Mittelmaustaste verschieben und mit dem Mausrad den Ausschnitt vergrößern/verkleiner.")
FillPath()
MovePathCursor(20, 95)
AddPathText("AAAAAAAVVVVVVV Du kannst den Anzeigebereich mit gedrückter Mittelmaustaste verschieben und mit dem Mausrad den Ausschnitt vergrößern/verkleiner.")
FillPath()
MovePathCursor(20, 130)
DrawVectorParagraph("AVAVAVAVAVAVAV Du kannst den Anzeigebereich mit gedrückter Mittelmaustaste verschieben und mit dem Mausrad den Ausschnitt vergrößern/verkleiner.", 1200, 200)
MovePathCursor(20, 150)
DrawVectorParagraph("AAAAAAAVVVVVVV Du kannst den Anzeigebereich mit gedrückter Mittelmaustaste verschieben und mit dem Mausrad den Ausschnitt vergrößern/verkleiner.", 1200, 200)
StopVectorDrawing()
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
End
Re: DrawVectorText(), DrawVectorParagraph() is different result
Posted: Fri Apr 15, 2022 8:25 am
by Rinzwind
Is this getting attention? Guess not, but it should.
Re: DrawVectorText(), DrawVectorParagraph() is different result
Posted: Fri Apr 15, 2022 12:07 pm
by skywalk
Yeah, I just build paragraphs the hard way. This is an old problem.