Align baselines of 2 fields
Knapp Martin
martyknappster at gmail.com
Thu Jun 21 14:30:22 EDT 2018
Bernd,
I ran this at least 50 times and in the vast majority of cases the baselines align. In a few cases, as Bob noted, it was off by 1 pixel. But that will be OK for my use. I let users pick any font but sizes are limited from 8 to 20.
Thanks you guys. A very resourceful group, as usual!
Marty
> On Jun 21, 2018, at 11:00 AM, Niggemann, Bernd via use-livecode <use-livecode at lists.runrev.com> wrote:
>
> 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
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list