You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-users@xmlgraphics.apache.org by Hans Stoessel <hs...@pm-medici.ch> on 2004/03/04 09:24:33 UTC
Rendering text in SVG
OS: Windows 2000
JDK: 1.4.1
Batik: 1.5.0
Hi
I convert a SVG in a WMF document using the WMFWriter from Piet Jonas and
Batik 1.5.
To convert the format I use the following code:
public boolean saveAsWMF() {
boolean bOK = true;
FileOutputStream oStream = null;
SVGDocument svgDoc = null;
BridgeContext ctx = null;
UserAgent userAgent = new UserAgentAdapter();
DocumentLoader loader = new DocumentLoader(userAgent);
GVTBuilder builder = new GVTBuilder();
raphicsNode gvtRoot = null;
try {
ctx = new BridgeContext(userAgent, loader);
ctx.setDynamic(true);
svgDoc = (SVGDocument) loader.loadDocument("C:\\Temp\\Test.svg");
gvtRoot = builder.build(ctx, svgDoc);
WMF wmf = new WMF();
WMFGraphics2D wmfGenerator = new WMFGraphics2D(wmf, 300, 200);
wmfGenerator.setGDIPenDrawing(false);
oStream = new FileOutputStream(new File("C:\\Temp\\Test.wmf"));
gvtRoot.paint(wmfGenerator);
wmf.writePlaceableWMF(oStream, 0, 0, 300, 200, 72);
oStream.close();
}
catch (FileNotFoundException e) {
bOK = false;
}
catch (IOException e) {
bOK = false;
}
return bOK;
}
Now I have problems with the text rendering. The rendered text in the WMF
file is not a text object. It is graphic and the result on the screen is
really bad.
- How is the text in the following SVG row rendered?
<text x="11.1230469" y="387.1083984" style="stroke:none;"
xml:space="preserve">0</text>
- Will the text be written with Graphics2D.drawString form the Batik
library? Or is another Graphics2D method used? The developer of the WMF
library says, the Graphics2D methods of his library will be used instead of
the Graphics2D methods from Batik. And if the Batik library use drawString
the result would be OK.
- Can I do something, that the text will be drawn with
Graphics2D.drawString?
Thanks for the help.
Regards
Hans
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org
AW: AW: AW: Rendering text in SVG
Posted by Hans Stoessel <hs...@pm-medici.ch>.
Hi Thomas
I think, setting the TextPainter coul dbe another possibility to solve this
problem. My problem doing this way is to find the font parameters (fontname,
size, weight, style, ...). But I'm working...
I try it with the following method, but it isn't working until now:
protected Point2D paintACI(AttributedCharacterIterator aci, Graphics2D
g2d, Point2D loc) {
aci.first();
TextNode.Anchor anchor =
(TextNode.Anchor)aci.getAttribute(GVTAttributedCharacterIterator.TextAttribu
te.ANCHOR_TYPE);
//Adjust position of span
Float xpos =
(Float)aci.getAttribute(GVTAttributedCharacterIterator.TextAttribute.X);
Float ypos =
(Float)aci.getAttribute(GVTAttributedCharacterIterator.TextAttribute.Y);
Float dxpos =
(Float)aci.getAttribute(GVTAttributedCharacterIterator.TextAttribute.DX);
Float dypos =
(Float)aci.getAttribute(GVTAttributedCharacterIterator.TextAttribute.DY);
if (xpos != null) loc.setLocation(xpos.doubleValue(), loc.getY());
if (ypos != null) loc.setLocation(loc.getX(), ypos.doubleValue());
if (dxpos != null) loc.setLocation(loc.getX()+dxpos.doubleValue(),
loc.getY());
if (dypos != null) loc.setLocation(loc.getX(),
loc.getY()+dypos.doubleValue());
//Set up font
List gvtFonts =
(List)aci.getAttribute(GVTAttributedCharacterIterator.TextAttribute.GVT_FONT
_FAMILIES);
Paint forg = (Paint) aci.getAttribute(TextAttribute.FOREGROUND);
Float size = (Float) aci.getAttribute(TextAttribute.SIZE);
if (size == null) {
return loc;
}
//Stroke stroke = $$$
//
(Stroke)aci.getAttribute(GVTAttributedCharacterIterator.TextAttribute.STROKE
);
Float posture = (Float)aci.getAttribute(TextAttribute.POSTURE);
Float taWeight = (Float)aci.getAttribute(TextAttribute.WEIGHT);
if (forg instanceof Color) {
g2d.setColor((Color)forg);
}
g2d.setPaint(forg);
//g2d.setStroke(stroke); $$$
String style = ((posture != null) && (posture.floatValue() > 0.0))
? "italic" : "normal";
String weight = ((taWeight != null) && (taWeight.floatValue() >
1.0))
? "bold" : "normal";
String sFont = "";
Iterator i = gvtFonts.iterator();
//for (Iterator i = gvtFonts.iterator(); i.hasNext(); ) {
GVTFontFamily fam = (GVTFontFamily) i.next();
sFont = fam.getFamilyName();
//}
int fStyle = Font.PLAIN;
if (weight.equals("bold")) {
if (style.equals("italic")) {
fStyle = Font.BOLD | Font.ITALIC;
} else {
fStyle = Font.BOLD;
}
} else {
if (style.equals("italic")) {
fStyle = Font.ITALIC;
} else {
fStyle = Font.PLAIN;
}
}
Font font = new Font(sFont, fStyle, (int) (size.floatValue() +
0.5f));
g2d.setFont(font);
//Get text and paint
String txt = getText(aci);
float advance = StringFormat.getWidth(txt, g2d.getFont());
float tx = 0;
if (anchor != null) {
switch (anchor.getType()) {
case TextNode.Anchor.ANCHOR_MIDDLE:
tx = -advance / 2;
break;
case TextNode.Anchor.ANCHOR_END:
tx = -advance;
}
}
//printAttrs(aci);
g2d.drawString(txt, (float)(loc.getX() + tx), (float)loc.getY());
loc.setLocation(loc.getX()+(double)advance, loc.getY());
return loc;
}
I have copied this method from PDFTextPainter (FOP), but I can't find the
right font! The size, weight and style is OK. Do you know how I can find the
font?
Regards
Hans
> -----Ursprungliche Nachricht-----
> Von: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
> Gesendet: Freitag, 5. Marz 2004 14:02
> An: Batik Users
> Betreff: Re: AW: AW: Rendering text in SVG
>
>
> Hans Stoessel wrote:
>
> > Hi
> >
> > I think I have found the right file. But how can I implement this?
> >
> > I use the jar files from Batik to use the classes from Batik. How can I
> > overwrite a class or method from a class in Batik?
>
> You need to do what they do in the PDF transcoder and replace
> the bridge class for text in the BridgeContext with the
> PDFTextBridge:
>
> PDFTextElementBridge pdfTextElementBridge;
> pdfTextElementBridge = new
> PDFTextElementBridge(graphics.getFontInfo());
> ctx.putBridge(pdfTextElementBridge);
>
> You will likely need to modify the PDFTextBridge since you don't
> the font info, but the part about drawing with drawString should
> be mostly the same.
>
> > I use the following code to convert from SVG to WMF:
> >
> > public boolean saveAsWMF() {
> > boolean bOK = true;
> > FileOutputStream oStream = null;
> > SVGDocument svgDoc = null;
> > BridgeContext ctx = null;
> > UserAgent userAgent = new UserAgentAdapter();
> > DocumentLoader loader = new DocumentLoader(userAgent);
> > GVTBuilder builder = new GVTBuilder();
> > GraphicsNode gvtRoot = null;
> >
> > try {
> > ctx = new BridgeContext(userAgent, loader);
> > ctx.setDynamic(true);
> > svgDoc = (SVGDocument)
> loader.loadDocument("C:\\Temp\\Test.svg");
> > gvtRoot = builder.build(ctx, svgDoc);
> >
> > WMF wmf = new WMF();
> > WMFGraphics2D wmfGenerator = new WMFGraphics2D(wmf, 300, 200);
> > wmfGenerator.setGDIPenDrawing(false);
> >
> > oStream = new FileOutputStream(new File("C:\\Temp\\Test.wmf"));
> > gvtRoot.paint(wmfGenerator);
> > wmf.writePlaceableWMF(oStream, 0, 0, 300, 200, 72);
> > oStream.close();
> > }
> > catch (FileNotFoundException e) {
> > bOK = false;
> > }
> > catch (IOException e) {
> > bOK = false;
> > }
> > return bOK;
> > }
> >
> > I don't know how to solve my problem. Maybe you can give me a
> tip. Thanks.
> >
> > Regards
> > Hans
> >
> >
> >
> >
> >>-----Ursprungliche Nachricht-----
> >>Von: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
> >>Gesendet: Donnerstag, 4. Marz 2004 16:39
> >>An: Batik Users
> >>Betreff: Re: AW: Rendering text in SVG
> >>
> >>
> >>Hans Stoessel wrote:
> >>
> >>
> >>>The problem is that you can't edit the text in PowerPoint f.e.
> >>
> >>if it isn't a
> >>
> >>>text object. And so it should be a text object...
> >>>
> >>>- Whats about this 'hack' in FOP? Where can I find that?
> >>
> >> Check out http://xml.apache.org/fop
> >>
> >> The hack lives in src/java/org/apache/fop/svg. It is the
> >>replacement text bridge.
> >>
> >>
> >>>- Is it possible to use drawString instead of drawGlyphVector?
> >>
> >>Maybe if I
> >>
> >>>use an own class to draw my SVG text derived from
> SVGGraphics2D? In this
> >>>derived class I would replace drawGlyphVector with drawString...
> >>
> >> This is essentially what the FOP hack does.
> >>
> >>
> >>>Thanks for the help
> >>>Hans
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>>-----Ursprungliche Nachricht-----
> >>>>Von: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
> >>>>Gesendet: Donnerstag, 4. Marz 2004 14:02
> >>>>An: Batik Users
> >>>>Betreff: Re: Rendering text in SVG
> >>>>
> >>>>
> >>>>Hi Hans,
> >>>>
> >>>>Hans Stoessel wrote:
> >>>>
> >>>>
> >>>>
> >>>>>I convert a SVG in a WMF document using the WMFWriter from Piet
> >>>>
> >>>>Jonas and
> >>>>
> >>>>
> >>>>>Batik 1.5.
> >>>>
> >>>>>Now I have problems with the text rendering. The rendered text
> >>>>
> >>>>in the WMF
> >>>>
> >>>>
> >>>>>file is not a text object. It is graphic and the result on the
> >>
> >>screen is
> >>
> >>>>>really bad.
> >>>>>
> >>>>>- How is the text in the following SVG row rendered?
> >>>>> <text x="11.1230469" y="387.1083984" style="stroke:none;"
> >>>>>xml:space="preserve">0</text>
> >>>>
> >>>> It is drawn with Graphics2D.drawGlyphVector.
> >>>>
> >>>>
> >>>>
> >>>>>- Will the text be written with Graphics2D.drawString form the Batik
> >>>>>library?
> >>>>
> >>>> No draw string isn't nearly powerful enough to handle SVG text.
> >>>>
> >>>>
> >>>>
> >>>>>Or is another Graphics2D method used? The developer of the WMF
> >>>>>library says, the Graphics2D methods of his library will be
> >>>>
> >>>>used instead of
> >>>>
> >>>>
> >>>>>the Graphics2D methods from Batik. And if the Batik library use
> >>>>
> >>>>drawString
> >>>>
> >>>>
> >>>>>the result would be OK.
> >>>>>
> >>>>>- Can I do something, that the text will be drawn with
> >>>>>Graphics2D.drawString?
> >>>>
> >>>> The PDFTranscoder from the FOP project has a 'hack' so very simple
> >>>>text is drawn using 'drawString'. You might look into using that.
> >>>>
> >>>>
> >>>>
> >>>>---------------------------------------------------------------------
> >>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> >>>>For additional commands, e-mail: batik-users-help@xml.apache.org
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>>---------------------------------------------------------------------
> >>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> >>>For additional commands, e-mail: batik-users-help@xml.apache.org
> >>>
> >>
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> >>For additional commands, e-mail: batik-users-help@xml.apache.org
> >>
> >>
> >>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> > For additional commands, e-mail: batik-users-help@xml.apache.org
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org
Re: AW: AW: Rendering text in SVG
Posted by Thomas DeWeese <Th...@Kodak.com>.
Hans Stoessel wrote:
> Hi
>
> I think I have found the right file. But how can I implement this?
>
> I use the jar files from Batik to use the classes from Batik. How can I
> overwrite a class or method from a class in Batik?
You need to do what they do in the PDF transcoder and replace
the bridge class for text in the BridgeContext with the
PDFTextBridge:
PDFTextElementBridge pdfTextElementBridge;
pdfTextElementBridge = new
PDFTextElementBridge(graphics.getFontInfo());
ctx.putBridge(pdfTextElementBridge);
You will likely need to modify the PDFTextBridge since you don't
the font info, but the part about drawing with drawString should
be mostly the same.
> I use the following code to convert from SVG to WMF:
>
> public boolean saveAsWMF() {
> boolean bOK = true;
> FileOutputStream oStream = null;
> SVGDocument svgDoc = null;
> BridgeContext ctx = null;
> UserAgent userAgent = new UserAgentAdapter();
> DocumentLoader loader = new DocumentLoader(userAgent);
> GVTBuilder builder = new GVTBuilder();
> GraphicsNode gvtRoot = null;
>
> try {
> ctx = new BridgeContext(userAgent, loader);
> ctx.setDynamic(true);
> svgDoc = (SVGDocument) loader.loadDocument("C:\\Temp\\Test.svg");
> gvtRoot = builder.build(ctx, svgDoc);
>
> WMF wmf = new WMF();
> WMFGraphics2D wmfGenerator = new WMFGraphics2D(wmf, 300, 200);
> wmfGenerator.setGDIPenDrawing(false);
>
> oStream = new FileOutputStream(new File("C:\\Temp\\Test.wmf"));
> gvtRoot.paint(wmfGenerator);
> wmf.writePlaceableWMF(oStream, 0, 0, 300, 200, 72);
> oStream.close();
> }
> catch (FileNotFoundException e) {
> bOK = false;
> }
> catch (IOException e) {
> bOK = false;
> }
> return bOK;
> }
>
> I don't know how to solve my problem. Maybe you can give me a tip. Thanks.
>
> Regards
> Hans
>
>
>
>
>>-----Ursprungliche Nachricht-----
>>Von: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
>>Gesendet: Donnerstag, 4. Marz 2004 16:39
>>An: Batik Users
>>Betreff: Re: AW: Rendering text in SVG
>>
>>
>>Hans Stoessel wrote:
>>
>>
>>>The problem is that you can't edit the text in PowerPoint f.e.
>>
>>if it isn't a
>>
>>>text object. And so it should be a text object...
>>>
>>>- Whats about this 'hack' in FOP? Where can I find that?
>>
>> Check out http://xml.apache.org/fop
>>
>> The hack lives in src/java/org/apache/fop/svg. It is the
>>replacement text bridge.
>>
>>
>>>- Is it possible to use drawString instead of drawGlyphVector?
>>
>>Maybe if I
>>
>>>use an own class to draw my SVG text derived from SVGGraphics2D? In this
>>>derived class I would replace drawGlyphVector with drawString...
>>
>> This is essentially what the FOP hack does.
>>
>>
>>>Thanks for the help
>>>Hans
>>>
>>>
>>>
>>>
>>>
>>>>-----Ursprungliche Nachricht-----
>>>>Von: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
>>>>Gesendet: Donnerstag, 4. Marz 2004 14:02
>>>>An: Batik Users
>>>>Betreff: Re: Rendering text in SVG
>>>>
>>>>
>>>>Hi Hans,
>>>>
>>>>Hans Stoessel wrote:
>>>>
>>>>
>>>>
>>>>>I convert a SVG in a WMF document using the WMFWriter from Piet
>>>>
>>>>Jonas and
>>>>
>>>>
>>>>>Batik 1.5.
>>>>
>>>>>Now I have problems with the text rendering. The rendered text
>>>>
>>>>in the WMF
>>>>
>>>>
>>>>>file is not a text object. It is graphic and the result on the
>>
>>screen is
>>
>>>>>really bad.
>>>>>
>>>>>- How is the text in the following SVG row rendered?
>>>>> <text x="11.1230469" y="387.1083984" style="stroke:none;"
>>>>>xml:space="preserve">0</text>
>>>>
>>>> It is drawn with Graphics2D.drawGlyphVector.
>>>>
>>>>
>>>>
>>>>>- Will the text be written with Graphics2D.drawString form the Batik
>>>>>library?
>>>>
>>>> No draw string isn't nearly powerful enough to handle SVG text.
>>>>
>>>>
>>>>
>>>>>Or is another Graphics2D method used? The developer of the WMF
>>>>>library says, the Graphics2D methods of his library will be
>>>>
>>>>used instead of
>>>>
>>>>
>>>>>the Graphics2D methods from Batik. And if the Batik library use
>>>>
>>>>drawString
>>>>
>>>>
>>>>>the result would be OK.
>>>>>
>>>>>- Can I do something, that the text will be drawn with
>>>>>Graphics2D.drawString?
>>>>
>>>> The PDFTranscoder from the FOP project has a 'hack' so very simple
>>>>text is drawn using 'drawString'. You might look into using that.
>>>>
>>>>
>>>>
>>>>---------------------------------------------------------------------
>>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>>
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>
>>
>>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org
AW: AW: Rendering text in SVG
Posted by Hans Stoessel <hs...@pm-medici.ch>.
Hi
I think I have found the right file. But how can I implement this?
I use the jar files from Batik to use the classes from Batik. How can I
overwrite a class or method from a class in Batik?
I use the following code to convert from SVG to WMF:
public boolean saveAsWMF() {
boolean bOK = true;
FileOutputStream oStream = null;
SVGDocument svgDoc = null;
BridgeContext ctx = null;
UserAgent userAgent = new UserAgentAdapter();
DocumentLoader loader = new DocumentLoader(userAgent);
GVTBuilder builder = new GVTBuilder();
GraphicsNode gvtRoot = null;
try {
ctx = new BridgeContext(userAgent, loader);
ctx.setDynamic(true);
svgDoc = (SVGDocument) loader.loadDocument("C:\\Temp\\Test.svg");
gvtRoot = builder.build(ctx, svgDoc);
WMF wmf = new WMF();
WMFGraphics2D wmfGenerator = new WMFGraphics2D(wmf, 300, 200);
wmfGenerator.setGDIPenDrawing(false);
oStream = new FileOutputStream(new File("C:\\Temp\\Test.wmf"));
gvtRoot.paint(wmfGenerator);
wmf.writePlaceableWMF(oStream, 0, 0, 300, 200, 72);
oStream.close();
}
catch (FileNotFoundException e) {
bOK = false;
}
catch (IOException e) {
bOK = false;
}
return bOK;
}
I don't know how to solve my problem. Maybe you can give me a tip. Thanks.
Regards
Hans
> -----Ursprungliche Nachricht-----
> Von: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
> Gesendet: Donnerstag, 4. Marz 2004 16:39
> An: Batik Users
> Betreff: Re: AW: Rendering text in SVG
>
>
> Hans Stoessel wrote:
>
> > The problem is that you can't edit the text in PowerPoint f.e.
> if it isn't a
> > text object. And so it should be a text object...
> >
> > - Whats about this 'hack' in FOP? Where can I find that?
>
> Check out http://xml.apache.org/fop
>
> The hack lives in src/java/org/apache/fop/svg. It is the
> replacement text bridge.
>
> > - Is it possible to use drawString instead of drawGlyphVector?
> Maybe if I
> > use an own class to draw my SVG text derived from SVGGraphics2D? In this
> > derived class I would replace drawGlyphVector with drawString...
>
> This is essentially what the FOP hack does.
>
> >
> > Thanks for the help
> > Hans
> >
> >
> >
> >
> >>-----Ursprungliche Nachricht-----
> >>Von: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
> >>Gesendet: Donnerstag, 4. Marz 2004 14:02
> >>An: Batik Users
> >>Betreff: Re: Rendering text in SVG
> >>
> >>
> >>Hi Hans,
> >>
> >>Hans Stoessel wrote:
> >>
> >>
> >>>I convert a SVG in a WMF document using the WMFWriter from Piet
> >>
> >>Jonas and
> >>
> >>>Batik 1.5.
> >>
> >> >
> >>
> >>>Now I have problems with the text rendering. The rendered text
> >>
> >>in the WMF
> >>
> >>>file is not a text object. It is graphic and the result on the
> screen is
> >>>really bad.
> >>>
> >>>- How is the text in the following SVG row rendered?
> >>> <text x="11.1230469" y="387.1083984" style="stroke:none;"
> >>>xml:space="preserve">0</text>
> >>
> >> It is drawn with Graphics2D.drawGlyphVector.
> >>
> >>
> >>>- Will the text be written with Graphics2D.drawString form the Batik
> >>>library?
> >>
> >> No draw string isn't nearly powerful enough to handle SVG text.
> >>
> >>
> >>>Or is another Graphics2D method used? The developer of the WMF
> >>>library says, the Graphics2D methods of his library will be
> >>
> >>used instead of
> >>
> >>>the Graphics2D methods from Batik. And if the Batik library use
> >>
> >>drawString
> >>
> >>>the result would be OK.
> >>>
> >>>- Can I do something, that the text will be drawn with
> >>>Graphics2D.drawString?
> >>
> >> The PDFTranscoder from the FOP project has a 'hack' so very simple
> >>text is drawn using 'drawString'. You might look into using that.
> >>
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> >>For additional commands, e-mail: batik-users-help@xml.apache.org
> >>
> >>
> >>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> > For additional commands, e-mail: batik-users-help@xml.apache.org
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org
AW: AW: Rendering text in SVG
Posted by Hans Stoessel <hs...@pm-medici.ch>.
Hi
I try to find the hack, but I don't find it. Where it is?
Thanks
Hans
> -----Ursprungliche Nachricht-----
> Von: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
> Gesendet: Donnerstag, 4. Marz 2004 16:39
> An: Batik Users
> Betreff: Re: AW: Rendering text in SVG
>
>
> Hans Stoessel wrote:
>
> > The problem is that you can't edit the text in PowerPoint f.e.
> if it isn't a
> > text object. And so it should be a text object...
> >
> > - Whats about this 'hack' in FOP? Where can I find that?
>
> Check out http://xml.apache.org/fop
>
> The hack lives in src/java/org/apache/fop/svg. It is the
> replacement text bridge.
>
> > - Is it possible to use drawString instead of drawGlyphVector?
> Maybe if I
> > use an own class to draw my SVG text derived from SVGGraphics2D? In this
> > derived class I would replace drawGlyphVector with drawString...
>
> This is essentially what the FOP hack does.
>
> >
> > Thanks for the help
> > Hans
> >
> >
> >
> >
> >>-----Ursprungliche Nachricht-----
> >>Von: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
> >>Gesendet: Donnerstag, 4. Marz 2004 14:02
> >>An: Batik Users
> >>Betreff: Re: Rendering text in SVG
> >>
> >>
> >>Hi Hans,
> >>
> >>Hans Stoessel wrote:
> >>
> >>
> >>>I convert a SVG in a WMF document using the WMFWriter from Piet
> >>
> >>Jonas and
> >>
> >>>Batik 1.5.
> >>
> >> >
> >>
> >>>Now I have problems with the text rendering. The rendered text
> >>
> >>in the WMF
> >>
> >>>file is not a text object. It is graphic and the result on the
> screen is
> >>>really bad.
> >>>
> >>>- How is the text in the following SVG row rendered?
> >>> <text x="11.1230469" y="387.1083984" style="stroke:none;"
> >>>xml:space="preserve">0</text>
> >>
> >> It is drawn with Graphics2D.drawGlyphVector.
> >>
> >>
> >>>- Will the text be written with Graphics2D.drawString form the Batik
> >>>library?
> >>
> >> No draw string isn't nearly powerful enough to handle SVG text.
> >>
> >>
> >>>Or is another Graphics2D method used? The developer of the WMF
> >>>library says, the Graphics2D methods of his library will be
> >>
> >>used instead of
> >>
> >>>the Graphics2D methods from Batik. And if the Batik library use
> >>
> >>drawString
> >>
> >>>the result would be OK.
> >>>
> >>>- Can I do something, that the text will be drawn with
> >>>Graphics2D.drawString?
> >>
> >> The PDFTranscoder from the FOP project has a 'hack' so very simple
> >>text is drawn using 'drawString'. You might look into using that.
> >>
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> >>For additional commands, e-mail: batik-users-help@xml.apache.org
> >>
> >>
> >>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> > For additional commands, e-mail: batik-users-help@xml.apache.org
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org
Re: AW: Rendering text in SVG
Posted by Thomas DeWeese <Th...@Kodak.com>.
Hans Stoessel wrote:
> The problem is that you can't edit the text in PowerPoint f.e. if it isn't a
> text object. And so it should be a text object...
>
> - Whats about this 'hack' in FOP? Where can I find that?
Check out http://xml.apache.org/fop
The hack lives in src/java/org/apache/fop/svg. It is the
replacement text bridge.
> - Is it possible to use drawString instead of drawGlyphVector? Maybe if I
> use an own class to draw my SVG text derived from SVGGraphics2D? In this
> derived class I would replace drawGlyphVector with drawString...
This is essentially what the FOP hack does.
>
> Thanks for the help
> Hans
>
>
>
>
>>-----Ursprungliche Nachricht-----
>>Von: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
>>Gesendet: Donnerstag, 4. Marz 2004 14:02
>>An: Batik Users
>>Betreff: Re: Rendering text in SVG
>>
>>
>>Hi Hans,
>>
>>Hans Stoessel wrote:
>>
>>
>>>I convert a SVG in a WMF document using the WMFWriter from Piet
>>
>>Jonas and
>>
>>>Batik 1.5.
>>
>> >
>>
>>>Now I have problems with the text rendering. The rendered text
>>
>>in the WMF
>>
>>>file is not a text object. It is graphic and the result on the screen is
>>>really bad.
>>>
>>>- How is the text in the following SVG row rendered?
>>> <text x="11.1230469" y="387.1083984" style="stroke:none;"
>>>xml:space="preserve">0</text>
>>
>> It is drawn with Graphics2D.drawGlyphVector.
>>
>>
>>>- Will the text be written with Graphics2D.drawString form the Batik
>>>library?
>>
>> No draw string isn't nearly powerful enough to handle SVG text.
>>
>>
>>>Or is another Graphics2D method used? The developer of the WMF
>>>library says, the Graphics2D methods of his library will be
>>
>>used instead of
>>
>>>the Graphics2D methods from Batik. And if the Batik library use
>>
>>drawString
>>
>>>the result would be OK.
>>>
>>>- Can I do something, that the text will be drawn with
>>>Graphics2D.drawString?
>>
>> The PDFTranscoder from the FOP project has a 'hack' so very simple
>>text is drawn using 'drawString'. You might look into using that.
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>
>>
>>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org
AW: Rendering text in SVG
Posted by Hans Stoessel <hs...@pm-medici.ch>.
Hi Thomas
The problem is that you can't edit the text in PowerPoint f.e. if it isn't a
text object. And so it should be a text object...
- Whats about this 'hack' in FOP? Where can I find that?
- Is it possible to use drawString instead of drawGlyphVector? Maybe if I
use an own class to draw my SVG text derived from SVGGraphics2D? In this
derived class I would replace drawGlyphVector with drawString...
Thanks for the help
Hans
> -----Ursprungliche Nachricht-----
> Von: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
> Gesendet: Donnerstag, 4. Marz 2004 14:02
> An: Batik Users
> Betreff: Re: Rendering text in SVG
>
>
> Hi Hans,
>
> Hans Stoessel wrote:
>
> > I convert a SVG in a WMF document using the WMFWriter from Piet
> Jonas and
> > Batik 1.5.
> >
> > Now I have problems with the text rendering. The rendered text
> in the WMF
> > file is not a text object. It is graphic and the result on the screen is
> > really bad.
> >
> > - How is the text in the following SVG row rendered?
> > <text x="11.1230469" y="387.1083984" style="stroke:none;"
> > xml:space="preserve">0</text>
>
> It is drawn with Graphics2D.drawGlyphVector.
>
> > - Will the text be written with Graphics2D.drawString form the Batik
> > library?
>
> No draw string isn't nearly powerful enough to handle SVG text.
>
> > Or is another Graphics2D method used? The developer of the WMF
> > library says, the Graphics2D methods of his library will be
> used instead of
> > the Graphics2D methods from Batik. And if the Batik library use
> drawString
> > the result would be OK.
> >
> > - Can I do something, that the text will be drawn with
> > Graphics2D.drawString?
>
> The PDFTranscoder from the FOP project has a 'hack' so very simple
> text is drawn using 'drawString'. You might look into using that.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org
Re: Rendering text in SVG
Posted by Thomas DeWeese <Th...@Kodak.com>.
Hi Hans,
Hans Stoessel wrote:
> I convert a SVG in a WMF document using the WMFWriter from Piet Jonas and
> Batik 1.5.
>
> Now I have problems with the text rendering. The rendered text in the WMF
> file is not a text object. It is graphic and the result on the screen is
> really bad.
>
> - How is the text in the following SVG row rendered?
> <text x="11.1230469" y="387.1083984" style="stroke:none;"
> xml:space="preserve">0</text>
It is drawn with Graphics2D.drawGlyphVector.
> - Will the text be written with Graphics2D.drawString form the Batik
> library?
No draw string isn't nearly powerful enough to handle SVG text.
> Or is another Graphics2D method used? The developer of the WMF
> library says, the Graphics2D methods of his library will be used instead of
> the Graphics2D methods from Batik. And if the Batik library use drawString
> the result would be OK.
>
> - Can I do something, that the text will be drawn with
> Graphics2D.drawString?
The PDFTranscoder from the FOP project has a 'hack' so very simple
text is drawn using 'drawString'. You might look into using that.
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org