Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SVG to PNG Text Intermittently Boxes #91

Closed
TonyLugg opened this issue Aug 22, 2017 · 15 comments
Closed

SVG to PNG Text Intermittently Boxes #91

TonyLugg opened this issue Aug 22, 2017 · 15 comments
Labels

Comments

@TonyLugg
Copy link

TonyLugg commented Aug 22, 2017

Some of my SVG icons have text in them. Sometimes the text shows fine, and another time it will display as boxes (one box where each character would go). Is there a way to ensure the text will always work?

The link below demonstrates two icons, the left with a single character and the right with 5 digits (intended).
Bad Conversion

I run the same code again and get this:

Good Conversion

@TonyLugg
Copy link
Author

I know this is a strange one, but any thoughts?

@dlemstra
Copy link
Owner

It might be a bug in librsvg. I updated the library to a new version and I will publish a new release soon that includes the version. Probably needs some more testing. Are you running in parallel?

@TonyLugg
Copy link
Author

Sorry, what do you mean by parallel? I just have an ASPX page that takes some parameters, pulls in the SVG text, uses Magick.NET to convert it to png, then pushes it onto the response output stream.

@dlemstra
Copy link
Owner

dlemstra commented Aug 24, 2017

I was wondering if you were running into multi threading issues. I don't know what fixes have been made in the new release of librsvg but the upgrade might fix your issue. Otherwise we will need to investigate this some more.

@TonyLugg
Copy link
Author

Hope so. Will you release the update through NuGet?

@dlemstra
Copy link
Owner

The new release will be published on NuGet. One of my unit tests is now failing with the latest ImageMagick code so I first need to figure out why that fails. Hope I can publish a new release soon.

@dlemstra
Copy link
Owner

The new release has been published, can you give it another try?

@TonyLugg
Copy link
Author

Same issue I'm afraid. When calling multiple times to convert a batch of SVGs, some work and some don't. I suppose it could be a threading issue as the calls are made asynchronously to the server. However, it is only text that is messed up, everything else renders/converts properly.

Do you think setting the textlength in svg code would help?

@dlemstra
Copy link
Owner

Can you create a small sample that I could use to reproduce the issue? Maybe with a parallel loop?

@TonyLugg
Copy link
Author

I just created a test WPF app and looped through 30 conversions and it worked perfectly. There must be something in the ASP.NET that messes things up. I'll try the same thing with a small web app and see what happens. I did put a 5 second delay between calling my conversion page in my web app to ensure there was only one conversion happening at a time, but it did not help.

@TonyLugg
Copy link
Author

TonyLugg commented Aug 25, 2017

Here is the WPF program: WPF Program

The result of the WPF loop of 30 conversions: WPF Result

Here is the ASP.NET program: ASP.NET Program

The result of the ASP.NET loop of 30 conversions: ASP.NET Result
It is not always the same images that the text problem happens on.

@dlemstra
Copy link
Owner

dlemstra commented Aug 26, 2017

I had to change some of your code in the WPF program to this:

Parallel.ForEach(mcolDataItems, Sub(loDataItem)
                                    CreatePng(loDataItem)
                                End Sub)

And now I can reproduce your issue. Now I will need to try and translate this to a unit test and debug Magick.NET to figure out why it fails.

@TonyLugg
Copy link
Author

OK, so why is the issue happening? More importantly, can you come up with a fix, especially for the web version? Thanks for working on this!

@dlemstra
Copy link
Owner

dlemstra commented Aug 27, 2017

It turned out there is some kind of multithreading issue inside the pango library that is being used by librsvg. I could not find the exact cause but we decided to disable multi threading for the svg and pango decoder. The new release that I just published includes this fix. Can you test it again?

@dlemstra dlemstra added the bug label Aug 27, 2017
@TonyLugg
Copy link
Author

Issue resolved! Thank you so much.

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Sep 9, 2017
Changelog:
2017-09-03  6.9.9-11 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-11, GIT revision 11969:a12fbb873:20170903.

2017-08-28  6.9.9-11 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't overwrite symbolic links when the shred policy is enabled.

2017-08-27  6.9.9-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-10, GIT revision 11936:a8112a821:20170827.

2017-08-26  6.9.9-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed thread safety issue inside the pango and librsvg decoder
    (reference: dlemstra/Magick.NET#91).

2017-08-20  6.9.9-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-9, GIT revision 11915:5205bda17:20170820.

2017-08-18  6.6.9-9 Glenn Randers-Pehrson <glennrp@image...>
  * Fixed bug with writing tIME chunk when timezone has a negative offset
    (reference: ImageMagick/ImageMagick#685).

2017-08-18  6.9.9-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-8, GIT revision 11906:26078285f:20170818.

2017-08-18  6.9.9-8 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-08-12  6.9.9-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-7, GIT revision 11893:8c4c56a0e:20170812
    (Windows binaries out of sync).

2017-08-10  6.9.9-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-6, GIT revision 11886:af2b102db:20170810.

2017-08-10  6.9.9-6 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-08-10  6.9.9-6 Glenn Randers-Pehrson <glennrp@image...>
  * tests/validate.c: Show the reason for failures in the test logs,
    if available.

2017-08-03  6.9.9-6 Glenn Randers-Pehrson <glennrp@image...>
  * Put UTC time in the PNG tIME chunk instead of local time (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32447).

2017-08-02  6.9.9-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-5, GIT revision 11858:7a555e53f:20170802.

2017-08-01  6.9.9-5 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-29  6.9.9-5 Glenn Randers-Pehrson <glennrp@image...>
  * Properly set image->colorspace in the PNG decoder (previously
    it was setting image->gamma, but only setting image->colorspace
    for grayscale and gray-alpha images.  Reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32418).
  * Fix improper use of NULL in the JNG decoder (CVE-2017-11750, Reference
    ImageMagick/ImageMagick#632).

2017-07-29  6.9.9-5 Cristy  <quetzlzacatenango@image...>
  * Off by one error for gradient coder (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32416).

2017-07-28  6.9.9-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-4, GIT revision 11833:4e81160d6:20170728.

2017-07-25  6.9.9-4 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * coders/png.c: Initialized quantum_scanline to prevent a bad free
    (reference ImageMagick/ImageMagick#621).

2017-07-24  6.9.9-4 Glenn Randers-Pehrson <glennrp@image...>
  * Removed write_chunk_from_profile() from coders/png.c because it
    has not worked at least since version 6.7.6.
  * Removed many redundant checks before RelinquishMagickMemory(),
    which is safe to call with a NULL argument.
  * Removed vpAg chunk write support (we are now writing caNv instead).
  * coders/png.c: Initialized quantum_info to prevent memory leakage
    (reference ImageMagick/ImageMagick#582,
    CVE-2017-11539).
  * coders/png.c: fixed NULL dereference when trying to write an empty MNG
    (CVE-2017-11522, reference
    ImageMagick/ImageMagick#586).

2017-07-24  6.9.9-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-3, GIT revision 11809:2bd88257b:20170724.

2017-07-23  6.9.9-3 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-23  6.9.9-3 Glenn Randers-Pehrson <glennrp@image...>
  * Fix memory leaks when reading a malformed JNG image:
    ImageMagick/ImageMagick#600).
    ImageMagick/ImageMagick#602).

2017-07-22  6.9.9-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-2, GIT revision 11786:21b23bf09:20170722.

2017-07-22  6.9.9-2 Cristy  <quetzlzacatenango@image...>
  * composite -dissolve works again reference
    ImageMagick/ImageMagick#597).

2017-07-21  6.9.9-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-1, GIT revision 11782:75f7e994e:20170721.

2017-07-19  6.9.9-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-15  6.9.9-1 Glenn Randers-Pehrson <glennrp@image...>
  * Don't write a hex-encoded Exif profile when writing the eXIf chunk.
  * Added caNv, eXIf, and pHYs to the list of PNG chunks to be removed
    by the "-strip" option.

2017-07-15  6.9.9-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-0, GIT revision 11738:8903861b2:20170715.

2017-07-13  6.9.9-0 Glenn Randers-Pehrson <glennrp@image...>
  * Implemented PNG eXIf chunk support.

2017-07-08  6.9.9-0 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't use variable float_t / double_t, bump SO (reference
    ImageMagick/ImageMagick#510).
  * Support DNG images with libraw delegate library.
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Sep 13, 2017
2017-09-11  7.0.7-2 Glenn Randers-Pehrson <glennrp@image...>
  * Use signed integer arithmetic to caluculate timezone corrections (reference
    ImageMagick/ImageMagick#685).

2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-1, GIT revision 21065:ab2194121:20170909.

2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-09-05 7.0.7-1 Dirk Lemstra <dirk@lem.....org>
  * Added -define tiff:write-layers=true to add support for writing layered
    tiff files.

2017-09-03  7.0.7-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-0, GIT revision 20996:2f8ac2203:20170903.

2017-08-28  7.0.7-0 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't overwrite symbolic links when the shred policy is enabled.

2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-10, GIT revision 20920:9940c367a:20170827.

2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
  * Support -metric ssim, structual similarity index.

2017-08-26  7.0.6-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed thread safety issue inside the pango and librsvg decoder
    (reference: dlemstra/Magick.NET#91).

2017-08-20  7.0.6-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-9, GIT revision 20860:3f307d8ad:20170820.

2017-08-18  7.0.6-9 Glenn Randers-Pehrson <glennrp@image...>
  * Fixed bug with writing tIME chunk when timezone has a negative offset
    (reference: ImageMagick/ImageMagick#685)

2017-08-18  7.0.6-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-8, GIT revision 20838:e2eb79427:20170818.

2017-08-14  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Support CubicSpline resize filter.  Define the lobes with the
    -define filter:lobes={2,3,4} (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=32506).
  * Prevent assertion failure when creating PDF thumbnail (reference
    ImageMagick/ImageMagick#674).

2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-7, GIT revision 20799:0db4d8a16:20170812.

2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Improve EPS aliasing (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32497).

2017-08-11  7.0.6-7 Dirk Lemstra <dirk@lem.....org>
  * Added a new option called 'dds:fast-mipmaps' (reference
    ImageMagick/ImageMagick#558)
  * The mipmaps of a dds image can now be created from a list of images with
    -define dds:mipmaps=fromlist (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=30236).

2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-6, GIT revision 20775:061d0fa25:20170810.

2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-08-10  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
  * tests/validate.c: Show the reason for failures in the test logs,
    if available.

2017-08-03  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
  * Put UTC time in the PNG tIME chunk instead of local time (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32447).

2017-08-02  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-5, GIT revision 20715:26b28d50a:20170802.

2017-08-01  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-29  7.0.6-5 Glenn Randers-Pehrson <glennrp@image...>
  * Properly set image->colorspace in the PNG decoder (previously
    it was setting image->gamma, but only setting image->colorspace
    for grayscale and gray-alpha images.  Reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32418).
  * Fix improper use of NULL in the JNG decoder (CVE-2017-11750, Reference
    ImageMagick/ImageMagick#632).
  * Added "-define png:ignore-crc" option to PNG decoder. When you know
    your image has no CRC or ADLER32 errors, this can speed up decoding.
    It is also helpful in debugging bug reports from "fuzzers".

2017-07-29  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Off by one error for gradient coder (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=32416),
    ImageMagick/ImageMagick#612).

2017-07-28  7.0.6-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-4, GIT revision 20657:4e81160d6:20170728.

2017-07-24  7.0.6-4 Cristy  <quetzlzacatenango@image...>
  * YUV coder no longer renders streaks (reference
    ImageMagick/ImageMagick#612).
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues) including
    ImageMagick/ImageMagick#618 (CVE-2017-12676).
  * coders/png.c: Initialized quantum_scanline and quantum_info
    to prevent a bad free (reference
    ImageMagick/ImageMagick#621).

2017-07-25  7.0.6-4 Glenn Randers-Pehrson <glennrp@image...>
  * Removed write_chunk_from_profile() from coders/png.c because it has
    not worked at least since version 6.7.6.
  * Removed many redundant checks before RelinquishMagickMemory(), which
    is safe to call with a NULL argument.
  * Added experimental PNG orNT chunk, to store image->orientation.
  * Removed vpAg chunk write support (we are now writing caNv instead).

2017-07-24  7.0.6-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-3, GIT revision 20598:cc9c43b44:20170724.

2017-07-23  7.0.6-3 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-23  7.0.6-3 Glenn Randers-Pehrson <glennrp@image...>
  * Fix memory leaks when reading a malformed JNG image:
    ImageMagick/ImageMagick#600 (CVE-2017-13141),
    ImageMagick/ImageMagick#602 (CVE-2017-12565).

2017-07-21  7.0.6-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-2, GIT revision 20549:62fcf3d96:20170721.

2017-07-19  7.0.6-2 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * The -monochrome option no longer returns a blank canvas (reference
    ImageMagick/ImageMagick#594).
  * coders/png.c: fixed memory leak of quantum_info (CVE-2017-11539, reference
    ImageMagick/ImageMagick#582
  * coders/png.c: fixed NULL dereference when trying to write an empty MNG
    (CVE-2017-11522, reference
    ImageMagick/ImageMagick#586).

2017-07-15  7.0.6-2 Glenn Randers-Pehrson <glennrp@image...>
  * Added caNv, eXIf, and pHYs to the list of PNG chunks to be removed
    by the "-strip" option.

2017-07-15  7.0.6-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-1, GIT revision 20447:c2a315e10:20170715.

2017-07-13  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Implemented PNG eXIf chunk support.

2017-07-08  7.0.6-1 Cristy  <quetzlzacatenango@image...>
  * Support new -auto-threshold option.  OTSU and Triangle methods are
    currently supported.  Look for the Kapur method in the next release.
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't use variable float_t / double_t, bump SO (reference
    ImageMagick/ImageMagick#510).
  * Support DNG images with libraw delegate library.

2017-07-02  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Reject PNG file that is too small (under 60 bytes) to contain
    a valid image.
  * Reject JPEG file that is too small (under 107 bytes) to contain
    a valid image.
  * Reject JNG file that is too small (under 147 bytes) to contain
    a valid image.

2017-06-22  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Stop a memory leak in read_user_chunk_callback() (reference
    ImageMagick/ImageMagick#517,
    CVE 2017-11310).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants