The censor package censors text but keeps space tokens and periods to keep the uncensored document parts similar in position to those in uncensored document. But it doesn't match uncensored output because ligatures and hyphenation affect the box construction and subsequently the paragraph breaking into lines. It is not the case that the censored text is removed from the document and the document appears otherwise identical. The example below shows this. Is it is possible to load a null font that has all the same characters and parameters for them visible to TeX, but simply doesn't draw them, and to use this font inside a macro (or to add to a font such null characters and use them only inside a macro)? Then TeX would run effectively unaware of the censoring and guarantee match of uncensored content in the censored document and the content in the uncensored document.
EDIT: censor replaces with black boxes, but for the purpose of censoring it is sufficient to have blank (white space). Then one doesn't have to worry about making censor bars overreach the box height, width, depth to prevent information leak, like in accented characters. The censor can be indicated by zero width, height, and depth boxes which contain rules, if necessary. See related posts:
- How to replace a large block of text by an empty block of the same size?. The accepted answer uses
\phantom, which only replaces an hbox with blank space. It has the same problem as\blackoutfrom\censorfor hyphenation and ligatures. - Generate a “blank” font using the metrics of another font. See egreg's answer that a solution would keep the character data, defeating the purpose for the easier and insecure color change censoring. It would be required to change the characters to a null equivalent, but if the null equivalent has the same font metrics and those are kept in output source the censored information would be easily decoded.
- Multilines, multipages \phantom analog macro. Has the same stated purpose of not changing layout based on censored content. LuaTeX solution is to replace at shipout all horizontal and vertical boxes with boxes of the same dimension containing nothing.
\documentclass{article}
\usepackage{censor}
\begin{document}
\begin{minipage}[t]{.5\textwidth}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus
elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer
id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque
habitant morbi tristique senectus et netus et malesuada fames ac
turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla
et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
sit amet tortor gravida placerat. Integer sapien est, iaculis in,
pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices
bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar
at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci
eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis,
diam. Duis eget orci sit amet orci dignissim rutrum.
\end{minipage}
\begin{minipage}[t]{.5\textwidth}
\blackout{Lorem} ipsum \blackout{dolor} sit \blackout{amet},
consectetuer \blackout{adipiscing} elit. \blackout{Ut} purus
\blackout{elit}, vestibulum \blackout{ut}, \blackout{placerat}
ac, \blackout{adipiscing} vitae, \blackout{felis}. Curabitur
\blackout{dictum} gravida \blackout{mauris}. Nam \blackout{arcu}
libero, \blackout{nonummy} eget, \blackout{consectetuer}
id, \blackout{vulputate} a, \blackout{magna}. Donec
\blackout{vehicula} augue \blackout{eu} neque. \blackout{Pellentesque}
habitant \blackout{morbi} tristique \blackout{senectus} et
\blackout{netus} et \blackout{malesuada} fames \blackout{ac} turpis
\blackout{egestas}. Mauris \blackout{ut} leo. \blackout{Cras}
viverra \blackout{metus} rhoncus \blackout{sem}. Nulla \blackout{et}
lectus \blackout{vestibulum} urna \blackout{fringilla} ultrices.
\blackout{Phasellus} eu \blackout{tellus} sit \blackout{amet} tortor
\blackout{gravida} placerat. \blackout{Integer} sapien \blackout{est},
iaculis \blackout{in}, pretium \blackout{quis}, viverra \blackout{ac},
nunc. \blackout{Praesent} eget \blackout{sem} vel \blackout{leo}
ultrices \blackout{bibendum}. Aenean \blackout{faucibus}. Morbi
\blackout{dolor} nulla, \blackout{malesuada} eu, \blackout{pulvinar}
at, \blackout{mollis} ac, \blackout{nulla}. Curabitur \blackout{auctor}
semper \blackout{nulla}. Donec \blackout{varius} orci \blackout{eget}
risus. \blackout{Duis} nibh \blackout{mi}, congue \blackout{eu},
accumsan \blackout{eleifend}, sagittis \blackout{quis}, diam.
\blackout{Duis} eget \blackout{orci} sit \blackout{amet} orci
\blackout{dignissim} rutrum.
\end{minipage}
\newpage
\begin{minipage}[t]{.5\textwidth}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus
elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer
id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque
habitant morbi tristique senectus et netus et malesuada fames ac
turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla
et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
sit amet tortor gravida placerat. Integer sapien est, iaculis in,
pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices
bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar
at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci
eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis,
diam. Duis eget orci sit amet orci dignissim rutrum.
\end{minipage}
\begin{minipage}[t]{.5\textwidth}
\blackout{Lorem ipsum} dolor sit \blackout{amet, consectetuer}
adipiscing elit. \blackout{Ut purus} elit, vestibulum \blackout{ut,
placerat} ac, adipiscing \blackout{vitae, felis.} Curabitur dictum
\blackout{gravida mauris.} Nam arcu \blackout{libero, nonummy} eget,
consectetuer \blackout{id, vulputate} a, magna. \blackout{Donec
vehicula} augue eu \blackout{neque. Pellentesque} habitant morbi
\blackout{tristique senectus} et netus \blackout{et malesuada}
fames ac \blackout{turpis egestas.} Mauris ut \blackout{leo. Cras}
viverra metus \blackout{rhoncus sem.} Nulla et \blackout{lectus
vestibulum} urna fringilla \blackout{ultrices. Phasellus} eu tellus
\blackout{sit amet} tortor gravida \blackout{placerat. Integer}
sapien est, \blackout{iaculis in,} pretium quis, \blackout{viverra
ac,} nunc. Praesent \blackout{eget sem} vel leo \blackout{ultrices
bibendum.} Aenean faucibus. \blackout{Morbi dolor} nulla, malesuada
\blackout{eu, pulvinar} at, mollis \blackout{ac, nulla.} Curabitur
auctor \blackout{semper nulla.} Donec \blackout{varius orci} eget
risus. \blackout{Duis nibh} mi, congue \blackout{eu, accumsan} eleifend,
sagittis \blackout{quis, diam.} Duis eget \blackout{orci sit} amet orci
\blackout{dignissim rutrum.}
\end{minipage}
\newpage
\begin{minipage}[t]{.5\textwidth}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus
elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer
id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque
habitant morbi tristique senectus et netus et malesuada fames ac
turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla
et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
sit amet tortor gravida placerat. Integer sapien est, iaculis in,
pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices
bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar
at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci
eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis,
diam. Duis eget orci sit amet orci dignissim rutrum.
\end{minipage}
\begin{minipage}[t]{.5\textwidth}
\blackout{Lorem ipsum dolor} sit amet, consectetuer \blackout{adipiscing
elit. Ut} purus elit, vestibulum \blackout{ut, placerat ac,} adipiscing
vitae, felis. \blackout{Curabitur dictum gravida} mauris. Nam arcu
\blackout{libero, nonummy eget,} consectetuer id, vulputate \blackout{a,
magna. Donec} vehicula augue eu \blackout{neque. Pellentesque habitant}
morbi tristique senectus \blackout{et netus et} malesuada fames ac
\blackout{turpis egestas. Mauris} ut leo. Cras \blackout{viverra metus
rhoncus} sem. Nulla et \blackout{lectus vestibulum urna} fringilla
ultrices. Phasellus \blackout{eu tellus sit} amet tortor gravida
\blackout{placerat. Integer sapien} est, iaculis in, \blackout{pretium
quis, viverra} ac, nunc. Praesent \blackout{eget sem vel} leo ultrices
bibendum. \blackout{Aenean faucibus. Morbi} dolor nulla, malesuada
\blackout{eu, pulvinar at,} mollis ac, nulla. \blackout{Curabitur auctor
semper} nulla. Donec \blackout{varius orci eget} risus. Duis nibh
\blackout{mi, congue eu,} accumsan eleifend, sagittis \blackout{quis,
diam. Duis} eget orci sit \blackout{amet orci dignissim} rutrum.
\end{minipage}
\newpage
\begin{minipage}[t]{.5\textwidth}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus
elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer
id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque
habitant morbi tristique senectus et netus et malesuada fames ac
turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla
et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
sit amet tortor gravida placerat. Integer sapien est, iaculis in,
pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices
bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar
at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci
eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis,
diam. Duis eget orci sit amet orci dignissim rutrum.
\end{minipage}
\begin{minipage}[t]{.5\textwidth}
\blackout{Lorem ipsum dolor sit} amet, consectetuer adipiscing elit.
\blackout{Ut purus elit, vestibulum} ut, placerat ac, adipiscing
\blackout{vitae, felis. Curabitur dictum} gravida mauris. Nam
arcu \blackout{libero, nonummy eget, consectetuer} id, vulputate
a, magna. \blackout{Donec vehicula augue eu} neque. Pellentesque
habitant morbi \blackout{tristique senectus et netus} et malesuada
fames ac \blackout{turpis egestas. Mauris ut} leo. Cras viverra
metus \blackout{rhoncus sem. Nulla et} lectus vestibulum urna
fringilla \blackout{ultrices. Phasellus eu tellus} sit amet tortor
gravida \blackout{placerat. Integer sapien est,} iaculis in, pretium
quis, \blackout{viverra ac, nunc. Praesent} eget sem vel leo
\blackout{ultrices bibendum. Aenean faucibus.} Morbi dolor nulla,
malesuada \blackout{eu, pulvinar at, mollis} ac, nulla. Curabitur auctor
\blackout{semper nulla. Donec} varius orci eget risus. \blackout{Duis
nibh mi, congue} eu, accumsan eleifend, sagittis \blackout{quis,
diam. Duis eget} orci sit amet orci \blackout{dignissim rutrum.}
\end{minipage}
\end{document}


