← Back to team overview

desktop-packages team mailing list archive

[Bug 902033]

 

Created attachment 56143
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.

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to poppler in Ubuntu.
https://bugs.launchpad.net/bugs/902033

Title:
  Size 0 dots are large and visible

Status in Poppler:
  Confirmed
Status in “poppler” package in Ubuntu:
  Confirmed

Bug description:
  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.

  
  $ lsb_release -rd
  Description:	Ubuntu 11.10
  Release:	11.10

  $ apt-cache policy evince
  evince:
    Installed: 3.2.1-0ubuntu2
    Candidate: 3.2.1-0ubuntu2
    Version table:
   *** 3.2.1-0ubuntu2 0
          500 http://mirror.anl.gov/pub/ubuntu/ oneiric-updates/main amd64 Packages
          100 /var/lib/dpkg/status
       3.2.0-0ubuntu1 0
          500 http://mirror.anl.gov/pub/ubuntu/ oneiric/main amd64 Packages

To manage notifications about this bug go to:
https://bugs.launchpad.net/poppler/+bug/902033/+subscriptions


References