This is a hack, but if you have a lot of that text it may help you out.
If you add the following to your preamble:
\XeTeXinputnormalization=1
\newenvironment{asciigreek}
{\catcode`\~=12 \G
\addfontfeature{Mapping=asciitogreek}}
{}
and put the attached file (asckiitogreek.map) in your path, it should do
the trick.
It worked for me using the input in your minimal file.
On 7/18/13 10:56 PM, Richard Cobbe wrote:
This may be slightly OT, since I think it's a font problem rather than a
XeTeX problem, but I'm hoping someone here may be able to give me a few
pointers. If not, please forgive the noise.
I recently switched from using Gentium
(http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=gentium) to
Gentium Plus to typeset some classical Greek text, and I'm now getting
different results when I use combining diacriticals in the XeTeX input.
I've attached a very small XeTeX example that demonstrates the problem,
along with the output I get. (The .tex file is in UTF-8.) The first line
in the document body, as indicated, uses a precomposed Unicode character;
the second line uses equivalent combining diacriticals. At least, I
thought they were supposed to be equivalent; as you can see from the PDF,
the output is different. In the PDF, the "precomposed" line is the desired
output -- the diacriticals are supposed to be stacked, not superimposed.
This same input file works fine (stacked rather than superimposed
diacriticals) if I switch back to Gentium, which suggests that the
difference is in the fonts, rather than in XeTeX.
It's much more convenient for me to use the combining diacriticals, for
various reasons that aren't all that interesting here. Is there something
in XeTeX/fontspec I can do to make that input work again, or is this a font
problem?
MacOS 10.8.3, TeXLive 2012.
Thanks much,
Richard
--------------------------------------------------
Subscriptions, Archive, and List information, etc.:
http://tug.org/mailman/listinfo/xetex
; TECkit mapping for ASCII Greek <-> Unicode characters
LHSName "TeX-text"
RHSName "UNICODE"
pass(Unicode)
; Class "letter" consists of letters and characters denoting accents
; in order to cope with "sigma finalis", i.e., A-Z a-z ` ' > < ~
; we don't need the double quote because it goes only after a vowel
UniClass[letter] = ( U+0041..U+005A U+0061..U+007A U+0060 U+0027 U+003E U+003C
U+007E )
; ligatures from Knuth's original CMR fonts
U+002D U+002D <> U+2013 ; -- -> en dash
U+002D U+002D U+002D <> U+2014 ; --- -> em dash
; Greek (according to C. Beccari conventions)
; (-1)
U+0022 <> U+2019 ; APOSTROPHE
U+0060 U+0060 <> U+201C ; `` -> LEFT DOUBLE QUOTATION MARK
U+0027 U+0027 <> U+201D ; '' -> RIGHT DOUBLE QUOTATION MARK
U+003C U+003C <> U+00AB ; << -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
U+003E U+003E <> U+00BB ; >> -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
U+0028 U+0028 <> U+00AB ; (( -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
U+0029 U+0029 <> U+00BB ; )) -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
; (0) basic letters
; uppercase
U+0041 <> U+0391
U+0042 <> U+0392
U+0044 <> U+0394
U+0045 <> U+0395
U+0046 <> U+03A6
U+0047 <> U+0393
U+0048 <> U+0397
U+0049 <> U+0399
U+004A <> U+0398
U+004B <> U+039A
U+004C <> U+039B
U+004D <> U+039C
U+004E <> U+039D
U+004F <> U+039F
U+0050 <> U+03A0
U+0051 <> U+03A7
U+0052 <> U+03A1
U+0053 <> U+03A3
U+0054 <> U+03A4
U+0055 <> U+03A5
U+0057 <> U+03A9
U+0058 <> U+039E
U+0059 <> U+03A8
U+005A <> U+0396
; lowercase
U+0061 <> U+03B1
U+0062 <> U+03B2
U+0063 <> U+03C2
U+0064 <> U+03B4
U+0065 <> U+03B5
U+0066 <> U+03C6
U+0067 <> U+03B3
U+0068 <> U+03B7
U+0069 <> U+03B9
U+006A <> U+03B8
U+006B <> U+03BA
U+006C <> U+03BB
U+006D <> U+03BC
U+006E <> U+03BD
U+006F <> U+03BF
U+0070 <> U+03C0
U+0071 <> U+03C7
U+0072 <> U+03C1
U+0073 <> U+03C3
U+0073 / _ ^[letter] <> U+03C2
U+0074 <> U+03C4
U+0075 <> U+03C5
U+0077 <> U+03C9
U+0078 <> U+03BE
U+0079 <> U+03C8
U+007A <> U+03B6
; (1) ` + letter -> varia
U+0060 U+0041 <> U+1FBA
U+0060 U+0061 <> U+1F70
U+0060 U+0045 <> U+1FC8
U+0060 U+0065 <> U+1F72
U+0060 U+0048 <> U+1FCA
U+0060 U+0068 <> U+1F74
U+0060 U+0049 <> U+1FDA
U+0060 U+0069 <> U+1F76
U+0060 U+004F <> U+1FF8
U+0060 U+006F <> U+1F78
U+0060 U+0055 <> U+1FEA
U+0060 U+0075 <> U+1F7A
U+0060 U+0057 <> U+1FFA
U+0060 U+0077 <> U+1F7C
; (2) ' + letter -> oxia
U+0027 U+0041 <> U+1FBB
U+0027 U+0061 <> U+1F71
U+0027 U+0045 <> U+1FC9
U+0027 U+0065 <> U+1F73
U+0027 U+0048 <> U+1FCB
U+0027 U+0068 <> U+1F75
U+0027 U+0049 <> U+1FDB
U+0027 U+0069 <> U+1F77
U+0027 U+004F <> U+1FF9
U+0027 U+006F <> U+1F79
U+0027 U+0055 <> U+1FEB
U+0027 U+0075 <> U+1F7B
U+0027 U+0057 <> U+1FFB
U+0027 U+0077 <> U+1F7D
; (3) > + letter -> psili
U+003E U+0041 <> U+1F08
U+003E U+0061 <> U+1F00
U+003E U+0045 <> U+1F18
U+003E U+0065 <> U+1F10
U+003E U+0048 <> U+1F28
U+003E U+0068 <> U+1F20
U+003E U+0049 <> U+1F38
U+003E U+0069 <> U+1F30
U+003E U+004F <> U+1F48
U+003E U+006F <> U+1F40
U+003E U+0055 <> U+1FBF U+03A5
U+003E U+0075 <> U+1F50
U+003E U+0057 <> U+1F68
U+003E U+0077 <> U+1F60
; (4) < + letter -> dasia
U+003C U+0041 <> U+1F09
U+003C U+0061 <> U+1F01
U+003C U+0045 <> U+1F19
U+003C U+0065 <> U+1F11
U+003C U+0048 <> U+1F29
U+003C U+0068 <> U+1F21
U+003C U+0049 <> U+1F39
U+003C U+0069 <> U+1F31
U+003C U+004F <> U+1F49
U+003C U+006F <> U+1F41
U+003C U+0055 <> U+1F59
U+003C U+0075 <> U+1F51
U+003C U+0057 <> U+1F69
U+003C U+0077 <> U+1F61
; (5) >` + letter -> psili and varia
U+003E U+0060 U+0041 <> U+1F0A
U+003E U+0060 U+0061 <> U+1F02
U+003E U+0060 U+0045 <> U+1F1A
U+003E U+0060 U+0065 <> U+1F12
U+003E U+0060 U+0048 <> U+1F2A
U+003E U+0060 U+0068 <> U+1F22
U+003E U+0060 U+0049 <> U+1F3A
U+003E U+0060 U+0069 <> U+1F32
U+003E U+0060 U+004F <> U+1F4A
U+003E U+0060 U+006F <> U+1F42
U+003E U+0060 U+0055 <> U+1FCD U+03A5
U+003E U+0060 U+0075 <> U+1F52
U+003E U+0060 U+0057 <> U+1F6A
U+003E U+0060 U+0077 <> U+1F62
; (6) `> + letter -> psili and varia
U+0060 U+003E U+0041 <> U+1F0A
U+0060 U+003E U+0061 <> U+1F02
U+0060 U+003E U+0045 <> U+1F1A
U+0060 U+003E U+0065 <> U+1F12
U+0060 U+003E U+0048 <> U+1F2A
U+0060 U+003E U+0068 <> U+1F22
U+0060 U+003E U+0049 <> U+1F3A
U+0060 U+003E U+0069 <> U+1F32
U+0060 U+003E U+004F <> U+1F4A
U+0060 U+003E U+006F <> U+1F42
U+0060 U+003E U+0055 <> U+1FCD U+03A5
U+0060 U+003E U+0075 <> U+1F52
U+0060 U+003E U+0057 <> U+1F6A
U+0060 U+003E U+0077 <> U+1F62
; (7) >' + letter -> psili and oxia
U+003E U+0027 U+0041 <> U+1F0C
U+003E U+0027 U+0061 <> U+1F04
U+003E U+0027 U+0045 <> U+1F1C
U+003E U+0027 U+0065 <> U+1F14
U+003E U+0027 U+0048 <> U+1F2C
U+003E U+0027 U+0068 <> U+1F24
U+003E U+0027 U+0049 <> U+1F3C
U+003E U+0027 U+0069 <> U+1F34
U+003E U+0027 U+004F <> U+1F4C
U+003E U+0027 U+006F <> U+1F44
U+003E U+0027 U+0055 <> U+1FCE U+03A5
U+003E U+0027 U+0075 <> U+1F54
U+003E U+0027 U+0057 <> U+1F6C
U+003E U+0027 U+0077 <> U+1F64
; (8) '> + letter -> psili and oxia
U+0027 U+003E U+0041 <> U+1F0C
U+0027 U+003E U+0061 <> U+1F04
U+0027 U+003E U+0045 <> U+1F1C
U+0027 U+003E U+0065 <> U+1F14
U+0027 U+003E U+0048 <> U+1F2C
U+0027 U+003E U+0068 <> U+1F24
U+0027 U+003E U+0049 <> U+1F3C
U+0027 U+003E U+0069 <> U+1F34
U+0027 U+003E U+004F <> U+1F4C
U+0027 U+003E U+006F <> U+1F44
U+0027 U+003E U+0055 <> U+1FCE U+03A5
U+0027 U+003E U+0075 <> U+1F54
U+0027 U+003E U+0057 <> U+1F6C
U+0027 U+003E U+0077 <> U+1F64
; (8a) '< + letter ; Added by Sidoli
U+0027 U+003C U+0041 <> U+1F0D; A
U+0027 U+003C U+0061 <> U+1F05; a
U+0027 U+003C U+0045 <> U+1F1D; E
U+0027 U+003C U+0065 <> U+1F15; e
U+0027 U+003C U+0048 <> U+1F2D; H
U+0027 U+003C U+0068 <> U+1F25; h
U+0027 U+003C U+0049 <> U+1F3D; I
U+0027 U+003C U+0069 <> U+1F35; i
U+0027 U+003C U+004F <> U+1F4D; O
U+0027 U+003C U+006F <> U+1F45; o
U+0027 U+003C U+0055 <> U+1F5D; U
U+0027 U+003C U+0075 <> U+1F55; u
U+0027 U+003C U+0057 <> U+1F6D; W
U+0027 U+003C U+0077 <> U+1F65; w
; (8b) <' + letter ; Added by Sidoli
U+003C U+0027 U+0041 <> U+1F0D; A
U+003C U+0027 U+0061 <> U+1F05; a
U+003C U+0027 U+0045 <> U+1F1D; E
U+003C U+0027 U+0065 <> U+1F15; e
U+003C U+0027 U+0048 <> U+1F2D; H
U+003C U+0027 U+0068 <> U+1F25; h
U+003C U+0027 U+0049 <> U+1F3D; I
U+003C U+0027 U+0069 <> U+1F35; i
U+003C U+0027 U+004F <> U+1F4D; O
U+003C U+0027 U+006F <> U+1F45; o
U+003C U+0027 U+0055 <> U+1F5D; U
U+003C U+0027 U+0075 <> U+1F55; u
U+003C U+0027 U+0057 <> U+1F6D; W
U+003C U+0027 U+0077 <> U+1F65; w
; (9) <` + letter -> dasia and varia
U+003C U+0060 U+0041 <> U+1F0B
U+003C U+0060 U+0061 <> U+1F03
U+003C U+0060 U+0045 <> U+1F1B
U+003C U+0060 U+0065 <> U+1F13
U+003C U+0060 U+0048 <> U+1F2B
U+003C U+0060 U+0068 <> U+1F23
U+003C U+0060 U+0049 <> U+1F3B
U+003C U+0060 U+0069 <> U+1F33
U+003C U+0060 U+004F <> U+1F4B
U+003C U+0060 U+006F <> U+1F43
U+003C U+0060 U+0055 <> U+1F5B
U+003C U+0060 U+0075 <> U+1F53
U+003C U+0060 U+0057 <> U+1F6B
U+003C U+0060 U+0077 <> U+1F63
; (10) `< + letter -> dasia and varia
U+0060 U+003C U+0041 <> U+1F0B
U+0060 U+003C U+0061 <> U+1F03
U+0060 U+003C U+0045 <> U+1F1B
U+0060 U+003C U+0065 <> U+1F13
U+0060 U+003C U+0048 <> U+1F2B
U+0060 U+003C U+0068 <> U+1F23
U+0060 U+003C U+0049 <> U+1F3B
U+0060 U+003C U+0069 <> U+1F33
U+0060 U+003C U+004F <> U+1F4B
U+0060 U+003C U+006F <> U+1F43
U+0060 U+003C U+0055 <> U+1F5B
U+0060 U+003C U+0075 <> U+1F53
U+0060 U+003C U+0057 <> U+1F6B
U+0060 U+003C U+0077 <> U+1F63
; (11) ~ + letter -> perispomeni
U+007E U+0041 <> U+0391 U+0342
U+007E U+0061 <> U+1FB6
U+007E U+0048 <> U+0397 U+0342
U+007E U+0068 <> U+1FC6
U+007E U+0049 <> U+0399 U+0342
U+007E U+0069 <> U+1FD6
U+007E U+0055 <> U+03A5 U+0342
U+007E U+0075 <> U+1FE6
U+007E U+0057 <> U+03A9 U+0342
U+007E U+0077 <> U+1FF6
; (12) >~ + letter -> psili and perispomeni
U+003E U+007E U+0041 <> U+1F0E
U+003E U+007E U+0061 <> U+1F06
U+003E U+007E U+0048 <> U+1F2E
U+003E U+007E U+0068 <> U+1F26
U+003E U+007E U+0049 <> U+1F3E
U+003E U+007E U+0069 <> U+1F36
U+003E U+007E U+0055 <> U+1FCF U+03A5
U+003E U+007E U+0075 <> U+1F56
U+003E U+007E U+0057 <> U+1F6E
U+003E U+007E U+0077 <> U+1F66
; (13) ~> + letter -> psili and perispomeni
U+007E U+003E U+0041 <> U+1F0E
U+007E U+003E U+0061 <> U+1F06
U+007E U+003E U+0048 <> U+1F2E
U+007E U+003E U+0068 <> U+1F26
U+007E U+003E U+0049 <> U+1F3E
U+007E U+003E U+0069 <> U+1F36
U+007E U+003E U+0055 <> U+1FCF U+03A5
U+007E U+003E U+0075 <> U+1F56
U+007E U+003E U+0057 <> U+1F6E
U+007E U+003E U+0077 <> U+1F66
; (14) <~ + letter -> dasia and perispomeni
U+003C U+007E U+0041 <> U+1F0F
U+003C U+007E U+0061 <> U+1F07
U+003C U+007E U+0048 <> U+1F2F
U+003C U+007E U+0068 <> U+1F27
U+003C U+007E U+0049 <> U+1F3F
U+003C U+007E U+0069 <> U+1F37
U+003C U+007E U+0055 <> U+1F5F
U+003C U+007E U+0075 <> U+1F57
U+003C U+007E U+0057 <> U+1F6F
U+003C U+007E U+0077 <> U+1F67
; (15) ~< + letter -> dasia and perispomeni
U+007E U+003C U+0041 <> U+1F0F
U+007E U+003C U+0061 <> U+1F07
U+007E U+003C U+0048 <> U+1F2F
U+007E U+003C U+0068 <> U+1F27
U+007E U+003C U+0049 <> U+1F3F
U+007E U+003C U+0069 <> U+1F37
U+007E U+003C U+0055 <> U+1F5F
U+007E U+003C U+0075 <> U+1F57
U+007E U+003C U+0057 <> U+1F6F
U+007E U+003C U+0077 <> U+1F67
; (16) letter + | -> ypogegrammeni
U+0041 U+007C <> U+1FBC
U+0061 U+007C <> U+1FB3
U+0048 U+007C <> U+1FCC
U+0068 U+007C <> U+1FC3
U+0057 U+007C <> U+1FFC
U+0077 U+007C <> U+1FF3
; (17) ` + letter + | -> varia and ypogegrammeni
U+0060 U+0061 U+007C <> U+1FB2
U+0060 U+0068 U+007C <> U+1FC2
U+0060 U+0077 U+007C <> U+1FF2
; (18) ' + letter + | -> oxia and ypogegrammeni
U+0027 U+0061 U+007C <> U+1FB2
U+0027 U+0068 U+007C <> U+1FC2
U+0027 U+0077 U+007C <> U+1FF2
; (19) ~ + letter + | -> perispomeni and ypogegrammeni
U+007E U+0061 U+007C <> U+1FB7
U+007E U+0068 U+007C <> U+1FC7
U+007E U+0077 U+007C <> U+1FF7
; (20) > + letter + | -> psili and ypogegrammeni
U+003E U+0041 U+007C <> U+1F88
U+003E U+0061 U+007C <> U+1F80
U+003E U+0048 U+007C <> U+1F98
U+003E U+0068 U+007C <> U+1F90
U+003E U+0057 U+007C <> U+1FA8
U+003E U+0077 U+007C <> U+1FA0
; (21) >` + letter + | -> psili and varia and ypogegrammeni
U+003E U+0060 U+0041 U+007C <> U+1F8A
U+003E U+0060 U+0061 U+007C <> U+1F82
U+003E U+0060 U+0048 U+007C <> U+1F9A
U+003E U+0060 U+0068 U+007C <> U+1F92
U+003E U+0060 U+0057 U+007C <> U+1FAA
U+003E U+0060 U+0077 U+007C <> U+1FA2
; (22) `> + letter + | -> psili and varia and ypogegrammeni
U+0060 U+003E U+0041 U+007C <> U+1F8A
U+0060 U+003E U+0061 U+007C <> U+1F82
U+0060 U+003E U+0048 U+007C <> U+1F9A
U+0060 U+003E U+0068 U+007C <> U+1F92
U+0060 U+003E U+0057 U+007C <> U+1FAA
U+0060 U+003E U+0077 U+007C <> U+1FA2
; (23) >' + letter + | -> psili and oxia and ypogegrammeni
U+003E U+0027 U+0041 U+007C <> U+1F8C
U+003E U+0027 U+0061 U+007C <> U+1F84
U+003E U+0027 U+0048 U+007C <> U+1F9C
U+003E U+0027 U+0068 U+007C <> U+1F94
U+003E U+0027 U+0057 U+007C <> U+1FAC
U+003E U+0027 U+0077 U+007C <> U+1FA4
; (24) '> + letter + | -> psili and oxia and ypogegrammeni
U+0027 U+003E U+0041 U+007C <> U+1F8C
U+0027 U+003E U+0061 U+007C <> U+1F84
U+0027 U+003E U+0048 U+007C <> U+1F9C
U+0027 U+003E U+0068 U+007C <> U+1F94
U+0027 U+003E U+0057 U+007C <> U+1FAC
U+0027 U+003E U+0077 U+007C <> U+1FA4
; (25) < + letter + | -> dasia and ypogegrammeni
U+003C U+0041 U+007C <> U+1F89
U+003C U+0061 U+007C <> U+1F81
U+003C U+0048 U+007C <> U+1F99
U+003C U+0068 U+007C <> U+1F91
U+003C U+0057 U+007C <> U+1FA9
U+003C U+0077 U+007C <> U+1FA1
; (26) <` + letter + | -> dasia and varia and ypogegrammeni
U+003C U+0060 U+0041 U+007C <> U+1F8B
U+003C U+0060 U+0061 U+007C <> U+1F83
U+003C U+0060 U+0048 U+007C <> U+1F9B
U+003C U+0060 U+0068 U+007C <> U+1F93
U+003C U+0060 U+0057 U+007C <> U+1FAB
U+003C U+0060 U+0077 U+007C <> U+1FA3
; (27) `< + letter + | -> dasia and varia and ypogegrammeni
U+0060 U+003C U+0041 U+007C <> U+1F8B
U+0060 U+003C U+0061 U+007C <> U+1F83
U+0060 U+003C U+0048 U+007C <> U+1F9B
U+0060 U+003C U+0068 U+007C <> U+1F93
U+0060 U+003C U+0057 U+007C <> U+1FAB
U+0060 U+003C U+0077 U+007C <> U+1FA3
; (28) <' + letter + | -> dasia and oxia and ypogegrammeni
U+003C U+0027 U+0041 U+007C <> U+1F8D
U+003C U+0027 U+0061 U+007C <> U+1F85
U+003C U+0027 U+0048 U+007C <> U+1F9D
U+003C U+0027 U+0068 U+007C <> U+1F95
U+003C U+0027 U+0057 U+007C <> U+1FAD
U+003C U+0027 U+0077 U+007C <> U+1FA5
; (29) '< + letter + | -> dasia and oxia and ypogegrammeni
U+0027 U+003C U+0041 U+007C <> U+1F8D
U+0027 U+003C U+0061 U+007C <> U+1F85
U+0027 U+003C U+0048 U+007C <> U+1F9D
U+0027 U+003C U+0068 U+007C <> U+1F95
U+0027 U+003C U+0057 U+007C <> U+1FAD
U+0027 U+003C U+0077 U+007C <> U+1FA5
; (30) " + letter -> dialytika
U+0022 U+0049 <> U+03AA
U+0022 U+0069 <> U+03CA
U+0022 U+0055 <> U+03AB
U+0022 U+0075 <> U+03CB
; (31) "' + letter -> dialytika and oxia
U+0022 U+0027 U+0069 <> U+1FD3
U+0022 U+0027 U+0075 <> U+1FE3
; (32) '" + letter -> dialytika and oxia
U+0027 U+0022 U+0069 <> U+1FD3
U+0027 U+0022 U+0075 <> U+1FE3
; (33) "` + letter -> dialytika and varia
U+0022 U+0060 U+0069 <> U+1FD2
U+0022 U+0060 U+0075 <> U+1FE2
; (34) `" + letter -> dialytika and varia
U+0060 U+0022 U+0069 <> U+1FD2
U+0060 U+0022 U+0075 <> U+1FE2
; (35) "~ + letter -> dialytika and perispomeni
U+0022 U+007E U+0069 <> U+1FD7
U+0022 U+007E U+0075 <> U+1FE7
; (36) ~" + letter -> dialytika and perispomeni
U+007E U+0022 U+0069 <> U+1FD7
U+007E U+0022 U+0075 <> U+1FE7
; (37) rho, medial sigma and punctuation
; >r
U+003E U+0072 <> U+1FE4
; <R
U+003C U+0052 <> U+1FEC
; <r
U+003C U+0072 <> U+1FE5
; medial sigma (sv)
U+0073 U+0076 <> U+03C3
; question mark
U+003F <> U+037E
; semicolon
U+003B <> U+0387
--------------------------------------------------
Subscriptions, Archive, and List information, etc.:
http://tug.org/mailman/listinfo/xetex