Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : PostScript document creation : ps_findfont

ps_findfont

Loads a font (PECL ps:1.1.0-1.3.5)
int ps_findfont ( resource psdoc, string fontname, string encoding [, bool embed] )

Loads a font for later use. Before text is output with a loaded font it must be set with ps_setfont(). This function needs the adobe font metric file in order to calculate the space used up by the characters. A font which is loaded within a page will only be available on that page. Fonts which are to be used in the complete document have to be loaded before the first call of ps_begin_page(). Calling ps_findfont() between pages will make that font available for all following pages.

The name of the afm file must be fontname.afm. If the font shall be embedded the file fontname.pfb containing the font outline must be present as well.

Calling ps_findfont() before the first page requires to output the postscript header which includes the BoundingBox for the whole document. Usually the BoundingBox is set with the first call of ps_begin_page() which now comes after ps_findfont(). Consequently the BoundingBox has not been set and a warning will be issued when ps_findfont() is called. In order to prevent this situation, one should call ps_set_parameter() to set the BoundingBox before ps_findfont() is called.

Parameters

psdoc

Resource identifier of the postscript file as returned by ps_new().

fontname

The name of the font.

encoding

ps_findfont() will try to load the file passed in the parameter encoding. Encoding files are of the same syntax as those used by dvips(1). They contain a font encoding vector (which is currently not used but must be present) and a list of extra ligatures to extend the list of ligatures derived from the afm file.

encoding can be NULL or the empty string if the default encoding (TeXBase1) shall be used.

If the encoding is set to builtin then there will be no reencoding and the font specific encoding will be used. This is very useful with symbol fonts.

embed

If set to a value >0 the font will be embedded into the document. This requires the font outline (.pfb file) to be present.

Return Values

Returns the identifier of the font or zero in case of an error. The identifier is a positive number.

Code Examples / Notes » ps_findfont

zeldorblat

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.


pepe

I found out that you must copy the <fontname>.afm files next to your php because it's searched there in default.

Change Language


Follow Navioo On Twitter
ps_add_bookmark
ps_add_launchlink
ps_add_locallink
ps_add_note
ps_add_pdflink
ps_add_weblink
ps_arc
ps_arcn
ps_begin_page
ps_begin_pattern
ps_begin_template
ps_circle
ps_clip
ps_close_image
ps_close
ps_closepath_stroke
ps_closepath
ps_continue_text
ps_curveto
ps_delete
ps_end_page
ps_end_pattern
ps_end_template
ps_fill_stroke
ps_fill
ps_findfont
ps_get_buffer
ps_get_parameter
ps_get_value
ps_hyphenate
ps_include_file
ps_lineto
ps_makespotcolor
ps_moveto
ps_new
ps_open_file
ps_open_image_file
ps_open_image
ps_open_memory_image
ps_place_image
ps_rect
ps_restore
ps_rotate
ps_save
ps_scale
ps_set_border_color
ps_set_border_dash
ps_set_border_style
ps_set_info
ps_set_parameter
ps_set_text_pos
ps_set_value
ps_setcolor
ps_setdash
ps_setflat
ps_setfont
ps_setgray
ps_setlinecap
ps_setlinejoin
ps_setlinewidth
ps_setmiterlimit
ps_setoverprintmode
ps_setpolydash
ps_shading_pattern
ps_shading
ps_shfill
ps_show_boxed
ps_show_xy2
ps_show_xy
ps_show2
ps_show
ps_string_geometry
ps_stringwidth
ps_stroke
ps_symbol_name
ps_symbol_width
ps_symbol
ps_translate
eXTReMe Tracker