public function htmlHead($custom_head_markup = '')
    {

        if (!empty($custom_head_markup)) {
            $this->custom_head_markup = $custom_head_markup;
        }

        $html = $this->doc_type . "\n";
        $html .= $this->opening_html_tag . "\n";
        $html .= '<head>' . "\n";
        $html .= '<meta http-equiv="Content-Type" content="text/html; charset=' . $this->charset . '" />' . "\n";
        $html .= '<meta http-equiv="X-UA-Compatible" content="IE=edge" />'."\n";
        $html .= '<title>' . $this->title . '</title>' . "\n";

        if ($this->meta instanceof HeadMeta) {

            foreach (get_object_vars($this->meta) as $key => $val) {
                $html .= '<meta name="' . $key . '" content="' . $val . '" />' . "\n";
            }
        }

        $html .= '<style type="text/css">';

        foreach ($this->styles as $style) {
            if (!preg_match("~^(http|/)~", $style)) {
                $style = '/css/' . $style;
            }
            $html .= "@import '" . $style . "';\n";
        }
        $html .= "</style>\n";

        if (!empty($this->custom_head_markup)) {
            $html.= $this->custom_head_markup;
        }

        $html.= "</head>\n";
        return $html;
    }