ucharclasses and Greek
I find that the package ucharclasses cannot correctly identify all the Unicode Greek.
e.g. if I use
\usepackage{fontspec}
\usepackage[Greek]{ucharclasses}
\setTransitionsForGreek{\fontspec{Palatino Linotype}}{\fontfamily{lmodern}\selectfont}
and then in the document entered
Πέτρος ἀπόστολος Ἰησοῦ Χριστοῦ ἐκλεκτοῖς παρεπιδήμοις διασπορᾶς Πόντου, Γαλατίας, Καππαδοκίας, Ἀσίας καὶ Βιθυνίας
The output text would be
Πέτρος ἀ Ἰῦ Χριστοῦ ἐῖ παρεπιδήμοις διασπορᾶ Πόντου, Γαλατίας, Καππαδοκίας, Ἀ καὶ Βιθυνίας
i.e. some missing characters.
Even more weird, from the documentation I found out the Greek actually called Coptic, GreekAndCoptic and GreekExtended, but when I called them out individually, more characters will be rendered (but still missing some).
I tried not using ucharclasses but use \fontspec{Palatino Linotype} directly on those text and it works perfectly.
Any idea why is it? Thanks!
Edit 1
Thanks. I used font family, and I also did a test to show what I mean:
\usepackage{lmodern}
\usepackage{fontspec}
\usepackage[Greek]{ucharclasses}
\newfontfamily\mylatin{Palatino Linotype}
\newfontfamily\mygreek{Palatino Linotype}
\setTransitionsForGreek{@EnterGreek@ \mygreek}{\mylatin @ExitGreek@}
The output will be this:
@EnterGreek@Πέτρος@ExitGreek@@EnterGreek@ἀ@ExitGreek@πόστολος@ExitGreek@
@EnterGreek@ Ἰ@ExitGreek@ησο@EnterGreek@ ῦ@ExitGreek@ @EnterGreek@ Χριστο@EnterGreek@ ῦ@ExitGreek@ @EnterGreek@ ἐ@ExitGreek@κλεκτο@EnterGreek@ ῖ@ExitGreek@ς@ExitGreek@
@EnterGreek@ παρεπιδήμοις@ExitGreek@ @EnterGreek@ διασπορ@EnterGreek@ ᾶ@ExitGreek@ς@ExitGreek@ @EnterGreek@ Πόντου, @EnterGreek@ Γαλατίας, @EnterGreek@ Καππαδοκίας, @En-
terGreek@ Ἀ@ExitGreek@σίας@ExitGreek@ @EnterGreek@ κα@EnterGreek@ ὶ@ExitGreek@
@EnterGreek@ Βιθυνίας@ExitGreek@
Comaring the input:
Πέτρος ἀπόστολος Ἰησοῦ Χριστοῦ ἐκλεκτοῖς παρεπιδήμοις διασπορᾶς Πόντου, Γαλατίας, Καππαδοκίας, Ἀσίας καὶ Βιθυνίας
Focusing on the 2nd word ἀπόστολος for example, it "exits Greek" after ἀ and treated πόστολος as Latin.
So I actually think it is a bug in ucharclasses.
Edit 2
I'm not sure if it is related to the limitation, rather than a bug, of ucharclasses. From the documentation:
However, be aware that this only “just works” for Unicode blocks. If you are working with typographically overlapping languages, such as combining English and Vietnamese in one document, things get a lot more complex if you want one font for English and another for Vietnamese. Both of these languagese use Latin blocks, so it is inherently impossible to tell which language is intended based on which Unicode block a character in a word belongs to.
However it didn't mention anything about Greek. Any idea?
Edit 3
MWE like this?
\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage[Greek]{ucharclasses}
\newfontfamily\mygreek{Palatino Linotype}
\setTransitionsForGreek{@Begin@\mygreek}{\fontfamily{lmodern}\selectfont @End@}
\begin{document}
Πέτρος ἀπόστολος Ἰησοῦ Χριστοῦ ἐκλεκτοῖς παρεπιδήμοις διασπορᾶς Πόντου, Γαλατίας, Καππαδοκίας, Ἀσίας καὶ Βιθυνίας
\end{document}
The tags @Begin@ and @End@ are to show the bug I'm talking about.
Edit 4
Thanks for the answer that solve the problem. I didn't included Latin and that is the root of all the problem.
So the correct code looks like this:
The Right Way
\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage[Latin, Greek]{ucharclasses}
\newfontfamily\mygreek{CMU Serif}
\setDefaultTransitions{\fontfamily{lmodern}\selectfont}{}
\setTransitionsForGreek{\mygreek}{}
\begin{document}
\fontfamily{lmodern}\selectfont
\section{Testing Greek Πέτρος ἀπόστολος Ἰησοῦ Χριστοῦ ἐκλεκτοῖς παρεπιδήμοις διασπορᾶς Πόντου, Γαλατίας, Καππαδοκίας, Ἀσίας καὶ Βιθυνίας}
\begin{itemize}
\item Πέτρος ἀπόστολος Ἰησοῦ Χριστοῦ ἐκλεκτοῖς παρεπιδήμοις διασπορᾶς Πόντου, Γαλατίας, Καππαδοκίας, Ἀσίας καὶ Βιθυνίας
\end{itemize}
testing
\end{document}
But I got another problem: the Latin in the section title, Testing Greek, is not bold.
If I use my old code, that gives the bug of not producing the right Greek:
The Old Way
\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage[Greek]{ucharclasses}
\newfontfamily\mygreek{CMU Serif}
% \setDefaultTransitions{\fontfamily{lmodern}\selectfont}{}
\setTransitionsForGreek{\mygreek}{\fontfamily{lmodern}\selectfont}
\begin{document}
\fontfamily{lmodern}\selectfont
\section{Testing Greek Πέτρος ἀπόστολος Ἰησοῦ Χριστοῦ ἐκλεκτοῖς παρεπιδήμοις διασπορᾶς Πόντου, Γαλατίας, Καππαδοκίας, Ἀσίας καὶ Βιθυνίας}
\begin{itemize}
\item Πέτρος ἀπόστολος Ἰησοῦ Χριστοῦ ἐκλεκτοῖς παρεπιδήμοις διασπορᾶς Πόντου, Γαλατίας, Καππαδοκίας, Ἀσίας καὶ Βιθυνίας
\end{itemize}
testing
\end{document}
Then although some Greek are missing, the Latin in the section title, Testing Greek, is now bold.
The Control
A Control test like this:
\documentclass[a4paper]{article}
% \usepackage{fontspec}
% \usepackage[Greek]{ucharclasses}
% \newfontfamily\mygreek{CMU Serif}
% \setDefaultTransitions{\fontfamily{lmodern}\selectfont}{}
% \setTransitionsForGreek{\mygreek}{\fontfamily{lmodern}\selectfont}
\begin{document}
\fontfamily{lmodern}\selectfont
\section{Testing Greek }% Πέτρος ἀπόστολος Ἰησοῦ Χριστοῦ ἐκλεκτοῖς παρεπιδήμοις διασπορᾶς Πόντου, Γαλατίας, Καππαδοκίας, Ἀσίας καὶ Βιθυνίας}
\begin{itemize}
\item testing %Πέτρος ἀπόστολος Ἰησοῦ Χριστοῦ ἐκλεκτοῖς παρεπιδήμοις διασπορᾶς Πόντου, Γαλατίας, Καππαδοκίας, Ἀσίας καὶ Βιθυνίας
\end{itemize}
testing
\end{document}
would gives the correct bold section title.
I also notice other problems in "the Right Way": since when it leaves the Greek Unicode block, it doesn't change back to the default font, then the next item bullet would be in Greek font, etc. i.e. the bullets would have different fonts. In "the Old Way" when I use \setTransitionsForGreek{\mygreek}{\fontfamily{lmodern}\selectfont}, since it always ends with \fontfamily{lmodern}\selectfont, the problem wasn't there.
I would say all these originates from the mystery that the Greek blocks ends somewhere between words, which I still regard it as a bug (See the test in the 1st edit). I have a guess on the possible reason of this mystery. Referring to my original question:
Greekactually calledCoptic,GreekAndCopticandGreekExtended...
May be the breaks are between the Coptic, GreekAndCoptic and GreekExtended.
Edit 5
I think I kind of find a solution although I don't understand why. If I use "the Right Way", without adding Latin in ucharclasses, the Latin in the section title would be bold as usual.


\fontspecto begin with, but rather defining a font family in the preamble. The manual should be fixed about that. However,ucharclassesshould only be used if just single words that don't need hyphenation are used. In your case, I'd usepolyglossiaand mark the transitions with the suitable commands or environments. – egreg Mar 03 '15 at 09:13polyglossiainstead? Note that you still haven't provided an MWE so people can't reproduce. – cfr Mar 05 '15 at 04:00fontspec. It is confusing to me that for the other fonts e.g.\setmainfont{CMU Serif}I usesetmainfontbut for "internal" font likelmodernI need to use\fontfamily{lmodern}\selectfont. I then tried\fontfamily{cm-unicode}\selectfontbut it doesn't seem to work. – Kolen Cheung Mar 05 '15 at 04:16\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage[Greek]{ucharclasses}
\newfontfamily\mygreek{Palatino Linotype}
\setTransitionsForGreek{@Begin@\mygreek}{\fontfamily{lmodern}\selectfont @End@}
\begin{document}
Πέτρος ἀπόστολος Ἰησοῦ Χριστοῦ ἐκλεκτοῖς παρεπιδήμοις διασπορᾶς Πόντου, Γαλατίας, Καππαδοκίας, Ἀσίας καὶ Βιθυνίας
\end{document}
– Kolen Cheung Mar 05 '15 at 04:23cm-unicodeis included in TeXLive, so shouldn't I be able to use it with something like\fontfamily{cm-unicode}\selectfont? – Kolen Cheung Mar 05 '15 at 06:04.logfile should tell you if it’s missing any), 2. Withucharclasses, make sure you’re loading all blocks containing Greek characters, not just “Greek and Coptic” (U+370–U+03FF), which supports only monotonic modern Greek and Coptic. – Davislor May 07 '19 at 19:13