Metafont 매개변수를 조정하여 Computer Modern의 씬 버전 제작

Metafont 매개변수를 조정하여 Computer Modern의 씬 버전 제작

저는 모든 Computer Modern 글리프의 사용자 정의 버전을 생성하고 싶습니다. 여기서는 펜 스트로크가 매우 얇아지도록 매개변수가 조정됩니다(기본적으로 채우기가 없고 중앙 뼈대 스트로크만 있음). 내 목표는 autotrace해당 스트로크를 SVG 경로로 변환하여 다른 프로그램(펜 플로터, Mathjax 등)에서 사용할 수 있는 단일 스트로크 문자 모양을 만드는 것입니다.

Metafont와 CM 책은 약간 부담스럽기 때문에 올바른 방향을 알려주는 조언이나 간단한 예를 제공해 주시면 감사하겠습니다. 특히 다음과 같습니다.

  1. 현재 TeX 배포판을 사용하여 CM의 모든 문자 모양을 생성하려면 어떻게 해야 합니까?

  2. 얇고 일정한 폭의 스트로크를 만들기 위해 조정해야 하는 모든 매개변수를 찾을 수 있는 가장 좋은 장소는 어디입니까?

편집하다:명확히 하기 위해, 여기에 제가 추구하는 바가 묘사되어 있습니다.

Metafont 소스에서 시작하기(여기위키피디아에서 복사됨)

%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

글리프(래스터 또는 벡터, 중요하지 않음)를 생성한 다음 자동 추적(예: Inkscape를 통해)으로 처리하여 중앙선만 얻을 수 있습니다.

자동 추적의 스크린샷

이제 저는 Computer Modern의 2200개 이상의 문자 모양에 대해 프로그래밍 방식으로 이 작업을 수행하고 싶습니다. 많은 문자의 두께가 너무 다양하기 때문에 알고리즘을 혼란스럽게 하는 획이 있습니다. 나는 거의 균일한 스트로크를 갖는 CM 글리프 버전을 먼저 생성하여 자동 추적 알고리즘을 돕고 싶습니다.

답변1

CM 글꼴의 Metafont 소스는 fonts/source/public/cm/TeXlive에 있습니다. 실제 글꼴 이름(예: cmr10.mf)이 있는 각 파일에는 약 60개의 매개변수 설정이 포함되어 있으며 마지막 줄은 등입니다 generate roman. generate textit이는 모든 문자가 프로시저에 의해 설명되는 파일을 실행하며, 이 프로시저는 언급된 매개변수를 전역 변수로 사용합니다. 따라서 매개변수를 변경하면 cmr10.mf모든 문자가 변경됩니다.

2400dpi 해상도의 모든 문자 비트맵이 포함된 파일을 mf '\mode=supre; mode_setup; input cmr10.mf'생성하기 위해 실행할 수 있습니다 . 파일에 mf 출력의 압축 형식을 생성하도록 cmr10.2400gf신청할 수 있습니다 . 다음 자동 추적 프로세스에는 고해상도가 필요합니다.gftopk cmr10.2400gfcmr10.2400pk

단일 명령으로 모든 CM 문자 모양을 생성하려면 다음을 시도하십시오.

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

편집하다파일(파일 1개당 문자 1개)을 생성하려면 소프트웨어를 png사용할 수 있습니다 dvipng. 먼저, 사용하고 cmr10.2400pk있는 비트맵 버전을 생성 하고 실제 디렉토리에 남겨두세요. 그런 다음 파일을 만들 수 있습니다(예 : ).cmr10.2400pkgftopkcm.tex

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

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

\bye

tex cm생성하려면 실행하세요 cm.dvi. 각 문자는 단일 페이지에 있습니다. 마지막으로 실행합니다 dvipng --freetype0 cm. 그것은 많은 cm*.png파일을 생성합니다. 기본 해상도는 dvipng400이므로 글꼴 크기를 6배로 조정하여( \font명령 참조) 결과에서 해상도 2400을 얻습니다. --freetype0옵션을 사용 하면 비트맵 글꼴을 사용하며, 6x400=2400 해상도의 글꼴을 검색하여 사용자가 준비한 dvipg파일을 사용합니다 .cmr10.2400pk

관련 정보