Dit is de opdracht pkfix-helper die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
pkfix-helper - verwerkt dvips-geproduceerde PostScript-documenten voor voordat ze worden doorgegeven aan pkfix
KORTE INHOUD
pkfix-helper [--help] [--uitgebreid] [--kracht=naam=lettertypespecificatie] [-=bestandsnaam.ps]
[--tex=bestandsnaam.tex] [--cache=bestandsnaam] [--erbij betrekken=lettertypespecificatie] [--uitsluiten=regexp]
[--houden=lettertypespecificatie] [--stil] [--geen herhalingen] [--sp=aantal] [invoer.ps [uitvoer.ps]]
PRODUCTBESCHRIJVING
Motivatie
PostScript-documenten gemaakt met oude versies van dvips bijna altijd gebruiken
bitmap-lettertypen (PostScript Type 3). Het probleem met bitmap-lettertypen is dat ze gericht zijn
een specifieke apparaatresolutie; een PostScript-bestand dat is gemaakt met lettertypen van 300 DPI, ziet eruit
korrelig op een 600 DPI-printer. Nog erger, allen bitmap-lettertypen zien er korrelig uit wanneer ze worden ingezoomd
op het scherm. De oplossing is het gebruik van vectorlettertypen (PostScript Type 1), die resolutie-
onafhankelijk en ziet er scherp uit op elke maat of schaal.
Terwijl het niet langer moeilijk is om te configureren dvips om vectorlettertypen te gebruiken, is het niet altijd
mogelijk om opnieuw te spelen dvips op een oude .dvi het dossier. De .dvi bestands- en documentbron kan hebben
verloren gegaan; of de broncode compileert mogelijk niet meer omdat de pakketten waarvan deze afhankelijk is, niet meer compileren
langer beschikbaar zijn.
Heiko Oberdieks pkfix script vervangt bitmap-lettertypen in dvips-geproduceerde PostScript-bestanden
met de bijbehorende vectorlettertypen. Het werkt door de PostScript-opmerkingen te ontleden met
welke dvips omringt definities van bitmaplettertypen. Bijvoorbeeld een lettertypedefinitie
beginnend met de opmerking "%DVIPSBitmapFont: Fi cmss10 11 28" en eindigend met een overeenkomende
Van %EndDVIPSBitmapFont is bekend dat het lettertype "Fi" definieert als "cmss10" (Computer Modern Sans Serif
bij een ontwerpgrootte van 10 punten) geschaald naar 11 punten. Alleen de 28 tekens die daadwerkelijk worden gebruikt
door het document worden gedefinieerd. pkfix vervangt vervolgens de lettertypedefinitie door een that
definieert "Fi" met behulp van dezelfde reeks tekens, maar overgenomen uit de cmss10.pfb vector lettertype
bestand.
Helaas, pkfix werkt alleen met versies van dvips nieuwer dan v5.58 (ca. 1996).
Natuurlijk, hoe ouder een PostScript-document, hoe kleiner de kans dat de bronnen nog bestaan
kan nog steeds worden gecompileerd. Oudere versies van dvips ontbreken %DVIPSBitmapFont-opmerkingen en
verschillende andere PostScript-opmerkingen waarop pkfix vertrouwt. Zonder PostScript-opmerkingen aan
begeleiden, pkfix kan niet bepalen welke vectorlettertypen overeenkomen met welke bitmap
fonts.
Overzicht
De pkfix-helper script is een preprocessor voor pkfix die probeert de te bepalen
associatie tussen elke documentlettertypenaam (bijv. "Fi") in een PostScript-bestand en de
origineel lettertype (bijv. "cmss10") en lettergrootte (bijv. 11 punten). Het fabriceert vervolgens de
PostScript merkt dat op pkfix verwacht dat te zien pkfix zijn werk kan doen.
pkfix-helper werkt door elk documentlettertype met elk te vergelijken .tfm lettertypebestand dat het kent
about (ervan uitgaande dat elk van deze lettertypen een corresponderend .pfb vectorversie) en selecteren
de beste afstemming .tfm bestand voor elk documentlettertype. pkfix-helper heeft alleen toegang tot de
breedtes van tekens en alleen de tekens die daadwerkelijk in het document worden gebruikt. Ook,
het programma herkent slechts een beperkte set van de meest populaire .tfm bestanden en schalen
factoren. Bijgevolg is de vergelijking onvolmaakt en pkfix-helper kan een toeschrijven
onjuist lettertype voor een opgegeven naam. Fonts die slechts één of twee karakters bevatten die werkelijk worden gebruikt
in een document zijn bijzonder problematisch voor pkfix-helper omdat er veel lettertypen kunnen zijn
bijna genoeg overeenkomsten om het probleem voor de gek te houden.
pkfix-helper is zo ontworpen dat een gebruiker het lettertypeselectieproces handmatig kan begeleiden
overeenkomende lettertypen aanwijzen. Met een beetje ijver en geduld kan een gebruiker corrigeren
eventuele niet-overeenkomende lettertypen en helpen het programma de juiste invoer te geven pkfix.
OPTIES
pkfix-helper accepteert op de opdrachtregel de bestandsnaam van een PostScript-document om te verwerken
(met standaard het standaard invoerapparaat) en de bestandsnaam van een gewijzigd
PostScript-document om te maken (met standaard het standaarduitvoerapparaat). De
programma accepteert ook de volgende opdrachtregelopties:
Vaak Gebruikt Opties
-h, --help
Geef gebruiksinformatie weer en sluit af. De --uitgebreid en --stil opties kunnen worden gebruikt om
verhoog of verlaag de hoeveelheid gepresenteerde informatie.
-v, --uitgebreid
Verhoog de hoeveelheid statusinformatie die pkfix-helper wordt weergegeven terwijl het wordt uitgevoerd.
extra gevallen van --uitgebreid op de opdrachtregel de programma's verder vergroten
breedsprakigheid. Standaard worden alleen de belangrijkste bewerkingen weergegeven. Een --uitgebreid
geeft bovendien informatie weer over individuele lettertypevergelijkingen. Een seconde
--uitgebreid geeft bovendien details weer over enkele interne programma's
operaties.
-f naam=lettertypespecificatie, --kracht=naam=lettertypespecificatie
Dwingen pkfix-helper om een specifiek lettertype te associëren met een bepaalde lettertypenaam die verschijnt in het
document. naam is een twee-karakter dvips lettertype zoals "Fa". lettertypespecificatie is een lettertype
specificatie zoals "cmmi8" of "cmsy10 @ 1.1X". Een asterisk gebruikt in de naam van de
basislettertype (bijv. "cmti*") probeert automatisch alle integrale testlettergroottes vanaf 5
tot 17 punten ("cmti5", "cmti6", ..., "cmti17"). Een asterisk gebruikt als schaalwaarde
(bijv. "cmsy10 @ *") wordt vervangen door de schaalwaarde die het beste overeenkomt met
de metrieken van het originele lettertype. De --kracht optie kan herhaaldelijk worden opgegeven op de
opdrachtregel.
-p bestandsnaam.ps, -=bestandsnaam.ps
Maak een PostScript-bestand met de naam bestandsnaam.ps dat laat het zien dvips naam en een lettertype
voorbeeld van elk lettertype dat door het invoerdocument wordt gebruikt.
-t bestandsnaam.tex, --tex=bestandsnaam.tex
Maak een gewoon TeX-bestand met de naam bestandsnaam.tex dat laat het zien dvips naam en een lettertype
voorbeeld van elk lettertype dat pkfix-helper gebruikt in het uitvoerdocument.
Zelden Gebruikt Opties
-C bestandsnaam, --cache=bestandsnaam
Versnel de verwerking van TFM-bestanden door tekenstatistieken in een bestand op te slaan bestandsnaam Op sommige
systemen duurt het lang om een TFM-bestand te lezen, spawn tftopl om het om te zetten naar PL
formatteren en uit de PL-gegevens de statistieken voor elk teken extraheren. De eerste keer
--cache is gespecificeerd, pkfix-helper verloopt normaal en schrijft vervolgens alle geëxtraheerde
karakterstatistieken aan bestandsnaam. Op volgende runs waarin --cache=bestandsnaam is
gespecificeerd, pkfix-helper leest de eerder geëxtraheerde statistieken uit bestandsnaam, gaan
door de tftopl-gebaseerd proces alleen voor TFM-bestanden die dat voorheen niet waren
tegengekomen.
-q, --stil
Instrueren pkfix-helper om tijdens de uitvoering geen output te produceren, behalve voor een fatale fout
berichten.
-1, --geen herhalingen
Voorkomen pkfix-helper hetzelfde te associëren lettertypespecificatie met meer dan één dvips doopvont
naam.
-i lettertypespecificatie, --erbij betrekken=lettertypespecificatie
Toevoegen lettertypespecificatie naar de lijst met lettertypespecificaties waartegen pkfix-helper vergelijkt
elk document lettertype. (In tegenstelling tot, --kracht geeft een lettertypespecificatie aan die moet worden gebruikt
alleen voor een specifiek document lettertype.) De --erbij betrekken optie kan herhaaldelijk worden opgegeven
op de opdrachtregel.
-x regexp, --uitsluiten=regexp
Verwijder alle lettertypespecificaties die overeenkomen met reguliere expressies regexp van pkfix-helper's
lijst met bekende lettertypen. De --uitsluiten optie kan herhaaldelijk worden gespecificeerd op de opdracht
lijn.
-k lettertypespecificatie, --houden=lettertypespecificatie
Vervang een vectorlettertype niet door een bitmaplettertype lettertypespecificatie ("Fa", "Fb", enz.). Dit
is handig bij het converteren van documenten die obscure bitmaplettertypen gebruiken waarvoor daar
is geen vectorequivalent. Het was bijvoorbeeld in het verleden enigszins gebruikelijk om op te nemen
grafische afbeeldingen zoals universiteits- of bedrijfslogo's in een document door de
bitmapafbeelding in een lettertype met één teken en dat lettertype in LaTeX gebruiken. --houden
voorkomt dat dergelijke lettertypen worden vervangen. De --houden optie kan worden opgegeven
herhaaldelijk op de opdrachtregel.
-a, --elke schaal
Sta toe dat elke waarde wordt gebruikt om een lettertype te schalen wanneer ""*"" is opgegeven als de schaal
factor. Normaal gesproken, pkfix-helper beschouwt alleen gehele veelvouden van 0.1 die dat wel zijn
groter dan of gelijk aan 1.0 (dwz lettertypenaam@1X, "@1.1X", "@1.2X", "@1.3X", enz.).
-s, --sp
Geef het aantal lettertypevoorbeelden per pagina op om af te drukken naar de bestanden die worden aangegeven met behulp van de
- en --tex opties. De standaardwaarde, 25, zou in de meeste gevallen goed moeten werken
situatie.
DIAGNOSE
"Beste wedstrijd voor naam is liever arm"
Het beste lettertype pkfix-helper gevonden voor dvips lettertype naam naam heeft een mismatchwaarde groter
dan of gelijk aan 1.0. (De mismatchwaarde is de som van de kwadraten van het verschil
tussen de tekenbreedte van een documentlettertype en een mogelijk vervangend lettertype.)
Gebruik de --kracht optie om een alternatief vervangend lettertype of schaalgrootte aan te wijzen.
Voorbeelden
Neem dat voor de doeleinden van de volgende voorbeelden aan oudbestand.ps is de naam van een
PostScript-bestand geproduceerd door een oude versie van dvips en gebruik te maken van ten minste één bitmap
lettertype. Het is altijd de moeite waard om dat te verifiëren pkfix kan het bestand niet zelf converteren:
$ pkfix oudbestand.ps nieuwbestand.ps
PKFIX 1.3, 2005/02/25 - Copyright (c) 2001, 2005 door Heiko Oberdiek.
==> geen lettertypen geconverteerd
(Alternatief pkfix kan een foutmelding geven zoals "!!! Error: Parse error (@start
parameters)!".) Alleen wanneer pkfix kan bitmaplettertypen niet vervangen door vectorlettertypen pkfix-
helper nodig zijn. In zijn eenvoudigste vorm, pkfix-helper neemt de naam aan van een invoerbestand
(oudbestand.ps in dit voorbeeld) en de naam van een uitvoerbestand (pkfix-oudebestand.ps), welke zal
hebben dezelfde inhoud als het invoerbestand maar dienen als geschikte invoer voor pkfix:
$ pkfix-helper oudbestand.ps pkfix-oudbestand.ps
Oldfile.ps lezen ... klaar.
Aantal aangetroffen Type 3-lettertypen: 10
Bitmap-lettertypen worden gezet op 600 DPI.
Tekenbreedtes zoeken ... klaar.
TFM-bestanden lezen ... klaar (103 TFM's in 193 schaalvariaties).
Bijpassende lettertypen:
Verwerking Fi ... klaar (cmr10 @ 1X, mismatch=0.11683).
Verwerking Fa ... klaar (cmti10 @ 1X, mismatch=0.08892).
Fb verwerken ... klaar (cmr8 @ 1X, mismatch=0.07133).
Ff verwerken ... klaar (cmbx12 @ 1.2X, mismatch=0.02948).
Fh verwerken ... klaar (cmtt10 @ 1X, mismatch=0.06895).
Fd verwerken ... klaar (cmmi10 @ 1X, mismatch=0.03966).
Fj verwerken ... klaar (cmbx12 @ 1X, mismatch=0.03972).
Verwerking Fe ... gedaan (cmbx10 @ 1X, mismatch=0.00762).
Fg verwerken ... klaar (cmsy10 @ 1X, mismatch=0.00875).
Fc verwerken ... klaar (cmr6 @ 1X, mismatch=0.00284).
$ pkfix pkfix-oudbestand.ps nieuwbestand.ps
PKFIX 1.3, 2005/02/25 - Copyright (c) 2001, 2005 door Heiko Oberdiek.
*** Lettertypeconversie: `cmti10' -> `CMTI10'.
*** Lettertypeconversie: `cmr8' -> `CMR8'.
*** Lettertypeconversie: `cmr6' -> `CMR6'.
*** Lettertypeconversie: `cmmi10' -> `CMMI10'.
*** Lettertypeconversie: `cmbx10' -> `CMBX10'.
*** Lettertypeconversie: `cmbx12' -> `CMBX12'.
*** Lettertypeconversie: `cmsy10' -> `CMSY10'.
*** Lettertypeconversie: `cmtt10' -> `CMTT10'.
*** Lettertypeconversie: `cmr10' -> `CMR10'.
*** Lettertypeconversie: `cmbx12' -> `CMBX12'.
*** Lettertype `CMBX12' (2) samenvoegen.
==> 10 geconverteerde lettertypen.
==> 1 samengevoegd lettertype.
Hoewel pkfix-helper probeert het lettertypedetectieproces zoveel mogelijk te automatiseren,
sommige lettertypen zullen steevast verkeerd worden geïdentificeerd. Het programma geeft een waarschuwing af
bericht als het weet een match is slecht, maar het ontbreken van een waarschuwingsbericht niet noodzakelijkerwijs
geef dat aan pkfix-helper deed goed werk. Het wordt daarom sterk aanbevolen om de
gebruiker produceert "voor" en "na" lettertypevellen:
$ pkfix-helper -q oudbestand.ps pkfix-oudbestand.ps
--ps=oude lettertypen.ps --tex=nieuwe lettertypen.tex
$ tex nieuwelettertypen.tex
Dit is TeX, versie 3.14159 (Web2C 7.4.5)
(./nieuwelettertypen.tex [1] )
Uitvoer geschreven op newfonts.dvi (1 pagina, 1292 bytes).
Transcript geschreven op newfonts.log.
$ dvips nieuwelettertypen.dvi -o nieuwelettertypen.ps
Dit is dvips(k) 5.92b Copyright 2002 Radical Eye Software (www.radicaleye.com)
'TeX uitvoer 2006.06.11:1636' -> newfonts.ps
<texc.pro><8r.enc><texps.pro>. <cmr6.pfb><cmsy10.pfb><cmbx10.pfb><cmbx12.pfb>
<cmmi10.pfb><cmtt10.pfb><cmr8.pfb><cmti10.pfb><cmr10.pfb>[1]
Na het uitvoeren van de voorgaande opdrachten, oudefonts.ps toont voorbeelden van de lettertypen in oudbestand.ps
en nieuwefonts.ps toont voorbeelden van de vervangende lettertypen die pkfix-helper gebruikt om te produceren
pkfix-oudebestand.ps. Afdrukken oudefonts.ps en nieuwefonts.ps en vergelijk ze zorgvuldig voor
onjuiste lettertypen en formaten.
Stel dat de keuze van "cmbx12 @ 1.2X" voor lettertype "Ff" er verkeerd uitziet; zeggen de personages
er langer uitzien oudefonts.ps dan in nieuwefonts.ps. Dit is waar de fase van vallen en opstaan
begint. Laten we veronderstellen dat "cmb12" een betere match is dan "cmbx12", maar we weten het niet
hoeveel het lettertype moet worden geschaald. Gelukkig, pkfix-helper staat toe dat "*" wordt gebruikt als schaal
factor om het programma te vertellen om automatisch een optimale schaalfactor te detecteren, zelfs als
dit betekent het kiezen van een niet-standaard lettergrootte:
$ pkfix-helper oud bestand.ps pkfix-oud bestand.ps --force="Ff=cmb12 @ *"
Oldfile.ps lezen ... klaar.
Aantal aangetroffen Type 3-lettertypen: 10
Bitmap-lettertypen worden gezet op 600 DPI.
Tekenbreedtes zoeken ... klaar.
TFM-bestanden lezen ... is mislukt.
pkfix-helper: kan het door de gebruiker opgegeven TFM-bestand "cmb12" niet verwerken
Oeps, het lijkt erop dat we geen a cmb12.tfm bestand op ons systeem. Laten we proberen op te schalen
cmb10.tfm in plaats daarvan:
$ pkfix-helper oud bestand.ps pkfix-oud bestand.ps --force="Ff=cmb10 @ *"
Oldfile.ps lezen ... klaar.
Aantal aangetroffen Type 3-lettertypen: 10
Bitmap-lettertypen worden gezet op 600 DPI.
Tekenbreedtes zoeken ... klaar.
TFM-bestanden lezen ... klaar (103 TFM's in 193 schaalvariaties).
Bijpassende lettertypen:
Verwerking Fi ... klaar (cmr10 @ 1X, mismatch=0.11683).
Verwerking Fa ... klaar (cmti10 @ 1X, mismatch=0.08892).
Fb verwerken ... klaar (cmr8 @ 1X, mismatch=0.07133).
Ff verwerken ... klaar (cmb10 @ 1.5X, mismatch=0.00035).
Fh verwerken ... klaar (cmtt10 @ 1X, mismatch=0.06895).
Fd verwerken ... klaar (cmmi10 @ 1X, mismatch=0.03966).
Fj verwerken ... klaar (cmbx12 @ 1X, mismatch=0.03972).
Verwerking Fe ... gedaan (cmbx10 @ 1X, mismatch=0.00762).
Fg verwerken ... klaar (cmsy10 @ 1X, mismatch=0.00875).
Fc verwerken ... klaar (cmr6 @ 1X, mismatch=0.00284).
De wedstrijd is zeker verbeterd, hoewel 15 pt. is zeker een vreemde grootte voor een lettertype.
Dan weer, veel documenten do gebruik niet-standaard maten, dus dit kan in feite correct zijn. De
De beste manier om dit te verifiëren, is nogmaals door een paar lettertypevoorbeelden te maken, af te drukken en te vergelijken
herhaal totdat alle lettertypen er correct uitzien. Gebruik een instantie van --kracht voor elk lettertype
je wilt veranderen.
MILIEU
pkfix-helper eert de volgende omgevingsvariabelen:
GS De naam van de Ghostscript-interpreter (standaard: gs)
TFTOPL De naam van een hulpprogramma voor conversie .tfm bestanden .pl bestanden (standaard: tftopl)
Gebruik pkfix-helper online met behulp van onworks.net-services