Attach (recommended) or Link to PDF file here [(PDF in comments below)](https://github.com/mozilla/pdf.js/issues/10900#issuecomment-501034146).  Here is a relevant section:

![image](https://user-images.githubusercontent.com/16158417/59306620-a8ec6f00-8c6a-11e9-9c2e-056bfeebc050.png)

Configuration:
- Web browser and its version: Node v10.11.0
- Operating system and its version: MacOS 10.14.5
- PDF.js version: v2.1.266
- Is a browser extension: No

Steps to reproduce the problem:
1. Calling `getTextContent` on the page is returning inappropriate widths for text items with appended with spaces.

What is the expected behavior?
The expected behavior is that the coordinates for the string "3" are above the coordinates for the string "27.0" coordinates PLUS the width of the "27.0" string.  This should make sense as the numbers are on top of each other.

What went wrong?
![image](https://user-images.githubusercontent.com/16158417/59306769-0680bb80-8c6b-11e9-972c-cb964ca4299f.png)

Unfortunately, the width is calculated wrong and "27.0" has a width of `2.17...` which does not make sense in this context.  The string "3" also has a width of `2.15...` which means that these two strings are off by `.02...` units which is not the case.

I dug into the source code of pdfjs and found commenting out [this line](https://github.com/mozilla/pdf.js/blob/c8c937c2579812798fddc13af9d8c1df1e7ce30b/src/core/evaluator.js#L1657) resolved the issue for me.  I bet this line is necessary though, so would like to start an investigation (happy to help!) into what calculations are going wrong to cause this wrongly reported width.
} else {
          affectedBoundary.x2New = maxXNew;
        }
      } else if (affectedBoundary.x2New > maxXNew) {
        
        affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);
      }
    }
    
    const changedHorizon = [];
    let lastBoundary = null;
    for (q = i; q <= j; q++) {
      horizonPart = horizon[q];
      affectedBoundary = horizonPart.boundary;
      
      const useBoundary =
        affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
      if (lastBoundary === useBoundary) {
        
        changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
      } else {
        changedHorizon.push({
          start: horizonPart.start,
          end: horizonPart.end,
          boundary: useBoundary,
        });
        lastBoundary = useBoundary;
      }
    }
    if (horizon[i].start < boundary.y1) {