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