hi John
has anyone been able to get sub-pixel antialiasing (smoothing) to work?
On what platforms?
Yes, I have it working fine on Windows Vista and Ubuntu with Java 6 Update 10.
I must be missing something obvious. I just installed jdk1.6.0_10 on
my Debian Linux system and there is still no subpixel rendering (aka
subpixel anti-aliasing).
I'm testing using squiggle. Squiggle draws the text in the SVG using
grey levels (gray-scale anti-aliasing). Squiggle's menu buttons are
however drawn using subpixel rendering (proving that my java
installation can do subpixel rendering).
Could you please send me your modifed CSSUtilities.java? My code is
shown below. When I run squiggle on my test SVG file, it prints
out the debug that I added. Why doesn't it do subpixel rendering?
thanks
Stuart
:; /opt/jdk1.6.0_10/bin/java -cp batik.jar -jar batik-squiggle.jar
/tmp/samples/subpixel.svg
Loading document...
Loading document completed in 151 ms
Building document...
geometricPrecision
optimizeLegibility
optimizeSpeed
Building document completed in 15 ms
Rendering document preparation...
Rendering document preparation completed in 11 ms
Rendering document started...
Rendering document completed in 30 ms
public static RenderingHints convertTextRendering(Element e,
RenderingHints hints) {
Value v = getComputedStyle(e, SVGCSSEngine.TEXT_RENDERING_INDEX);
String s = v.getStringValue();
int len = s.length();
if ((len == 4) && (s.charAt(0) == 'a')) // auto
return hints;
if (len < 13) return hints; // Unknown.
if (hints == null)
hints = new RenderingHints(null);
switch(s.charAt(8)) {
case 's': // optimizeSpeed
System.err.println("optimizeSpeed");
hints.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_SPEED);
hints.put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
hints.put(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_OFF);
// hints.put(RenderingHints.KEY_FRACTIONALMETRICS,
// RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
break;
case 'l': // optimizeLegibility
System.err.println("optimizeLegibility");
hints.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
hints.put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
hints.put(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
// hints.put(RenderingHints.KEY_FRACTIONALMETRICS,
// RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
break;
case 'c': // geometricPrecision
System.err.println("geometricPrecision");
hints.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
hints.put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
hints.put(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
hints.put(RenderingHints.KEY_FRACTIONALMETRICS,
RenderingHints.VALUE_FRACTIONALMETRICS_ON);
hints.put(RenderingHints.KEY_STROKE_CONTROL,
RenderingHints.VALUE_STROKE_PURE);
break;
}
return hints;
}
here is my test SVG file
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="450"
height="500" viewBox="0 0 450 500">
<title>Text Rotation</title>
<text x="5%" y="20" text-rendering="geometricPrecision" font-size="14"
font-family="DejaVu Serif">
abcdef geometricPrecision</text>
<text x="5%" y="40" text-rendering="optimizeLegibility" font-size="14"
font-family="DejaVu Serif">
abcdef optimizeLegibility</text>
<text x="5%" y="60" text-rendering="optimizeSpeed" font-size="14" font-family="DejaVu
Serif">
abcdef optimizeSpeed</text>
<text x="5%" y="80" text-rendering="auto" font-size="14" font-family="DejaVu
Serif">
abcdef auto</text>
</svg>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]