PhantomJS respektiert fontconfig
Verzeichnisse und sogar die alte font.dir
/ font.scale
postscript-Schriftartkonfiguration. Zum Beispiel habe ich eine alte Schriftart vom Typ 1:
$ find ~/.fonts/Type1/
/home/grochmal/.fonts/Type1/
/home/grochmal/.fonts/Type1/augie___.pfb
/home/grochmal/.fonts/Type1/fonts.scale
/home/grochmal/.fonts/Type1/fonts.dir
(Das wurde mit dem alten X11 erstellt mkfontdir
)
Und für ein besseres Beispiel kopiere ich eine fotnconfig
Schriftart in mein Home-Verzeichnis:
$ mkdir -p ~/.local/share/fonts/TTF
$ cp /usr/share/fonts/TTF/HomemadeApple.ttf ~/.local/share/fonts/TTF
$ fc-cache # just in case
Nun wollen wir sehen, wie PhantomJS sie verwendet (anhand eines klassischen Beispiels aus dem PhantomJS-Github):
$ wget https://raw.githubusercontent.com/ariya/phantomjs/master/examples/rasterize.js
strace
druckt alle Systemaufrufe (einschließlich Dateisystemzugriff):
$ strace phantomjs rasterize.js 2>&1 | grep font | grep grochmal |grep -v cache
stat("/home/grochmal/.config/fontconfig/conf.d", 0x7ffff95fbbc0) = -1 ENOENT (No such file or directory)
stat("/home/grochmal/.config/fontconfig/conf.d", 0x7ffff95fbbc0) = -1 ENOENT (No such file or directory)
access("/home/grochmal/.config/fontconfig/conf.d", R_OK) = -1 ENOENT (No such file or directory)
access("/home/grochmal/.config/fontconfig/conf.d", R_OK) = -1 ENOENT (No such file or directory)
stat("/home/grochmal/.config/fontconfig/fonts.conf", 0x7ffff95fbbc0) = -1 ENOENT (No such file or directory)
stat("/home/grochmal/.config/fontconfig/fonts.conf", 0x7ffff95fbbc0) = -1 ENOENT (No such file or directory)
access("/home/grochmal/.config/fontconfig/fonts.conf", R_OK) = -1 ENOENT (No such file or directory)
access("/home/grochmal/.config/fontconfig/fonts.conf", R_OK) = -1 ENOENT (No such file or directory)
access("/home/grochmal/.fonts.conf.d", R_OK) = -1 ENOENT (No such file or directory)
access("/home/grochmal/.fonts.conf.d", R_OK) = -1 ENOENT (No such file or directory)
access("/home/grochmal/.fonts.conf", R_OK) = -1 ENOENT (No such file or directory)
access("/home/grochmal/.fonts.conf", R_OK) = -1 ENOENT (No such file or directory)
stat("/home/grochmal/.local/share/fonts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/home/grochmal/.local/share/fonts", O_RDONLY|O_CLOEXEC) = 4
stat("/home/grochmal/.local/share/fonts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/home/grochmal/.local/share/fonts", O_RDONLY|O_CLOEXEC) = 4
open("/home/grochmal/.local/share/fonts", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5
stat("/home/grochmal/.local/share/fonts/HomemadeApple.ttf", {st_mode=S_IFREG|0644, st_size=110080, ...}) = 0
open("/home/grochmal/.local/share/fonts/HomemadeApple.ttf", O_RDONLY) = 6
stat("/home/grochmal/.local/share/fonts/TTF", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/home/grochmal/.fonts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/home/grochmal/.fonts", O_RDONLY|O_CLOEXEC) = 4
stat("/home/grochmal/.local/share/fonts/TTF", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/home/grochmal/.local/share/fonts/TTF", O_RDONLY|O_CLOEXEC) = 4
stat("/home/grochmal/.local/share/fonts/TTF", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/home/grochmal/.local/share/fonts/TTF", O_RDONLY|O_CLOEXEC) = 4
open("/home/grochmal/.local/share/fonts/TTF", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4
stat("/home/grochmal/.local/share/fonts/TTF/HomemadeApple.ttf", {st_mode=S_IFREG|0644, st_size=110080, ...}) = 0
open("/home/grochmal/.local/share/fonts/TTF/HomemadeApple.ttf", O_RDONLY) = 5
stat("/home/grochmal/.fonts/Type1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/home/grochmal/.fonts/Type1", O_RDONLY|O_CLOEXEC) = 4
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 eine nonlatin
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ühren fc-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 verwenden ttmkfdir
und mkfontdir
generieren .font.scale
font.dir
Verweise:
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.)