METAFONT vektorove do PS
Antonin Strejc
STREJC at vc.cvut.cz
Thu Jul 29 11:52:24 CEST 1999
Jakub Zlamal pise:
>> Existuje nejaka moznost, jak prevest obrazky nakreslene METAFONTem do
>> postscriptu (a nasledne do PDF) ve vektorove podobe a nikoliv jako bitmapy?
>
>Pouzijte metapost. Nikdy jsem obrazky z metafontu neprevadel,
>ale myslim ze je jen velmi malo rozdilu (predevsim v hlavicce obrazku).
Hezky letni den,
s radou lze souhlasit. Je treba ale upozornit na zcela odlisnou
filozofii vytvareni kresby v PostScriptu (MetaPostu) a Metafontu.
PostScript pouziva filozofii vrstev, ktere se pres sebe prekladaji,
s tim, ze posledni vrstva prekryje vsechno, co je pod ni (je treba
respektovat poradi vytvarenych vrstev).
V Metafontu vsak toto neplati. O tom, zda nejaky bod bude ve
vysledne kresbe cerny nebo bily, rozhoduje rozdil, kolikrat byl tento
bod "pokreslen" minus kolikrat bylo "smazan" (je-li tento rozdil > 0,
bod bude cerny, jinak bily), pricemz vubec nezalezi na poradi
"mazani" a "kresleni".
Tato rozdilnost filozofii muze v dusledku znamenat, ze napr.:
1. Pokud napred vymazeme nejakou plochu a pak do ni neco nakreslime,
v pripade MF nedostaneme nic (rozdil je u vsech bodu <= 0 ),
zatimco MP vygeneruje to, co jsme nakreslili (druha vrstva
prekryla prvni).
2. Pokud nejakou oblast pokreslime dvakrat a pak ji jednou smazeme,
ve vystupu z MF oblast zustane cerna, zatimco u MP nikoli!
Ilustruje to nasledujici priklad:
% Toto je metafontovy kod
mode_setup;
u#:=1bp;
define_pixels(u);
beginchar("A",20u,20u,0);
pickup pensquare scaled 5u;
draw(10u,0)--(10u,20u);
draw(0,10u)--(20u,10u);
unfill(5u,5u)--(15u,5u)--(15u,15u)--(5u,15u)--cycle;
endchar;
end;
%... a toto obdobny metapostovy
u:=1bp;
beginfig(1);
pickup pensquare scaled 5u;
draw(10u,0)--(10u,20u);
draw(0,10u)--(20u,10u);
unfill(5u,5u)--(15u,5u)--(15u,15u)--(5u,15u)--cycle;
endfig;
end;
V prvnim pripade dostaneme zhruba toto:
XXX
XXX
XXX XXX XXX
XXX XXX XXX
XXX
XXX
zatimco v druhem pripade je vysledek:
XXX
XXX
XXX XXX
XXX XXX
XXX
XXX
Zaver je tedy ten, ze je potreba podivat se napred na MF kod,
jestli se v nem vyskytuji vicenasobna prekryvani ci mazani,
a podle toho pripadne pozmenit MP kod. Jinak bychom mohli byt
nemile prekvapeni rozdilnosti vysledku.
S pozdravem
Antonin Strejc
---------------------------------------------------------------------
Ing. Antonin Strejc Phone: +420-2-24352938
---------------------------------------------------------------------
Czech Technical University in Prague Computing Centre
Czech Republic Zikova 4, 166 35 Praha 6
---------------------------------------------------------------------
More information about the csTeX
mailing list