Actually it is possible to ensure the baselines of fields are consistent across 
platforms without having to use conditionals.

From experimentation it appears that the baseline is given (relative to the top 
of the field) by 

                        the top margin - 3*fontAscent/4 -1

 where the fontAscent is  item 2 of  measureText(text,fld,”bounds”) (note this 
is a negative number; in macOS it is the traditional font ascent, in Windows I 
think it is the traditional font top )

Since the bottom margin is ignored in this placement, we can force the baseline 
to be at the bottom margin as follows:

put the margins of fld  “foo" into tMargins
put item 4 of tMargins into tBottomMargin
put measuretext(fld “foo",fld “foo",bounds) into tFontInfo
put 1 + the height of fld “foo” - tBottomMargin + round(3*(item 2 of 
tFontInfo)/4) into tTopMargin
put tTopMargin into item 2 of tMargins
set the margins of fld “foo" to tMargins

The pixel length of text however cannot be made consistent across platforms, 
and one can only allow some extra padding to make sure the text appears 
unmangled.  My very limited experiments with just the fonts NotoSans and 
NotoSerif at textSize 13 and  the text “A standard label:” indicate that
    Mac Monterey and Windows 10 : text widths are the same
    Mac High Sierra : about 8% longer
    Linux Ubuntu: about 15% longer (!!)

Other fonts differ more widely between platforms and system versions (perhaps 
most weirdly 13pt Times on the Mac looks like 9pt)

Neville Smythe




_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to