¿Es esto un error en el archivo pfb o un error en el "glifo" de metapost?

¿Es esto un error en el archivo pfb o un error en el "glifo" de metapost?

Recién comencéjugandocon el "glifo" de metapost. Descubrí (MWE a continuación) una anomalía con las rutas en serifas para la fuente cm establecida en estos experimentos.

Punto de partida: parece que metapost obtiene los glifos del archivo .pfb para la fuente (por ejemplo .../texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb).

Mi pregunta es cuál de los siguientes está causando las anomalías, para poder determinar si se justifica un informe de error y a quién enviarlo...

  1. Hay un error en el archivo .pfb. Ya que es un camino quecasise duplica sobre sí mismo, lo que puede resultar en que no se llenen ningún píxel, por lo que nadie se ha dado cuenta.
  2. Me equivoco acerca de dónde obtiene Metapost los glifos, y el error está dondequiera que esté.
  3. Hay un error en el código de glifos en metapost.
  4. Algo más.

Cosas que he hecho:

  1. Verifiqué que otros programas que usan estas fuentes usan el mismo archivo .pfb (sí, AFAICT para pdflatexy para latex|dvips|pstopdf) y observé los caracteres muy ampliados en la salida PDF de estos; no hubo suerte.
  2. Busqué otras herramientas para extraer glifos de un .pfb; no encontré ninguna. (Sería bueno recibir consejos sobre esto)
  3. Revisé los trazos cmr.mf(en realidad cmbase.mf): las serifas de Knuth son un trazo separado del resto de la letra, por lo que no hay pista allí.
  4. Busqué las diversas herramientas que pueden haberse utilizado para producir estas fuentes tipo 1 (MFTOEPS, etc.) de la fuente de Knuth, pero decidí que eso está más allá de mi experiencia.
  5. Busqué en Texexchange y más allá.
  6. Verifiqué la información de la versión (MetaPost=v1.504, cmr10.pfb=v003.002) y revisé el registro de cambios para ver metapost más reciente.

Mi MWE muestra que el límite del glifo se sobrepasa, luego se duplica en el serif y una pequeña cantidad de área adicional dentro del glifo para "I" en cmr10. Debido a la geometría de las serifas, cmti10todavía hay un exceso pero no hay área adicional. También aparece en algunas otras fuentes (negrita, inclinada) en el conjunto de fuentes cm y en serifas tanto en mayúsculas como en minúsculas.

picture pic[];
path p[];
pair d;

pic0=btex  I\it I etex; % <---- the text to be analysed
_i:=1;
for $ within pic0:
    p[_i]=pathpart glyph (textpart $) of (fontpart $) scaled 1/100 shifted llcorner $ scaled 20;
    _i:=_i+1;
endfor

beginfig(1)
for i = 1 upto 20:
    if known p[i]:
        fill p[i] withcolor (.8,.8,.9);
        for j = 0 upto (length(p[i])-1):
            draw point j of p[i]--postcontrol j of p[i] dashed withdots scaled 1/4;
            draw point j+1 of p[i]--precontrol j+1 of p[i] dashed withdots scaled 1/4;
            fill fullcircle scaled 0.5mm shifted point j of (p[i]);
            d:=direction j of p[i];
            if abs(d)=0: d:=point j+4 of p[i] - point j-4 of p[i]; fi
            a:= if abs(d)=0: 0 else: angle(d) fi;
            draw thelabel.lft(decimal j infont "cmbx5",(0,0))
                rotated (a+90)
                shifted (point j of (p[i] )) withcolor blue;
        endfor
        draw p[i] withpen pencircle scaled 0.1;
    fi
endfor
endfig;

bye

ingrese la descripción de la imagen aquí

Respuesta1

Este problema parece estar relacionado con el uso de pathparten la imagen devuelta por glyph. Considere el siguiente programa:

prologues := 3;
outputtemplate := "glyph%c.eps";
beginfig(1);
  picture a;
  a = glyph "I" of "cmti12";
  draw a withcolor .9 white;
  draw pathpart a withcolor red;
endfig;
end.

lo que produce la siguiente imagen. Puedes ver claramente los dentados en las serifas abombadas (en rojo), pero observa que no hay dentados en la parte gris.

El glyphoperador devuelve una imagen del carácter dado en la fuente dada. Si solo tomo drawesa imagen, entonces el contorno se ve correcto (la parte gris de la imagen). Pero si dibujo el camino de regreso pathpart, obtendremos irregularidades adicionales en los platos.

Esto muestra que no hay ningún error en el archivo de fuente, sino que hay un problema al pathpartaplicarlo a la imagen devuelta por glyph. Le planteé un problema al equipo de desarrollo de MP -> http://tracker.luatex.org/view.php?id=935

Actualizar: A partir del 15 de mayo de 2015, este error ya está solucionado.

ingrese la descripción de la imagen aquí

Aquí está el resultado usando una mpostversión 1.999 recién compilada:

ingrese la descripción de la imagen aquí

información relacionada