Thread View: pl.comp.dtp.tex
5 messages
5 total messages
Started by Maciek PӀiѕzка
Wed, 04 May 2011 21:51
skrypt ffinst
Author: Maciek PӀiѕzка
Date: Wed, 04 May 2011 21:51
Date: Wed, 04 May 2011 21:51
152 lines
4653 bytes
4653 bytes
Kiedys pytalem o co innego ale był publikowany taki skrypt.
Pomyslalem wiec ze sprawdze jak dziala.
Otorz nie dziala
./ffinst.sh
tr: brakujący argument
Spróbuj `tr --help' dla uzyskania informacji.
./ffinst.sh: 35: /: Permission denied
./ffinst.sh: 46: Syntax error: "(" unexpected
W katalogu był cały zestaw plikttf.ttf metryki tfm enc pfb itp. pliki
generowane z fontforge
======================
>> W każdym miejscu w dokumencie można użyć dowolnego fontu. Jest
>> to niebanalne i wymaga poczytania o fontach (słowem: magia).
> No o fontach to dla mnie magia.
Ilekroć czytam takie rzeczy, to coś mi się w środku robi. A czytam
co i rusz. Zwykle po chwili mi przechodzi, ale czasem (tak jakoś raz
na rok albo dwa) nie wytrzymuję. Jaka magia? Od lat nie ma problemu
z uprzystępnianiem fontów TeXowi. Wszystko jest logiczne, klarowne,
łatwe do zautomatyzowania. Ja do tego celu napisałem sobie taki skrypt
(o nazwie ffinst umieszczony w /usr/local/ffinst i podlinkowany do
katalogu /usr/local/bin):
##########################################################################
#!/bin/sh
LOG=./ffinst.map
MAP=~/.texmf-var/fonts/map/myfonts.map
TFM=~/.texmf-var/tfm/ffinst
PFB=~/.texmf-var/fonts/type1/ffinst
ENC=/usr/local/share/fontforge/Encodings.ps
LIG=/usr/local/ffinst/ligatures.tfm
if [ ! -d $TFM ]; then mkdirhier $TFM ; fi
if [ ! -d $PFB ]; then mkdirhier $PFB ; fi
if [ ! -f $MAP ]; then mkdirhier $(dirname $MAP) ; fi
echo -e > $LOG
date "+######## FontForgeInst %Y-%m-%d %H:%M:%S BEGIN ########" >> $LOG
for font in *.[ot]tf ; do
basename=$(echo $font | cut -d'.' -f1)
pfb=$basename.pfb
tfm=$basename.tfm
enc=$basename.enc
fontforge -lang=ff -c "
Open(\"$font\");
LoadEncodingFile(\"$ENC\");
Reencode(\"TeX-Extended-T1\");
MergeFeature(\"$LIG\");
Generate(\"$pfb\",\"\",0x10000);
Quit(0);
" 2> /dev/null
psname=$(grep --binary-files=text FontName $pfb | cut -d' ' -f2 | tr -d
'/')
echo $basename $psname "<"$pfb >> $LOG
mv $pfb $PFB
mv $tfm $TFM
rm $enc
done
date "+######## FontForgeInst %Y-%m-%d %H:%M:%S END ########" >> $LOG
cat $LOG >> $MAP
rm $LOG
texhash 2> /dev/null
updmap 2> /dev/null
##########################################################################
Używa on programu FontForge (dostępny za darmochę) i pliku metryk
"ligatures.tfm" umieszczonego w tym samym katalogu, który w czytelnej
postaci ("ligatures.pl") wygląda tak:
(LIGTABLE
(LABEL O 25)
(LIG O 55 O 26)
(STOP)
(LABEL O 41)
(LIG O 140 O 275)
(STOP)
(LABEL O 47)
(LIG O 47 O 21)
(STOP)
(LABEL O 54)
(LIG O 54 O 22)
(STOP)
(LABEL O 55)
(LIG O 55 O 25)
(STOP)
(LABEL O 74)
(LIG O 74 O 23)
(STOP)
(LABEL O 76)
(LIG O 76 O 24)
(STOP)
(LABEL O 77)
(LIG O 140 O 276)
(STOP)
(LABEL O 140)
(LIG O 140 O 20)
(STOP)
)
(CHARACTER O 20)
(CHARACTER O 21)
(CHARACTER O 22)
(CHARACTER O 23)
(CHARACTER O 24)
(CHARACTER O 25)
(CHARACTER O 26)
(CHARACTER O 41)
(CHARACTER O 47)
(CHARACTER O 54)
(CHARACTER O 55)
(CHARACTER O 74)
(CHARACTER O 76)
(CHARACTER O 77)
(CHARACTER O 140)
(CHARACTER O 177)
(CHARACTER O 275)
(CHARACTER O 276)
##########################################################################
Powyższy tekst do postaci tfm można sprowadzić poleceniem pltotf.
Skrypt nie zawiódł mnie nigdy -- wystarczy w katalogu z plikami TTF
lub OTF wywołać "ffinst", a w kilka sekund fonty dostępne są dla TeXa.
Tylko przed tą operacjom warto plikom nadać jakieś ludzkie nazwy.
> I to niestety fakt.
No właśnie. Tylko dlaczego "niestety"?
--
Jarek
Re: skrypt ffinst
Author: Jarosław Sokołowski
Date: Wed, 04 May 2011 22:19
Date: Wed, 04 May 2011 22:19
27 lines
1763 bytes
1763 bytes
Pan Maciek Pliszka kiedyś pytał o co innego ale był publikowany taki skrypt:
> Pomyslalem wiec ze sprawdze jak dziala.
> Otorz nie dziala
>
> ./ffinst.sh
> tr: brakujący argument
> Spróbuj `tr --help' dla uzyskania informacji.
> ./ffinst.sh: 35: /: Permission denied
> ./ffinst.sh: 46: Syntax error: "(" unexpected
Otóż skrypt działa, i to niezgorzej, bo nawet zeznaje czego mu brakuje:
napisał, że brakuje mu argumentu (a żeby to jemu jednemu) i nawet radzi
jak uzyskać informacje (nie wspomina przy tym o rozpytywaniu w Usenecie).
Dość łatwo się domyślić, że wzięło się to z niepotrzebnego złamania
poniższej linijki:
> psname=$(grep --binary-files=text FontName $pfb | cut -d' ' -f2 | tr -d
> '/')
-- Jarek
PS
Gdyby ktoś chciał zaoszczędzić jeden bajt, skrócić linijkę i ustrzec się
przed jej złamaniem, może dziewięcioznakowe zaklęcie "tr -d '/'" zastąpić
krótszym ośmioznakowym "cut -b2-". Działa równie dobrze.
Re: skrypt ffinst
Author: Maciek PӀiѕzка
Date: Thu, 05 May 2011 05:49
Date: Thu, 05 May 2011 05:49
26 lines
2017 bytes
2017 bytes
Jarosław Sokołowski wrote:
> Pan Maciek Pliszka kiedyś pytał o co innego ale był publikowany taki
> skrypt:
>
>> Pomyslalem wiec ze sprawdze jak dziala.
>> Otorz nie dziala
>>
>> ./ffinst.sh
>> tr: brakujący argument
>> Spróbuj `tr --help' dla uzyskania informacji.
>> ./ffinst.sh: 35: /: Permission denied
>> ./ffinst.sh: 46: Syntax error: "(" unexpected
>
> Otóż skrypt działa, i to niezgorzej, bo nawet zeznaje czego mu brakuje:
> napisał, że brakuje mu argumentu (a żeby to jemu jednemu) i nawet radzi
> jak uzyskać informacje (nie wspomina przy tym o rozpytywaniu w Usenecie).
>
> Dość łatwo się domyślić, że wzięło się to z niepotrzebnego złamania
> poniższej linijki:
>
>> psname=$(grep --binary-files=text FontName $pfb | cut -d' ' -f2 | tr -d
>> '/')
chciales raportowac bledy a teraz masz pretensje?
napisz repozytorium nie bedzie problemow z takimi rzeczami
Re: skrypt ffinst
Author: Jarosław Sokołowski
Date: Thu, 05 May 2011 12:35
Date: Thu, 05 May 2011 12:35
12 lines
929 bytes
929 bytes
Pan Maciek Pliszka: > chciales ? > napisz ! -- Jarek
Re: skrypt ffinst
Author: Maciek PӀiѕzка
Date: Fri, 06 May 2011 08:06
Date: Fri, 06 May 2011 08:06
19 lines
1471 bytes
1471 bytes
Jarosław Sokołowski wrote: > Pan Maciek Pliszka: > >> chciales > > ? > >> napisz > > ! > Demagogia i przekrecanie faktow swiadczy, ze nie ma co z Toba dyskutowac. To Ty prosiles o pomoc w sprawdzeniu skryptu i ja proponowalem bys uzyl lepszych narzedzi do rozpropagowania skryptu ktory nie dziala, wtedy moze unikniesz takich problemow jak przeklejajac na usenecie. Ech informatycy
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads