Produzindo uma versão simplificada do Computer Modern ajustando os parâmetros do Metafont

Produzindo uma versão simplificada do Computer Modern ajustando os parâmetros do Metafont

Espero produzir uma versão personalizada de todos os glifos da Computer Modern, onde os parâmetros sejam ajustados de forma que os traços da caneta sejam muito finos (essencialmente sem preenchimento, apenas traços centrais do esqueleto). Meu objetivo é converter autotraceesses traços em caminhos SVG, resultando em glifos de traço único para uso em outros programas (pen-plotters, Mathjax, etc.)

Os livros Metafont e CM são um pouco complicados, então eu apreciaria conselhos/exemplos simples que me apontassem na direção certa, especificamente:

  1. Como seria possível produzir todos os glifos do CM, com uma distribuição atual do TeX?

  2. Qual é o melhor lugar para encontrar todos os parâmetros que precisarão ser ajustados para criar traços finos e de largura constante?

Editar:para esclarecer, aqui está uma descrição do que procuro

Começando pelas fontes do Metafont (aquicopiado da Wikipédia)

%file name: beta.mf
%mode_setup;
% Define a beanlike shape for the character B
beginchar("B",11pt#,11pt#,0);
  % Setup coordinates as an equation system
  y1=y2=y3=0;
  y4=y5=y6=h;
  x1=x4=0;
  x2=x5=w;
  x3=x6=2*w;

  % Define pen
  pickup pencircle xscaled 0.2w yscaled 0.04w rotated 45;

  % Draw the character curve
  % z1 is the same as (x1, y1)
  draw z1..z3..z6{z2-z6}..z5..{z4-z2}z4..cycle;
endchar;

end

pode-se produzir um glifo (raster ou vetorial, não é importante), que é então processado pelo autotrace (por exemplo, via Inkscape) para obter apenas a linha central,

captura de tela do rastreamento automático

Agora, desejo fazer isso programaticamente para mais de 2.200 glifos da Computer Modern, e muitos têm traços que confundirão o algoritmo porque variam muito em espessura. Eu gostaria de ajudar o algoritmo de rastreamento automático produzindo primeiro uma versão de glifos CM com traços quase uniformes.

Responder1

As fontes Metafont para fontes CM estão fonts/source/public/cm/no TeXlive. Cada arquivo com nome de fonte real (por exemplo cmr10.mf) inclui a configuração de cerca de 60 parâmetros e a última linha é generate romanou generate textitetc. Isso executa os arquivos onde todos os caracteres são descritos por procedimentos, esses procedimentos utilizam os parâmetros mencionados como variáveis ​​globais. Portanto, se você alterar um parâmetro, cmr10.mftodos os caracteres serão alterados.

Você pode executar mf '\mode=supre; mode_setup; input cmr10.mf'para gerar cmr10.2400gfarquivo com bitmaps de todos os caracteres em resolução de 2400 dpi. Você pode aplicar gftopk cmr10.2400gfpara criar um formato compactado da saída mf no arquivo cmr10.2400pk. A alta resolução é desejada para o próximo processo de rastreamento automático.

Se você deseja gerar todos os glifos CM por um único comando, tente

for i in cm*.mf ; do mf '\mode=supre; mode_setup; input' $i; done

EditarSe você deseja criar pngarquivos (um caractere por arquivo), você pode usar dvipngum software. Primeiro, crie sua versão do bitmap de cmr10.2400pkto cmr10.2400pkusing gftopke deixe-a em seu diretório real. Então você pode criar um arquivo (digamos cm.tex):

\font\f=cmr10 scaled 6000
\f
\nopagenumbers

a
\vfil\break 
b
\vfil\break % ... etc

\bye

Corra tex cmpara criar cm.dvi. Cada carta tem uma única página. Finalmente corra dvipng --freetype0 cm. Ele cria vários cm*.pngarquivos. Como a resolução padrão dvipngé 400, dimensionamos as fontes 6 vezes (consulte \fonto comando) para obter a resolução 2400 em nosso resultado. Quando a --freetype0opção é utilizada, dvipgutiliza fontes bitmap, busca fontes na resolução 6x400=2400 e utiliza o arquivo cmr10.2400pkpreparado por você.

informação relacionada