PHP 8.5.0 Alpha 1 available for testing

ps_findfont

(PECL ps >= 1.1.0)

ps_findfontCarga una fuente

Descripción

ps_findfont(
    resource $psdoc,
    string $fontname,
    string $encoding,
    bool $embed = false
): int

ps_findfont() carga una fuente para su uso posterior. Antes de que el texto sea escrito con la fuente cargada, debe ser fijada con ps_setfont(). Esta función debe tener el archivo de métricas de la fuente "adobe" para calcular el espacio utilizado por los caracteres. Una fuente que se carga en una página solo estará disponible en esa página. Las fuentes que se utilizarán en todo el documento deben ser cargadas antes de la primera llamada a ps_begin_page(). La llamada a ps_findfont() entre páginas hará que esta fuente esté disponible para todas las páginas siguientes.

El nombre del archivo afm debe ser fontname.afm. Si la fuente debe ser incorporada, el archivo fontname.pfb que contiene el dibujo de la fuente también debe estar presente.

La llamada a ps_findfont() antes de la primera página requiere mostrar el encabezado del postscript que incluye el BoundingBox para el documento completo. Normalmente, el BoundingBox se fija con la primera llamada a ps_begin_page() que ahora viene después de ps_findfont(). En consecuencia, el BoundingBox no ha sido fijado y se lanzará un error cuando ps_findfont() sea llamada. Para prever esta situación, debe llamarse a la función ps_set_parameter() para fijar el BoundingBox antes de que ps_findfont() sea llamada.

Parámetros

psdoc

Identificador de un archivo postscript devuelto por ps_new().

fontname

El nombre de la fuente.

encoding

ps_findfont() intentará cargar el archivo pasado en el argumento encoding. Los archivos de codificación tienen la misma sintaxis que los utilizados por dvips(1). Contienen un vector de codificación de fuente (que actualmente no se utiliza, pero que debe estar presente) y una lista de ligaduras adicionales para extender la lista de ligaduras derivadas del archivo AFM.

encoding puede ser null o una string vacía si se desea utilizar la codificación por omisión (TeXBase1).

Si la codificación se establece en builtin entonces no habrá codificación adicional y se utilizará la codificación específica de la fuente. Esto es muy útil para fuentes con símbolos.

embed

Si se establece en un valor >0, la fuente será incorporada en el documento. Esto requiere la presencia del archivo de dibujo (.pfb).

Valores devueltos

Devuelve un identificador de la fuente o cero en caso de error. El identificador es un número positivo.

Ver también

add a note

User Contributed Notes 4 notes

up
1
yarych at bigmir dot net
17 years ago
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.
up
1
yarych at bigmir dot net
17 years ago
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.)
up
1
zeldorblat at gmail dot com
19 years ago
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.
up
0
pepe at dexef dot hu
19 years ago
I found out that you must copy the <fontname>.afm files next to your php because it's searched there in default.
To Top