特殊字符不再出现在文本中

特殊字符不再出现在文本中

我有一个 unicode 文本 (XeLaTeX),其中我使用带变音符号的元音,如 ü 和 ö,它本来可以正常工作,但突然停止工作。它们会显示错误消息:

!包 inputenc 错误:在输入编码“utf8”中,使用的键盘字符未定义(inputenc)。

删除 inputenc 和 babel 并从文件更改\setromanfont为,ü 和 ö 再次出现。\setmainfont.sty

但是创建 ḥ 的命令\d{h}不再像以前那样起作用,文本只会产生 h。字体没有自己所需的字形。我使用的是 XeLaTeX;下面的大部分信息(以及更多信息)都在一个.sty文件中。

\documentclass[12pt,twoside,a4paper,openright]{book}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{overpic}
\usepackage{lettrine}
\usepackage{makeidx}
\usepackage{fontspec}
\usepackage[normalem]{ulem}
\usepackage[paperwidth=6.3in,paperheight=9.45in]{geometry} 
\setromanfont[BoldFont={SeriaPro-Bold},ItalicFont={SeriaPro-Italic},BoldItalicFont={SeriaPro-BoldItalic}]{SeriaPro}
\begin{document}

下面重新定义 \d 的建议有效:

\renewcommand*\d[1]{\makebox[\widthof{#1}][c]{\raisebox{-.45ex-\depthof{#1}}{.}}\llap{#1}}

更好的是我在其他地方找到的解决方案:

\usepackage{xunicode} 

注意:与包一起使用时xlxtra会导致错误,所以不要注意:您不能同时使用最后一个解决方案\renewcommand*\d

答案1

FF 系列专业版 [这是正确的字体吗?]似乎没有字形

无论是在线预览也没有出现在三页中的任何一页上“完整字符集”

可能的解决方案:

  1. 从另一种尽可能接近 Seria Pro 的字体中选取。(不好)
  2. 你模仿它(自己建造它)。
    借助calc你可以这样做:

    \makebox[\widthof{h}][c]{\raisebox{-.45ex}{.}}\llap{h}
    

    或者,当然,将其设为你自己的宏:

    \newcommand*\doth{\makebox[\widthof{h}][c]{\raisebox{-.45ex}{.}}\llap{h}}
    

    或者,如果您想使用原始字符(毕竟它是 XeLaTeX),请使其处于活动状态:

    \catcode`\ḥ=\active
    \newcommand*{ḥ}{\makebox[\widthof{h}][c]{\raisebox{-.45ex}{.}}\llap{h}}
    

    您可以调整尺寸-.45ex以使其看起来美观。

  3. 您使用其他字体。
    如果您需要排版大量所选字体中不存在的“奇怪”字符,这可能是最佳选择!


如果你需要很多“下点”字符,你甚至可能需要重新定义现有的 \d宏来

\renewcommand*\d[1]{\makebox[\widthof{#1}][c]{\raisebox{-.45ex-\depthof{#1}}{.}}\llap{#1}}

相关内容