Hi Miyako,

So if I understand how to replace “text” with “TextArea”…

Here’s an existing code fragment with various height/width adjustments

$fontAlign_D:=Align center

$pnt_X:=$ctr_X+(($ctr_X*$radius)*Cos($Angle))
$pnt_Y:=$ctr_Y-(($ctr_Y*$radius)*Sin($Angle))

$display_t:=$Degree+”˚”   `  example: 16˚

In this example the X and Y of the point are:

inX_D=577
inY_D=276

SVG_String_WidthHeight_Get (display_t; ->$width;
 ->$height; $fontName; $fontSize_D; $fontStyle_D; $fontAlign_D)

`  set new Y coord based upon returned height dimensions        
$inY_D:=$inY_D-($height/2)

$text_svgRef:=SVG_New_text 
($domSvg_ptr->;$cuspDegree+"˚";$inX_D;$inY_D;$fontName;$fontSize_D;$fontStyle_D;$fontAlign_D)

The XML looks like:

<text fill="#000000" font-family="Tahoma" font-size="14" font-style="normal" 
font-weight="normal" stroke="#000000" text-anchor="middle" 
text-decoration="none" x="577" y="282">16˚</text>

Notice the Y value is changed to 282. This works pretty good!

----------------------------------------------

When switched from SVG_New_text to SVG_New_textArea:

$display_t:=$Degree+”˚”   `  example: 22˚

In this example the X and Y of the point are:

inX_D=577
inY_D=276

$text_svgRef:=SVG_New_textArea 
($domSvg_ptr->;$display_t;$inX_D;$inY_D;$width;$height;$fontName;$fontSize_D;$fontStyle_D;$fontAlign_D)
SVG_SET_ATTRIBUTES ($text_svgRef;"display-align";"center")
SVG_SET_ATTRIBUTES ($text_svgRef;"text-align";"center”)

First issue I noticed was the degree symbol (˚) {ctrl+k} is missing.  Although 
the correct string is in the xml.

<textArea display-align="center" fill="#000000" font-family="Tahoma" 
font-size="14" font-style="normal" font-weight="normal" height="-13" 
stroke="#000000" text-align="center" text-decoration="none" width="-28" x="577" 
y="276">16˚</textAre>

First notice that the Y value remains at 276???

I thought it must be an encoding issue. So I tried different characters and 
none of them are being displayed.

Then I thought what if the width or height is not large enough to allow it to 
display? By playing with the width I could see all the characters are there. 
BUT I cannot reliably get the text centered on the point.

So then I removed the following two lines:

SVG_SET_ATTRIBUTES ($text_svgRef;"display-align";"center")
SVG_SET_ATTRIBUTES ($text_svgRef;"text-align";"center”)

And the values are exactly the same. So this code has not affect therefore I 
must not be setting the attributes correctly.

Any idea as to what I am doing wrong?

Appreciate,
John...

> HI Miyako,
> 
> Thanks for the info.
> 
>> Ref: have you considered using <TextArea> instead of <text>?
> 
> I haven’t but I will now. <grin>
> 
> I’ll see if there’s a difference.
> 
> Thanks for tips.
> 
> John…
> 
> 
>> in general, it is best to instruct the rendering engine to decide how to 
>> align objects,
>> rather than to compute the exact coordinates yourself.
>> 
>> "text-anchor" (start, middle, end) should take care of horizontal align in 
>> <text>,
>> but vertical align is going to be difficult since 4D does not support 
>> "dominant-baseline" or "alignment-baseline".
>> if you decide to go down the "y" or "dy" route, well, I guess it's going to 
>> be an uphill struggle.
>> 
>> have you considered using <TextArea> instead of <text>?
>> 
>> you have "display-align" (before, center, after) for vertical align and 
>> "text-align" (start, center, end) for horizontal align.
>> 
>> p.s.
>> 
>> I love how they say start/end, before/after instead of left/right (because 
>> of right to left scripts)
>> and decisively use middle instead of center with respect to the subject 
>> (align or anchor)...
> 

**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[email protected]
**********************************************************************

Reply via email to