Article View: pl.comp.dtp.tex
Article #16986skrypt ffinst
From: 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
Technical Details
Message-ID:
<4dc1c88f$0$2439$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed2.atman.pl!newsfeed.atman.pl!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed2.atman.pl!newsfeed.atman.pl!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Newsgroups: pl.comp.dtp.tex Followup-To: pl.comp.dtp.tex From: Maciek PӀiѕzка <pliszka19389022@spam-mrzywoszystkichkrajow.pl> Subject: skrypt ffinst Date: Wed, 04 May 2011 23:51:17 +0200 User-Agent: KNode/0.99.01 MIME-Version: 1.0 Lines: 153 Message-ID: <4dc1c88f$0$2439$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 95.49.85.163 X-Trace: 1304545423 unt-rea-b-01.news.neostrada.pl 2439 95.49.85.163:46934 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit