pdfme / pdfme

A TypeScript based PDF generator library, made with React.
https://pdfme.com
MIT License
2.19k stars 194 forks source link

self.widths[char] fails for certain characters (e.g. "…" or "ę") #406

Closed bohning closed 4 months ago

bohning commented 4 months ago

Describe the bug

Pdfme fails to determine the width of certain characters like ellipsis ("…") or "ę".

To Reproduce

Use any special Unicode characters (e.g. the above-mentioned) and try to use pdfme to generate a PDF.

Expected behavior

pdfme should support all Unicode characters.

Your Environment

- pdfme package(@pdfme/generator or @pdfme/ui): pdfme/generator
- pdfme version: 0.4.11
- Operating system: macOS Sonoma 14.1
- Node.js version or Browser name & version: ---

Your Error Log

File "/Users/.../.venv/lib/python3.11/site-packages/pdfme/text.py", line 115, in add_word
    self.width += self.get_word_width(word)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/Users/.../.venv/lib/python3.11/site-packages/pdfme/text.py", line 167, in get_word_width
    return self.state.size * self.state.font.get_text_width(word)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/.../.venv/lib/python3.11/site-packages/pdfme/fonts.py", line 134, in get_text_width
    return sum(self.widths[char] for char in text) / 1000
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/.../.venv/lib/python3.11/site-packages/pdfme/fonts.py", line 134, in <genexpr>
    return sum(self.widths[char] for char in text) / 1000
               ~~~~~~~~~~~^^^^^^
    KeyError: 'ę'


### Additional context

_No response_