I've found out that pslib is searching for fonts in its data dir (/usr/share/pslib). There is no way to change the search path now.
(PECL ps >= 1.1.0)
ps_findfont — Carrega uma fonte
Carrega uma fonte para uso posterior. Antes que o texto seja gerado com uma fonte carregada, ele deve ser definido com ps_setfont(). Esta função precisa do arquivo de métricas de fontes da Adobe para calcular o espaço usado pelos caracteres. Uma fonte carregada dentro de uma página estará disponível apenas naquela página. As fontes que serão usadas no documento completo devem ser carregadas antes da primeira chamada de ps_begin_page(). Chamar ps_findfont() entre páginas tornará essa fonte disponível para todas as páginas seguintes.
O nome do arquivo afm deve ser
fontname
.afm
. Se a fonte
for incorporada, o arquivo
fontname
.pfb
contendo
o contorno da fonte também deve estar presente.
Chamar ps_findfont() antes da primeira página requer a geração do cabeçalho PostScript que inclui o BoundingBox para todo o documento. Normalmente, o BoundingBox é definido com a primeira chamada de ps_begin_page(), que agora vem depois de ps_findfont(). Consequentemente, o BoundingBox não foi definido e um aviso será emitido quando ps_findfont() for chamado. Para evitar essa situação, deve-se chamar ps_set_parameter() para definir o BoundingBox antes de ps_findfont() ser chamado.
psdoc
Identificador de recurso do arquivo postscript conforme retornado por ps_new().
fontname
O nome da fonte.
encoding
ps_findfont() tentará carregar o arquivo passado
no parâmetro encoding
. Os arquivos de codificação têm
a mesma sintaxe daqueles usados por dvips(1). Eles
contêm um vetor de codificação de fonte (que atualmente não é usado, mas deve estar
presente) e uma lista de ligaduras extras para estender a lista de ligaduras
derivadas do arquivo afm.
encoding
pode ser null
ou a string vazia se
a codificação padrão (TeXBase1) for usada.
Se a codificação for definida como builtin
, não haverá
recodificação e a codificação específica da fonte será usada. Isso
é muito útil com fontes de símbolos.
embed
Se definido para um valor maior que zero, a fonte será incorporada ao documento. Isso requer a presença do contorno da fonte (arquivo .pfb).
Retorna o identificador da fonte ou zero em caso de erro. O identificador é um número positivo.
I've found out that pslib is searching for fonts in its data dir (/usr/share/pslib). There is no way to change the search path now.
Ok, now I found the way to set the path I need for fonts - before calling ps_findfont() make a call like this:
<?php ps_set_parameter($psdoc, 'SearchPath', $fonts_dir); ?>
It works for pslib 0.4.1 version. (Looks like it didn't work in some earlier versions.)
I found that my Postscript files were taking an incredibly long time to generate and the file sizes were abnormally large. The problem was that, everytime I chose to set a font I would call ps_findfont() followed by ps_setfont().
It seems that every time ps_findfont() is called, the font gets embedded in the file. To prevent this, I keep an array of fonts I've already loaded, keyed by the font name. When I go to set the font, I first check this array to see if I've already loaded the font, and, if so, return the resource handle from that array. Otherwise, I call ps_findfont() and store the handle in the array.
Note that, if your call to ps_findfont() occurs while inside a page, the font will not be available on other pages. To get around this I just clear out the array at the end of each page.
My PS file went from 10 M to 75 K, and the time to create the file went from around 15 seconds to less than 1 second.
I found out that you must copy the <fontname>.afm files next to your php because it's searched there in default.