[OpenJDK 2D-Dev] [PATCH] JDK-4627340 : RFE: A way to improve text printing performance for postscript devices
anton nashatyrev
anton.nashatyrev at oracle.com
Fri Jan 10 11:49:29 UTC 2014
Hi Alex,
you also might be interested in the issue I'm working on:
https://bugs.openjdk.java.net/browse/JDK-8023990
If you are targeting Linux platform and working with Latin-1
charset primarily this fix may help (I hope I could push it in the
nearest future). FYI the fix is here:
http://cr.openjdk.java.net/%7Ealitvinov/8023990/webrev.00
Regards,
Anton.
P.S. I'm not a 2D developer, so I couldn't take care of your proposal,
but I think it's good.
On 09.01.2014 20:34, Alex Geller wrote:
> Hi,
> this is not a production code patch but rather a proof of concept.
> The patch improves the Postscript produced in calls to
> Graphics2D.drawString().
> The the current implementation first tries to print strings using one
> of the standard Postscript fonts (PSPrinterJob.textOut()) and if that
> fails it falls back to drawing glyph vectors.
> The patch adds a third method which is to convert the string into
> glyphs by means of Font.createGlyphVector() and embed those glyphs in
> form of a Postscript "Type 3" font.
> The font is updated incrementally which is explicitly allowed by the
> Postscript specification.
> The incremental update makes the patch also usable for Asian
> environments where eager embedding is not a good option because the
> fonts are huge.
> The file is reduced compared to glyph vector drawing. As an example
> consider a "terms an conditions" page that has 17,000 characters using
> 3 different fonts.
> Using the current method the Postscript file is about 8 MB. Using the
> new method the file is 164 KB.
> However, the motivation for submitting this patch is not the file size
> but the printing time. The original file takes 4:45 minutes to print
> while the version with the embedded font prints in less than 10
> seconds on the same printer.
> I suspect the slowness in the fact that the glyph vectors are not
> cached while the Type 3 fonts are. I posted the results of some
> related experiments with the Postscript "ucache" command on the OTN
> forum (see https://community.oracle.com/thread/2617145).
> Based on that I can post a patch for speeding up
> Graphics2D.drawGlyphVector() substantially too if there is interest.
> Coming back to the main topic my question is if there are chances that
> this gets included. If yes, then I would do (perhaps with some help)
> what is necessary to take it from a POC to production code.
> I would also be happy if it could be included and activated only by a
> system property or a rendering hint.
> The issue is quite important to us and time doesn't seem to heal this.
> Even printers in the 10,000$ class can take minutes to print a few
> pages using the current method.
> Attachments:
> - openjdk.patch: A patch based on "openjdk_7_b147_jun_11"
> - PSTest.java: A test program demonstrating the feature
> - out.ps.zip: A zipped Postscript file produced by the test program
> "PSTest.java"
> Thanks,
> Alex
>
>
More information about the 2d-dev
mailing list