Erstellen einer abgespeckten Version von Computer Modern durch Anpassen der Metafont-Parameter

Erstellen einer abgespeckten Version von Computer Modern durch Anpassen der Metafont-Parameter

Ich hoffe, eine benutzerdefinierte Version aller Computer Modern-Glyphen erstellen zu können, bei der die Parameter so angepasst sind, dass die Stiftstriche sehr dünn sind (im Wesentlichen keine Füllung, nur zentrale Skelettstriche). Mein Ziel ist es, autotracediese Striche in SVG-Pfade umzuwandeln, wodurch Glyphen mit einem Strich für die Verwendung in anderen Programmen (Stiftplotter, Mathjax usw.) entstehen.

Die Metafont- und CM-Bücher sind etwas überwältigend, daher wäre ich für Ratschläge/einfache Beispiele dankbar, die mich in die richtige Richtung weisen, insbesondere:

  1. Wie könnte man mit einer aktuellen TeX-Distribution alle CM-Glyphen erstellen?

  2. Wo lassen sich am besten alle Parameter finden, die angepasst werden müssen, um dünne Striche mit konstanter Breite zu erzeugen?

Bearbeiten:zur Verdeutlichung hier eine Darstellung dessen, was ich will

Ausgehend von den Metafont-Quellen (hieraus Wikipedia kopiert)

%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

man kann eine Glyphe erzeugen (Raster oder Vektor, das ist nicht wichtig), die dann mit Autotrace (z. B. über Inkscape) bearbeitet wird, um nur die Mittellinie zu erhalten,

Screenshot des Autotrace

Nun möchte ich dies programmgesteuert für über 2200 Glyphen von Computer Modern tun, und viele davon haben Striche, die den Algorithmus verwirren, weil sie in der Dicke zu stark variieren. Ich möchte dem Autotrace-Algorithmus helfen, indem ich zunächst eine Version von CM-Glyphen erstelle, die nahezu einheitliche Striche haben.

Antwort1

Die Metafont-Quellen für CM-Schriftarten befinden sich fonts/source/public/cm/in TeXlive. Jede Datei mit einem echten Schriftnamen (z. B. cmr10.mf) enthält die Einstellung von etwa 60 Parametern und die letzte Zeile lautet generate romanoder generate textitusw. Dadurch werden die Dateien ausgeführt, in denen alle Zeichen durch Prozeduren beschrieben werden. Diese Prozeduren verwenden die genannten Parameter als globale Variablen. Wenn Sie also einen Parameter in ändern, cmr10.mfwerden alle Zeichen geändert.

Sie können eine Datei mit Bitmaps aller Zeichen in einer Auflösung von 2400 dpi mf '\mode=supre; mode_setup; input cmr10.mf'erstellen . Sie können die Erstellung eines komprimierten Formats der MF-Ausgabe in der Datei beantragen . Die hohe Auflösung ist für den nächsten Autotracing-Prozess erforderlich.cmr10.2400gfgftopk cmr10.2400gfcmr10.2400pk

Wenn Sie alle CM-Glyphen mit einem einzigen Befehl generieren möchten, versuchen Sie

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

BearbeitenWenn Sie Dateien erstellen möchten png(ein Zeichen pro Datei), können Sie dvipngSoftware verwenden. Erstellen Sie zunächst Ihre Version des Bitmaps von bis cmr10.2400pkund belassen Sie sie in Ihrem aktuellen Verzeichnis. Dann können Sie eine Datei erstellen (sagen wir ):cmr10.2400pkgftopkcm.tex

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

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

\bye

Ausführen tex cm, um zu erstellen cm.dvi. Jeder Buchstabe ist eine einzelne Seite. Zum Schluss ausführen dvipng --freetype0 cm. Es erstellt eine Reihe von cm*.pngDateien. Da die Standardauflösung dvipng400 beträgt, skalieren wir die Schriftarten 6-mal (siehe \fontBefehl), um in unserem Ergebnis die Auflösung 2400 zu erhalten. Wenn die --freetype0Option verwendet wird, dvipgwerden Bitmap-Schriftarten verwendet, es werden Schriftarten in einer Auflösung von 6 x 400 = 2400 gesucht und die cmr10.2400pkvon Ihnen vorbereitete Datei verwendet.

verwandte Informationen