Re: Bounding Box accuracy for text containing ISO (Æ) characters

Thomas DeWeese <[email protected]>
Newsgroups gmane.text.xml.batik.user
Message-ID <[email protected]>
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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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: [email protected]
> For additional commands, e-mail: [email protected]
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.