问题或功能:使用 \textsc 时,gfsartemisia-euler 软件包将 ú 更改为 ý

问题或功能:使用 \textsc 时,gfsartemisia-euler 软件包将 ú 更改为 ý

我需要使用 gfsartemisia-euler 包将一本原本使用 palatine 字体书写的书的字体改为 artemisia 字体。我的问题如下:

当我使用\textsc\scshape字符ú被替换为ý

这只发生在这个角色上,其他角色似乎都正常工作。这是一个最小的例子。

\documentclass{scrbook}
\usepackage{gfsartemisia-euler} 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\usepackage{tipa}

\begin{document}
\scshape 
  Os números \\ 
  
  Os n\'umeros \\
  
  Nos capítulos, nas equações...\\ 
  
  É mesmo? Então faça com as próprias mãos  

  Höla e também H\"ola. (Exige tipa)
\end{document}

编译此文件后,它会产生输出

在此处输入图片描述

答案1

这确实是 GFSArtemisia T1 版本的一个 bug。这是字体表中与拉丁小写字母对应的部分:

在此处输入图片描述

您可以看到 Ý 被列出两次,而第一个条目应该是 Ú。应将此问题报告给维护人员,以便修复。

然而,OTF版本来自https://ctan.org/tex-archive/fonts/greek/gfs/gfsartemisia/opentype 有小写字母 ú。因此,如果您愿意,可以使用一种相当复杂的解决方法将此字符与 pdfLaTeX 一起使用。这个想法是创建一个只包含此字符的 pdf 文件,并在 pdfLaTeX 中设置从 ú 到包含此 pdf 的映射,但仅适用于小写字母(并映射到\'u所有其他字体样式)。

独立版 ú smallcaps,使用 XeLaTeX 或 LuaLaTeX 编译。在下面的代码中,此文件称为artemisscu.pdf

\documentclass{standalone}
\usepackage{fontspec}
\setmainfont{GFSArtemisia.otf}
\begin{document}
\textsc{ú}
\end{document}

映射,使用小型大写字母检测https://tex.stackexchange.com/a/31660

\documentclass{scrbook}
\usepackage{gfsartemisia-euler} 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\usepackage{tipa}
\usepackage{newunicodechar}
\usepackage{graphicx}

\makeatletter
\newcommand*{\IfSmallCapsTF}{%
  \ifx\f@shape\my@test@sc
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\newcommand*{\my@test@sc}{sc}
\makeatother

\newunicodechar{ú}{\IfSmallCapsTF{\raisebox{-0.02Ex}{\includegraphics[width=1.12Ex]{artemisscu}}}{\'u}}

\begin{document}
Os números

\scshape Os números
  
\Huge Os números
  
\tiny Os números
    
\normalsize Os n\'umeros
  
Nos capítulos, nas equações...
  
É mesmo? Então faça com as próprias mãos  

Höla e também H\"ola. (Exige tipa)

\normalfont
Os números
  
\end{document}

请注意,图形的大小和位置是以Ex单位设置的,因此它会随着字体大小而缩放。

结果:

在此处输入图片描述

请注意,它\'u本身并未映射,因此您需要实际的 ú 作为输入才能使其工作。

相关内容