Por que o xelatex produz arquivos diferentes das mesmas fontes determinísticas?

Por que o xelatex produz arquivos diferentes das mesmas fontes determinísticas?

Pegue o arquivo fonte de látex simples:

\documentclass{article}
\usepackage{lipsum}
\usepackage{amsgen}
\begin{document}
\lipsum[1-10]
\end{document}

Quando processado com "latex" você sempre obtém o mesmo arquivo DVI, idêntico em todos os lugares, exceto na data.

Quando processado (várias vezes) com "pdflatex" você obtém o mesmo arquivo PDF, com exceção de um ID e a Data, e o mesmo para "lualatex".

Mas quando processado (várias vezes) com "xelatex" você obtém arquivos PDF totalmente diferentes, com tamanhos diferentes. Pode-se ver as diferenças facilmente com o "vimdiff".

Por que o processamento com "xelatex" não é determinístico - não é o mesmo para as mesmas fontes?

Responder1

O problema está relacionado ao driver: xdvipdfmx. Para gerar tags exclusivas para fontes, são usados ​​números aleatórios. Tentar

xelatex -no-pdf test

xdvipdfmx test.xdv
pdffonts test.pdf

A tag mudará como

LYKESP+CMR10
CBIVMK+CMR10
...

cada vez que você corre

xdvipdfmx test.xdv

Responder2

O que parece diferir são as codificações binárias reais de algumas partes. Confio que a renderização do PDF não varia em nada. Na minha experiência, o tamanho do arquivo mudou apenas em mais ou menos 1 byte (Mac OS X). Eu fiz um ediff em modo hexadecimal de dois desses PDFs, aqui está um instantâneo de onde aparecem as primeiras diferenças:

Bloco de citação

Esta primeira diferença ocorre assim numa parte do pdf relativa à fonte parcialmente incorporada. Não sei o que causa isso.

De modo geral, posso imaginar que se você disser algo de 213 bytes que deve ser armazenado em 256 bytes, então os últimos 43 bytes podem ser memória aleatória; se, além disso, uma ou muitas dessas coisas juntas forem compactadas, você obterá resultados variados. Na descompactação, haverá algum lixo aleatório variável após os terminadores de estruturas (ou após um determinado número de bytes). Como DNA não codificante. O que talvez não seja tanto não-codificação, mas não vamos divagar.

Apenas alguém familiarizado com o código-fonte do XeTeX pode responder de forma convincente, eu acho.

Não se preocupe com o C-M-'indefinido, eu estava tentando capturar a coisa por meio de atalhos de teclado que havia esquecido.

informação relacionada