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