first_child(); do { if ($child->node_type() == XML_ELEMENT_NODE) { switch ($child->tagname()) { case "normal": if ($root->has_attribute('name')) { $names = explode(',', $root->get_attribute('name')); foreach ($names as $name) { $resolver->add_normal_encoding_override($name, $child->get_attribute('normal'), $child->get_attribute('italic'), $child->get_attribute('oblique')); }; }; if ($root->has_attribute('mask')) { foreach ($names as $name) { $resolver->add_normal_encoding_override_mask($root->get_attribute('mask'), $child->get_attribute('normal'), $child->get_attribute('italic'), $child->get_attribute('oblique')); }; }; break; case "bold": if ($root->has_attribute('name')) { $names = explode(',', $root->get_attribute('name')); foreach ($names as $name) { $resolver->add_bold_encoding_override($name, $child->get_attribute('normal'), $child->get_attribute('italic'), $child->get_attribute('oblique')); }; }; if ($root->has_attribute('mask')) { foreach ($names as $name) { $resolver->add_bold_encoding_override_mask($root->get_attribute('mask'), $child->get_attribute('normal'), $child->get_attribute('italic'), $child->get_attribute('oblique')); }; }; break; }; }; } while ($child = $child->next_sibling()); } function parse_metrics_node_config_file($root, &$resolver) { $resolver->add_afm_mapping($root->get_attribute('typeface'), $root->get_attribute('file')); } function parse_ttf_node_config_file($root, &$resolver) { switch (FONT_EMBEDDING_MODE) { case 'all': $embed_flag = true; break; case 'none': $embed_flag = false; break; case 'config': $embed_flag = (bool)$root->get_attribute('embed'); break; } $resolver->add_ttf_mapping($root->get_attribute('typeface'), $root->get_attribute('file'), $embed_flag); } function parse_family_encoding_override_node_config_file($family, $root, &$resolver) { $child = $root->first_child(); do { if ($child->node_type() == XML_ELEMENT_NODE) { switch ($child->tagname()) { case "normal": $names = explode(",",$root->get_attribute('name')); foreach ($names as $name) { $resolver->add_family_normal_encoding_override($family, $name, $child->get_attribute('normal'), $child->get_attribute('italic'), $child->get_attribute('oblique')); }; break; case "bold": $names = explode(",",$root->get_attribute('name')); foreach ($names as $name) { $resolver->add_family_bold_encoding_override($family, $name, $child->get_attribute('normal'), $child->get_attribute('italic'), $child->get_attribute('oblique')); }; break; }; }; } while ($child = $child->next_sibling()); } function parse_fonts_family_node_config_file($root, &$resolver) { // Note: font family names are always converted to lower case to be non-case-sensitive $child = $root->first_child(); do { if ($child->node_type() == XML_ELEMENT_NODE) { $font_family_name = strtolower($root->get_attribute('name')); switch ($child->tagname()) { case "normal": $resolver->add_normal_family($font_family_name, $child->get_attribute('normal'), $child->get_attribute('italic'), $child->get_attribute('oblique')); break; case "bold": $resolver->add_bold_family($font_family_name, $child->get_attribute('normal'), $child->get_attribute('italic'), $child->get_attribute('oblique')); break; case "encoding-override": parse_family_encoding_override_node_config_file($font_family_name, $child, $resolver); break; }; }; } while ($child = $child->next_sibling()); } function parse_fonts_node_config_file($root, &$resolver) { $child = $root->first_child(); do { if ($child->node_type() == XML_ELEMENT_NODE) { switch ($child->tagname()) { case "alias": $resolver->add_alias(strtolower($child->get_attribute('alias')), $child->get_attribute('family')); break; case "family": parse_fonts_family_node_config_file($child, $resolver); break; case "encoding-override": parse_encoding_override_node_config_file($child, $resolver); break; case "ttf": parse_ttf_node_config_file($child, $resolver); break; case "metrics": parse_metrics_node_config_file($child, $resolver); break; }; }; } while ($child = $child->next_sibling()); } function parse_config_file($filename) { // Save old magic_quotes_runtime value and disable it $mq_runtime = get_magic_quotes_runtime(); set_magic_quotes_runtime(0); $doc = TreeBuilder::build(file_get_contents($filename)); $root=$doc->document_element(); $child = $root->first_child(); do { if ($child->node_type() == XML_ELEMENT_NODE) { switch ($child->tagname()) { case "fonts": global $g_font_resolver; parse_fonts_node_config_file($child, $g_font_resolver); break; case "fonts-pdf": global $g_font_resolver_pdf; parse_fonts_node_config_file($child, $g_font_resolver_pdf); break; case "media": add_predefined_media($child->get_attribute('name'), (float)$child->get_attribute('height'), (float)$child->get_attribute('width')); break; }; }; } while ($child = $child->next_sibling()); // Restore old magic_quotes_runtime values set_magic_quotes_runtime($mq_runtime); } ?>