🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.dtp.tex
Article #16986

skrypt ffinst

#16986
From: Maciek PӀiѕzка
Date: Wed, 04 May 2011 21:51
152 lines
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-mail

Show 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