Bug 43676 - Size 0 dots are large and visible
Summary: Size 0 dots are large and visible
Status: RESOLVED FIXED
Alias: None
Product: poppler
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
Hardware: Other Linux (All)
: medium normal
Assignee: poppler-bugs
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-12-09 13:37 UTC by Marcel Stimberg
Modified: 2016-09-29 14:58 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
cairo - don't render text when text matrix is not invertable (2.42 KB, patch)
2012-01-25 06:20 UTC, Adrian Johnson
Details | Splinter Review

Description Marcel Stimberg 2011-12-09 13:37:39 UTC
This has been reported in the Ubuntu bug tracker by wch: https://bugs.launchpad.net/ubuntu/+source/evince/+bug/902033

It is reproducible on Ubuntu 11.10 with evince 3.2.1-0ubuntu2 and epdfview 0.1.8-1 (poppler 0.16.7-2ubuntu2)

Ubuntu bug report:
I'm creating some PDF files with dots of 0 size. In evince, they're visible: they're pretty large and off-center. In other viewers, such as Mac Preview and Adobe Reader on Mac, the dots are not visible.

This code will generate a test file in R. There is a line of 10 dots going from lower left to upper right that should be visible. There's another line of 0mm dots going from upper left to lower right, and they should not be visible.

library(grid)
pdf("dotsizetest.pdf", width=4, height=4)
x <- y <- 1:10
pushViewport(plotViewport(c(5.1, 4.1, 4.1, 2.1)))
pushViewport(dataViewport(x, y))
grid.rect()
grid.points(x, y)
grid.points(x, 10-y, gp=gpar(fill="black"), size=unit(0,"mm"))
popViewport(2)
dev.off()

EXPECTED RESULT:
One diagonal line of dots

ACTUAL RESULT:
Two crossing diagonal lines of dots.

The PDF can be found here: https://bugs.launchpad.net/ubuntu/+source/evince/+bug/902033/+attachment/2625606/+files/dotsizetest.pdf
Comment 1 Albert Astals Cid 2011-12-09 14:10:31 UTC
Both the splash and the cairo renderer show the second line, but it is true that the cairo renderer has much worse results than the splash one (the second line in splash at least is just 1px wide)
Comment 2 Adrian Johnson 2012-01-25 06:20:16 UTC
Created attachment 56143 [details] [review]
cairo - don't render text when text matrix is not invertable

The problem is the PDF file is using a noninvertible text matrix [0 0 0 0]. The PDF specification has this to say about noninvertible matrices: 

   When rendering graphics objects, it is sometimes necessary for a
   conforming reader to perform the inverse of a transformation—that
   is, to find the user space coordinates that correspond to a given
   pair of device space coordinates. Not all transformations are
   invertible, however. For example, if a matrix contains a, b, c,
   and d elements that are all zero, all user coordinates map to the
   same device coordinates and there is no unique inverse transformation.
   Such noninvertible transformations are not very useful and generally
   arise from unintended operations, such as scaling by 0. Use of a
   noninvertible matrix when painting graphics objects can result
   in unpredictable behaviour.

So the correct rendering of this PDF file is undefined. However to make the cairo output more closely emulate acroread behavior I attach a patch that ignores text when the text matrix is noninvertible.
Comment 3 madbiologist 2014-06-07 16:24:24 UTC
Any plans to merge this patch to mainline>

I can still reproduce this bug on poppler 0.24.5.
Comment 4 madbiologist 2016-09-29 14:57:52 UTC
Fixed in:

poppler 0.41.0-0ubuntu1.1
libcairo2 1.14.6-1

and probably earlier.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.