🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: \pagestyle{style}

#16926
From: Jarosław Sokołowski
Date: Wed, 06 Apr 2011 22:00
137 lines
4295 bytes
Pan Maciek Pliszka napisał:

>> 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: <slrnippojo.vag.jaros@falcon.lasek.waw.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.POSTED!not-for-mail
References: <4d9cbcb3$0$2507$65785112@news.neostrada.pl> <op.vti7u70clutajv@ubayd> <4d9cc3d1$0$2442$65785112@news.neostrada.pl> <op.vti8i8omlutajv@ubayd> <4d9cc859$0$2443$65785112@news.neostrada.pl>

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!.POSTED!not-for-mail
From: Jarosław Sokołowski <jaros@lasek.waw.pl>
Newsgroups: pl.comp.dtp.tex
Subject: Re: \pagestyle{style}
Date: Wed, 6 Apr 2011 22:00:24 +0000 (UTC)
Organization: : : :
Lines: 137
Message-ID: <slrnippojo.vag.jaros@falcon.lasek.waw.pl>
References: <4d9cbcb3$0$2507$65785112@news.neostrada.pl> <op.vti7u70clutajv@ubayd> <4d9cc3d1$0$2442$65785112@news.neostrada.pl> <op.vti8i8omlutajv@ubayd> <4d9cc859$0$2443$65785112@news.neostrada.pl>
NNTP-Posting-Host: 87-205-84-220.adsl.inetia.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1302127224 14396 87.205.84.220 (6 Apr 2011 22:00:24 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Wed, 6 Apr 2011 22:00:24 +0000 (UTC)
User-Agent: slrn/0.9.8.1 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit