I have a script worked out that seems to print nearly perfectly. Occassionally, the second line of a field will get shifted upwards by 2 pixels, and I am not sure why that happens.
I am sure much tweaking will need to be done to enable this script to apply to all situations. I am posting it here - but I imagine it will get a little garbled by the automatic word-wrap. If anyone would like me to Email it to them directly, just Email me, and I will do so. It would be great if a few others could test this script on their stacks, find bugs, and in general help make it perfect. The basic principle is that it replaces characters in a field for small fields in a group, with a single character in each field. This way, if a character expands during printing, it does not shift around the other characters on that line. ====================================================================== on mouseUp -- 1) create new stack with same properties as the original stack put the properties of this stack into myArray delete variable myArray[Name] Delete variable myArray[ID] Delete variable myArray[visible] put "pr" & the milliseconds into P create invisible stack P set the properties of stack P to myArray -- 2) copy the cards of the original stack to the new stack put the number of cards in this stack into Z repeat with X = 1 to Z copy card X of this stack to stack P end repeat -- 3) For every card in the new stack, replace fields with groups with a separate field for each character put the number of cards in stack p into Z repeat with X = 1 to Z go card X of stack P -- 3.1) create an array with the id of each field on the card put the number of fields in Card X of stack P into ZZ repeat with XX = 1 to ZZ put the id of field XX into FID[XX] end repeat -- 3.2) group/field replacement process repeat with XX = 1 to ZZ -- 3.2.1) if field is owned by a group, create the new group inside the group that owns the field if word 1 of (the long id of the owner of field ID FID[XX]) = "group" then put "PG" & (the milliseconds) & XX into GF create group GF in group id (the id of the owner of field ID FID[XX]) set the relayergroupedcontrols to true set the layer of group GF to (the layer of field ID FID[XX]) + 1 set the relayergroupedcontrols to false -- 3.2.1a) otherwise, just create the new group on the same page as the field else put "PG" & (the milliseconds) & XX into GF create group GF set the layer of group GF to (the layer of field ID FID[XX]) + 1 end if -- 3.2.3) set the rect of the new group to the rect of the original field (minus borderwidth, if the border is visible) put the rect of field ID FID[XX] into FXXR if the showborder of field ID FID[XX] = true then put the borderwidth of field ID FID[XX] into BW add BW to item 1 of FXXR add BW to item 2 of FXXR subtract BW from item 3 of FXXR subtract BW from item 4 of FXXR set the rect of group GF to FXXR else set the rect of group GF to the rect of field ID FID[XX] end if set the locklocation of group GF to true set the margins of group GF to 0 --the margins of field XX --3.3.3) for each character in the original field, create a field that contains that character put the number of characters in field ID FID[XX] into ZZZ repeat with XXX = 1 to ZZZ create field ("C" & GF & XXX) in group GF set the showborder of field ("C" & GF & XXX) to false -- 3.3.3.1) the borderwidth affects the location of a character, but not the formattedrect, so this must be compensated for set the borderwidth of field ("C" & GF & XXX) to the borderwidth of field ID FID[XX] -- 3.3.3.2) the margins are set wide enough to allow for a little expansion room when converted to printer font set the margins of field ("C" & GF & XXX) to 8 set the fixedlineheight of field ("C" & GF & XXX) to false -- 3.3.3.3) the character is put into the new single-character field put character XXX of field ID FID[XX] into field ("C" & GF & XXX) -- 3.3.3.4) the defining information for the field is copied set the textsize of field ("C" & GF & XXX) to the effective textsize of field ID FID[XX] set the textstyle of field ("C" & GF & XXX) to the effective textstyle of field ID FID[XX] set the textfont of field ("C" & GF & XXX) to the effective textfont of field ID FID[XX] set the textcolor of field ("C" & GF & XXX) to the effective textcolor of field ID FID[XX] -- 3.3.3.5) the defining information for the character is copied set the textsize of character 1 of field ("C" & GF & XXX) to the textsize of character XXX of field ID FID[XX] set the textstyle of character 1 of field ("C" & GF & XXX) to the textstyle of character XXX of field ID FID[XX] set the textfont of character 1 of field ("C" & GF & XXX) to the textfont of character XXX of field ID FID[XX] set the textcolor of character 1 of field ("C" & GF & XXX) to the textcolor of character XXX of field ID FID[XX] set the backgroundcolor of character 1 of field ("C" & GF & XXX) to the backgroundcolor of character XXX of field ID FID[XX] -- 3.3.3.6) the new single-character field is made transparent set the opaque of field ("C" & GF & XXX) to false -- 3.3.3.7) the location of the new single-character field is set such that the formattedrect of the copied character is the same as for the original character put the formattedrect of character 1 of field ("C" & GF & XXX) into NFR put the formattedrect of character XXX of field ID FID[XX] into FR put (item 1 of FR) + (the left of field ("C" & GF & XXX)) - (item 1 of NFR) into item 1 of NFR put (item 2 of FR) + (the top of field ("C" & GF & XXX)) - (item 2 of NFR) into item 2 of NFR put (item 1 of NFR) + (the formattedwidth of field ("C" & GF & XXX)) into item 3 of NFR put (item 2 of FR) + (the formattedheight of field ("C" & GF & XXX)) + 10 into item 4 of NFR set the rect of field ("C" & GF & XXX) to NFR put the formattedrect of character 1 of field ("C" & GF & XXX) into NNFR end repeat -- 3.3.4) the original field is emptied, but left in place in order to use its border and background information --put empty into field ID FID[XX] end repeat end repeat -- 4) the first card of stack p is one that was not copied over - so it is deleted delete card 1 of stack p -- set the visible of stack p to true print stack p delete stack p end mouseUp _______________________________________________ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution