Inconsolata 斜体?

Inconsolata 斜体?

请参见https://stackoverflow.com/questions/23975828/how-to-specify-non-standard-font-in-fancyvrb-verbatim/开始本次讨论。

我正在使用fancyvrb来创建一个奇特的Verbatim环境。我有

\usepackage{inconsolata}

加载 Inconsolata 字体,然后

\DefineVerbatimEnvironment{VerbOut}
  {Verbatim}{fontfamily=zi4,fontsize=\relsize{-1}}

对于环境本身。我希望它以斜体显示,但似乎包inconsolata没有加载该字体的斜体版本。是否有其他包可以加载斜体版本,或者我可以通过其他方式获取它?

答案1

Inconsolata 字体没有斜体或倾斜变体(2014 年 6 月)。

一些 TeX 引擎可以根据 PDF 格式的字体转换功能伪造倾斜字体(因此仅限于 PDF 模式)。

LuaTeX/XeTeX

\documentclass{article}
\usepackage{fontspec}
\setmonofont[
  AutoFakeSlant,
  BoldItalicFeatures={FakeSlant},
]{Inconsolatazi4}

\begin{document}
\ttfamily
Regular
\textbf{Bold}
\textsl{Slanted}
\textit{Italics}
\textbf{\textsl{BoldSlanted}}
\textbf{\textit{BoldItalics}}
\end{document}

结果

倾斜/斜体版本只是伪造的。并且未设置斜体校正。

pdfTeX

SlantFont文件中可以使用运算符.map

以下 Perl 脚本zi4-sl.pl读取zi4.map(通过 找到kpsewhich)并修改条目:

  • -sl添加到字体(TFM)名称中,
  • .167 SlantFont被添加。

Perl 脚本:

#!/usr/bin/env perl
use strict;
$^W=1;

my $outfile = 'zi4-sl.map';
my $infile = `kpsewhich zi4.map`;
chomp $infile;

open(IN, '<', $infile) or die "!!! Error: Cannot open `zi4.map': $!";
open(OUT, '>', $outfile) or die "!!! Error: Cannot write `$outfile': $!";

while (<IN>) {                                                                  
    next if /^\s*$/;                                       
    s/^([^- ]+)-([^- ]+)/$1-$2-sl/ or die "!!! Error: Cannot parse TFM name!\n";
    s/ " / " .167 SlantFont / or die "!!! Error: Cannot insert SlantFont!\n";
} continue {
    print OUT;
}

close(IN);
close(OUT);
__END__

下面的例子:

  • 通过以下方式包含地图文件\pdfmapfile
  • 定义字体形状(.fd通常会进入文件)。
\pdfmapfile{+zi4-sl.map}

\documentclass{article}
\usepackage{inconsolata}

\makeatletter
\sbox0{\ttfamily x}% load .fd file
\expandafter\ifx\csname zifour@scaled\endcsname\relax
  \let\zifour@scaled\@empty
\fi
\expandafter\ifx\csname zifour@opt\endcsname\relax
  \def\zifour@opt{\z@}\def\zifour@altopt{\tw@}
\fi
\DeclareFontShape{\f@encoding}{zi4}{m}{sl}{%
  <-> \zifour@scaled ot1-zi4r-sl-\zifour@opt}{}%
\DeclareFontShape{\f@encoding}{zi4}{m}{it}{%
  <-> ssub * zi4/m/sl}{}
\DeclareFontShape{\f@encoding}{zi4}{b}{sl}{%
  <-> \zifour@scaled ot1-zi4b-sl-\zifour@opt}{}
\DeclareFontShape{\f@encoding}{zi4}{bx}{sl}{%
  <-> ssub * zi4/b/sl}{}
\DeclareFontShape{\f@encoding}{zi4}{b}{it}{%
  <-> ssub * zi4/b/sl}{}
\DeclareFontShape{\f@encoding}{zi4}{bx}{it}{%
  <-> ssub * zi4/b/sl}{}
\makeatother

\begin{document}
\ttfamily
Regular  
\textbf{Bold}
\textsl{Slanted}
\textit{Italics}
\textbf{\textsl{BoldSlanted}}
\textbf{\textit{BoldItalics}}
\end{document}

最后需要 TFM 文件。一个穷人的解决方案是使用原始字体的 TFM 文件。示例需要(bash 语法):

cp $(kpsewhich ot1-zi4r-0.tfm) ot1-zi4r-sl-0.tfm
cp $(kpsewhich ot1-zi4b-0.tfm) ot1-zi4b-sl-0.tfm

结果

再次强调,倾斜和斜体变体只是伪造的。此外,斜体校正缺失,但可以通过编辑文件来添加.tfm

答案2

现在 Inconsolata 有两种变体,具有斜体(以及粗体、粗体斜体和西里尔文和希腊文的所有粗细和样式支持)。

这些都是孤寂者 LGCInconsolata LGC 标记。后者还试图区分各种引号和撇号类字符、en/em 破折号和连字符......这些都列在链接上。

答案3

你的字体似乎没有斜体版本(至少据我所知),但你随时可以在LaTeX Font Catalogue

相关内容