Skip to content

Whatsit inside discretionary #317

@jbezos

Description

@jbezos

Sorry for this not-so-minimal example, but the error is raised only in very specific cases. I think I was able to find the what but not the where (reledmac or luaotfload?). The problem seems to be a PDF whatsit with an /ActualText is being moved to a discretionary (to make sure the cluster is correctly interpreted by PDF readers) in the text प्रजित्य्.

\documentclass{article}

\directlua{

function test (head)
  texio.write_nl('==== ') % .. g)
  texio.write_nl('')
  for item in node.traverse(head) do
    if item.id == node.id'glyph' then
      texio.write('[' .. item.char .. ']')
    elseif item.id == 8 and item.subtype == 16 then 
      texio.write('((' .. item.data .. '))')
    elseif item.id == node.id'disc' then
      texio.write(' [[[')
      test(item.replace)
      texio.write(' ]]] ')
    else
      texio.write('[' .. item.id .. ':' .. (item.subtype or '?') .. ']')
    end
  end
  return head
end

}

\input{loadhyph-sa.tex}
\usepackage{fontspec}
\setmainfont[Renderer=Harfbuzz,Script=Devanagari,Language=Sanskrit]{Noto Serif Devanagari}  

\usepackage{reledmac}
\newcounter{stanzanum}
\Xstanza
\Xarrangement[]{paragraph}

\begin{document}

\beginnumbering
\pstart
\edtext{ddddd{sambandhinīh}eeeee}{\Cfootnote{aaaa{ प्रजित्य्} bbbb \the\language}} aparārdhe
vaksyati. 
\pend
\endnumbering

\directlua{

luatexbase.add_to_callback("pre_linebreak_filter", test, "testv")

}

\end{document}

An excerpt of the log is (two runs may be necessary):

Inserting `testv' in `pre_linebreak_filter'.
==== 
[9:?][0:3][9:?][12:0][48][12:0][100][100][100][100][100][115][97][109] [[[
==== 
 ]]] [98][97][110][100] [[[
==== 
 ]]] [104][105][110][299] [[[
==== 
 ]]] [104][101][101][101][101][101][14:0][12:0][13:1][93][13:3][12:0][97][97][97
][97][12:13] [[[
==== 
[1179960]((/Span<</ActualText<FEFF091C093F>>>BDC))[1180211][2332]((EMC)) ]]]  [[
[
==== 
 ]]] [1180320][13:0][2351][2381][12:13][98][98][98][98][12:13][48][14:0][14:2][1
2:15]
! error:  (linebreak): invalid node with type whatsit and subtype 16 found in di
scretionary
!  ==> Fatal error occurred, no output PDF file produced!

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions