
Я хотел бы, чтобы в заголовках моего документа отображались некоторые странные акценты. У меня нет этой проблемы при использовании обычных шрифтов, таких как Arial в примере ниже: я просто пишу акцент так, как хочу, чтобы он отображался, и это работает.
Однако когда я пытаюсь использовать менее распространённые шрифты, ударение не отображается, и возникает сбой.
Как мне решить эту проблему?
Спасибо.
\documentclass[oneside,centered,twocolumn]{book}
\usepackage{titlesec}
\usepackage{titling}
\usepackage{fancyhdr}
\usepackage{fontspec}
\newfontfamily\partfont[]{Goudy Sans Black BT}
\newfontfamily\secfont[]{Arial}
\titleformat{\chapter}%
{\partfont\bfseries\Huge}{\thechapter.}{10pt}{}
\titleformat*{\section}{\LARGE\partfont}
\titleformat*{\subsection}{\Large\secfont}
\begin{document}
\chapter{ǘ} % <---- FAILS
\section{ü} % <---- WORKS
\section{ú} % <---- WORKS
\section{ǘ} % <---- FAILS
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris...
\subsection{ǘ}
\end{document}
решение1
Егомноголучше использовать шрифты, которые охватывают необходимые глифы.
Для нескольких отсутствующих глифов вы можете сделать следующее.
Для текста в Goudy Sans Black, \'
становится другим и подделывает острый. Нет проблем, если вы используете ú
, это уже один символ Unicode, поэтому ударение не будет подделано.
Обратите внимание , \newfontface
что вместо \newfontfamily
, поскольку вы используете шрифт в одном экземпляре, и это не обязательно делать \bfseries
при его вызове (в любом случае он просто выводит предупреждение).
\documentclass[oneside,twocolumn]{book}
\usepackage{titlesec}
\usepackage{titling}
\usepackage{fancyhdr}
\usepackage{fontspec}
\usepackage{newunicodechar}
\makeatletter
\newunicodechar{ǘ}{\ifnum\strcmp{\f@encoding}{goudy}=0 \'{ü}\else ǘ\fi}
\DeclareUnicodeEncoding{goudy}{
\input{tuenc.def}
\DeclareTextCommand{\'}{goudy}[1]{\goudy@fakeacute{#1}}
}
\newcommand{\goudy@fakeacute}[1]{%
\leavevmode
\vbox{%
\ialign{%
##\cr
\hidewidth\hskip0.05em\char"B4\hidewidth\cr
\noalign{\nointerlineskip\vskip-1.1ex}
#1\cr
}%
}%
}
\makeatother
\newfontface\partfont{Goudy Sans Black BT}[NFSSEncoding=goudy]
\newfontfamily\secfont{Arial}
\titleformat{\chapter}{\partfont\Huge}{\thechapter.}{10pt}{}
\titleformat*{\section}{\LARGE\partfont}
\titleformat*{\subsection}{\Large\secfont}
\begin{document}
\chapter{\'{ü} or ǘ}
\section{ü}
\section{ú}
\section{\'{ü} or ǘ}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris...
\subsection{ǘ}
\end{document}
решение2
решение3
Поскольку вы используете fontspec
, и, следовательно, имеете доступ к шрифтам Unicode, вы можете использовать шрифт, который покрывает блок Unicode «Combining Diacritical Marks», и нагромождать все, что вашей душе угодно, в веселом стиле «Кота в шляпе».
Но лучше не переусердствовать. Разве что, если вы пишете для младенцев. Для них комбинаторика имеет художественную ценность.
МВЭ
\documentclass{article}
\usepackage{xcolor}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\newfontface\fbtext{Noto Serif Black}[Colour=red]
\begin{document}
{\fbtext
u^^^^0308^^^^0301
}
c^^^^0330^^^^0332^^^^030e^^^^030f
a^^^^0324^^^^0325^^^^0328^^^^0300^^^^0301^^^^0302^^^^0303
t^^^^0310^^^^032b^^^^034c^^^^0325^^^^032a
\end{document}