[Fontinst] Problem generating OT2 Minion Cyrillic

Lars Hellström Lars.Hellstrom at math.umu.se
Sun Aug 31 20:12:09 CEST 2003


At 16.54 +0200 2003-08-30, Ulrich Dirr wrote:
>Hi,
>
>I'm obviously too stupid to understand the correct procedure
>generating a valid OT2 encoded Minion-Cyrillic font with fontinst.
>
>I tried something like
>
>\input fontinst.sty
>% the next two files and cyrillic.mtx are from the t2 package
>\input fnstcorr
>\input cyralias
>\installfonts
>\resetint{minimumkern}{4}
>\transformfont{pmnr7r} {\reencodefont{OT2}{\fromafm{pmnr7k}}}
>\installfont{pmnr7k}{pmnr7r,cyrillic}{OT2}{OT2}{pmnx}{m}{n}{}

This looks wrong. If the \transformfont is generating the font with the
target encoding OT2 then you should probably use \installrawfont rather
than \installfont. But why does the source AFM has the same name (pmnr7k)
as the generated font? And why does the in-between font has suffix 7r? I
believe the cyrillic equivalent of 8r (TeXBase1) is 6r.

>\endinstallfonts
>\bye
>
>First there must be something wrong with definitions
>\setint{xheight}{\height{cyrh}}
>\setint{capheight}{\height{CYRA}}
>\setint{ascender}{\height{cyrb}}
>\setint{descender}{\depth{cyrr}}
>in cyrillic.mtx because I always got error messages like
>
>(./cyrillic.mtx
>! Missing number, treated as zero.
><to be read again>
>                   \bgroup
>\sub #1#2->#1\bgroup \a_count =\result \eval_expr
>                                                  {#2}\advance
>\a_count -\re...
>
>\eval_expr #1->\global \result =#1
>                                  \x_relax
>\max ...1\bgroup \a_count =\result \eval_expr {#2}
>                                                  \ifnum \a_count
>>\result \...
>
>\eval_expr #1->\global \result =#1
>                                  \x_relax
>\moveup #1->\eval_expr {#1}
>                           \ifnum \result =0\else \advance
>\glyph_voffset by...
>
>\topaccent ...sub {\height {#1}}{\int {xheight}}}}
>                                                   \movert {\add {\sub
>{\sca...
>l.184 \setglyph{CYRYI}\topaccent{I}{dieresis}{500}
>                                                  \endsetglyph

The problem is the \topaccent command; I suspect some glyph it tries to
build something from is missing.

Generally, the naming of cyrillic glyphs seems to be a mess (different
fonts use different names, to a much greater degree than with latin fonts).
The cyralias stuff---as I recall it---seeks to deal with this already at
the AFM->MTX level, although it doesn't seem your code above makes any use
of it.

Still speaking generally, and probably quite unrelated to the particular
problem mentioned above, there is also a potential problem when glyphs are
renamed and the font is subsequently reencoded, since the glyphs are only
renamed in fontinst MTX files and not in the font program your printer will
use. This is probably only a problem if you are using the map file fragment
writer, but then it can make things messy indeed. The \alias command (added
in fontinst v1.915) was added as a work-around for this, but I don't know
if the cyralias stuff has been updated to take advantage of this.

>Ok, a char table looks ok. But when typing typical russian sentences
>-- and looking into the vpl -- it becomes obvious that all ligatures
>are missing (like 'obp2ekt', 'tsarp1' etc.).
>
>Please could someone explain me (1) the general correct procedures and
>(2) my concrete misunderstandings?
>
>Best regards,
>Ulrich Dirr
>
>P.S. pmn.map:
>pmnr7k MinionCyr-Regular "OT2AdobeEncoding" <ot2.enc <pmnr7k.pfb

With a map file entry like that, you'll definitely want to use
\installrawfont. I would furthermore use the native encoding (whichever it
is) of MinionCyr-Regular rather than 7k in the font names of the PFB and
the AFM, to avoid confusion.

Lars Hellström




More information about the fontinst mailing list