Hello, Thomas.

That does the trick.

Thank you.

Charles

On Mon, Feb 20, 2012 at 7:40 PM, Thomas DeWeese <thomas.dewe...@gmail.com>wrote:

> Hi Charles,
>   I'm fairly certain the problem is that you should be giving a Java
> string that has the actual char you want in it already. You shouldn't be
> using XML notation in that string.
>
> Thomas DeWeese
>
>
> On Feb 20, 2012, at 6:01 PM, Charles Seelig <charles.see...@gmail.com>
> wrote:
>
> Hello, Martin.
>
> Interesting (and freightening!) idea. Freightening because it's a
> dimension of the problem I had not considered :-)
>
> On the other hand, I can report, not as a refutation - but merely as an
> additional observation, that the "fetch BB immediately after setting text"
> technique that I'm using works flawlessly for plain old text. I use the BB
> for subsequent resize-to-fit and centering manipulations, and it never
> fails. It is only this case - where (only a guess) the representation of a
> single character of text requires 6 characters. It is as if the engine is
> using a non-decoded input to perform the text metrics calculation.
>
> I've been wondering if there's some requirement (not met) to assure that
> the ISO encodings are valid. They seem to work to a limited degree - in
> that they are rendered as I expect. It seems to be only the BB metrics that
> are not "getting it."
>
> Anyhow, thank you for spending time thinking about this. Very much
> appreciated.
>
> Charles
>
> On Mon, Feb 20, 2012 at 5:04 PM, Martin J <jacobson.mar...@gmail.com>wrote:
>
>> Charles,
>>
>> bbox() is indeed tricky! Try doing it on rotated text, or worse, text
>> on a path! However, your problem may only be a timing issue -- Batik
>> only knows the bbox once the text has been rendered, and in your
>> example there's probably not time for the renderer to have done its
>> work when you interrogate the properties.
>>
>> HTH
>> Martin
>>
>> On 20 February 2012 22:16, Charles Seelig <charles.see...@gmail.com>
>> wrote:
>> > Hello, all.
>> >
>> > I'm wondering if anyone could point me in the right direction re:
>> coaxing
>> > an SVGTextElement to return a correct bounding box when the text
>> contains
>> > ISO encoded characters.
>> >
>> > SVGDocument doc = makeSvgDocument(svgString);
>> >
>> > SVGTextElement svgTextElement = (SVGTextElement)
>> > doc.getElementById("textID");
>> >
>> > svgTextElement.getFirstChild().setNodeValue("&#913;&#937;");
>> >
>> > float width = svgTextElement.getBBox().getWidth();
>> >
>> >
>> > My document is created as follows -
>> >
>> > protected SVGDocument makeSvgDocument(String svgString) {
>> >
>> > SVGDocument svgDoc = null;
>> >
>> > @SuppressWarnings("unused")
>> >
>> > GraphicsNode rootGN;
>> >
>> > UserAgent userAgent    = new UserAgentAdapter();
>> >
>> > DocumentLoader loader  = new DocumentLoader(userAgent);
>> >
>> > BridgeContext ctx      = new BridgeContext(userAgent, loader);
>> >
>> > GVTBuilder builder     = new GVTBuilder();
>> >
>> > SAXSVGDocumentFactory factory = new
>> > SAXSVGDocumentFactory(SAXParser.class.getCanonicalName(), true);
>> >
>> > try {
>> >
>> > svgDoc = (SVGDocument)
>> > factory.createDocument("file:///dummy/dummy/file.svg", new
>> > StringReader(svgString));
>> >
>> > ctx.setDynamicState(BridgeContext.DYNAMIC);
>> >
>> > rootGN = builder.build(ctx, svgDoc);
>> >
>> > } catch (IOException e) {
>> >
>> > e.printStackTrace();
>> >
>> > }
>> >
>> > return svgDoc;
>> >
>> > }
>> >
>> >
>> > It appears to me that the result (especially evident for width) is
>> > calculated as if the 1 character is actually 6 characters.
>> >
>> > Thank you.
>> >
>> > Best regards,
>> >
>> > Charles Seelig
>> >
>>
>>
>>
>> --
>> From my MacBook Pro
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
>> For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org
>>
>>
>

Reply via email to