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 revelacmbx12.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
xelatex
pdflatex
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
Valoraciones y comentarios
Agradecemos que desees añadir valor a nuestro contenido informacional aportando tu experiencia en las reseñas.