ttf_mappings as $typeface => $file) { pdf_set_parameter($pdf, "FontOutline", $typeface."=".TTF_FONTS_REPOSITORY.$file); }; } function add_ttf_mapping($typeface, $file, $embed) { $this->ttf_mappings[$typeface] = $file; $this->embed[$typeface] = $embed; } function add_afm_mapping($typeface, $file) { $this->afm_mappings[$typeface] = $file; } function font_resolved($family, $weight, $style, $encoding) { return isset($this->ps_fonts[$family]) and isset($this->ps_fonts[$family][$weight]) and isset($this->ps_fonts[$family][$weight][$style]) and isset($this->ps_fonts[$family][$weight][$style][$encoding]); } function get_afm_mapping($typeface) { return (isset($this->afm_mappings[$typeface]) ? $this->afm_mappings[$typeface] : ""); } function resolve_font($family, $weight, $style, $encoding) { if (!$this->font_resolved($family, $weight, $style, $encoding)) { $this->ps_fonts[$family][$weight][$style][$encoding] = 'font'.$this->ps_fonts_counter; $this->ps_fonts_counter++; }; return $this->ps_fonts[$family][$weight][$style][$encoding]; } function add_family_normal_encoding_override($family, $encoding, $normal, $italic, $oblique) { $this->overrides[$encoding][$family][WEIGHT_NORMAL][FS_NORMAL] = $normal; $this->overrides[$encoding][$family][WEIGHT_NORMAL][FS_ITALIC] = $italic; $this->overrides[$encoding][$family][WEIGHT_NORMAL][FS_OBLIQUE] = $oblique; } function add_family_normal_encoding_override_mask($family, $encoding, $normal, $italic, $oblique) { $this->overrides_mask[$family][WEIGHT_NORMAL][FS_NORMAL][] = array('mask' => $encoding, 'override' => $normal); $this->overrides_mask[$family][WEIGHT_NORMAL][FS_ITALIC][] = array('mask' => $encoding, 'override' => $italic); $this->overrides_mask[$family][WEIGHT_NORMAL][FS_OBLIQUE][] = array('mask' => $encoding, 'override' => $oblique); } function add_family_bold_encoding_override($family, $encoding, $normal, $italic, $oblique) { $this->overrides[$encoding][$family][WEIGHT_BOLD][FS_NORMAL] = $normal; $this->overrides[$encoding][$family][WEIGHT_BOLD][FS_ITALIC] = $italic; $this->overrides[$encoding][$family][WEIGHT_BOLD][FS_OBLIQUE] = $oblique; } function add_family_bold_encoding_override_mask($family, $encoding, $normal, $italic, $oblique) { $this->overrides_mask[$family][WEIGHT_BOLD][FS_NORMAL][] = array('mask' => $encoding, 'override' => $normal); $this->overrides_mask[$family][WEIGHT_BOLD][FS_ITALIC][] = array('mask' => $encoding, 'override' => $italic); $this->overrides_mask[$family][WEIGHT_BOLD][FS_OBLIQUE][] = array('mask' => $encoding, 'override' => $oblique); } function add_normal_encoding_override($encoding, $normal, $italic, $oblique) { $this->add_family_normal_encoding_override(" ", $encoding, $normal, $italic, $oblique); } function add_normal_encoding_override_mask($encoding, $normal, $italic, $oblique) { $this->add_family_normal_encoding_override_mask(" ", $encoding, $normal, $italic, $oblique); } function add_bold_encoding_override($encoding, $normal, $italic, $oblique) { $this->add_family_bold_encoding_override(" ", $encoding, $normal, $italic, $oblique); } function add_bold_encoding_override_mask($encoding, $normal, $italic, $oblique) { $this->add_family_bold_encoding_override_mask(" ", $encoding, $normal, $italic, $oblique); } function get_global_encoding_override($weight, $style, $encoding) { return $this->get_family_encoding_override(" ", $weight, $style, $encoding); } function get_family_encoding_override($family, $weight, $style, $encoding) { if (isset($this->overrides[$encoding]) && isset($this->overrides[$encoding][$family]) && isset($this->overrides[$encoding][$family][$weight]) && isset($this->overrides[$encoding][$family][$weight][$style])) { return $this->overrides[$encoding][$family][$weight][$style]; }; if (isset($this->overrides_mask[$family]) && isset($this->overrides_mask[$family][$weight]) && isset($this->overrides_mask[$family][$weight][$style])) { foreach ($this->overrides_mask[$family][$weight][$style] as $override) { if (preg_match($override['mask'], $encoding)) { return $override['override']; }; }; }; return ''; } function have_global_encoding_override($weight, $style, $encoding) { return $this->get_global_encoding_override($weight, $style, $encoding) !== ""; } function have_family_encoding_override($family, $weight, $style, $encoding) { return $this->get_family_encoding_override($family, $weight, $style, $encoding) !== ""; } function add_alias($alias, $family) { $this->aliases[$alias] = $family; } function add_normal_family($family, $normal, $italic, $oblique) { $this->families[$family][WEIGHT_NORMAL][FS_NORMAL] = $normal; $this->families[$family][WEIGHT_NORMAL][FS_ITALIC] = $italic; $this->families[$family][WEIGHT_NORMAL][FS_OBLIQUE] = $oblique; } function add_bold_family($family, $normal, $italic, $oblique) { $this->families[$family][WEIGHT_BOLD][FS_NORMAL] = $normal; $this->families[$family][WEIGHT_BOLD][FS_ITALIC] = $italic; $this->families[$family][WEIGHT_BOLD][FS_OBLIQUE] = $oblique; } function get_typeface_name($family, $weight, $style, $encoding) { if ($this->have_alias($family)) { return $this->get_typeface_name($this->aliases[$family], $weight, $style, $encoding); } // Check for family-specific encoding override if ($this->have_family_encoding_override($family, $weight, $style, $encoding)) { return $this->get_family_encoding_override($family, $weight, $style, $encoding); } // Check for global encoding override if ($this->have_global_encoding_override($weight, $style, $encoding)) { return $this->get_global_encoding_override($weight, $style, $encoding); } if (!isset($this->families[$family])) { return "Times-Roman"; }; if (!isset($this->families[$family][$weight])) { return "Times-Roman"; }; if (!isset($this->families[$family][$weight][$style])) { return "Times-Roman"; }; return $this->families[$family][$weight][$style]; } function have_alias($family) { return isset($this->aliases[$family]); } function have_font_family($family) { return isset($this->families[$family]) or $this->have_alias($family); } } global $g_font_resolver, $g_font_resolver_pdf; $g_font_resolver = new FontResolver(); $g_font_resolver_pdf = new FontResolver(); ?>