Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set \tracinglostchars to 4 or 5 in the LuaLaTeX initialization #1687

Closed
eg9 opened this issue Mar 2, 2025 · 0 comments · Fixed by #1691
Closed

Set \tracinglostchars to 4 or 5 in the LuaLaTeX initialization #1687

eg9 opened this issue Mar 2, 2025 · 0 comments · Fixed by #1691

Comments

@eg9
Copy link
Contributor

eg9 commented Mar 2, 2025

Brief outline of the enhancement

In LuaLaTeX, with the current default value of \tracinglostchars, lost chars are not traced when a box is being built, but only when the box is used.

Background

https://tex.stackexchange.com/q/736811/4427

After discussion with mickep in the TeX.SE chat, he prompted Hans to add new values for \tracinglostchars to emulate pdfTeX behavior.

Minimal example showing the current behaviour

\RequirePackage{latexbug}
\documentclass{article}

\showboxbreadth=1000
\showboxdepth=1000

\begin{document}

\sbox0{WHAT\char"4444} \showbox0
\typeout{Width is \the\wd0}

\box0

\end{document}

Here's the log file

This is LuaHBTeX, Version 1.21.0 (TeX Live 2025)  (format=lualatex 2025.3.1)  2 MAR 2025 17:32
 restricted system commands enabled.
**testbox.tex
(./testbox.tex
LaTeX2e <2024-11-01> patch level 2
L3 programming layer <2025-01-18>
Lua module: luaotfload 2024-12-03 v3.29 Lua based OpenType font support
Lua module: lualibs 2023-07-13 v2.76 ConTeXt Lua standard libraries.
Lua module: lualibs-extended 2023-07-13 v2.76 ConTeXt Lua libraries -- extended 
collection.
luaotfload | conf : Root cache directory is "/Users/enrico2013/Library/texlive/2
025/texmf-var/luatex-cache/generic/names".
luaotfload | init : Loading fontloader "fontloader-2023-12-28.lua" from kpse-res
olved path "/usr/local/texlive/2025/texmf-dist/tex/luatex/luaotfload/fontloader-
2023-12-28.lua".
Lua-only attribute luaotfload@noligature = 1
luaotfload | init : Context OpenType loader version 3.134
Inserting `luaotfload.node_processor' in `pre_linebreak_filter'.
Inserting `luaotfload.node_processor' in `hpack_filter'.
Inserting `luaotfload.glyph_stream' in `glyph_stream_provider'.
Inserting `luaotfload.define_font' in `define_font'.
Lua-only attribute luaotfload_color_attribute = 2
luaotfload | conf : Root cache directory is "/Users/enrico2013/Library/texlive/2
025/texmf-var/luatex-cache/generic/names".
Inserting `luaotfload.harf.strip_prefix' in `find_opentype_file'.
Inserting `luaotfload.harf.strip_prefix' in `find_truetype_file'.
Removing  `luaotfload.glyph_stream' from `glyph_stream_provider'.
Inserting `luaotfload.harf.glyphstream' in `glyph_stream_provider'.
Inserting `luaotfload.harf.finalize_vlist' in `post_linebreak_filter'.
Inserting `luaotfload.harf.finalize_hlist' in `hpack_filter'.
Inserting `luaotfload.cleanup_files' in `wrapup_run'.
Inserting `luaotfload.harf.finalize_unicode' in `finish_pdffile'.
Inserting `luaotfload.glyphinfo' in `glyph_info'.
Lua-only attribute luaotfload.letterspace_done = 3
Inserting `luaotfload.aux.set_sscale_dimens' in `luaotfload.patch_font'.
Inserting `luaotfload.aux.set_font_index' in `luaotfload.patch_font'.
Inserting `luaotfload.aux.patch_cambria_domh' in `luaotfload.patch_font'.
Inserting `luaotfload.aux.fixup_fontdata' in `luaotfload.patch_font_unsafe'.
Inserting `luaotfload.aux.set_capheight' in `luaotfload.patch_font'.
Inserting `luaotfload.aux.set_xheight' in `luaotfload.patch_font'.
Inserting `luaotfload.rewrite_fontname' in `luaotfload.patch_font'.
Inserting `tracingstacklevels' in `input_level_string'. (/usr/local/texlive/202
5/texmf-dist/tex/latex/latexbug/latexbug.sty
Package: latexbug 2024/07/16 v1.0p Bug-classification
)
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/article.cls
Document Class: article 2024/06/29 v1.4n Standard LaTeX document class
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2024/06/29 v1.4n Standard LaTeX file (size option)
luaotfload | db : Font names database loaded from /Users/enrico2013/Library/texl
ive/2025/texmf-var/luatex-cache/generic/names/luaotfload-names.luc.gz)
\c@part=\count194
\c@section=\count195
\c@subsection=\count196
\c@subsubsection=\count197
\c@paragraph=\count198
\c@subparagraph=\count199
\c@figure=\count266
\c@table=\count267
\abovecaptionskip=\skip49
\belowcaptionskip=\skip50
\bibindent=\dimen140
)
(/usr/local/texlive/2025/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
File: l3backend-luatex.def 2024-05-08 L3 backend support: PDF output (LuaTeX)
\l__color_backend_stack_int=\count268
Inserting `l3color' in `luaotfload.parse_color'.
\l__pdf_internal_box=\box52
)
(./testbox.aux)
\openout1 = testbox.aux

LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for TS1/cmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for TU/lmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
> \box0=
\hbox(7.16+0.22)x34.47, direction TLT
.\TU/lmr/m/n/10 W
.\TU/lmr/m/n/10 H
.\TU/lmr/m/n/10 A
.\kern-0.83 (font)
.\TU/lmr/m/n/10 T
.\TU/lmr/m/n/10 䑄
.\TU/lmr/m/n/10 󰀀


! OK.
l.10 \sbox0{WHAT\char"4444} \showbox0
                                     
? 
Width is 34.47pt
(./testbox.aux)
 ***********
LaTeX2e <2024-11-01> patch level 2
L3 programming layer <2025-01-18>
 ***********
)

Here is how much of LuaTeX's memory you used:
 1821 strings out of 475506
 100000,552014 words of node,token memory allocated
 477 words of node memory still in use:
   4 hlist, 1 vlist, 1 rule, 2 glue, 4 kern, 7 glyph, 7 attribute, 48 glue_spec,
 7 attribute_list, 2 write nodes
   avail lists: 2:7,3:1,4:1,5:4,7:1,9:1
 24915 multiletter control sequences out of 65536+600000
 15 fonts using 723367 bytes
 35i,1n,49p,130b,1352s stack positions out of 10000i,1000n,20000p,200000b,200000s

warning  (pdf backend): no pages of output.

PDF statistics: 0 PDF objects out of 1000 (max. 8388607)
 0 named destinations out of 1000 (max. 131072)
 1 words of extra memory for PDF output out of 10000 (max. 100000000)

With the last release of LuaTeX, we can set \tracinglostchar to 4 or 5

Minimal example showing the desired new behaviour

\RequirePackage{latexbug}
\documentclass{article}

\tracinglostchars=4 % <-- change here
\showboxbreadth=1000
\showboxdepth=1000

\begin{document}

\sbox0{WHAT\char"4444} \showbox0
\typeout{Width is \the\wd0}

%\box0

\end{document}

This is the new log file

This is LuaHBTeX, Version 1.21.0 (TeX Live 2025)  (format=lualatex 2025.3.1)  2 MAR 2025 17:31
 restricted system commands enabled.
**testbox.tex
(./testbox.tex
LaTeX2e <2024-11-01> patch level 2
L3 programming layer <2025-01-18>
Lua module: luaotfload 2024-12-03 v3.29 Lua based OpenType font support
Lua module: lualibs 2023-07-13 v2.76 ConTeXt Lua standard libraries.
Lua module: lualibs-extended 2023-07-13 v2.76 ConTeXt Lua libraries -- extended 
collection.
luaotfload | conf : Root cache directory is "/Users/enrico2013/Library/texlive/2
025/texmf-var/luatex-cache/generic/names".
luaotfload | init : Loading fontloader "fontloader-2023-12-28.lua" from kpse-res
olved path "/usr/local/texlive/2025/texmf-dist/tex/luatex/luaotfload/fontloader-
2023-12-28.lua".
Lua-only attribute luaotfload@noligature = 1
luaotfload | init : Context OpenType loader version 3.134
Inserting `luaotfload.node_processor' in `pre_linebreak_filter'.
Inserting `luaotfload.node_processor' in `hpack_filter'.
Inserting `luaotfload.glyph_stream' in `glyph_stream_provider'.
Inserting `luaotfload.define_font' in `define_font'.
Lua-only attribute luaotfload_color_attribute = 2
luaotfload | conf : Root cache directory is "/Users/enrico2013/Library/texlive/2
025/texmf-var/luatex-cache/generic/names".
Inserting `luaotfload.harf.strip_prefix' in `find_opentype_file'.
Inserting `luaotfload.harf.strip_prefix' in `find_truetype_file'.
Removing  `luaotfload.glyph_stream' from `glyph_stream_provider'.
Inserting `luaotfload.harf.glyphstream' in `glyph_stream_provider'.
Inserting `luaotfload.harf.finalize_vlist' in `post_linebreak_filter'.
Inserting `luaotfload.harf.finalize_hlist' in `hpack_filter'.
Inserting `luaotfload.cleanup_files' in `wrapup_run'.
Inserting `luaotfload.harf.finalize_unicode' in `finish_pdffile'.
Inserting `luaotfload.glyphinfo' in `glyph_info'.
Lua-only attribute luaotfload.letterspace_done = 3
Inserting `luaotfload.aux.set_sscale_dimens' in `luaotfload.patch_font'.
Inserting `luaotfload.aux.set_font_index' in `luaotfload.patch_font'.
Inserting `luaotfload.aux.patch_cambria_domh' in `luaotfload.patch_font'.
Inserting `luaotfload.aux.fixup_fontdata' in `luaotfload.patch_font_unsafe'.
Inserting `luaotfload.aux.set_capheight' in `luaotfload.patch_font'.
Inserting `luaotfload.aux.set_xheight' in `luaotfload.patch_font'.
Inserting `luaotfload.rewrite_fontname' in `luaotfload.patch_font'.
Inserting `tracingstacklevels' in `input_level_string'. (/usr/local/texlive/202
5/texmf-dist/tex/latex/latexbug/latexbug.sty
Package: latexbug 2024/07/16 v1.0p Bug-classification
)
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/article.cls
Document Class: article 2024/06/29 v1.4n Standard LaTeX document class
(/usr/local/texlive/2025/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2024/06/29 v1.4n Standard LaTeX file (size option)
luaotfload | db : Font names database loaded from /Users/enrico2013/Library/texl
ive/2025/texmf-var/luatex-cache/generic/names/luaotfload-names.luc.gz)
\c@part=\count194
\c@section=\count195
\c@subsection=\count196
\c@subsubsection=\count197
\c@paragraph=\count198
\c@subparagraph=\count199
\c@figure=\count266
\c@table=\count267
\abovecaptionskip=\skip49
\belowcaptionskip=\skip50
\bibindent=\dimen140
)
(/usr/local/texlive/2025/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
File: l3backend-luatex.def 2024-05-08 L3 backend support: PDF output (LuaTeX)
\l__color_backend_stack_int=\count268
Inserting `l3color' in `luaotfload.parse_color'.
\l__pdf_internal_box=\box52
)
(./testbox.aux)
\openout1 = testbox.aux

LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for TS1/cmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for TU/lmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.

Missing character: There is no 䑄 (U+4444) in font [lmroman10-regular]:+tlig;!
> \box0=
\hbox(7.16+0.22)x34.47, direction TLT
.\TU/lmr/m/n/10 W
.\TU/lmr/m/n/10 H
.\TU/lmr/m/n/10 A
.\kern-0.83 (font)
.\TU/lmr/m/n/10 T
.\TU/lmr/m/n/10 䑄
.\TU/lmr/m/n/10 󰀀

! OK.
l.10 \sbox0{WHAT\char"4444} \showbox0
                                     
? 
Width is 34.47pt
(./testbox.aux)
 ***********
LaTeX2e <2024-11-01> patch level 2
L3 programming layer <2025-01-18>
 ***********
)

Here is how much of LuaTeX's memory you used:
 1821 strings out of 475506
 100000,552014 words of node,token memory allocated
 477 words of node memory still in use:
   4 hlist, 1 vlist, 1 rule, 2 glue, 4 kern, 7 glyph, 7 attribute, 48 glue_spec,
 7 attribute_list, 2 write nodes
   avail lists: 2:7,3:1,4:1,5:4,7:1,9:1
 24915 multiletter control sequences out of 65536+600000
 15 fonts using 723367 bytes
 35i,1n,49p,130b,1352s stack positions out of 10000i,1000n,20000p,200000b,200000s

warning  (pdf backend): no pages of output.

PDF statistics: 0 PDF objects out of 1000 (max. 8388607)
 0 named destinations out of 1000 (max. 131072)
 1 words of extra memory for PDF output out of 10000 (max. 100000000)

If the value is set to 5, an error is raised (like for the value 3 in pdflatex).

Missing character: There is no 䑄 (U+4444) in font [lmroman10-regular]:+tlig;!
.
\sbox  ...box {\color@setgroup #2\color@endgroup }

l.10 \sbox0{WHAT\char"4444}
@eg9 eg9 changed the title Set \tracinglostchars to 4 in the LuaLaTeX initialization Set \tracinglostchars to 4 or 5 in the LuaLaTeX initialization Mar 2, 2025
@josephwright josephwright added this to the Release 2025 Q2 milestone Mar 3, 2025
@github-project-automation github-project-automation bot moved this to Pool (unscheduled issues) in upcoming LaTeX2e releases Mar 3, 2025
@josephwright josephwright self-assigned this Mar 3, 2025
@josephwright josephwright linked a pull request Mar 4, 2025 that will close this issue
7 tasks
@FrankMittelbach FrankMittelbach moved this from Pool (unscheduled issues) to In progress in upcoming LaTeX2e releases Mar 5, 2025
@github-project-automation github-project-automation bot moved this from In progress to Done in upcoming LaTeX2e releases Mar 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

Successfully merging a pull request may close this issue.

3 participants