![Produzindo uma versão simplificada do Computer Modern ajustando os parâmetros do Metafont](https://rvso.com/image/449616/Produzindo%20uma%20vers%C3%A3o%20simplificada%20do%20Computer%20Modern%20ajustando%20os%20par%C3%A2metros%20do%20Metafont.png)
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 autotrace
esses 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:
Como seria possível produzir todos os glifos do CM, com uma distribuição atual do TeX?
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,
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 roman
ou generate textit
etc. 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.mf
todos os caracteres serão alterados.
Você pode executar mf '\mode=supre; mode_setup; input cmr10.mf'
para gerar cmr10.2400gf
arquivo com bitmaps de todos os caracteres em resolução de 2400 dpi. Você pode aplicar gftopk cmr10.2400gf
para 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 png
arquivos (um caractere por arquivo), você pode usar dvipng
um software. Primeiro, crie sua versão do bitmap de cmr10.2400pk
to cmr10.2400pk
using gftopk
e 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 cm
para criar cm.dvi
. Cada carta tem uma única página. Finalmente corra dvipng --freetype0 cm
. Ele cria vários cm*.png
arquivos. Como a resolução padrão dvipng
é 400, dimensionamos as fontes 6 vezes (consulte \font
o comando) para obter a resolução 2400 em nosso resultado. Quando a --freetype0
opção é utilizada, dvipg
utiliza fontes bitmap, busca fontes na resolução 6x400=2400 e utiliza o arquivo cmr10.2400pk
preparado por você.