WEBVTT 00:00:05.038 --> 00:00:08.274 Bom dia a todos. 00:00:08.274 --> 00:00:12.508 Eu vou falar sobre pilha de renderização de fonte, 00:00:12.508 --> 00:00:18.652 e o que eu aprendi nos útimos quatro anos e meio. 00:00:18.652 --> 00:00:23.422 Eu trabalhei na administração da cidade de Munique. 00:00:23.434 --> 00:00:28.746 Para apresentar a renderização de fonte, 00:00:28.766 --> 00:00:34.934 posso dizer que escrever é a interface mais utilizada, 00:00:34.934 --> 00:00:39.404 ou provavelmente a interface mais usada entre humanos e máquinas. 00:00:39.414 --> 00:00:48.264 Provavelmente todos vocês utilizam nos seus computadores todos os dias. 00:00:48.264 --> 00:00:52.549 A escrita em tela está substituindo a escrita no papel cada vez mais 00:00:52.549 --> 00:00:58.239 e este é um processo que continua acontecendo. 00:00:58.239 --> 00:01:06.423 A maneira de uma string exibir texto em uma tela é surpreendentemente complexa, 00:01:06.433 --> 00:01:14.082 E a escrita por si só é deveras profunda. 00:01:14.084 --> 00:01:23.224 Por exemplo, é influenciada pela história, então provavelmente todas, ou a maioria 00:01:23.224 --> 00:01:32.176 dos sistemas de escrita são derivados de sistemas de escrita pictográfica. 00:01:32.176 --> 00:01:36.525 Isso também é o caso para letras romanas. 00:01:36.525 --> 00:01:43.368 E também as próprias letras romanas mudaram muito desde 2000 mil anos atrás. 00:01:43.368 --> 00:01:51.901 No Império Romano, eles usavam letras diferentes das quais usamos agora. 00:01:51.901 --> 00:01:58.341 O objetivo dessa palestra é conscientizar sobre renderização de fontes na computação 00:01:58.341 --> 00:02:02.141 com foco no sistema Linux. 00:02:04.522 --> 00:02:14.202 Agora, para a história, e depois eu falo sobre tipografia. 00:02:14.222 --> 00:02:17.979 Exibição de texto no começo da computação. 00:02:17.979 --> 00:02:26.288 No começo da computação era apenas uma forma de mostrar resultados. 00:02:26.288 --> 00:02:33.688 Antes disso, haviam apenas luzes piscando, 00:02:33.711 --> 00:02:36.339 através das quais você poderia ler os resultados e... 00:02:36.339 --> 00:02:43.768 Alguém na platéia levanta a mão e faz uma pergunta 00:02:43.768 --> 00:02:48.246 [Max] E o dispositivo de saída recebe uma página ou stream de caractéres, 00:02:48.246 --> 00:02:52.626 e a apresentação fica a cargo do dispositivo de saída. 00:02:52.636 --> 00:02:58.951 Por exemplo, uma máquina de escrever ou uma impressora, ou um terminal 00:02:58.951 --> 00:03:03.712 E este é um BT100 que se encontra ao lado direito. 00:03:03.712 --> 00:03:06.423 Então é um terminal de verdade. 00:03:06.423 --> 00:03:10.575 line:1 Mas continuando na história, existe a era do computador pessoal. 00:03:12.841 --> 00:03:19.317 line:1 Na era do computador pessoal existem conjuntos de caracteres fixos 00:03:19.317 --> 00:03:26.307 e na maior parte do tempo, devido a limitações de sistema, de memória, 00:03:26.327 --> 00:03:32.465 existem os modos gráfico e de texto. 00:03:32.465 --> 00:03:38.571 No modo gráfico é possível configurar os pixels mais ou menos como você quiser, 00:03:38.571 --> 00:03:47.554 e no modo de texto é possível usar fontes. 00:03:47.554 --> 00:03:53.294 A configuração de tela naquele tempo era mais ou menos definida 00:03:53.294 --> 00:03:58.075 pelo estado da tecnologia. 00:03:58.089 --> 00:04:02.025 Toda tela naquele tempo tinha mais ou menos a mesma resolução, 00:04:02.025 --> 00:04:08.627 e é algo em que engenheiros daquela época 00:04:08.685 --> 00:04:15.305 e também engenheiros de software se baseavam. 00:04:15.314 --> 00:04:19.764 Renderização de texto funcionava usando fontes bitmap. 00:04:19.774 --> 00:04:25.969 Significa que existe um caractere de tamanho fixo e você só ajusta os pixels 00:04:26.093 --> 00:04:30.952 quase como se fossem caracteres feitos à mão. 00:04:30.952 --> 00:04:36.351 e só irá definir o pixelwise 00:04:36.362 --> 00:04:44.498 É como se fosse um caracteres feitos à mão 00:04:44.530 --> 00:04:56.334 E você tem uma rasterização e depois você irá mostrar os caracteres definidos 00:04:58.802 --> 00:05:01.312 Então... 00:05:01.328 --> 00:05:01.688 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 line:1 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999 99:59:59.999 --> 99:59:59.999