将一种字体中的字形替换为另一种字体中的字形

将一种字体中的字形替换为另一种字体中的字形

我是 LaTeX 的新手,在字体方面。我想替换双重故事“a”拉丁现代单篇故事“a”版本(和“g” 也类似)我只是希望我的排版输出看起来更符合我的手写输出,不管美观与否。 去年当我问出这个问题的时候,大多数人都认为我疯了才会去搞乱字体设计,但是我无论如何都想这么做(我就是这么固执)。

为了部分减轻输出的混合和匹配的丑陋(我并没有完全听取过去批评者的明智评论),我希望使用拉丁现代斜体代替,直立版本,但仅适用于字符“a”和“g”(所有可用的字体大小和粗细)。我希望冲突可以最小化,因为这两种字体都是拉丁现代字体,因此彼此之间有一些相似之处。

首先:我如何访问这个隐藏的 Latin Modern 字体版本?其次:我如何使用 LaTeX 仅对这两个字形进行更改?去年有人向我提出了一个部分答案,使用 XeTeX(我需要进一步研究才能理解它),但我认为 XeTeX 与微字体并不完全兼容,如果可以的话,我宁愿不为我的排版学习新的范例。

谢谢大家的回答。这个论坛总是对我非常有帮助。

更新

好吧,这是我的问题的部分答案。

我的文档标题中有以下内容:

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{cfr-lm}
\DeclareTextFontCommand{\upa}{\fontencoding{T1}\fontfamily{clm2j}\selectfont\textui{a}}
\DeclareTextFontCommand{\upaa}{\fontencoding{T1}\fontfamily{clm2j}\selectfont\textui{á}}
\DeclareTextFontCommand{\upg}{\fontencoding{T1}\fontfamily{clm2j}\selectfont\textui{g}}
\DeclareUnicodeCharacter{0061}{\upa}
\DeclareUnicodeCharacter{00E1}{\upaa}
\DeclareUnicodeCharacter{0067}{\upg}

现在实际的直立斜体字母已经创建。但不​​知何故命令\DeclareUicodeCharacter没有任何效果。有人知道为什么吗?

答案1

您用于声明的代码相当于

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{cfr-lm}
\newcommand*{\upa}{\textui{a}}
\newcommand*{\upaa}{\textui{á}}
\newcommand*{\upg}{\textui{g}}
\begin{document}
 a \upa á \upaa g \upg
\end{document}

没有必要为单个字符声明文本字体命令,而且这样做也不合适。加载现代然后加载流明毫无意义,因为后者会覆盖或复制前者的所有内容。加载丰滕克with 选项T1也是没有意义的,因为流明无论如何都会这么做。

请注意,这种方法将导致一些非常糟糕的印刷结果。

例如,文本变得更加难以阅读,因为单词的开始和结束变得不那么清晰。即使没有周围的文字,你也能体会到其中的困难:

恶心

请注意这里的字距问题。(诚然,直立斜体的字距调整没有帮助,正如在“陀螺仪”的 UI 版本中看到的那样。)

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{cfr-lm}
\newcommand*{\upa}{\textui{a}}
\newcommand*{\upaa}{\textui{á}}
\newcommand*{\upg}{\textui{g}}
\begin{document}
 Vat

 V\upa t

 \textui{Vat}

 gyroscope buggy

 \upg yroscope bu\upg\upg y

 \textui{gyroscope buggy}
\end{document}

相关内容