Hey Miyako,
Further info from previous post...
The more I experiment the more I think the width of the text is not correct.
If I include these lines:
SVG_SET_ATTRIBUTES ($text_svgRef;"text-align";"center")
SVG_SET_ATTRIBUTES ($text_svgRef;"display-align";"center”)
In a text string of “19˚” the 9 shows up approx. centered.
If I exclude these two lines then.
In a text string of “19˚” the 1 shows up approx. right aligned.
So I am baffled and there’s little 4D example sir using the TextArea and
modifying attributes. Of course I am reviewing the SVG spec and trying
properties from there. But…
So there’s something I don’t understand I think.
Appreciate,
John...
> 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]
**********************************************************************