View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000912 | luatex | luatex bug | public | 2014-07-31 09:34 | 2015-03-21 14:57 |
Reporter | Taco | Assigned To | Taco | ||
Priority | normal | Severity | minor | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Summary | 0000912: Serious bug in LuaTeX linebreaking | ||||
Description | From Yannis: dear Taco, Peter and Daniel, please read the included PDF file, it is about a bug I discovered in LuaTeX which is blocking a project of mine. Thanks in advance for your help Yannis | ||||
Tags | No tags attached. | ||||
|
|
|
|
|
Problem is triggered by the \language forcing luatex to apply English hyphenation patterns to the text before they reach the tfm replacement engine. |
|
We (luigi and hans) investigated the problem and came to the conlusion that the best aproach is to set the language to -1 for such ascii-input approaches. After all, one cannot say how normal english (or any other latin) languages comes out due to lig building in this font. Proper language tagging is a quite robust solution %%%%%%%%%%%%%%%%%%%%%%%%%%% \pdfoutput1 \pdfmapfile{yh.map} \font\xx=yarabic scaled2400 \documentclass{article} \title{A Bug in Lua\LaTeX} \author{Yannis Haralambous\\yannis.haralambous@telecom-bretagne.eu} \begin{document} \maketitle When preparing an Arabic font using a large number of smart ligatures in OVF format, I encountered the following serious bug: starting with the fourth character, white space equal to the width of the word is inserted to the left of the word, and starting with the sixth character, part of the word is duplicated: { \baselineskip36pt \xx\language-1 \luatextextdir TRT Yu YuDo YuDoli YuDolilo YuDolilohu YuDolilohuka YuDolilohukaki YuDolilohukakiko Yu YuDo YuDoli YuDolilo YuDolilohu YuDolilohuka YuDolilohukaki } Furthermore, when adding an additional line where all of these words appear on the same line, Lua\LaTeX\ crashes with the following error message: \begin{verbatim} Assertion failed: (type(vlink(cur_p))==disc_node&& subtype(vlink(cur_p))==select_disc), function ext_do_line_break, file ../../../texk/web2c/luatexdir/tex/linebreak.w, line 1965. )Abort trap: 6 \end{verbatim} To run this sample you need the following files: yarabic.ovf, yarabic.ofm, yarabicr.tfm, Yarabic.pfa, yh.map which I am including in a ZIP file files.zip. The ligatures used to obtain the longest version of the word are the following: \begin{quote}\small Yu:\\ 59 + 75 LIG 359 (isolated ya with damma)\\ YuD:\\ 359 + 44 LIG/ 30A (in front of dad, ya+damma becomes initial)\\ YuD:\\ 30A + 44 /LIG 06 (after initial ya+damma, the dad becomes final)\\ YuDo:\\ 06 + 6F LIG E06 (final dad with sukun)\\ YuDol:\\ E06 + 6C LIG/ E05 (in front of lam, dad+sukun becomes medial)\\ YuDol:\\ E05 + 6C /LIG B0 (after medial dad+sukun, the lam becomes final)\\ YuDoli:\\ B0 + 69 LIG 2B0 (final lam with kasra)\\ YuDolil:\\ 2B0 + 6C LIG/ 2AF (in front of lam, lam+kasra becomes medial)\\ YuDolil:\\ 2AF + 6C /LIG B0 (after medial lam+kasra, the lam becomes final)\\ YuDolilo:\\ B0 + 6F LIG EB0 (final lam with sukun)\\ YuDoliloh:\\ EB0 + 68 LIG/ EAF (in front of ha, lam+sukun becomes medial)\\ YuDoliloh:\\ EAF + 68 /LIG A7 (after medial lam+sukun, the ha becomes final)\\ YuDolilohu:\\ A7 + 75 LIG 3A7 (final ha with damma)\\ YuDolilohuk:\\ 3A7 + 6B LIG/ 3A6 (in front of kaf, ha+damma becomes medial)\\ YuDolilohuk:\\ 3A6 + 6B /LIG AD (after medial ha+damma, the kaf becomes final)\\ YuDolilohuka:\\ AD + 61 LIG 1AD (final kaf with fatha)\\ YuDolilohukak:\\ 1AD + 6B LIG/ 1AC (in front of kaf, kaf+fatha becomes medial)\\ YuDolilohukak:\\ 1AC + 6B /LIG AD (after medial kaf+fatha, the kaf becomes final)\\ YuDolilohukaki:\\ AD + 69 LIG 2AD (final kaf with kasra)\\ YuDolilohukakik:\\ 2AD + 6B LIG/ 2AC (in front of kaf, kaf+kasra becomes medial)\\ YuDolilohukakik:\\ 2AC + 6B /LIG AD (after medial kaf+kasra, the kaf becomes final)\\ YuDolilohukakiko:\\ AD + 6F LIG EAD (final kaf with sukun) \end{quote} To obtain the crash and error message, uncomment the last line (Yu YuDo YuDoli YuDolilo YuDolilohu YuDolilohuka YuDolilohukaki) and run the file again. Thanks in advance for investigating and solving this problem, my project depends on it. \end{document} |
|
setting language is the option: we have a split hyohenation / lig building stage |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-07-31 09:34 | Taco | New Issue | |
2014-07-31 09:34 | Taco | File Added: files.zip | |
2014-07-31 09:34 | Taco | File Added: minimal-sample.pdf | |
2014-09-18 16:10 | Taco | Assigned To | => Taco |
2014-09-18 16:10 | Taco | Status | new => acknowledged |
2014-09-19 11:59 | Taco | Note Added: 0001280 | |
2014-10-29 09:49 | luigi scarso | Note Added: 0001297 | |
2014-10-29 09:50 | luigi scarso | Note Edited: 0001297 | |
2015-03-21 14:57 | Hans Hagen | Note Added: 0001344 | |
2015-03-21 14:57 | Hans Hagen | Status | acknowledged => closed |
2015-03-21 14:57 | Hans Hagen | Resolution | open => fixed |