捷克口音 ěščřžý 未显示在输出中

捷克口音 ěščřžý 未显示在输出中

我有以下 MnWE,它是- 工作后,xelatex.exe 它不会显示带重音的捷克字母ěščřž显示“á”。

所以如何无论重音符号的表达方式有多复杂,我都要输入这些重音符号。但xelatex.exe无论如何我都需要。

编译以下 MnWE 所需的所有辅助文件是这里

\documentclass{article}

%\usepackage{amssymb}

\usepackage[czech]{babel}

%\usepackage[utf8]{inputenc}

\usepackage[utf8]{inputenc}

\usepackage[IL2]{fontenc}

\usepackage{addfont}
\addfont[1.5]{OT1}{slabikar}{\slabikar}

\pdfmapline{=slabikar slabikar <slabikar.pfb}

\begin{document}

 \font\pis = slabikar at1cm
 \pis
 \baselineskip = 1.5cm
 \obeylines
 Jakmile ulehneš, zavřeš oči a uvidíš své ruce,
 
\end{document}

在此处输入图片描述

答案1

在 XeLaTeX 中,您可以执行以下操作:

\documentclass{article}

\def\adef#1{\catcode`#1=13 \begingroup \lccode`\~=`#1\lowercase{\endgroup\def~}}
\font\slabikar=slabikar
\def\pis{\slabikar
   \adef š{^^b9}%
   \adef ř{^^f8}%
   \adef č{^^e8}%
}
\pdfmapline{=slabikar slabikar <slabikar.pfb}

\begin{document}

 {\pis
 \baselineskip = 1.5cm
 \obeylines
 Jakmile ulehneš, zavřeš oči a uvidíš své ruce,
 \par}

\end{document}

您必须在\pis宏中添加更多捷克字母。请参阅这些字母的 ISO-8859-2 代码。

您已将字体 slabikar 指向本网站。文件csf-enc.tex在这里,在这个文件中实现了从Unicode到ISO2的映射。

答案2

如果您想使用 xelatex,请尝试以下类似操作(假设使用相当新的 babel):

\documentclass{article}

\usepackage{babel}
\babelprovide[import,main]{czech}

\begin{document}

Jakmile ulehneš, zavřeš oči a uvidíš své ruce,

\end{document}

在此处输入图片描述

答案3

LaTeX 实现。问题是有些字形不在 Unicode 位置。当然,当不在 slabikar 字体中设置文本时,您希望保留位置。

我还添加了对 LuaLaTeX 的支持。请注意,XeLaTeX 不需要\pdfmapline或类似的东西。

\documentclass{article}
\usepackage{iftex}
\usepackage[czech]{babel}
\usepackage{newunicodechar}

\ifluatex
\pdfextension mapline{=slabikar slabikar <slabikar.pfb}
\fi

\newunicodechar{Č}{\ifslabikar ^^c8\else Č\fi}
\newunicodechar{č}{\ifslabikar ^^e8\else č\fi}
\newunicodechar{Ď}{\ifslabikar ^^cf\else Ď\fi}
\newunicodechar{ď}{\ifslabikar ^^ef\else ď\fi}
\newunicodechar{Ě}{\ifslabikar ^^cc\else ě\fi}
\newunicodechar{ě}{\ifslabikar ^^ec\else ě\fi}
\newunicodechar{Ň}{\ifslabikar ^^d2\else Ň\fi}
\newunicodechar{ň}{\ifslabikar ^^f2\else ň\fi}
\newunicodechar{Ř}{\ifslabikar ^^d8\else Ř\fi}
\newunicodechar{ř}{\ifslabikar ^^f8\else ř\fi}
\newunicodechar{Š}{\ifslabikar ^^a9\else Š\fi}
\newunicodechar{š}{\ifslabikar ^^b9\else š\fi}
\newunicodechar{Ť}{\ifslabikar ^^ab\else Ť\fi}
\newunicodechar{ť}{\ifslabikar ^^bb\else ť\fi}
\newunicodechar{Ů}{\ifslabikar ^^d9\else Ů\fi}
\newunicodechar{ů}{\ifslabikar ^^f9\else ů\fi}
\newunicodechar{Ž}{\ifslabikar ^^ae\else Ž\fi}
\newunicodechar{ž}{\ifslabikar ^^be\else ž\fi}

\DeclareFontFamily{T1}{slabikar}{}
\DeclareFontShape{T1}{slabikar}{m}{n}{<-> s*[2] slabikar}{}

\newif\ifslabikar
\newenvironment{slabikar}
 {%
  \par\addvspace{\topsep}%
  \setlength{\parindent}{0pt}%
  \linespread{2}%
  \slabikartrue\usefont{T1}{slabikar}{m}{n}%
 }
 {\par\addvspace{\topsep}}

\begin{document}

\begin{slabikar}
Jakmile ulehneš, zavřeš oči a uvidíš své ruce,

Odemyky-zamyky,\\
rozvažte se, jazyky!\\
Povězte mi řeči lidí,\\
co kdo slyší, co kdo vidí.\\
A z~těch slabik, slov a vět\\
vykouzlíme celý svět.

ÁáČčĎďÉéĚěÍíŇňÓóŘřŠšŤťÚúŮůÝýŽž
\end{slabikar}

\noindent
Jakmile ulehneš, zavřeš oči a uvidíš své ruce,

\noindent
Odemyky-zamyky,\\
rozvažte se, jazyky!\\
Povězte mi řeči lidí,\\
co kdo slyší, co kdo vidí.\\
A z~těch slabik, slov a vět\\
vykouzlíme celý svět.

\noindent
ÁáČčĎďÉéĚěÍíŇňÓóŘřŠšŤťÚúŮůÝýŽž

\end{document}

在此处输入图片描述

这种方法使得角色在slabikar环境之外不处于活动状态。

\documentclass{article}
\usepackage{iftex}
\usepackage[czech]{babel}

\ifluatex
  \pdfextension mapline{=slabikar slabikar <slabikar.pfb}
\fi

\ExplSyntaxOn
\cs_new:Nn \slabikar_Č: { ^^c8 }
\cs_new:Nn \slabikar_č: { ^^e8 }
\cs_new:Nn \slabikar_Ď: { ^^cf }
\cs_new:Nn \slabikar_ď: { ^^ef }
\cs_new:Nn \slabikar_Ě: { ^^cc }
\cs_new:Nn \slabikar_ě: { ^^ec }
\cs_new:Nn \slabikar_Ň: { ^^d2 }
\cs_new:Nn \slabikar_ň: { ^^f2 }
\cs_new:Nn \slabikar_Ř: { ^^d8 }
\cs_new:Nn \slabikar_ř: { ^^f8 }
\cs_new:Nn \slabikar_Š: { ^^a9 }
\cs_new:Nn \slabikar_š: { ^^b9 }
\cs_new:Nn \slabikar_Ť: { ^^ab }
\cs_new:Nn \slabikar_ť: { ^^bb }
\cs_new:Nn \slabikar_Ů: { ^^d9 }
\cs_new:Nn \slabikar_ů: { ^^f9 }
\cs_new:Nn \slabikar_Ž: { ^^ae }
\cs_new:Nn \slabikar_ž: { ^^be }
\tl_const:Nn \c_slabikar_chars_tl { Č č Ď ď Ě ě Ň ň Ř ř Š š Ť ť Ů ů Ž ž }
\tl_map_inline:Nn \c_slabikar_chars_tl
 {
  \char_set_active_eq:Nc #1 { slabikar_#1: }
 }
\NewDocumentCommand{\convertslabikar}{}
 {
  \tl_map_inline:Nn \c_slabikar_chars_tl { \char_set_catcode_active:N ##1 }
 }
\ExplSyntaxOff

\DeclareFontFamily{T1}{slabikar}{}
\DeclareFontShape{T1}{slabikar}{m}{n}{<-> s*[2] slabikar}{}

\newenvironment{slabikar}
 {%
  \par\addvspace{\topsep}%
  \setlength{\parindent}{0pt}%
  \linespread{2}%
  \convertslabikar\usefont{T1}{slabikar}{m}{n}%
 }
 {\par\addvspace{\topsep}}

\begin{document}

\begin{slabikar}
Jakmile ulehneš, zavřeš oči a uvidíš své ruce,

Odemyky-zamyky,\\
rozvažte se, jazyky!\\
Povězte mi řeči lidí,\\
co kdo slyší, co kdo vidí.\\
A z~těch slabik, slov a vět\\
vykouzlíme celý svět.

ÁáČčĎďÉéĚěÍíŇňÓóŘřŠšŤťÚúŮůÝýŽž
\end{slabikar}

\noindent
Jakmile ulehneš, zavřeš oči a uvidíš své ruce,

\noindent
Odemyky-zamyky,\\
rozvažte se, jazyky!\\
Povězte mi řeči lidí,\\
co kdo slyší, co kdo vidí.\\
A z~těch slabik, slov a vět\\
vykouzlíme celý svět.

\noindent
ÁáČčĎďÉéĚěÍíŇňÓóŘřŠšŤťÚúŮůÝýŽž

\end{document}

答案4

另一种方法是使用支持捷克语的 OpenType 草书字体。这让我陷入了困境。

Yellow Design Studio 的 Sant Elia 字体系列支持捷克语、并且可用免费(但受到限制性许可)。 然而,它仅支持预组合字符(NFC 形式),不支持组合重音符号。并且它的一些捷克字符使用了弃用seac操作,而 XeTeX 和 LuaTeX 不支持该操作。

解决方案是在 FontForge 中打开字体并保存,不做任何更改。 这会产生一个可以在 XeTeX 或 LuaTeX 中使用的版本。我将其保存为fonts/SantEliaRough-Line-Fixed.otf。此字体的较暗和较粗版本需要付费,但如果您愿意,可以通过添加 来解决这个问题FakeBold =

\documentclass[czech]{article}
\tracinglostchars=2
\usepackage{babel}
\usepackage{fontspec}

\defaultfontfeatures[SantEliaRough-Line-Fixed]{
  Path = {./fonts/},
  Ligatures = Common,
  Style = Swash,
  Numbers = OldStyle,
  Extension = .otf }
\setmainfont{SantEliaRough-Line-Fixed}

\baselineskip=1.5cm

\begin{document}
Jakmile ulehneš, zavřeš oči a uvidíš své ruce, ...
\end{document}

圣埃利亚线样本

如果您在 LuaLaTeX 中编译,这可能是增加字体扩展以超过默认值的少数几次之一microtype:您希望形状看起来不规则。

相关内容