Saltar al contenido

¿Cómo colocar letras * exactamente * una encima de la otra?

Ximena, miembro de nuestro staff, nos hizo el favor de redactar este artículo ya que controla muy bien el tema.

Solución:

TeX no conoce la forma de los glifos. Solo conoce las dimensiones del cuadro de caracteres como se especifica en el archivo TFM.

Identificación de fuentes

Los archivos de fuentes se pueden identificar de la siguiente manera:

  • Utilice un documento con solo esta fuente, por ejemplo, el documento de la pregunta está bien, si pagestyleempty está agregado.

  • Ejecutarlo pdflatex con opcion -recorder.

  • La parte final del archivo de registro y la *.fls archivo revela cmbx12.pfb como fuente.

  • Las métricas de fuentes solo se pueden ver en el archivo de la grabadora *.fls:

    INPUT cmbx12.tfm
    

Datos de forma de fuente

Abra las formas de glifos en un editor de fuentes como FontForge. Los márgenes de corte:

C: 62 -12 63 -12 (width 812)
E: 38   0 32   5 (width 738)

La fuente también dice que 1em = 1000 unidades

Métricas de TeX

El binario *.tfm el archivo se puede convertir a ASCII en un formato mejor legible por el programa tftopl:

tftopl cmbx12.pfb cmbx12.pl

Contiene al principio los parámetros de dimensión de la fuente:

(FONTDIMEN
   (SLANT R 0.0)
   (SPACE R 0.375)
   (STRETCH R 0.1875)
   (SHRINK R 0.125)
   (XHEIGHT R 0.444444)
   (QUAD R 1.125)
   (EXTRASPACE R 0.125)
   )

La entrada QUAD especifica el tamaño de 1em. Es 1,125 del tamaño de fuente em.

Las métricas de caracteres son las mismas que las de la fuente (excepto por algunos problemas de “redondeo”):

(CHARACTER C C
   (CHARWD R 0.8125)
   (CHARHT R 0.686111)
   )
...
(CHARACTER C E
   (CHARWD R 0.738426)
   (CHARHT R 0.686111)
   )

El ancho para C es 0.8125 * multiplicado por el tamaño em de la fuente = 812.5 unidades de fuente. Truncado a entero, estos son los 812 que ha mostrado FontForge.

El siguiente ejemplo define algunas macros para especificar los valores de recorte para el glifo y define macro GlyphBox que corrige su cuadro TeX para que se ajuste exactamente al glifo (excepto problemas de redondeo).

Para mantener las macros solo funcionan para una fuente. Se pueden ampliar para agregar otro argumento para el nombre de la fuente.

documentclassarticle
usepackagetikz
usetikzlibrarypositioning

makeatletter

newcommand*EmSize[1]%
  def@EmSize#1%

newcommand*@GlyphPropName[2]%
  [email protected]#[email protected]#2%

newcommand*GlyphProp[2]%
  @nameuse@GlyphPropName#1#2%

newcommand*GlyphSize[5]%
  @namedef@GlyphPropName#1llx#2%
  @namedef@GlyphPropName#1lly#3%
  @namedef@GlyphPropName#1urx#4%
  @namedef@GlyphPropName#1ury#5%

newcommand*GlyphBox[1]%
  begingroup
    leavevmode
    setbox0=hbox#1%
    setbox0=hbox%
      kern-dimexpr1em*GlyphProp#1llx/@EmSizerelax
      #1%
      kern-dimexpr1em*GlyphProp#1urx/@EmSizerelax
    %
    ht0=dimexprht0 - 1em*GlyphProp#1ury/@EmSizerelax
    dp0=dimexprdp0 - 1em*GlyphProp#1lly/@EmSizerelax
    box0relax
  endgroup

makeatother
% Font cmbx12
EmSize1125% 1000 units in font, 1.125 in TFM
GlyphSizeC62-1263-12
GlyphSizeE380325

begindocument 
Huge
bfseries

setlengthfboxsep0pt
setlengthfboxrule.2pt
textcolorred%
  fboxcolorblackGlyphBoxC%
  fboxcolorblackGlyphBoxE%


begintikzpicture[mytext/.style = inner sep=0, outer sep=0, font=bfseries]
  node (c1) [mytext, anchor=south] at (0,0) GlyphBoxC;
  node (c2) [mytext, above=0 of c1, color=red] GlyphBoxC;
  node      [mytext, above=0 of c2] GlyphBoxE;
  node (c3) [mytext, yscale=2, anchor=south] at (1,0) GlyphBoxC;
  node (c4) [mytext, yscale=0.5, above=0 of c3, color=red] GlyphBoxC;
  node      [mytext, yscale=0.5, above=0 of c4] GlyphBoxE;
endtikzpicture
enddocument

Resultado

xelatex

ingrese la descripción de la imagen aquí

pdflatex

ingrese la descripción de la imagen aquí

15 personajes más

No creo que necesites un martillo como tikz para esto: un simple tabular, los scalebox comando y el Gape comando de makecell para un ajuste preciso, hará el trabajo:

documentclassarticle
usepackagetikz
usetikzlibrarypositioning
usepackagexcolor
usepackagemakecell, graphicx

newcommandvscalebox[2][1]scalebox1[#1]#2

begindocument

centering
renewcommandarraystretch0
begintabular>bfseriesHugec
E\ Gape[0.3pt]colorredC\ Gape[0.3pt]C
endtabular
quad
begintabular>bfseriesHugec
vscalebox[0.5]E\ Gape[0.15pt]vscalebox[0.5]colorredC\ Gape[0.6pt]vscalebox[2]C
endtabular

enddocument 

ingrese la descripción de la imagen aquí

Valoraciones y comentarios

Agradecemos que desees añadir valor a nuestro contenido informacional aportando tu experiencia en las reseñas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *