PhantomJS tôn trọng các fontconfig
thư mục và thậm chí cả cấu hình phông chữ cũ font.dir
/ font.scale
postcript. Ví dụ tôi có phông chữ Loại 1 cũ:
$ 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
(Điều đó đã được tạo ra với ol 'X11 mkfontdir
)
Và, để có một ví dụ tốt hơn, tôi sẽ sao chép một fotnconfig
phông chữ vào thư mục nhà của mình:
$ mkdir -p ~/.local/share/fonts/TTF
$ cp /usr/share/fonts/TTF/HomemadeApple.ttf ~/.local/share/fonts/TTF
$ fc-cache # just in case
Bây giờ, hãy xem PhantomJS sử dụng chúng như thế nào (sử dụng một ví dụ cổ điển từ github PhantomJS):
$ wget https://raw.githubusercontent.com/ariya/phantomjs/master/examples/rasterize.js
strace
in tất cả các cuộc gọi hệ thống (bao gồm cả truy cập hệ thống tập tin):
$ 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
Và PhantomJS đã đi đến các thư mục phông chữ và tải chúng!
Tôi không có cái ~/.config/fontconfig/fonts.conf
nào có thể cần cho phông chữ CJK (vì chúng có thể cần một số cấu hình thực tế), nhưng bạn có thể sao chép một tệp từ /etc/fonts/conf.d/*
(đáng chú ý là một số nonlatin
phông chữ, để có được cấu hình mẫu).
Tuy nhiên, bạn có thể có thể thoát khỏi hầu hết các phông chữ bằng cách thả chúng vào ~/.local/share/fonts/TTF
và sau đó chạy fc-cache
.
Tuyên bố miễn trừ trách nhiệm: Một RedHat cũ (5 chắc chắn, không chắc chắn về 6) có thể không được sử dụng fontconfig
, đó là lý do tại sao tôi đưa phông chữ PFB vào ví dụ. Trong trường hợp đó, bạn cần sử dụng ttmkfdir
và mkfontdir
tạo tệp font.scale
và font.dir
.
Người giới thiệu:
strace phantomjs rasterize.js http://v1.jontangerine.com/silo/typography/web-fonts/ file.pdf 2>&1 | grep ttf
(tức là sử dụng trình duyệt để rasterize trang đó, mặc dù tôi không thấyimpact
phông chữ được sử dụng trên trang). Ngoài ra, hệ thống của bạn đang sử dụngfontconfig
do đó đặt phông chữ vào~/.local/share/fonts/TTF
(Tôi giả sử đó là phông chữ TTF, phải không?) An toàn hơn (và không cần sử dụngttmkfdir
hoặcmkfontdir
ở đó.)