Linefeed (avanço de linha) é um caractere de controle que faz o computador ou a impressora passar para a linha seguinte sem alterar a posição do cursor ou do cabeçote de impressão. O acrônimo é LF e o código ASCII é 10 (0A em hexadecimal). O LF surgiu como um comando para impressoras usado, normalmente, junto com um retorno de carro ou carriage return (CR), um comando que fazia a cabeça da impressora retornar para a posição mais à esquerda. Após processar um par CR-LF, a cabeça da impressora deverá estar no canto esquerdo e ter avançado uma linha da página.

No Unix, um LF é frequentemente chamado de newline: um LF é interpretado como sendo a instrução que tem o mesmo efeito que um CR-LF teria em uma impressora. Na linguagem C e muitas outras linguagens é representado por '\n'. A linguagem de programação Java define as sequências de escape '\n' e o '\r'. Elas são sempre representadas por 0x0A e 0x0D, respectivamente. Isto significa que um '\n' pode não ser interpretado corretamente por programas de todas as plataformas — se tais programas não forem escritos em Java. Porém, a biblioteca do Java fornece métodos capazes de lidar corretamente com a leitura e escrita de arquivos de maneira consistente em qualquer ambiente.

Em tese, o LF e o CR deveriam funcionar independentes e para ir para o começo da próxima linha deveria usar ambos. Mas alguns sistemas convencionaram interpretar apenas um deles como a intenção de fazer as duas ações, até para economia de espaço. Como em muita coisa na computação, depende de quem está interpretando. É comum escolhermos o CR (Mac Os) ou o LF (Linux) ou o CR+LF (Windows) dependendo do sistema operacional porque muitas ferramentas dele foram feitas para interpretar só de um desses jeitos. Mas cada ferramenta pode dar a semântica que quiser para isto.

Usos do Linefeed

O linefeed é usado em uma variedade de aplicações, incluindo:

  • Impressão: O linefeed é usado para indicar o fim de uma linha de texto a ser impressa.
  • Processamento de texto: O linefeed é usado para separar linhas de texto em arquivos de texto.
  • Programação: O linefeed é usado para separar comandos em scripts de programação.

Representação do Linefeed

O linefeed é representado de forma diferente em diferentes sistemas operacionais e linguagens de programação.

  • ASCII: O linefeed é representado pelo código ASCII 10 (0A em hexadecimal).
  • C: O linefeed é representado pela sequência de escape '\n'.
  • Java: O linefeed é representado pela sequência de escape '\n'.
  • Unix: O linefeed é frequentemente chamado de newline.
  • Mac OS: O linefeed é representado pelo código ASCII 13 (0D em hexadecimal).
  • Windows: O linefeed é representado pelo par CR-LF (13-10).

Compatibilidade do Linefeed

É importante estar ciente das diferentes representações do linefeed ao trabalhar com arquivos de texto ou scripts de programação. Se um arquivo de texto for criado em um sistema operacional que usa CR-LF e for aberto em um sistema operacional que usa LF, o arquivo poderá ser exibido incorretamente.

Para garantir a compatibilidade, é possível converter o linefeed de um tipo para outro usando uma ferramenta de conversão de caracteres.

Conclusão

O linefeed é um caractere de controle essencial para a exibição de texto em computadores e impressoras. É importante estar ciente das diferentes representações do linefeed ao trabalhar com arquivos de texto ou scripts de programação para garantir a compatibilidade.