Resumo

  • A “quase cópia de bytes” da RFC 2159 também mapeava parâmetros, invertia a ordem de bits, preenchia páginas e criava uma fronteira com seis EOL.
  • A volta sem perda dependia de limites de página, EOL finais e bits DCS não nomeados; um hash idêntico do corpo não provava a restauração do mesmo objeto fax.
  • Uma volta estrutural correta ainda não comprovava suporte do decodificador, geometria exata da linha nem uma imagem fiel e utilizável.

“Quase” era uma descrição técnica

Publicada em janeiro de 1998, a RFC 2159 definiu como transportar em MIME informações já codificadas como fax Grupo 3 e como relacioná-las com X.400. Não vendeu image/g3fax como formato geral de imagem. O objetivo era preservar uma representação existente entre dois sistemas de mensagens.

O objeto reunia três tipos de estado: opções de codificação, estrutura de páginas e bits T.4 de cada página. As opções viravam parâmetros MIME; a sequência de BIT STRING do X.400 virava um corpo contínuo delimitado; os dados de página adotavam outra ordem de bits dentro do byte.

A RFC 1494 definira Byte Copy como copiar sem conversão. G3Fax já recebia o “nearly”. Não era preciso descomprimir e recomprimir a imagem, mas era necessário reconstruir o recipiente.

Valor ausente também era valor

Os parâmetros MIME cobriam comprimento, largura, codificação unidimensional, bidimensional ou sem compressão, resolução fina ou grossa, número de páginas e uma Device Control String em Base64. Quando nada era declarado, valiam A4, A4, uma dimensão e resolução grossa.

Os números dos bits nomeados diferiam em T.30 e X.400 porque cada padrão contava a partir de uma extremidade do octeto. O gateway precisava mapear significado, não posição. Isso era separado da inversão posterior de todos os bits dentro de cada byte do corpo.

Se a cadeia de controle tivesse qualquer bit sem opção nomeada, a RFC dizia que o parâmetro DCS deveria ser fornecido. Ao mesmo tempo, não garantia interoperabilidade para esses NonBasicParameters. Preservar o bit mantinha a evidência; não criava a função no destinatário.

A fronteira da página precisava ser construída

X.400 guardava uma sequência ASN.1 de BIT STRING, um por página. MIME precisava de um corpo único. A RFC 2159 adotou seis EOL consecutivos como limite; cada EOL era formado por onze zeros e um um. O conjunto tinha de começar em fronteira de byte, exigindo zeros de preenchimento.

O padrão completo era 00 10 01 00 10 01 00 10 01, que o documento dizia não aparecer dentro da imagem. A página podia ser localizada sem renderização, mas posição, alinhamento e preenchimento passavam a fazer parte do recibo. Um fluxo achatado não comprovava a mesma sequência de páginas.

De X.400 para MIME, retiravam-se EOL finais, ajustava-se a ordem para que o bit mais significativo do primeiro byte viesse primeiro, preenchia-se o byte, acrescentavam-se seis EOL e concatenavam-se as páginas. Na volta, separava-se pelos seis EOL, conservavam-se os EOL finais, invertiam-se os bits de cada byte e remontava-se a sequência ASN.1.

Conservar os EOL era uma mudança explícita em relação à RFC 1494, que mandava remover EOL e preenchimento no retorno. A categoria “quase cópia” permaneceu; a regra exata mudou.

O hash precisa dizer qual camada mede

Um hash estável do corpo MIME mostra que aqueles octetos atravessaram o trecho observado. Não mostra que o gateway anterior escolheu a ordem correta. Os bytes empacotados do BIT STRING podem diferir dos bytes MIME numa conversão correta, porque a inversão é intencional.

A comparação útil registra bits significativos por página, bits ASN.1 não usados, regra de ordem, zeros adicionados e deslocamentos dos separadores. Na volta, precisa restaurar páginas, bits significativos, parâmetros e DCS.

A RFC 2157 fornece o critério: equivalence é o par de mappings que, juntos, oferecem conversão sem perda. Produzir uma saída válida em uma direção demonstra apenas uma seta.

Reversível ainda não significava visível

A orientação de implementação separou estrutura de uso. Sem fineResolution, os pixels eram duas vezes mais altos que largos. Certas resoluções e comprimentos eram mais fáceis de suportar que larguras B4 ou A3. Alguns aparelhos tinham problemas quando a linha não continha exatamente o número declarado de pixels, inclusive quando o branco à direita era omitido.

Assim, o gateway pode restaurar páginas e opções, mas o decodificador não admitir o modo. Pode aceitar os dados e deformar a geometria. Uma página plausível pode estar cortada. Sintaxe, reconstrução, dimensão, aparência e leitura são observações distintas.

O registro atual da IANA ainda lista image/g3fax, e as tabelas históricas MIME/X.400 o associam a g3-facsimile. Isso prova um identificador público, não a implementação de um produto nem a capacidade do receptor.

Um teste defensável começa com parâmetros X.400, DCS, páginas, comprimentos significativos e impressões por página, além da versão do gateway. Em MIME, guarda parâmetros, preenchimento e posições de fronteira. A volta compara a sequência. Só depois se testam modos, pixels por linha, dimensões e renderização.

Os ensaios de Lu Heng sobre código em execução, especificação mínima e camadas da realidade oferecem uma lente declarada: regra, execução, representação e resultado não emprestam prova uns aos outros.

O “quase” da RFC 2159 era uma lista do que ficava fora da cópia. Sem opções, páginas, ordem, preenchimento ou capacidade, um corpo intacto podia deixar de ser o fax original.

Fontes