forked from reingart/pyfpdf
-
Notifications
You must be signed in to change notification settings - Fork 330
Closed
Description
When text shaping is turned on, if I start the PDF with a text columns layout I'm getting an exception. If I instead have some non-colum content before the columns its works.
Error details
Traceback (most recent call last):
File "...\test.py", line 8, in <module>
with pdf.text_columns(ncols=2) as cols:
File "...\fpdf\text_region.py", line 364, in __exit__
self.render()
File "...\fpdf\text_region.py", line 723, in render
self._render_page_lines(text_lines, first_page_top, page_bottom)
File "...\fpdf\text_region.py", line 707, in _render_page_lines
last_line_height = self._render_column_lines(text_lines, top, bottom)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\fpdf\text_region.py", line 560, in _render_column_lines
self.pdf._render_styled_text_line(
File "...\fpdf\fpdf.py", line 3340, in _render_styled_text_line
fragments = text_line.get_ordered_fragments()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\fpdf\line_break.py", line 428, in get_ordered_fragments
directional_runs[-1].append(fragment)
~~~~~~~~~~~~~~~~^^^^
IndexError: list index out of range
Minimal code
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
pdf.set_text_shaping(True)
pdf.set_font("Times", "", 14)
#pdf.write(text=" ") # adding some text in front of the columns makes it work
with pdf.text_columns(ncols=2) as cols:
cols.write("Lorem ipsum dolor sit amet")
cols.new_column()
cols.write("Lorem ipsum dolor sit amet")
pdf.output("test.pdf")Environment
- Operating System: Windows 10
- Python version: Python 3.12.1
fpdf2version used: 2.8.3