沿文本基线绘制线条

沿文本基线绘制线条

我对 TeX 及其变体的世界不太熟悉,在深入研究之前,我无法评估它是否符合我的需求。TeX 及其同类可以绘制水平线条,但它们中的任何一个都可以将线条对齐到连续文本(悬挂、字母、表意文字)的各种印刷基线处吗?——从WHATWG HTML5 画布基线规范

一组字形,其下方画有线条,表示各种印刷基线

答案1

某些值可以在 TeX 中访问,例如:

\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{color}
\setlength{\fboxsep}{0pt}
\setlength{\fboxrule}{.3pt}
\setcounter{secnumdepth}{0}
\begin{document}

\subsection{Bounding box}
  \begin{quote}
    \color{red}
    \Huge
    \def\test#1{\fbox{\color{blue}#1}}
    \test{\`A} \test{\sffamily C} \test{\itshape f}
    \test{$\cdot$} \test{\_}%
  \end{quote}

\subsection{Baseline}
  \begin{quote}
    \Huge
    \sbox0{\color{blue}\,abcfgjpq=-\_x\,}
    \noindent
    \rlap{\color{red}\vrule width\wd0 height.15pt depth.15pt}%
    \usebox0
  \end{quote}

\subsection{Math axis}
  \begin{tabular}{@{}lll@{}}
    \textbullet & \verb|\sbox0{$\vcenter{}$}\the\ht0| & 6.22pt\\
    \textbullet & \verb|\the\fontdimen22\textfont2\relax| & 6.22pt\\
  \end{tabular}
  \begin{quote}
    % Math axis via an empty `\vcenter`, which vertically
    % centers around the math axis.
    \sbox0{\Huge$\vcenter{}$}% \vcenter centers around the math axis
    \sbox2{\Huge\color{blue}\,${=}{+}{\cdot}{-}{\equiv}{\times}$\,}
    \noindent
    \rlap{\color{red}%
      \vrule width\wd2 height\dimexpr\ht0+.15pt\relax
                       depth-\dimexpr\ht0-.15pt\relax
    }%
    \usebox2
  \end{quote}

\subsection{Corpus size, x-height}
  Font dependent unit: \verb|1ex|
  \begin{quote}
    \sbox0{\Huge\color{blue}\,abcdefghijklmnopqrstuvwxyz\,}
    \noindent
    \rlap{\color{red}\Huge
      \vrule width\wd0 height\dimexpr1ex+.15pt\relax
                       depth-\dimexpr1ex-.15pt\relax
    }%
    \usebox0
  \end{quote}

\subsection{Em}
  Font dependent unit: \verb|1em|
  \begin{quote}
    $\vcenter{\color{red}\hbox{\Huge\rule{1em}{1em}}}$\quad
    1\,em $\times$ 1\,em
  \end{quote}
\end{document}

结果

边界框

TeX 不是光栅化器,因此它不知道确切的边界框。相反,它依赖于字体报告的字形边界框:

  • 包含侧边距(左右白边距)。

  • 包括基线(参见上例中的下划线或中间点)。

  • 在某些情况下,字体的字形边界框可能比实际边界框大或小。这通常是字体设计的一部分,有时是字体错误。

相关内容