我正在使用 Ubuntu 14.04 Server 64 位 VPS,我想用它XeLaTeX
来创建具有所需字体的 PDF 文件。我已经安装了字体,XeLaTex
如果我从终端执行它,它就可以正常工作:
xelatex sample.tex
并且它毫无问题地生成了sample.pdf。但如果我从PHPexec()
函数执行相同的命令,如以下命令:
$cmd = "cd folder && xelatex sample.tex";
$excute = shell_exec($cmd);
我将面临“找不到字体”的问题。因为一切正常,我认为问题出在字体权限或所有权上。我尝试将特定字体文件夹和文件的权限更改为,甚至尝试将所有权更改为拥有 PHP 文件的所有者,但我无法解决问题。出于安全考虑,744
我不想使用它来执行命令。sudo
我应该如何让 Ubuntu 字体可用于 PHP 脚本?
更新 1:
这是我的 sample.tex 文件,我使用 settextfont 来选择字体:
\documentclass[a4paper,12pt]{report}
\usepackage{amsthm,amsmath}
\usepackage{amssymb}
\usepackage{mathrsfs}
\usepackage{graphicx}
\usepackage[top=3cm,right=3cm,bottom=2.5cm,left=2.5cm]{geometry}
\usepackage{xepersian}
\settextfont[Scale=1.1]{XB Yas}
\setdigitfont{XB Yas}
\begin{document}
Hello, This is a test file.
\end{document}
更新 2:
我把代码改成如下形式:
\documentclass[a4paper,12pt]{report}
\usepackage{amsthm,amsmath}
\usepackage{amssymb}
\usepackage{mathrsfs}
\usepackage{graphicx}
\usepackage[top=3cm,right=3cm,bottom=2.5cm,left=2.5cm]{geometry}
\setmainfont{Yas}[Path = /var/www/html/fonts/,UprightFont = *-Rg,Extension = .ttf]
\begin{document}
Hello, This is a test file.
\end{document}
但现在我面临以下错误:
fontspec error: "font-not-found"
The font "Yas-Rg" cannot be found.
/var/www/html/fonts 中有 Yas-Rg.ttf、Yas-Bd.ttf 和其他字体,所有权已设置为拥有 PHP 脚本的人,并且权限已设置为 774。
答案1
假设您正在使用该fontspec
包,并且根据fontspec 包文档(第 9 页),您应该能够将所需的字体放在 apache 获得正确权限的文件夹中:
To load a font that is not in one of the default search paths, its
location in the filesystem must be specified with the Path feature:
\setmainfont{texgyrepagella}[
Path = /var/www/myProject/Fonts/ ,
UprightFont = *-regular ,
BoldFont = *-bold ,
... ]