Attach (recommended) or Link to PDF file here:
https://bitcoin.org/bitcoin.pdf

Configuration:
- Web browser and its version: all
- Operating system and its version: all
- PDF.js version: tested with 2.9.11, but most likely all versions
- Is a browser extension: no

Steps to reproduce the problem:
1. Type "a purely" (single space between "a" and "purely") - doesn't find anything
2. Type "a  purely" (two spaces between "a" and "purely") - finds the phrase

Sometimes even 3 spaces are necessary.

What is the expected behavior? (add screenshot)
![Screenshot from 2021-04-08 13-00-03](https://user-images.githubusercontent.com/6362989/114008903-57639a00-986b-11eb-903a-92bbebbd922b.png)

What went wrong? (add screenshot)
![Screenshot from 2021-04-08 13-01-53](https://user-images.githubusercontent.com/6362989/114008810-44e96080-986b-11eb-8232-f58a62ed7899.png)

This affects many PDFs because justify alignment is common enough.
} ele f (Stream(cmapObj)) {
      return CMapFactry.create({
        encdng: cmapObj,
        fetchBultInCMap: th._fetchBultInCMapBund,
        ueCMap: null,
      }).then(
        functn (cmap) {
          f (cmap ntancef IdenttyCMap) {
            return new IdenttyTUncdeMap(0, 0xffff);
          }
          cnt map = new Array(cmap.length);
           Cnvert UTF-16BE
           NOTE: cmap can be a pare array,  ue frEach ntead f
           `fr(;;)` t terate ver all key.
          cmap.frEach(functn (charCde, tken) {
             Sme cmap cntan *nly* CID character (fxe ue9367.pdf).
            f (typef tken === "number") {
              map[charCde] = Strng.frmCdePnt(tken);
              return;
            }
            cnt tr = [];
            fr (let k = 0; k < tken.length; k = 2) {
              cnt w1 = (tken.charCdeAt(k) << 8) | tken.charCdeAt(k  1);
              f ((w1 & 0xf800) !== 0xd800) {
                 w1 < 0xD800 |
                tr.puh(w1);
                cntnue;
              }
              k = 2;
              cnt w2 = (tken.charCdeAt(k) << 8) | tken.charCdeAt(k  1);