[math-font-discuss] Setting up fonts for TeX maths
Dr. Clea F. Rees
cfrees at imapmail.org
Mon Jul 12 22:58:23 CEST 2010
I'm trying to setup support for Irianis ADF in TeX/LaTeX. (Allegedly
for TL 2010 but that is rather unlikely to happen at this point.)
I've got one font in postscript type 1 format which contains an
enormous number of glyphs, many with only unicode names.
I'm having trouble mapping the glyphs provided by the font to slots in
the relevant encodings (OT1, OMS, OML, OMX right now), especially for
OMX. I have used the glyphtounicode.tex file for pdftex but in some
cases the unicode names in the font don't appear to be the same and in
others the file just lacks an entry for the TeX encoding's name
altogether.
The extensible glyphs are proving especially tricky because I have
little sense of how much larger one glyph should be than another or how
large a glyph should be in comparison with, say, an 'x' or an 'A' or
whatever.
I wondered if either of the following sorts of resources were available:
- a more complete glyphtounicode list for TeX maths encodings;
- guidelines of any sort on identifying suitable glyphs for the
various slots.
It cannot help that I personally typeset almost no mathematics and so
have very little idea of how these glyphs are used in practice.
For what it is worth, here's a summary of my progress so far.
Summary: I'm having a good deal of trouble doing the following:
- mapping the glyph names in the maths font to those in the maths
encodings for TeX;
- figuring out which glyphs are really missing and, if they are,
whether I can successfully substitute something else or not.
As far as I can figure out, there are four basic encodings of which one
has several variants:
1) OT1: the original *text* encoding but needed for maths. I've always
used T1 so I'm not familiar with it even though it is a text encoding.
This one has variants (e.g. the italic version gets a sterling sign
where the upright version gets a dollar and much more - at least 5
variants of this one I've read, but I hopefully ignore some!)
1 - renaming: standard (no different from what I do routinely for T1
1 - missing:
{ringfitted} (OK - fontinst will fake this)
{visiblespace} (also in T1 - fontinst will fake it fine)
{lslashslash}
is there anything I should substitute for lslashslash? (This is used
to create Lslash/lslash from L/l.) It is unfakable in fontinst.
2) OML: italic maths.
2 - reaming:
{epsilon1}{uni03F5}
{rho1}{uni03F1}
{triangleright}{uni25C3}
{triangleleft}{uni25B9}
{star}{uni22C6}
{pi1}{omega1}
{dotlessj}{uni0237}
{lscript}{afii61289}
{harpoonleftup}{uni21BC}
{harpoonleftdown}{uni21BD}
{harpoonrightup}{uni21C0}
{harpoonrightdown}{uni21C1}
does this look right? Some of it is from the pdftex glyph-to-unicode
mapping but some is just from me looking.
2 - missing:
{flat}{266D} {musicflatsign}{266D}
{natural}{266E}
{sharp}{266F} {musicsharpsign}{266F}
{slurbelow}{2323}
{slurabove}{2322}
{vector}{20D7}
{tie}
{hookrightchar}
{hookleftchar}
There are some *very* strange things in these encodings. I assume the
musical symbols are irrelevant. All except vector are unfakable.
fontinst will fake vector if I rename uni2192 to arrowright for OML. Is
there anything I should substitute for any of the others? Should
uni2192 be mapped to arrowright?
3 OMS: maths symbol
3 - renaming:
\renameglyph{minusplus}{uni2213}
\renameglyph{circleminus}{uni2296}
\renameglyph{circledivide}{uni2298}
\renameglyph{circledot}{uni2299}
\renameglyph{circlecopyrt}{uni20DD}
\renameglyph{equivasymptotic}{uni224D}
\renameglyph{precedesequal}{uni227C}
\renameglyph{followsequal}{uni227D}
\renameglyph{lessmuch}{uni226A}
\renameglyph{greatermuch}{uni226B}
\renameglyph{precedes}{uni227A}
\renameglyph{follows}{uni227B}
\renameglyph{arrowleft}{uni2190}
\renameglyph{arrowright}{uni2192}
\renameglyph{arrownortheast}{uni2197}
\renameglyph{arrowsoutheast}{uni2198}
\renameglyph{similarequal}{uni2243}
\renameglyph{arrownorthwest}{uni2196}
\renameglyph{arrowsouthwest}{uni2199}
\renameglyph{triangleinv}{uni25BD}
\renameglyph{latticetop}{uni22A4}
\renameglyph{unionmulti}{uni228E}
\renameglyph{turnstileleft}{uni22A2}
\renameglyph{turnstileright}{uni22A3}
\renameglyph{bardbl}{uni2225}
\renameglyph{arrowdblbothv}{uni21D5}
\renameglyph{wreathproduct}{uni2240}
\renameglyph{coproduct}{uni2A3F}
\renameglyph{unionsq}{uni2294}
\renameglyph{intersectionsq}{uni2293}
\renameglyph{subsetsqequal}{uni2291}
\renameglyph{supersetsqequal}{uni2292}
\renameglyph{diamond}{uni2662} % we want the outlined diamond, not the filled one
\renameglyph{heart}{uni2661} % ditto the heart
\renameglyph{prime}{minute}
\renameglyph{owner}{suchthat}
\renameglyph{arrowbothv}{arrowupdn}
\renameglyph{diamondmath}{uni22C4}
again, some of this is from pdftex's unicode list but some is just
from looking. The picture I have of the encoding has the diamond and
heart in outline but the club and spade filled hence the changes I've
made to those.
3 - missing:
{negationslash}{0338} {soliduslongoverlaycmb}{0338}
{ceilingleft}{2308}
{ceilingright}{2309}
{floorleft}{230A}
{floorright}{230B}
{mapstochar}
{emptysetstress}
{radicallow}
of these, mapstochar only seems to be unfakable. Does anything map to
this?
4) OMX: maths ext. This one is the really problematic one. I have
unicode equivalents for very little and what little I have them for
matches virtually nothing in the font...
4 - renaming (certainly at least partly wrong - see below):
{arrowvertex}{uniF8E6}
{circlemultiplytext}{circlemultiply}
{circlemultiplydisplay}{uni2A02}
{circleplustext}{circleplus}
{circleplusdisplay}{uni2A01}
{circledottext}{uni2299}
{circledotdisplay}{uni2A00}
{radicalbig}{radical1}
{radicalBig}{radical2}
{radicalbigg}{radical3}
{radicalBigg}{radical4}
{contintegraltext}{uni222E}
{contintegraldisplay}{uni222E.big1}
{integraltext}{integral}
{integraldisplay}{uni222B.big1}
{summationtext}{summation}
{producttext}{product}
{uniontext}{union}
{intersectiontext}{intersection}
{logicalandtext}{logicaland}
{logicalortext}{logicalor}
{unionsqtext}{uni2294}
{unionmultitext}{uni228E}
{coproducttext}{uni2A3F}
{logicalordisplay}{uni22C1}
{logicalanddisplay}{uni22C0}
{intersectiondisplay}{uni22C2}
{uniondisplay}{uni22C3}
{unionsqdisplay}{uni2A06}
{coproductdisplay}{uni2210}
{unionmultidisplay}{uni2A04}
{parenlefttp}{uni239B}
{parenleftbt}{uni239D}
{parenrighttp}{uni239E}
{parenrightbt}{uni23A0}
{parenleftex}{uni239C}
{parenrightex}{uni239F}
{bracketleftex}{uni23A2}
{bracketrightex}{uni23A4}
{bracketleftbt}{uni23A3}
{bracketrightbt}{uni23A6}
{bracketrighttp}{uni23A4}
{bracketlefttp}{uni23A1}
{braceleftmid}{uni23A8}
{bracerightmid}{uni23AC}
{bracerightbt}{uni23AD}
{braceleftbt}{uni23A9}
{bracerighttp}{uni23AB}
{bracelefttp}{uni23A7}
{braceex}{uni23AA}
at least some of this is certainly wrong because with this mapping,
I'd get mismatches in terms of text and display sizes. For example,
I've mapped uni2210 to coproductdisplay and uni2A3F to coproducttext
but product to producttext which isn't going to work. Should these all
be mapped to xxxtext and xxxdisplay left unmapped? There is a similar
problem in deciding how to map some of the other sizes. In some
cases, I've got multiple sizes of a glyph but only one or two slots.
In that case, how should I determine which to use? (In other cases, I
have too few sizes but that's a different issue.)
4 - missing??:
0 parenleftbig
1 parenrightbig
2 bracketleftbig
3 bracketrightbig
4 floorleftbig
5 floorrightbig
6 ceilingleftbig
7 ceilingrightbig
8 braceleftbig
9 bracerightbig
10 angleleftbig
11 anglerightbig
12 barex
13 bardblex
14 slashbig
15 backslashbig
16 parenleftBig
17 parenrightBig
18 parenleftbigg
19 parenrightbigg
20 bracketleftbigg
21 bracketrightbigg
22 floorleftbigg
23 floorrightbigg
24 ceilingleftbigg
25 ceilingrightbigg
26 braceleftbigg
27 bracerightbigg
28 angleleftbigg
29 anglerightbigg
30 slashbigg
31 backslashbigg
32 parenleftBigg
33 parenrightBigg
34 bracketleftBigg
35 bracketrightBigg
36 floorleftBigg
37 floorrightBigg
38 ceilingleftBigg
39 ceilingrightBigg
40 braceleftBigg
41 bracerightBigg
42 angleleftBigg
43 anglerightBigg
44 slashBigg
45 backslashBigg
46 slashBig
47 backslashBig
68 angleleftBig
69 anglerightBig
88 summationdisplay
89 productdisplay
98 hatwide
99 hatwider
100 hatwidest
101 tildewide
102 tildewider
103 tildewidest
104 bracketleftBig
105 bracketrightBig
106 floorleftBig
107 floorrightBig
108 ceilingleftBig
109 ceilingrightBig
110 braceleftBig
111 bracerightBig
116 radicalbt
117 radicalvertex
118 radicaltp
119 arrowvertexdbl
120 arrowtp
121 arrowbt
122 bracehtipdownleft
123 bracehtipdownright
124 bracehtipupleft
125 bracehtipupright
126 arrowdbltp
127 arrowdblbt
any thoughts?
I assume that u1D434-u1D467 should be used to fill the maths italic
alphabet slots in OML and that u1D49C-u1D4B5 should fill the
calligraphic upper case slots in OMS. Should .oldstyle or .taboldstyle
digits be used for the oldstyle digits in OML? (I don't know why these
are here but they are... I'm sure somebody told me oldstyle digits were
useless in maths...)
A picture of the font is attached. I printed this from fontforge. If
anybody knows how to produce a more useful table (e.g. one which
includes the glyph names), please let me know.
Thanks for any advice,
cfr
-------------- next part --------------
A non-text attachment was scrubbed...
Name: IrianisADFMath-Regular_glyphs.pdf
Type: application/pdf
Size: 624361 bytes
Desc: output from fontforge (pdf, 5 pages)
URL: <http://tug.org/pipermail/math-font-discuss/attachments/20100712/eb113abf/attachment-0001.pdf>
More information about the math-font-discuss
mailing list