Align baselines of 2 fields
Niggemann, Bernd
Bernd.Niggemann at uni-wh.de
Thu Jun 21 14:00:50 EDT 2018
Hi Marty,
depending how liberal you are in letting users choose fonts and sizes you might get "unexpected" results by aligning to field 1
try this stress test
---------------------------------
on mouseUp
lock screen
set the textfont of field 1 to any line of the fontNames
set the textfont of field 2 to any line of the fontNames
set the textSize of field 1 to random(20) + 10
set the textSize of field 2 to random(20) + 10
-- put the textFont of field 1 into field "Font1"
-- put the textFont of field 2 into field "Font2"
unlock screen
end mouseUp
---------------------------------
then align via your script
Your layout can start "moving"
Additionally not all fonts report proper ascents and descents
Kind regards
Bernd
> Marty wrote:
> This works for me, assuming you want to leave field 1 where it is and align field 2:
>
> on alignFieldBaselines pField1, pField2
> local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef
> local fFormattedBottom1, fFormattedBottom2
>
> put item 4 of the formattedRect of line 1 of fld pField1 into fFormattedBottom1
> put item 4 of the formattedRect of line 1 of fld pField2 into fFormattedBottom2
>
> put item 4 of measureText(line 1 of fld pField1, fld pField1 ,"bounds") into tDescent1
> put item 4 measureText(line 1 of fld pField2, fld pField2 ,"bounds") into tDescent2
>
> put the bottom of fld pField1 into tBot1
> put the bottom of fld pField2 into tBot2
>
> put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1
> put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2
>
> put the bottom of fld pField1 -(tDiff1 - tDiff2) into tRef
>
> set the bottom of fld pField2 to tRef
> end alignFieldBaselines
More information about the use-livecode
mailing list