Problem s MF

Antonin Strejc STREJC at vc.cvut.cz
Tue Jun 4 13:22:30 CEST 1996


Jiri Les pise:

>    Rad bych pozadal o radu. Zacal jsem experimentovat s MusiXTeXem a
>narazil jsem na nasledujici problem. Pro zkusebni tisk jsem chtel
>pouzit devitijehlovou tiskarnu. V baliku nejsou fonty s rozlisenim
>240 dpi. Jsou vsak prilozeny zdrojove .mf soubory. Pri generovani
>fontu jsem vsak narazil na nasledujici hlaseni: (usek z .LOGu)
>
>This is METAFONT (mf386), Version 2.718 [4b] (preloaded base=plain
>96.3.30)  3 JUN 1996 00:06
>**&plain \mode=epsonfx; mag=1; input musix20
>   ...
>[111] [112] [113]
>! That transformation is too hard.
><to be read again>
>                   ;
>doublesharp->...5(EXPR0)),(0.5(EXPR0),0));
>                                          add_mirror((0.5(EXPR0),-
>0.5...
>l.446   doublesharp (.95nhw,0.025nhw)
>                                     ;
>I can apply complicated transformations to paths,
>but I can only do integer operations on pictures.
>Proceed, and I'll omit the transformation.
>
>[114] [115] .....
>
>    Pokud jsem zkousel generovat fonty s jinym rozlisenim na nic
>podobneho jsem nenarazil. Domnivam se, ze cely problem spociva v tom,
>ze fonty napr. pro laserovou tiskarnu maji rozliseni 300x300 dpi. Pro
>devet jehlicek vsak 240x216 dpi, tedy ruzna rozliseni v kazdem
>rozmeru, s cimz si asi metafont nedokaze poradit. (Pouzivam soucasny
>CSTeX na 486 s 4MB pameti.)
>     Zkousel jsem i nastavit \mode=lqhires a \mag=0.6666. Velikost by
>odpovidala, ale "neni to ono".
>
>    Nesetkal jste se nekdo s podobnym problemem a nevite jak ho
>vyresit? Budu velmi vdecny za jakoukoli odpoved.
>


Pricina je v tom, ze v makru pro vykresleni dvojiteho krizku
(doublesharp) je na jednom miste volano jine makro (add_mirror)
pro dokresleni osove soumerne casti obrazku, a to zde podle
osy symetrie sklonene o 45 stupnu vuci soustave souradnic.
V pripade nestejne hodnoty dpi ve svislem a vodorovnem smeru
(tj. pripad 240x216) metafont zkolabuje na pozadavku osove symetrie
podle osy jdouci jinym smerem, nez nasobkem 90 stupnu.
Ostatni volani makra add_mirror nezpusobuji potize, nebot jejich
parametry pozaduji osovou symetrii podle osy rovnobezne s osou x nebo y.

Obe zminena makra se nachazeji v souboru musixgen.mf, ktery je
nacitan napr. i z vaseho musix20.mf.

Podle mne je nejjednodussim resenim zaprocentovani toho jednoho
kritickeho volani makra add_mirror. Chybejici cast obrazku je
pak treba dokreslit "rucne". Posilam cele upravene makro doublesharp,
(upravene ci pridane radky jsou oznaceny % ***):

S pozdravem
Antonin Strejc

%---------------------cut here----------------------------------------

def doublesharp (expr mw, xshift)=
  x1=y2=x3=0; y1=x2=y4=.5mw; y3=.5mw-x4=.1mw;
  z4'=.925[z3,z4]; z3'=.925[z4,z3];                        % ***
  penpos2(max(1,thin),45);
%%% a 'nicer' look for 'high'res-printers gives
if pixels_per_inch > 500:
  fill z1..{dir-125}z3'{dir35}..{se}z2l--z2r--z1--cycle;
  fill z1..{dir35}z4'{dir-125}..{se}z2r--z2l--z1--cycle;   % ***
else :
%%% but this causes 'strange path' on lower resolutions
  fill z1..{dir-110}z3'{dir30}..{se}z2l--z2r--z1--cycle;
  fill z1..{dir20}z4'{dir-120}..{se}z2r--z2l--z1--cycle;   % ***
fi
%{{{
  currentpen:= pencircle; draw z1--(x2+1,y2-1);% draw (x3'+1,y3'+1)--z5';
%}}}
% add_mirror ((0,.5mw),(.5mw,0));                          % ***
  add_mirror ((.5mw,-.5mw),(.5mw,.5mw));
  add_mirror (origin, right);
  shift_pic (xshift, 0);
enddef;



------------------------------------------------------------------
Ing. Antonin Strejc    (strejc at vc.cvut.cz)   Phone: +42-2-24352938
------------------------------------------------------------------
Czech Technical University in Prague,  Computing Centre,  Dept. of
Information Services,  Zikova 4,  166 35  Praha 6,  Czech Republic
------------------------------------------------------------------



More information about the csTeX mailing list