Is there an inconsistency in the Locate function?
#1
Brick 
The result of running the small snippet of code below confuses me! I would expect Locate to use the first two arguments to set the column and row for text position, 
but it uses the first for the vertical row position, and the second, not as the column but as a number to be determined from the font size. 
I know, I'm easily confused, but can someone explain this to me?

PHP Code:
Screen _NewImage(128096032)
f& = _LoadFont("c:\WINDOWS\Fonts\arial.ttf"28)
_Font f&
 
                                                                                                     
Locate 31, 400
I would expect this to be an invalid horizontal position
Print "This text location is row 31, column 400";
' but it uses the pixel position, and prints it there!
Sleep 
Of all the places on Earth, and all the planets in the Universe, I'd rather live here (Perth, W.A.) Big Grin
Reply
#2
You're not using a monospaced font.  With variable width fonts, locate positions by pixel -- not column.

Add "monospace" to the loadfont statement and see the difference.
Reply
#3
I think I get it. Thanks Steve.
Of all the places on Earth, and all the planets in the Universe, I'd rather live here (Perth, W.A.) Big Grin
Reply
#4
Great Steve, you uniformizes the dimensions of the characters of a font file!

@PhiloFPerth
you can get the reason here in the wiki

Quote:
  • In _NEWIMAGE graphic screen the number of text rows are calculated as _HEIGHT \ 16 except when a _FONT is used. Use _FONTHEIGHT to calculate font rows.
  • _NEWIMAGE graphic screen text columns are calculated as _WIDTH \ 8 except when a _FONT is used. Use _PRINTWIDTH to measure a line of font text.


LOCATE in _Newimage

Good study!
Reply




Users browsing this thread: 1 Guest(s)