summaryrefslogtreecommitdiff
path: root/language/greek/greek-fontenc/char-list.tex
diff options
context:
space:
mode:
Diffstat (limited to 'language/greek/greek-fontenc/char-list.tex')
-rw-r--r--language/greek/greek-fontenc/char-list.tex451
1 files changed, 254 insertions, 197 deletions
diff --git a/language/greek/greek-fontenc/char-list.tex b/language/greek/greek-fontenc/char-list.tex
index 72b993393e..027065bb0d 100644
--- a/language/greek/greek-fontenc/char-list.tex
+++ b/language/greek/greek-fontenc/char-list.tex
@@ -1,24 +1,25 @@
\documentclass[a4paper]{article}
-
+\usepackage[left=3.5cm, right=3.5cm]{geometry}
\ifdefined \UnicodeEncodingName
\usepackage{fontspec}
- \setmainfont{FreeSerif}
- % \setmainfont{Linux Libertine O}
+ % The Harfbuzz renderer provides selection of pre-composed characters
+ % (NFC normalization) with LuaTeX
+ \setmainfont[Renderer=Harfbuzz]{FreeSerif}
+ % \setmainfont[Renderer=Harfbuzz]{Linux Libertine O}
\ifdefined\luatexversion
- \newcommand*{\texengine}{LuaLaTeX}
+ \newcommand*{\texengine}{LuaTeX}
\else
- \newcommand*{\texengine}{XeLaTeX}
+ \newcommand*{\texengine}{XeTeX}
\fi
\newcommand*{\ux}[2]{#1}
\else
\usepackage[LGR,T1]{fontenc}
\usepackage{lmodern}
- \newcommand*{\texengine}{pdfLaTeX}
+ \newcommand*{\texengine}{pdfTeX}
\newcommand*{\ux}[2]{#2}
\fi
-
% Load encoding definitions
\usepackage[normalize-symbols]{textalpha} % "Greek script everywhere"
@@ -55,6 +56,7 @@
\providecommand*{\greekfontencoding}{undefined}
\newcommand{\cs}[1]{\texttt{\textbackslash#1}}
+\newcommand{\pkgref}[1]{\emph{\href{https://ctan.org/pkg/#1}{#1}}}
% print the selected language variant
\newcommand*{\GreekLanguageVariant}{%
@@ -74,14 +76,8 @@
& \Greek{#1} & \Greek{\MakeUppercase{#1}} & \Greek{\MakeLowercase{#1}}
}
-\newcommand*{\TestUppercase}[1]{%
- \Greek{#1 → \MakeUppercase{#1}}%
-}
+\newcommand*{\TestUppercase}[1]{\Greek{#1 → \MakeUppercase{#1}}}
-% % Test: pre-composed characters with LuaTeX
-% \ifdefined\luatexversion
-% \DeclareUnicodeComposite{\'}{Α} {"0386} % Ά
-% \fi
% -----------------------------------------------------------------------
@@ -92,7 +88,7 @@
\maketitle
\abstract{ \noindent This document lists all Greek characters that are
-supported by \emph{greek-fontenc}. It also tests the outcome of
+supported by \emph{greek-fontenc} and tests the outcome of
\cs{MakeUppercase} and \cs{MakeLowercase} for different input variants
(literal input, LICR%
\footnote{LaTeX internal character representation}
@@ -140,13 +136,13 @@ Characters from the Greek and Coptic Unicode block that are supported by
\begin{longtable}{llll}
x0374 \Cases{ ʹ \textdexiakeraia{} } \\
x0375 \Cases{ ͵ \textaristerikeraia{} } \\
- x037A \Cases{ ͺ { }\ypogegrammeni{} { }\ypogegrammeni{} \ux{ͺ} {| |} } \\
- 0x37E \Cases{ ; \texterotimatiko{} \texterotimatiko{} \ux{;} {? ?} } \\
+ x037A \Cases{ ͺ { }\ypogegrammeni{} \ux{} {| } } \\
+ x037E \Cases{ ; \texterotimatiko{} \ux{} {? } } \\
\\
- x0384 \Cases{ ΄ \acctonos{ } \'{ } \ux{΄} {\'{} '} } \\
+ x0384 \Cases{ ΄ \acctonos{ } \'{ } \ux{} {\'{} '} } \\
x0385 \Cases{ ΅ \accdialytikatonos{ } \"'{ } \ux{\"'{}} {\"'{} "'} } \\
x0386 \Cases{ Ά \acctonos\textAlpha{} \'\textAlpha{} \ux{\'Α} {\'A 'A} } \\
- x0387 \Cases{ · \textanoteleia{} \textanoteleia{} \ux{·} {; ;} } \\
+ x0387 \Cases{ · \textanoteleia{} \textanoteleia{} \ux{} {; ;} } \\
x0388 \Cases{ Έ \acctonos\textEpsilon{} \'\textEpsilon{} \ux{\'Ε} {\'E 'E} } \\
x0389 \Cases{ Ή \acctonos\textEta{} \'\textEta{} \ux{\'Η} {\'H 'H} } \\
x038A \Cases{ Ί \acctonos\textIota{} \'\textIota{} \ux{\'Ι} {\'I 'I} } \\
@@ -154,76 +150,81 @@ Characters from the Greek and Coptic Unicode block that are supported by
x038E \Cases{ Ύ \acctonos\textUpsilon{} \'\textUpsilon{} \ux{\'Υ} {\'U 'U} } \\
x038F \Cases{ Ώ \acctonos\textOmega{} \'\textOmega{} \ux{\'Ω} {\'W 'W} } \\
\\
- x0390 \Cases{ ΐ \accdialytikatonos\textiota{} \'"\textiota{} \ux{\'"ι \"'ι \'\"ι \"\'ι} {\'"i \"'i \'\"i \"\'i '"i "'i} } \\
- x0391 \Cases{ Α \textAlpha{} \textAlpha{} \ux{Α} {A A } } \\
- x0392 \Cases{ Β \textBeta{} \textBeta{} \ux{Β} {B B } } \\
- x0393 \Cases{ Γ \textGamma{} \textGamma{} \ux{Γ} {G G } } \\
- x0394 \Cases{ Δ \textDelta{} \textDelta{} \ux{Δ} {D D } } \\
- x0395 \Cases{ Ε \textEpsilon{} \textEpsilon{} \ux{Ε} {E E } } \\
- x0396 \Cases{ Ζ \textZeta{} \textZeta{} \ux{Ζ} {Z Z } } \\
- x0397 \Cases{ Η \textEta{} \textEta{} \ux{Η} {H H } } \\
- x0398 \Cases{ Θ \textTheta{} \textTheta{} \ux{Θ} {J J } } \\
- x0399 \Cases{ Ι \textIota{} \textIota{} \ux{Ι} {I I } } \\
- x039A \Cases{ Κ \textKappa{} \textKappa{} \ux{Κ} {K K } } \\
- x039B \Cases{ Λ \textLambda{} \textLambda{} \ux{Λ} {L L } } \\
- x039C \Cases{ Μ \textMu{} \textMu{} \ux{Μ} {M M } } \\
- x039D \Cases{ Ν \textNu{} \textNu{} \ux{Ν} {N N } } \\
- x039E \Cases{ Ξ \textXi{} \textXi{} \ux{Ξ} {X X } } \\
- x039F \Cases{ Ο \textOmicron{} \textOmicron{} \ux{Ο} {O O } } \\
+ x0390 \Cases{ ΐ \accdialytikatonos\textiota{} \'"\textiota{} \ux{\'"ι \"'ι \'\"ι \"\'ι} {\'"i \"'i \'\"i \"\'i '"i "'i}}%
+ \ux{}{\footnote{With the pre-2022 \cs{MakeUppercase} and literal input,
+ the order of combined accents involving the dialytika is important,
+ e.g., \texttt{"'i} results in \Greek{"'i → "vI}.}} \\
+ x0391 \Cases{ Α \textAlpha{} \ux{} {A } } \\
+ x0392 \Cases{ Β \textBeta{} \ux{} {B } } \\
+ x0393 \Cases{ Γ \textGamma{} \ux{} {G } } \\
+ x0394 \Cases{ Δ \textDelta{} \ux{} {D } } \\
+ x0395 \Cases{ Ε \textEpsilon{} \ux{} {E } } \\
+ x0396 \Cases{ Ζ \textZeta{} \ux{} {Z } } \\
+ x0397 \Cases{ Η \textEta{} \ux{} {H } } \\
+ x0398 \Cases{ Θ \textTheta{} \textvarTheta{} \ux{} {J } } \\
+ x0399 \Cases{ Ι \textIota{} \ux{} {I } } \\
+ x039A \Cases{ Κ \textKappa{} \ux{} {K } } \\
+ x039B \Cases{ Λ \textLambda{} \ux{} {L } } \\
+ x039C \Cases{ Μ \textMu{} \ux{} {M } } \\
+ x039D \Cases{ Ν \textNu{} \ux{} {N } } \\
+ x039E \Cases{ Ξ \textXi{} \ux{} {X } } \\
+ x039F \Cases{ Ο \textOmicron{} \ux{} {O } } \\
\\
- 0x3A0 \Cases{ Π \textPi{} \textPi{} \ux{Π} {P P } } \\
- 0x3A1 \Cases{ Ρ \textRho{} \textRho{} \ux{Ρ} {R R } } \\
- 0x3A3 \Cases{ Σ \textSigma{} \textSigma{} \ux{Σ} {S S } } \\
- 0x3A4 \Cases{ Τ \textTau{} \textTau{} \ux{Τ} {T T } } \\
- 0x3A5 \Cases{ Υ \textUpsilon{} \textUpsilon{} \ux{Υ} {U U } } \\
- 0x3A6 \Cases{ Φ \textPhi{} \textPhi{} \ux{Φ} {F F } } \\
- 0x3A7 \Cases{ Χ \textChi{} \textChi{} \ux{Χ} {Q Q } } \\
- 0x3A8 \Cases{ Ψ \textPsi{} \textPsi{} \ux{Ψ} {Y Y } } \\
- 0x3A9 \Cases{ Ω \textOmega{} \textOmega{} \ux{Ω} {W W } } \\
+ 0x3A0 \Cases{ Π \textPi{} \ux{} {P } } \\
+ 0x3A1 \Cases{ Ρ \textRho{} \ux{} {R } } \\
+ 0x3A3 \Cases{ Σ \textSigma{} \ux{} {S } }%
+ cf. section~\ref{sec:sigma} \\
+ 0x3A4 \Cases{ Τ \textTau{} \ux{} {T } } \\
+ 0x3A5 \Cases{ Υ \textUpsilon{} \ux{} {U } } \\
+ 0x3A6 \Cases{ Φ \textPhi{} \ux{} {F } } \\
+ 0x3A7 \Cases{ Χ \textChi{} \ux{} {Q } } \\
+ 0x3A8 \Cases{ Ψ \textPsi{} \ux{} {Y } } \\
+ 0x3A9 \Cases{ Ω \textOmega{} \ux{} {W } } \\
0x3AA \Cases{ Ϊ \accdialytika\textIota{} \"\textIota{} \ux{\"Ι} {\"I "I } } \\
0x3AB \Cases{ Ϋ \accdialytika\textUpsilon{} \"\textUpsilon{} \ux{\"Υ} {\"U "U } } \\
0x3AC \Cases{ ά \acctonos\textalpha{} \'\textalpha{} \ux{\'α} {\'a 'a } } \\
0x3AD \Cases{ έ \acctonos\textepsilon{} \'\textepsilon{} \ux{\'ε} {\'e 'e } } \\
0x3AE \Cases{ ή \acctonos\texteta{} \'\texteta{} \ux{\'η} {\'h 'h } } \\
0x3AF \Cases{ ί \acctonos\textiota{} \'\textiota{} \ux{\'ι} {\'i 'i } } \\
- \\
+ \\
x03B0 \Cases{ ΰ \accdialytikatonos\textupsilon{} \"'\textupsilon{} \ux{\"'υ \'"υ \'\"υ \"\'υ} {\'"u \"'u \'\"u \"\'u '"u "'u} } \\
- x03B1 \Cases{ α \textalpha{} \textalpha{} \ux{α} {a a } } \\
- x03B2 \Cases{ β \textbeta{} \textbeta{} \ux{β} {b b } } \\
- x03B3 \Cases{ γ \textgamma{} \textgamma{} \ux{γ} {g g } } \\
- x03B4 \Cases{ δ \textdelta{} \textdelta{} \ux{δ} {d d } } \\
- x03B5 \Cases{ ε \textepsilon{} \textepsilon{} \ux{ε} {e e } } \\
- x03B6 \Cases{ ζ \textzeta{} \textzeta{} \ux{ζ} {z z } } \\
- x03B7 \Cases{ η \texteta{} \texteta{} \ux{η} {h h } } \\
- x03B8 \Cases{ θ \texttheta{} \texttheta{} \ux{θ} {j j } } \\
- x03B9 \Cases{ ι \textiota{} \textiota{} \ux{ι} {i i } } \\
- x03BA \Cases{ κ \textkappa{} \textkappa{} \ux{κ} {k k } } \\
- x03BB \Cases{ λ \textlambda{} \textlambda{} \ux{λ} {l l } } \\
- x03BC \Cases{ μ \textmu{} \textmu{} \ux{μ} {m m } } \\
- x03BD \Cases{ ν \textnu{} \textnu{} \ux{ν} {n n } } \\
- x03BE \Cases{ ξ \textxi{} \textxi{} \ux{ξ} {x x } } \\
- x03BF \Cases{ ο \textomicron{} \textomicron{} \ux{ο} {o o } } \\
+ x03B1 \Cases{ α \textalpha{} \ux{} {a } } \\
+ x03B2 \Cases{ β \textbeta{} \ux{} {b } } \\
+ x03B3 \Cases{ γ \textgamma{} \ux{} {g } } \\
+ x03B4 \Cases{ δ \textdelta{} \ux{} {d } } \\
+ x03B5 \Cases{ ε \textepsilon{} \textvarepsilon{} \ux{} {e } } \\
+ x03B6 \Cases{ ζ \textzeta{} \ux{} {z } } \\
+ x03B7 \Cases{ η \texteta{} \ux{} {h } } \\
+ x03B8 \Cases{ θ \texttheta{} \ux{} {j } } \\
+ x03B9 \Cases{ ι \textiota{} \ux{} {i } } \\
+ x03BA \Cases{ κ \textkappa{} \ux{} {k } } \\
+ x03BB \Cases{ λ \textlambda{} \ux{} {l } } \\
+ x03BC \Cases{ μ \textmu{} \ux{} {m } } \\
+ x03BD \Cases{ ν \textnu{} \ux{} {n } } \\
+ x03BE \Cases{ ξ \textxi{} \ux{} {x } } \\
+ x03BF \Cases{ ο \textomicron{} \ux{} {o } } \\
\\
- x03C0 \Cases{ π \textpi{} \textpi{} \ux{π} {p p } } \\
- x03C1 \Cases{ ρ \textrho{} \textrho{} \ux{ρ} {r r } } \\
- x03C2 \Cases{ ς \textfinalsigma{} \textfinalsigma{} \ux{ς} {s s } } \\
- x03C3 \Cases{ σ \textsigma{} \textsigma{} \ux{σ} {s\textcompwordmark{} sv } } \\
- x03C4 \Cases{ τ \texttau{} \texttau{} \ux{τ} {t t } } \\
- x03C5 \Cases{ υ \textupsilon{} \textupsilon{} \ux{υ} {u u } } \\
- x03C6 \Cases{ φ \textphi{} \textphi{} \ux{φ} {f f } } \\
- x03C7 \Cases{ χ \textchi{} \textchi{} \ux{χ} {q q } } \\
- x03C8 \Cases{ ψ \textpsi{} \textpsi{} \ux{ψ} {y y } } \\
- x03C9 \Cases{ ω \textomega{} \textomega{} \ux{ω} {w w } } \\
+ x03C0 \Cases{ π \textpi{} \ux{} {p } } \\
+ x03C1 \Cases{ ρ \textrho{} \ux{} {r } } \\
+ x03C2 \Cases{ ς \textfinalsigma{} \textvarsigma{} \ux{} {s } } \\
+ x03C3 \Cases{ σ \textsigma{} \textsigma{} \ux{} {s\textcompwordmark{} sv } }
+ \ux{}{sic!\footnote{transliteration \texttt{sv} fails in uppercase}} \\
+ x03C4 \Cases{ τ \texttau{} \ux{} {t } } \\
+ x03C5 \Cases{ υ \textupsilon{} \ux{} {u } } \\
+ x03C6 \Cases{ φ \textphi{} \textvarphi{} \ux{} {f } } \\
+ x03C7 \Cases{ χ \textchi{} \ux{} {q } } \\
+ x03C8 \Cases{ ψ \textpsi{} \ux{} {y } } \\
+ x03C9 \Cases{ ω \textomega{} \ux{} {w } } \\
x03CA \Cases{ ϊ \accdialytika\textiota{} \"\textiota{} \ux{\"ι} {\"i "i } } \\
x03CB \Cases{ ϋ \accdialytika\textupsilon{} \"\textupsilon{} \ux{\"υ} {\"u "u } } \\
x03CC \Cases{ ό \acctonos\textomicron{} \'\textomicron{} \ux{\'ο} {\'o 'o } } \\
x03CD \Cases{ ύ \acctonos\textupsilon{} \'\textupsilon{} \ux{\'υ} {\'u 'u } } \\
x03CE \Cases{ ώ \acctonos\textomega{} \'\textomega{} \ux{\'ω } {\'w 'w } } \\
- \\
- x03D0 \Cases{ ϐ \textbetasymbol } \\
- x03D1 \Cases{ ϑ \textthetasymbol } \\
- x03D5 \Cases{ ϕ \textphisymbol } \\
- x03D6 \Cases{ ϖ \textpisymbol } \\
+ \\
+ x03D0 \Cases{ ϐ \textbetasymbol{} \textvarbeta{} } \\
+ x03D1 \Cases{ ϑ \textthetasymbol{} \textvartheta{} } \\
+ x03D5 \Cases{ ϕ \textphisymbol{} } \\
+ x03D6 \Cases{ ϖ \textpisymbol{} \textvarpi{} } \\
x03D8 \Cases{ Ϙ \textQoppa{} } \\
x03D9 \Cases{ ϙ \textqoppa{} } \\
x03DA \Cases{ Ϛ \textStigma{} } \\
@@ -236,10 +237,10 @@ Characters from the Greek and Coptic Unicode block that are supported by
x03E0 \Cases{ Ϡ \textSampi{} } \\
x03E1 \Cases{ ϡ \textsampi{} } \\
\\
- x03F0 \Cases{ ϰ \textkappasymbol } \\
- x03F1 \Cases{ ϱ \textrhosymbol } \\
- x03F4 \Cases{ ϴ \textThetasymbol } \\
- x03F5 \Cases{ ϵ \textepsilonsymbol } \\
+ x03F0 \Cases{ ϰ \textkappasymbol{} \textvarkappa{} } \\
+ x03F1 \Cases{ ϱ \textrhosymbol{} \textvarrho{} } \\
+ x03F4 \Cases{ ϴ \textThetasymbol{} } \\
+ x03F5 \Cases{ ϵ \textepsilonsymbol{} } \\
\end{longtable}
@@ -452,36 +453,42 @@ Characters from the Greek and Coptic Unicode block that are supported by
x1FCE \Cases{ ῎ \accpsilioxia{} \>'{} \ux{\>'{} \'>{}} {\>'{} >'} } \\
x1FCF \Cases{ ῏ \accpsiliperispomeni{} \~>{} \ux{\>~{} \~>{}} {\~>{} ~>} } \\
\\
- x1FD0 \Cases{ ῐ \u\textiota{} \u\textiota{} \ux{\u{ι}} {\u{i} \u{i}} } \\
- x1FD1 \Cases{ ῑ \=\textiota{} \=\textiota{} \ux{\=ι} {\=i \=i} } \\
- x1FD2 \Cases{ ῒ \accdialytikavaria\textiota{} \`"\textiota{} \ux{\`"ι \"`ι \`\"ι \"\`ι} {\`"i `"i} } \\
- x1FD3 \Cases{ ΐ \accdialytikatonos\textiota{} \'"\textiota{} \ux{\'"ι \"'ι \'\"ι \"\'ι} {\'"i '"i} } \\
- x1FD6 \Cases{ ῖ \accperispomeni\textiota{} \~\textiota{} \ux{\~ι } {\~i ~i} } \\
- x1FD7 \Cases{ ῗ \accdialytikaperispomeni\textiota{} \~"\textiota{} \ux{\~"ι \"~ι \~\"ι \"\~ι} {\~"i ~"i} } \\
- x1FD8 \Cases{ Ῐ \u\textIota{} \u\textIota{} \ux{\u{Ι}} {\u{I} \u{I}} } \\
- x1FD9 \Cases{ Ῑ \=\textIota{} \=\textIota{} \ux{\=Ι} {\=I \=I} } \\
- x1FDA \Cases{ Ὶ \accvaria\textIota{} \`\textIota{} \ux{\`Ι} {\`I `I} } \\
- x1FDB \Cases{ Ί \accoxia\textIota{} \'\textIota{} \ux{\'Ι} {\'I 'I} } \\
- x1FDD \Cases{ ῝ \accdasiavaria{} \<`{} \ux{\<`{} \`<{}} {\<`{} <`} } \\
- x1FDE \Cases{ ῞ \accdasiaoxia{} \<'{} \ux{\<'{} \'<{}} {\<'{} <'} } \\
- x1FDF \Cases{ ῟ \accdasiaperispomeni{} \~<{} \ux{\<~{} \~<{}} {\~<{} ~<} } \\
- \\
- x1FE0 \Cases{ ῠ \u\textupsilon{} \u\textupsilon{} \ux{\u{υ}} {\u{u} } } \\
- x1FE1 \Cases{ ῡ \=\textupsilon{} \=\textupsilon{} \ux{\=υ} {\=u } } \\
- x1FE2 \Cases{ ῢ \accdialytikavaria\textupsilon{} \`"\textupsilon{} \ux{\`"υ \"`υ \`\"υ \"\`υ} {\`"u \"`u \`\"u \"\`u `"u "`u} } \\
- x1FE3 \Cases{ ΰ \accdialytikatonos\textupsilon{} \'"\textupsilon{} \ux{\'"υ \"'υ \'\"υ \"\'υ} {\'"u \"'u \'\"u \"\'u '"u "'u} } \\
- x1FE4 \Cases{ ῤ \accpsili\textrho{} \>\textrho{} \ux{\>ρ} {\>r >r } } \\
- x1FE5 \Cases{ ῥ \accdasia\textrho{} \<\textrho{} \ux{\<ρ} {\<r <r } } \\
- x1FE6 \Cases{ ῦ \accperispomeni\textupsilon{} \~\textupsilon{} \ux{\~υ} {\~u ~u } } \\
- x1FE7 \Cases{ ῧ \accdialytikaperispomeni\textupsilon{} \~"\textupsilon{} \ux{\~"υ \"~υ \~\"υ \"\~υ} {\~"u \"~u \~\"u \"\~u ~"u "~u} } \\
- x1FE8 \Cases{ Ῠ \u\textUpsilon{} \u\textUpsilon{} \ux{\u{Υ}} {\u{U} \u{U}} } \\
- x1FE9 \Cases{ Ῡ \=\textUpsilon{} \=\textUpsilon{} \ux{\=Υ} {\=U \=U} } \\
- x1FEA \Cases{ Ὺ \accvaria\textUpsilon{} \`\textUpsilon{} \ux{\`Υ} {\`U `U} } \\
- x1FEB \Cases{ Ύ \accoxia\textUpsilon{} \'\textUpsilon{} \ux{\'Υ} {\'U 'U} } \\
- x1FEC \Cases{ Ῥ \accdasia\textRho{} \<\textRho{} \ux{\<Ρ} {\<R <R} } \\
- x1FED \Cases{ ῭ \accdialytikavaria{} \`"{} \ux{\`"{} \"`{}} {\`"{} `"} } \\
- x1FEE \Cases{ ΅ \accdialytikatonos{} \'"{} \ux{\'"{} \"'{}} {\'"{} '"} } \\
- x1FEF \Cases{ ` \accvaria{} \`{} \ux{\`{}} {\`{} `} } \\
+ x1FD0 \Cases{ ῐ \u\textiota{} \u\textiota{} \ux{\u{ι}} {\u{i} \u{i}} } \\
+ x1FD1 \Cases{ ῑ \=\textiota{} \=\textiota{} \ux{\=ι} {\=i \=i} } \\
+ x1FD2 \Cases{ ῒ \accdialytikavaria\textiota{} \`"\textiota{} \`\"\textiota{}
+ \"`\textiota{} \"\`\textiota{} \ux{\`"ι \"`ι \`\"ι \"\`ι} {\`"i `"i} } \\
+ x1FD3 \Cases{ ΐ \accdialytikatonos\textiota{} \'"\textiota{} \'\"\textiota{}
+ \"'\textiota{} \"\'\textiota{} \ux{\'"ι \"'ι \'\"ι \"\'ι} {\'"i '"i} } \\
+ x1FD6 \Cases{ ῖ \accperispomeni\textiota{} \~\textiota{} \ux{\~ι } {\~i ~i} } \\
+ x1FD7 \Cases{ ῗ \accdialytikaperispomeni\textiota{} \~"\textiota{} \~\"\textiota{}
+ \"~\textiota{} \"\~\textiota{} \ux{\~"ι \"~ι \~\"ι \"\~ι} {\~"i ~"i} } \\
+ x1FD8 \Cases{ Ῐ \u\textIota{} \u\textIota{} \ux{\u{Ι}} {\u{I} \u{I}} } \\
+ x1FD9 \Cases{ Ῑ \=\textIota{} \=\textIota{} \ux{\=Ι} {\=I \=I} } \\
+ x1FDA \Cases{ Ὶ \accvaria\textIota{} \`\textIota{} \ux{\`Ι} {\`I `I} } \\
+ x1FDB \Cases{ Ί \accoxia\textIota{} \'\textIota{} \ux{\'Ι} {\'I 'I} } \\
+ x1FDD \Cases{ ῝ \accdasiavaria{} \<`{} \ux{\<`{} \`<{}} {\<`{} <`} } \\
+ x1FDE \Cases{ ῞ \accdasiaoxia{} \<'{} \ux{\<'{} \'<{}} {\<'{} <'} } \\
+ x1FDF \Cases{ ῟ \accdasiaperispomeni{} \~<{} \ux{\<~{} \~<{}} {\~<{} ~<} } \\
+ \\
+ x1FE0 \Cases{ ῠ \u\textupsilon{} \u\textupsilon{} \ux{\u{υ}} {\u{u} } } \\
+ x1FE1 \Cases{ ῡ \=\textupsilon{} \=\textupsilon{} \ux{\=υ} {\=u } } \\
+ x1FE2 \Cases{ ῢ \accdialytikavaria\textupsilon{} \`"\textupsilon{} \`\"\textupsilon{}
+ \"`\textupsilon{} \"\`\textupsilon{} \ux{\`"υ \"`υ \`\"υ \"\`υ} {\`"u \"`u \`\"u \"\`u `"u "`u} } \\
+ x1FE3 \Cases{ ΰ \accdialytikatonos\textupsilon{} \'"\textupsilon{} \'\"\textupsilon{}
+ \"'\textupsilon{} \"\'\textupsilon{} \ux{\'"υ \"'υ \'\"υ \"\'υ} {\'"u \"'u \'\"u \"\'u '"u "'u} } \\
+ x1FE4 \Cases{ ῤ \accpsili\textrho{} \>\textrho{} \ux{\>ρ} {\>r >r } } \\
+ x1FE5 \Cases{ ῥ \accdasia\textrho{} \<\textrho{} \ux{\<ρ} {\<r <r } } \\
+ x1FE6 \Cases{ ῦ \accperispomeni\textupsilon{} \~\textupsilon{} \ux{\~υ} {\~u ~u } } \\
+ x1FE7 \Cases{ ῧ \accdialytikaperispomeni\textupsilon{} \~"\textupsilon{} \~\"\textupsilon{}
+ \"~\textupsilon{} \"\~\textupsilon{} \ux{\~"υ \"~υ \~\"υ \"\~υ} {\~"u \"~u \~\"u \"\~u ~"u "~u} } \\
+ x1FE8 \Cases{ Ῠ \u\textUpsilon{} \u\textUpsilon{} \ux{\u{Υ}} {\u{U} \u{U}} } \\
+ x1FE9 \Cases{ Ῡ \=\textUpsilon{} \=\textUpsilon{} \ux{\=Υ} {\=U \=U} } \\
+ x1FEA \Cases{ Ὺ \accvaria\textUpsilon{} \`\textUpsilon{} \ux{\`Υ} {\`U `U} } \\
+ x1FEB \Cases{ Ύ \accoxia\textUpsilon{} \'\textUpsilon{} \ux{\'Υ} {\'U 'U} } \\
+ x1FEC \Cases{ Ῥ \accdasia\textRho{} \<\textRho{} \ux{\<Ρ} {\<R <R} } \\
+ x1FED \Cases{ ῭ \accdialytikavaria{} \`"{} \ux{\`"{} \"`{}} {\`"{} `"} } \\
+ x1FEE \Cases{ ΅ \accdialytikatonos{} \'"{} \ux{\'"{} \"'{}} {\'"{} '"} } \\
+ x1FEF \Cases{ ` \accvaria{} \`{} \ux{\`{}} {\`{} `} } \\
\\
x1FE3 \Cases{ ῲ \accvaria\textomega\ypogegrammeni{} \`\textomega\ypogegrammeni{} \ux{\`ω\ypogegrammeni{}} {\`w| `w|} } \\
x1FE4 \Cases{ ῳ \textomega\ypogegrammeni{} \textomega\ypogegrammeni{} \ux{ω\ypogegrammeni{}} {w| w|} } \\
@@ -500,56 +507,78 @@ Characters from the Greek and Coptic Unicode block that are supported by
\section{Discussion}
-\subsection{Differences between literal input and LICRs}
+\subsection{Pre-composed vs. combining characters}
Under pdfTeX and XeTeX, all input variants select pre-composed characters
-if possible (\href{https://www.unicode.org/reports/tr15/}{Unicode
-normalization} NFC).
-Under luaTeX, accent macros on a literal character are printed using
-combining diacritical marks. This leads to suboptimal placement of
-diacritics with many fonts, often resulting in illegible output.
-
-\subsubsection{Upcasing}
-
-Up to 2022, diacritics were dropped from Greek letters in UPPERCASE in any
-locale. The new \cs{MakeUppercase} implementation follows the Unicode
-standard, where dropping diacritics is a feature of the Greek locale (``el'').
-
-However, ``named'' accent macros with Greek names behave according to Greek
-typsetting rules in \emph{all} locales.
-The current implementation also drops diacritics input via standard accent
-macros in documents that declare the Greek language with Babel.
-
-Apart from the diacritical marks native to Greek itself, linguists also
-regularly mark vowel length with macrons (¯) and breves (˘).
-The length markers are used in dictionaries and textbooks
-but not part of the Greek orthography. There is no established praxis
-regarding their handling in uppercase. LaTeX keeps them but
-the \href{https://icu.unicode.org/design/case/greek-upper}{%
-Unicode reference implementation} drops them.
-
-Greek stand-alone diacritics are dropped by \cs{MakeUppercase} if input via
-accent macros (e.g. \cs{accdialytika} or \cs{'>}).
-
-
-\subsubsection{Sigma, final sigma, and ``autosigma''}
+if possible (using the NFC
+\href{https://www.unicode.org/reports/tr15/}{Unicode normalization}
+with XeTeX and ligature definitions in LGR fonts under pdfTeX).
+
+The default LuaTeX renderer does no NFC normalization.
+This leads to sub-optimal placement of diacritics with many fonts,
+often resulting in illegible output.
+NFC normalization for LuaTeX is provided by the \pkgref{uninormalize}
+package and, alternatively, by the \emph{Harfbuzz} renderer that can be
+selected with the \verb|[Renderer=Harfbuzz]| option of the \pkgref{fontspec}
+font selection commands. This document uses the Harfbuzz renderer with LuaTeX.
+
+
+\subsection{Case changing}
+
+\subsubsection{Diacritics}
+
+According to Greek typographical conventions, most\footnote{
+ Exceptions are the diaeresis, the sub-iota, and the
+ length markers macron (¯) and breve (˘).
+ The length markers are used in dictionaries and textbooks but not
+ part of the Greek orthography. There is no established practice
+ regarding their handling in uppercase. LaTeX keeps them but the
+ \href{https://icu.unicode.org/design/case/greek-upper}
+ {Unicode reference implementation} drops them.
+}
+diacritics are dropped in UPPERCASE. Up to 2022, \cs{MakeUppercase}
+dropped diacritics from Greek letters in any locale
+(except for standard accent macros).
+
+For \emph{literal characters}, the new \cs{MakeUppercase}
+implementation follows the Unicode standard, where dropping diacritics is a
+feature of the Greek locale (``el'').
+However, \emph{accent macros} behave according to Greek typesetting
+rules in \emph{all} locales (standard accent macros only in documents that
+declare the Greek language with Babel).
+
+\newcommand*{\sample}{\'a \`e \"i \~o \'u}%
+Since version 1.14, babel-greek maps standard accent macros
+to ``capital'' versions to fix uppercasing accented Greek letters with the new
+\cs{MakeUppercase}.
+The default expansion ensures that accents are kept on Latin letters:
+\sample{} → \MakeUppercase{\sample}.
+It also works if the Language is set to Greek:
+\TestUppercase{\ensureascii{\sample}}.
+\ifdefined \UnicodeEncodingName
+\else
+ (Mind, that with 8-bit TeX Latin letters are interpreted as transliteration
+ input and converted to Greek if not wrapped in \cs{ensureascii}:
+ \TestUppercase{\sample}.)
+\fi
-There are two variants of the lower case letter \emph{sigma}.
-The lowercasing \ensuregreek{Σ} should select a final sigma at the end of a
-word: \ensuregreek{ΣΣ $\mapsto$ \MakeLowercase{ΣΣ}}.
+\subsubsection{Sigma, final sigma, and ``autosigma'' \label{sec:sigma}}
-Since 2022, \cs{MakeLowercase} selects the correct sigma variant for a
-literal Sigma under Xe/LuaTeX, too.
+There are two variants of the small letter \emph{sigma}.
-The \cs{textSigma} \emph{macro} is mapped to \verb|\textautosigma| which
-under 8-bit TeX prints the sigma variant according to its position but,
-unfortunately, fails with Unicode fonts:
+Lowercasing a capital \ensuregreek{Σ} at the end of a word should print a
+final sigma. This works as expected with 8-bit TeX and, since 2022, also
+with Xe/LuaTeX and a literal Sigma: \ensuregreek{ΣΣ → \MakeLowercase{ΣΣ}}.
+However, it fails with the \cs{textSigma} macro and Unicode fonts:
\ensuregreek{\textSigma\textSigma{} → \MakeLowercase{\textSigma\textSigma}}.
-In LGR, you can add a ZWNJ or use the \verb|\noboundary| macro to prevent the
-conversion to a final sigma: \ensuregreek{\MakeLowercase{ΣΣ‌}}.
-
+\ifdefined \UnicodeEncodingName
+\else
+ With 8-bit TeX, you can add a ZWNJ or use the \cs{noboundary} macro
+ to prevent the conversion to a final sigma:
+ \ensuregreek{\MakeLowercase{ΣΣ‌}}.
+\fi
\subsubsection{%
The one-letter word
@@ -561,62 +590,95 @@ conversion to a final sigma: \ensuregreek{\MakeLowercase{ΣΣ‌}}.
(or)}
For disambiguation, the Greek word \emph{or} (ή / ἢ) keeps diacritics in
-UPPERCASE:
+UPPERCASE.
+The 2022 MakeUppercase handles this for literal input.
\TestUppercase{ή Ή ἢ Ἢ ἤ Ἤ }.\footnote{
- TODO: The polytonic variant with dasia and oxia used in
+ TODO: The polytonic variant ETA WITH DASIA AND OXIA used in
ἢ … ἤ (\emph{either … or}) drops diacritics!
By mistake, omission, or intent?}
-\noindent However, eta drops diacritics if it is part of a word:
+\noindent Currently, this feature is not supported with other input methods.
+
+Diacritics are dropped from eta if it is part of a word:
\TestUppercase{ήτοι, Ήτοι, επιταγή ἤτοι, Ἤτοι}.%
\footnote{TODO: It seems the test is only for whitespace on both sides:
\TestUppercase{ή, Ή. ἢ; Ἢ}
}
-\smallskip\noindent
-TODO: The 2022 MakeUppercase handles this for literal input.
-Currently, this feature is not supported with other input methods.
-
-\subsection{Case conversion if the locale is \emph{not} Greek}
+\subsubsection{Case conversion if the locale is \emph{not} Greek}
+
+Since 2022, \cs{MakeUppercase} keeps diacritics on Greek letters and uses
+combining diacritical characters for characters that have no pre-composed
+uppercase equivalent.
+
+With Xe/LuaTeX, the result may be illegible due to overlapping diacritics.
+With pdfTeX, this led to compiling errors.
+This is fixed in \emph{greek-fontenc} 2.3. by mapping the affected
+characters to macro representations before case conversions
+(requires the 2023 LaTeX release).
+Consequently, with pdfTeX, diacritics are dropped from literal characters
+without pre-composed uppercase equivalent also if the text language is
+\emph{not} Greek.
+
+\renewcommand*{\sample}{ΐΰὐὒὔὖᾶᾷῆῇῒΐῖῗῢΰῤῦῧῶῷ}
+\sample → \MakeUppercase{\sample}
+
+
+\subsubsection{PDF strings}
+
+MakeUppercase in PDF strings led to compiling errors until 2022.
+
+\ifdefined \AddToNoCaseChangeList % introduced with 2022 \MakeUppercase
+ Check the table of contents in the side-bar of a PDF viewer.
+
+ \subsubsection{\TestUppercase{
+ ῒ \accdialytikavaria{\textiota}
+ \"`{\textiota}\"\`{\textiota}\`"{\textiota}\`\"{\textiota}
+ \ux{\accdialytikavaria ι \`"ι \"`ι \`\"ι \"\`ι}
+ {\accdialytikavaria i \`"i \"`i \`\"i \"\`i}}}
+
+ \subsubsection{\TestUppercase{
+ ῢ \accdialytikavaria{\textupsilon}
+ \"`{\textupsilon}\"\`{\textupsilon}\`"{\textupsilon}\`\"{\textupsilon}
+ \ux{\accdialytikavaria υ \`"υ \"`υ \`\"υ \"\`υ}
+ {\accdialytikavaria u \`"u \"`u \`\"u \"\`u}}}
+ \subsubsection{\TestUppercase{
+ ΐ \accdialytikaoxia\textiota{}
+ \"'{\textiota}\"\'{\textiota}\'"{\textiota}\'\"{\textiota}
+ \ux{\accdialytikaoxia ι \'"ι \"'ι \'\"ι \"\'ι}
+ {\accdialytikaoxia i \'"i \"'i \'\"i \"\'i}}}
+ \subsubsection{\TestUppercase{
+ ΰ \accdialytikaoxia\textupsilon{}
+ \"'{\textupsilon}\"\'{\textupsilon}\'"{\textupsilon}\'\"{\textupsilon}
+ \ux{\accdialytikaoxia υ \'"υ \"'υ \'\"υ \"\'υ}
+ {\accdialytikaoxia u \'"u \"'u \'\"u \"\'u}}}
+ \subsubsection{\TestUppercase{ἢ ἣ ἤ ἥ ἦ ἧ Ἠ Ἡ Ἢ Ἣ}}
+\fi
-In order to fix upcasing for Greek, babel-greek maps standard accent macros
-to ``capital'' versions.\footnote{%
- In case of problems, these mappings can be disabled with the
- \texttt{local-MakeUppercase-fixes} language modifier.}
-The default expansion ensures that accents are
-kept on Latin letters: \'a \`a \~a \"a → \MakeUppercase{\'a \`a \~a \"a}.%
-\footnote{If the Language is set to Greek, this works unless the font encoding
- is 8-bit LGR (where Latin letters are interpreted as Latin transliteration
- anyway): \Greek{\'u \`u \~u \"u \ensureascii{\'u} →
- \MakeUppercase{\'u \`u \~u \"u \ensureascii{\'u}}}.}
+\ux{}{Transliteration input stays Latin in PDF strings.}
-Some characters from the “Greek and Coptic” and “Greek extended” Unicode
-blocks have no pre-composed uppercase equivalent. Since 2022, upcasing them
-led to compiling errors under pdfLaTeX.
-This is fixed in the 2023 LaTeX release by mapping the affected characters
-to macro representations before case conversions:
-with pdfLaTeX, diacritics are dropped from literal characters without
-pre-composed uppercase equivalent also if the text language is \emph{not}
-Greek, with Xe/LuaTeX, combining charactes are used (and may overlap with
-the base letter).
+Diacritics are not dropped from literal characters in text, ToC but not
+PDF sidebar ToC, if the language switch is inside the \cs{section} command.
+(It works if the language is switched before the section command.)
-ΐΰὐὒὔὖᾶᾷῆῇῒΐῖῗῢΰῤῦῧῶῷ → \MakeUppercase{ΐΰὐὒὔὖᾶᾷῆῇῒΐῖῗῢΰῤῦῧῶῷ}
+See \href{hyperref-with-greek.pdf}{hyperref-with-greek.pdf} for a
+comprehensive test.
\subsection{Symbol variants}
-Several Greek letters have alternative representations which may have a
-different semantic in a mathematical context.
-Unicode reserves code points for the alternative representations
-(naming them ``symbol'' as opposed to ``letter'').
+For several Greek letters, there are alternative glyphs which may
+have a different semantic in a mathe­matical context.
+Unicode reserves code points for the alternative glyphs
+(naming them SYMBOL as opposed to LETTER).
Some of these symbols are available as \cs{var<name>} macros in TeX's
mathematical mode.
-In text, they are considered typographical variants without special
-meaning. The 8-bit LGR font encoding does not allocate code points for them.
-\emph{Babel-greek} and the \emph{%
+In text, the alternative glyphs are considered typographical variants
+without special meaning. The 8-bit LGR font encoding does not allocate
+code points for them. \emph{Babel-greek} and the \emph{%
\href{http://mirrors.ctan.org/language/greek/greek-fontenc/textalpha-doc.pdf}
{textalpha}} package provide the \texttt{normalize-symbols} option
(ignored with Xe/LuaTeX) that is also used in this test document.
@@ -692,15 +754,15 @@ A dialytika must be placed on the second vowel if they are dropped:
} (short+LICR)
\TestUppercase{\ux{\'αι \'αυ \'ει \>'αι \>'αυ \>'ει \>αυ}
- {\'ai \'au \'ei \>'ai \>'au \>'ei \>au}
+ {\'ai \'au \'ei \>'ai \>'au \>'ei \>au}
} (short+\ux{literal}{transliteration})
- \TestUppercase{\ux{\'>αι \'>αυ \'>ει \'\>αι \'\>αυ \'\>ει}
- {\'>ai \'>au \'>ei \'\>ai \'\>au \'\>ei}
+ \TestUppercase{\ux{\'\>αι \'\>αυ \'\>ει}
+ {\'\>ai \'\>au \'\>ei}
} (short+\ux{literal}{transliteration}, reversed)
\end{quote}
The ``hiatus feature'' does not work with the LGR ``input ligatures''.
-Support for monotonic literal charactes came with the 2022
+Support for monotonic literal characters came with the 2022
\cs{MakeUppercase} implementation changes.
Since 2023 it also works with polytonic literals (\TestUppercase{ἀυπνία}).
@@ -747,8 +809,8 @@ Rows 3 \ldots 7: Look-ahead (to check for a hiatus) breaks kerning before
% \'AA \'AB \'AG \'AD \'AE \'AZ \'AH \'AJ \'AI \'AK \'AL \'AM \'AN \'AX
% \'AO \'AP \'AR \'AS \'AC \'AT \'AU \'AF \'AQ \'AY \'AW
-Downcasing should keep diacritics (of course, it cannot regenerate
-``manually" dropped ones):
+Lowercasing should keep diacritics (of course, it cannot regenerate
+``manually" drop­ped ones):
\Greek{'A \"I \"U \~<A $\mapsto$ \MakeLowercase{\'A \"I \"U \~<A}}.
@@ -786,11 +848,6 @@ Downcasing should keep diacritics (of course, it cannot regenerate
a dialytika \verb|"~ "` "'| appears as apostrophe, as a single \verb|"|
stands for an apostrophe in the LGR transliteration if followed by a
space or empty character.
-
-\item
- With the pre-2022 \cs{MakeUppercase}, the input order is important
- in combined accents involving the dialytika, e.g.,
- \verb|'"i "'i| is upcased \Greek{'"i "'i → \MakeUppercase{'"i "'i}}.
\end{itemize}
\end{document}