/**
  * Optimization: _readCSSLength is usually called several times
  * while initializing box object. $base_font_size cound be calculated 
  * only once and stored in a static variable.
  */
 function _readCSSLengths($state, $property_list)
 {
     if (is_null($this->_cached_base_font_size)) {
         $font =& $this->getCSSProperty(CSS_FONT);
         if (!$font) {
             $font = CSSFont::default_value();
         }
         $this->_cached_base_font_size = $font->size->getPoints();
     }
     foreach ($property_list as $property) {
         $value =& $state->getProperty($property);
         if ($value === CSS_PROPERTY_INHERIT) {
             $value =& $state->getInheritedProperty($property);
         }
         if (is_object($value)) {
             $value =& $value->copy();
             $value->doInherit($state);
             $value->units2pt($this->_cached_base_font_size);
         }
         $this->setCSSProperty($property, $value);
     }
 }
 function _get_font_name(&$viewport, $subword_index)
 {
     if (isset($this->_cache[CACHE_TYPEFACE][$subword_index])) {
         return $this->_cache[CACHE_TYPEFACE][$subword_index];
     }
     $font_resolver =& $viewport->get_font_resolver();
     $font = $this->getCSSProperty(CSS_FONT);
     if (!$font) {
         $font = CSSFont::default_value();
     }
     $typeface = $font_resolver->getTypefaceName($font->family, $font->weight, $font->style, $this->encodings[$subword_index]);
     $this->_cache[CACHE_TYPEFACE][$subword_index] = $typeface;
     return $typeface;
 }