Не обов’язково ж відмовлятися від CM: можна тільки символ гривні взяти з іншого шрифту, а весь текст хай буде CM.Зацікавило це питання. Але я з XeTeX зовсім не працював раніше, довелося ґуґлити. Знайшов
Foreign currency signs in XeTeX і
Computer Modern fonts and Cyrillic letters. Вийшло таке:
\setmainfont[
Ligatures=TeX,
Extension=.otf,
BoldFont=cmunbx,
ItalicFont=cmunti,
BoldItalicFont=cmunbi,
]{cmunrm}
\newfontfamily{\currencies}{FreeSerif}
\newunicodechar{₴}{{\currencies ₴}}
\setdefaultlanguage{ukrainian}
\begin{document}
Тест 123~₴
\end{document}
У мене не встановлено шрифти Computer Modern Unicode (і для експерименту я не хотів їх встановлювати). Тому викликав за іменем файла. Але якщо є Computer Modern Unicode, то замість рядків 6–12 можна написати просто
\setmainfont[Ligatures=TeX]{CMU Serif}
Тепер у мене таке запитання: чи можна якось таке зробити без XeTeX (тобто, використовуючи рушій pdfTeX)?Я знаю, що можна «призначити» символу з унікодом 20B4 якусь «дію»:
\DeclareUnicodeCharacter{20B4}{\texthryvnia}
Але як означити
\texthryvnia? Тобто
1. У якому Type 1 шрифті знайти потрібний гліф? Чи це взагалі можливо зі «стандартними TeXівськими шрифтами»? Наскільки я розумію цю технологію, файл опису шрифту може містити не більше ніж 256 елементів. Тому щоб додати якийсь новий символ, треба стандартний викинути, а цього ніхто робити не буде?
2. Якщо це неможливо зі стандартними TeXівськими шрифтами, то залишається тільки використовувати, наприклад, FreeSerif у форматі TrueType чи OpenType? Але підключити такі шрифти до стандартного рушія видається мені дуже нетривіальною задачею.
Як обхідний шлях я знайшов тільки варіант скласти потрібний символ з курсивної «г» і «дорівнює»:
\raisebox{0.2ex}{$\scriptscriptstyle=$}% }
\DeclareUnicodeCharacter{20B4}{\texthryvnia}
\begin{document}
Тест 123~₴
\end{document}