Gibt es eine Möglichkeit, PhantomJS (oder einen kopflosen Browser) dazu zu bringen, einen alternativen Schriftcache zu verwenden /usr/share/fonts/
? Eine Möglichkeit, mehr Schriftarten (z. B. CJK-Schriftarten) mit PhantomJS zu verwenden, besteht darin, sie in diesem Verzeichnis zu installieren . Dies ist jedoch ein gemeinsam genutzter Server und kann nicht ausgeführt werden.
Ich kann anscheinend keinen CLI-Parameter dafür finden. Bitte vergib mir, wenn dies eine dumme Frage ist.
Dies ist ein RedHat-Build, und yum und rpm sind deaktiviert.
Screenshot mit PhantomJS - Schriftarten werden nicht geladen :
Gewünschtes Ergebnis ( http://v1.jontangerine.com/silo/typography/web-fonts/ ):
Gelöst: @gro♀ hat mir gezeigt, dass Schriftarten im Home-Ordner installiert werden können. Ich lief fc-cache -vf
und die Systemschriftarten und die ~/.fonts/TTF
Schriftarten werden zwischengespeichert. Beim Ausführen wird beispielsweise fc-list "impact"
die Impact-Schriftart gefunden (nur für den persönlichen Gebrauch ):
> fc-list impact
Impact:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
Ich habe dies mit dem von @gro♀ geschickt vorgeschlagenen Stack-Trace bestätigt:
strace ./phantomjs ../examples/rasterize.js http://example.com img.jpg 2>&1 | grep font
und fand heraus, dass PhantomJS tatsächlich in meinem Benutzerschriftartenverzeichnis sucht
open("/home/user1/.fonts/TTF/verdana.ttf", O_RDONLY) = 11
open("/home/user1/.fonts/TTF/AndaleMo.TTF", O_RDONLY) = 11
open("/home/user1/.fonts/TTF/arial.ttf", O_RDONLY) = 11
open("/home/user1/.fonts/TTF/cour.ttf", O_RDONLY) = 11
open("/home/user1/.fonts/TTF/georgia.ttf", O_RDONLY) = 11
open("/home/user1/.fonts/TTF/impact.ttf", O_RDONLY) = 11
...
quelle
strace phantomjs rasterize.js http://v1.jontangerine.com/silo/typography/web-fonts/ file.pdf 2>&1 | grep ttf
(dh Verwenden des Browsers zum Rastern der Seite selbst, obwohl ich dieimpact
auf der Seite verwendete Schriftart nicht sehe) ein besseres Ergebnis erzielen . Auch Ihr System verwendetfontconfig
deshalb setzt die Schrift in~/.local/share/fonts/TTF
sicherer (und es gibt keinen Grund zur Verwendung (ich nehme an, es eine TTF - Schriftart ist, nicht wahr?)ttmkfdir
Odermkfontdir
dort.)mkfontdir
und hatfontconfig
. DieHomemadeApple
Ausgabe in meiner Antwort erfolgte auch, weil ich vergessen hatte, sie auszuführen,fc-cache
sodass die Schriftart manuell geladen wurde (anstatt aus dem Cache übernommen zu werden).Antworten:
PhantomJS respektiert
fontconfig
Verzeichnisse und sogar die altefont.dir
/font.scale
postscript-Schriftartkonfiguration. Zum Beispiel habe ich eine alte Schriftart vom Typ 1:(Das wurde mit dem alten X11 erstellt
mkfontdir
)Und für ein besseres Beispiel kopiere ich eine
fotnconfig
Schriftart in mein Home-Verzeichnis:Nun wollen wir sehen, wie PhantomJS sie verwendet (anhand eines klassischen Beispiels aus dem PhantomJS-Github):
strace
druckt alle Systemaufrufe (einschließlich Dateisystemzugriff):Und PhantomJS ging zu den Schriftverzeichnissen und lud sie!
Ich habe keine,
~/.config/fontconfig/fonts.conf
die möglicherweise für CJK-Schriftarten benötigt wird (da diese möglicherweise eine tatsächliche Konfiguration benötigen), aber Sie können eine Datei kopieren/etc/fonts/conf.d/*
(insbesondere einenonlatin
Schriftart, um eine Beispielkonfiguration zu erhalten).Sie können jedoch wahrscheinlich mit den meisten Schriftarten davonkommen, indem Sie sie einfach ablegen
~/.local/share/fonts/TTF
und dann ausführenfc-cache
.Haftungsausschluss: Ein alter RedHat (5 sicher, nicht sicher über 6) wird möglicherweise nicht verwendet
fontconfig
. Deshalb habe ich die PFB-Schriftart in das Beispiel aufgenommen. In diesem Fall müssen Sie die und -Dateien verwendenttmkfdir
undmkfontdir
generieren .font.scale
font.dir
Verweise:
quelle