Vincent,

Thanks so much for the informative reply.  I've been using text-anchor, but
didn't know about text-length or filter effects.

I took a look at moonPhases.svg and I see you are the author.  Most
impressive!  Being relatively new to SVG (2 weeks), I had no idea you could
do the things you do in moonPhases.

I'll learn about filter effects.  It sounds like it might solve some of my
problems.

The real problem I have is determining how big to make the legend so the
words don't flow off the picture.  Because I allow the users to choose the
font and size, I'm currently using some haphazard calculations based on font
size to guesstimate the maximum size needed.  After tweaking it, it seems to
work pretty well for proportional fonts.  It isn't the ideal solution, but
sounds like that's about the best I can do for now.

I have one question about font sizes.  When specifying a pt size (say a 10
point font), what exactly does that mean?  How does it correspond to pixels?
Or is it even possible to relate to pixels?  Because I'm generating JPEG and
PNG files from Batik, I tend to base my coordinate system in terms of
pixels.  I tried using the "viewBox" attribute and specifing a width and
height in inches, but the picture quality suffered greatly.  Plus, the Adobe
SVG viewer displayed the resulting SVG much differently than Batik.  Seems
there are some issues there that need to be ironed out.

Thanks again,
Scott



-----Original Message-----
From: Vincent Hardy [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, October 03, 2001 3:07 AM
To: Batik Users
Subject: Re: Text size


Scott,

Unfortunately, there is no good way of doing this in SVG right now.
There are some round-about ways of using the SVG-DOM which would 
provide some solution, but Batik does not support that part of the
SVG DOM yet.

I realize this is a disapointing answer. However, there are some tips
to position text:

a. Using text-anchor, you can center a text on a given position.
b. Using text-length, you can force a string of text to fit in a 
   given length. 
c. Using filter effects, you can create boxes around a text area
   if you use object bounding box units.

There are probably other tricks you can use, but these are the ones
from the top of my head. I use a with c. quite a bit and you can see an
example in moonPhases.svg:

<filter id="bgRect" primitiveUnits="objectBoundingBox" x="-.2" y="-.2"
width="1.4" height="1.4" >
  <feFlood flood-color="black" flood-opacity=".5" result="bg"/>
  ...
  <feMerge>
    <feMergeNode in="bg" />
    ...
    <feMergeNode in="SourceGraphic" />
  </feMerge>
</filter>

I hope this helps.
Vincent.

> Scott Moore wrote:
> 
> I'm using Batik directly in a Java program to create charts and graphs
> via SVG and transcoding them into PNG files.  However, one of the
> problems I constantly face is how to determine the exact size of a
> text string.  For instance, when drawing a legend, I need to know the
> size of the legend in order to properly size the graph next to it.
> 
> How do I solve this problem?  Is there a way to do it directly in
> SVG?  Is there an API in Batik that I can call to get the width of a
> string in a given font and size?
> 
> Any help would be much appreciated!
> 
> Scott

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to