collapse

* Posts Recentes

Emulador NES em ESP32 por dropes
[Hoje às 15:31]


Arame de Estendal por almamater
[Ontem às 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: Truque para ler PDFs longos em Linux para disléxicos  (Lida 1218 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline blabla

  • Mini Robot
  • *
  • Mensagens: 257
Truque para ler PDFs longos em Linux para disléxicos
« em: 28 de Dezembro de 2021, 01:42 »
Boa tarde a todos,

os disléxicos tem alguma dificuldade em ler por períodos longos de um ecrã de computador com fundo branco, pois cria desconforto visual, papel e epaper não tem tanto este problema. É como se tivessem a ler um texto e que este tivesse uma espécie de um holofote um pouco obsfuscante inconstante a variar a intensidade a vir do ecrã. Isto fora o facto de as letras poderem não estar muito constantes no mesmo sitio. A leitura de um disléxico quando é petiz é uma desgraça mas depois com o avançar da idade e com muito treino de leitura as coisas melhoram muito. Nos antigos ecrãs de computador de CRT era uma desgraça, nos nos atuais de LCD ou de TFT já é um problema menor. Muita gente tem dislexia apesar de não se falar muito, mas até o grande Einstein teve dislexia e acho que o Kennedy também tinha.

Ferramentas de desenvolvimento de código que têm por natureza um fundo preto ou escuro como o Visual Studio Code são naturalmente mais repousantes para os olhos dos disléxicos, e consegue-se trabalhar neles durante 12 a 14 horas num dia sem qualquer problema.

Mas ler PDF’s longos de muitas centenas de páginas de um ecrã ao longo de horas é algo mais complexo pois causa desconforto. Gostaria de partilhar convosco um pequeno truque que já testei com 3 pessoas disléxicas e que as 3 são da opinião que a leitura de PDF’s desta maneira cansa muito menos à vista pois retira grande parte do efeito de holofote variável no tempo.
Em principio este método funciona também em Windows, mas em Windows podem sempre usar algo como o PDF Reader mais conhecido e mudar-lhe a cor de fundo que ele já vem com a tecnologia  de sub-pixel renderization no Windows.

Basicamente a ideia é de por exemplo no Linux Ubuntu que já vem instalado com o Browser Firefox e que já vem com um leitor de PDF o pdf.js e que este já faz um dos melhores subpixel rendering de todo o open source, mas como ele não permite mudar a cor de fundo dos PDF’s, uma forma de o fazer é de ir à página do projeto open source pdf.js da Mozilla e fazer download do código (versão prebuilt):

PDF.js
A general-purpose, web standards-based platform for parsing and rendering PDFs.
https://mozilla.github.io/pdf.js/

1. Fazem download.

2. Descomprimem para uma diretoria ex: pds.js

3. Fazem as duas alterações para alterar a cor do fundo e a granularidade do zoom que descrevo em baixo no código do pdf.js que está em Javascript logo não é preciso compilar.

4. No FireFox metem um tema escuro como o Galaxy para não terem tons claros no ecrã.

5. Arrastam a página viewer.html para o FireFox e criam um link com o nome pdf.js para ele no FireFox para ser mais rápido de o abrir. (nota os icons do PDF.js com o tema escuro ficam pretos mas se pararem o rato durante uns 1 segundo em cima do icon aparece o texto da tool tip que descreve o icon, depois tenho de corrigir este facto mas ainda não tive tempo de pensar em como o fazer e de pesquisar no código onde o fazer).


Alteração 1 – Cor de Background do PDF:

Eu estive a ver com a lupa das ferramentas do FireFox e de facto confirma-se que as letras do pdf.js tem muitas cores por isso está a fazer subpixel rendering (isto também diminui a “rigidez” do contraste das letras e como tal também é melhor para disléxicos), mas isso também significa que quando se invertem as cores as cores (dos subpixeis) ficam todas maradas à volta das letras e já não batem certo com o hardware do monitor (a disposição de cada um dos 3 sub pixéis reais por cada pixel) e como tal já cansa mais outra vez, não se tem um efeito típico de um ecrã do tipo “retina” que tem mais resolução.

Então andei a ver a melhor solução possível e seria a de retirar o branco ofuscante para um disléxico que causa problemas de vibração da intensidade das cores, como se tivesse uma sinusoide a mudelar a intensidade do branco, logo as cores a não estarem constantes. E logo a criar cansaço na leitura do PDF longo durante horas.

Então pensei se em vez do branco rgb(255, 255, 255) eu puser um rgb(200, 200, 200) uma espécie de um branco sujo ou típica de papel reciclado a maior parte dos problemas já ficam resolvidos e tem-se o melhor dos dois mundos, tem-se o subpixel rendering que dá letras muito bem definidas e que cansam menos pois as transições são mais suaves e é retirado o efeito de vibração da luminosidade que um disléxico sente como cansaço ao olhar durante algum tempo para um PDF enquanto o está a ler. Coisa que um ereader de epaper não tem, pelo facto da luz ser refletida e não emitida.

Nota: Alterando os parâmetros do contraste e da luminosidade não consegui obter o mesmo efeito de descanso visual do que alterando a cor de fundo.

Agora que já tenho um plano, vamos tentar pôr isto em prática, certo?

Ok, tentei analisar a CSS associada ao PDF Viewer pdf.js e sem sucesso nenhuma classe de CSS fazia mudar a cor de fundo, depois de esgotar todas as hipóteses reparei que tinha lá uma canvas, então pensei, será que a cor da canvas de fundo está a vir diretamente do Javascript no viewer.js (diretoria WEB do ficheiro descomprimido do zip pdf.js que fizemos download) e procurei no código e testei alterar todas as ocorrências de rgb(255, 255, 255), mas sem sucesso e durante essas análises de código e mediante a minha frustração pensei que a única hipótese era de isto vir da outra diretoria do prebuilt pois lá é que estava o renderer em pdf.js e foi quando eu pesquisei nesse ficheiro por todas as ocorrências de 255 que encontrei o sitio onde tem de ser alterada uma linha de código para que a cor de fundo passe de rgb(255, 255, 255)  para rgb(200, 200, 200) e por isso só tem de fazer essa modificação e já fica um PDF reader em Linux muito melhor para uma  pessoa com uma visão dita normal mas sobretudo para um disléxico:

Onde tem de fazer a alteração:

ficheiro : /build/pdf.js
linha 5329

    beginDrawing({
      transform,
      viewport,
      transparency = false,
      background = null
    }) {
      const width = this.ctx.canvas.width;
      const height = this.ctx.canvas.height;
      this.ctx.save();
      this.ctx.fillStyle = background || "rgb(200, 200, 200)";   /* aqui */
      this.ctx.fillRect(0, 0, width, height);
      this.ctx.restore();
 
depois só tem de carregar novamente o ficheiro da outra diretoria web viewer.html e arrastar um ficheiro PDF para a página e ver uma imagem que parece repousante que parece que estão a ver quase em papel ou quase num ereader, pelo menos para um disléxico.


Alteração 2 – Maior granularidade do Zoom:

Zoom mais progressivo, com saltos mais pequenos.

Quando tem um PDF aberto no pdf.js, se carregam no botão do CTRL + roda do rato ele faz o Zoom In e o Zoom Out, aparece a percentagem a meio em acima, certo?

Pois bem no meu caso ele estava a fazer saltos de Zoom muito grandes e como tal era difícil de enquadrar o PDF que estava a ler, pois o Zoom não é continuo-o, por isso eu estive a ver o código e descobri que eles tem uma constante, com o valor do factor de escala por omissão e se baixarem esse default já ficam com um zoom muito mais progressivo e fácil de enquadrar na página de modo a aproveitarem todo o vosso ecrã.

Só tem de fazer uma alteração numa linha de código mas é noutro ficheiro e noutra diretoria do que o da alteração anterior.

Ficheiro: /web/viewer.js
linha: 395

Onde está:

const DEFAULT_SCALE_DELTA = 1.1;

Alterem para:

const DEFAULT_SCALE_DELTA = 1.01;     /* 1.1   aqui */


Recarreguem o viewer.html no FireFox.

Nota Importante: Já confirmei com 3 disléxicos e todos são da opinião que este leitor com o pequeno hack cansa menos a ler do que o leitor de PDF's normal do Linux Ubuntu e do que o Okular (mesmo no caso de este ter inversão de cores).

Obrigado,

Cumprimentos,
João