I got the microtype version of xetex, and the build process seemed to go well until the very last few lines. Is this a fatal error? If so, how do I fix it? %%==%% sers/sgm/xetex/texk/web2c/xetexdir/XeTeXLayoutInterface.cpp:867: error: ‘ATSUGetAttribute’ was not declared in this scope /Users/sgm/xetex/texk/web2c/xetexdir/XeTeXLayoutInterface.cpp:869: error: ‘FMGetATSFontRefFromFont’ was not declared in this scope make: *** [libxetex_a-XeTeXLayoutInterface.o] Error 1 + ls -l /Users/sgm/xetex/build-xetex/texk/web2c/xetex ls: /Users/sgm/xetex/build-xetex/texk/web2c/xetex: No such file or directory %%==%% Thanks for any insights. Stephen Moye
Well, it prevented the compilation finishing, so you got no binary.... that seems fairly fatal! :)On 3 May 2010, at 13:47, Stephen Moye wrote: > I got the microtype version of xetex, and the build process seemed to go well until the very last few lines. Is this a fatal error?I'm guessing that you're building on a Snow Leopard system, and so the Apple tools are defaulting to a 64-bit build, which is not supported for xetex on OS X. If that's the case, try the following: export SDK_ROOT=/Developer/SDKs/MacOSX10.5.sdk/ export CC="gcc-4.0" export CXX="g++-4.0" sh build-xetex.sh and see if that works better. JK> If so, how do I fix it? > > %%==%% > > sers/sgm/xetex/texk/web2c/xetexdir/XeTeXLayoutInterface.cpp:867: error: ‘ATSUGetAttribute’ was not declared in this scope > /Users/sgm/xetex/texk/web2c/xetexdir/XeTeXLayoutInterface.cpp:869: error: ‘FMGetATSFontRefFromFont’ was not declared in this scope > make: *** [libxetex_a-XeTeXLayoutInterface.o] Error 1 > + ls -l /Users/sgm/xetex/build-xetex/texk/web2c/xetex > ls: /Users/sgm/xetex/build-xetex/texk/web2c/xetex: No such file or directory >
That worked. Thank you. However it has been some time since I built and installed xetex from source. My notes say that the final step is to run "sudo ./install-xetex" but there is no file "install-xetex". What do i do now? StephenOn May 3, 2010, at 9:02 AM, Jonathan Kew wrote: > On 3 May 2010, at 13:47, Stephen Moye wrote: > >> I got the microtype version of xetex, and the build process seemed to go well until the very last few lines. Is this a fatal error? > > Well, it prevented the compilation finishing, so you got no binary.... that seems fairly fatal! :) > >> If so, how do I fix it? >> >> %%==%% >> >> sers/sgm/xetex/texk/web2c/xetexdir/XeTeXLayoutInterface.cpp:867: error: ‘ATSUGetAttribute’ was not declared in this scope >> /Users/sgm/xetex/texk/web2c/xetexdir/XeTeXLayoutInterface.cpp:869: error: ‘FMGetATSFontRefFromFont’ was not declared in this scope >> make: *** [libxetex_a-XeTeXLayoutInterface.o] Error 1 >> + ls -l /Users/sgm/xetex/build-xetex/texk/web2c/xetex >> ls: /Users/sgm/xetex/build-xetex/texk/web2c/xetex: No such file or directory >> > > I'm guessing that you're building on a Snow Leopard system, and so the Apple tools are defaulting to a 64-bit build, which is not supported for xetex on OS X. > > If that's the case, try the following: > > export SDK_ROOT=/Developer/SDKs/MacOSX10.5.sdk/ > export CC="gcc-4.0" > export CXX="g++-4.0" > sh build-xetex.sh > > and see if that works better. > > JK > > > > > > -------------------------------------------------- > Subscriptions, Archive, and List information, etc.: > http://tug.org/mailman/listinfo/xetex
Just copy the new xetex binary to your tex binaries directory (probably /usr/texbin). Then you'll need to rebuild any xetex-based format files; e.g. "fmtutil --byfmt xetex" and "fmtutil --byfmt xelatex". JK
Success -- everything is working perfectly. Many thanks. Now I just have to be patient whilst microtype and friends are updated. SGM Sent from my iPhoneOn May 3, 2010, at 10:49 AM, Jonathan Kew wrote: > On 3 May 2010, at 14:56, Stephen Moye wrote: > >> That worked. Thank you. However it has been some time since I built >> and installed xetex from source. My notes say that the final step >> is to run "sudo ./install-xetex" but there is no file "install- >> xetex". What do i do now? > > Just copy the new xetex binary to your tex binaries directory > (probably /usr/texbin). Then you'll need to rebuild any xetex-based > format files; e.g. "fmtutil --byfmt xetex" and "fmtutil --byfmt > xelatex". > > JK > > > > > -------------------------------------------------- > Subscriptions, Archive, and List information, etc.: > http://tug.org/mailman/listinfo/xetex
If it's just for testing you might use microtype already as shown below. But please don't use this hack for anything else than testing. It will definitely wreak havoc with a lot of other packages. For sure. \newcount\pdftexversion\pdftexversion120 \newcount\pdftexrevision\pdftexrevision0 \newcount\pdfadjustspacing\pdfadjustspacing=0 \def\pdfoutput{1} \let\pdfprotrudechars\XeTeXprotrudechars \def\pdffontexpand#1\relax{} \usepackage[protrusion,expansion=false]{microtype} Ciao Andreas
Thanks -- I will certainly give that a try! StephenStephen MoyeOn May 3, 2010, at 4:51 PM, Andreas Matthias wrote: > Stephen Moye wrote: > >> Success -- everything is working perfectly. Many thanks. Now I just have >> to be patient whilst microtype and friends are updated. > > If it's just for testing you might use microtype already as > shown below. But please don't use this hack for anything > else than testing. It will definitely wreak havoc with a > lot of other packages. For sure. > > > \newcount\pdftexversion\pdftexversion120 > \newcount\pdftexrevision\pdftexrevision0 > \newcount\pdfadjustspacing\pdfadjustspacing=0 > \def\pdfoutput{1} > \let\pdfprotrudechars\XeTeXprotrudechars > \def\pdffontexpand#1\relax{} > \usepackage[protrusion,expansion=false]{microtype} > > > Ciao > Andreas > > > > -------------------------------------------------- > Subscriptions, Archive, and List information, etc.: > http://tug.org/mailman/listinfo/xetex
Actually, I have just found a older xetex source directory that has the install-xetex and rebuild-formats. The rebuild-xetex script looks ok as-is. I **think** the only change necessary for the install-xetex script would be to change references to the "Work" directory to the "build-xetex" directory. Is that correct? Stephen MoyeOn May 3, 2010, at 9:02 AM, Jonathan Kew wrote: > On 3 May 2010, at 13:47, Stephen Moye wrote: > >> I got the microtype version of xetex, and the build process seemed to go well until the very last few lines. Is this a fatal error? > > Well, it prevented the compilation finishing, so you got no binary.... that seems fairly fatal! :) > >> If so, how do I fix it? >> >> %%==%% >> >> sers/sgm/xetex/texk/web2c/xetexdir/XeTeXLayoutInterface.cpp:867: error: ‘ATSUGetAttribute’ was not declared in this scope >> /Users/sgm/xetex/texk/web2c/xetexdir/XeTeXLayoutInterface.cpp:869: error: ‘FMGetATSFontRefFromFont’ was not declared in this scope >> make: *** [libxetex_a-XeTeXLayoutInterface.o] Error 1 >> + ls -l /Users/sgm/xetex/build-xetex/texk/web2c/xetex >> ls: /Users/sgm/xetex/build-xetex/texk/web2c/xetex: No such file or directory >> > > I'm guessing that you're building on a Snow Leopard system, and so the Apple tools are defaulting to a 64-bit build, which is not supported for xetex on OS X. > > If that's the case, try the following: > > export SDK_ROOT=/Developer/SDKs/MacOSX10.5.sdk/ > export CC="gcc-4.0" > export CXX="g++-4.0" > sh build-xetex.sh > > and see if that works better. > > JK > > > > > > -------------------------------------------------- > Subscriptions, Archive, and List information, etc.: > http://tug.org/mailman/listinfo/xetex
Hi Jonathan,Since TeX Live 2010 is planning to include 64-bit binaries for Mac OS X, is there any chance we can fix this for XeTeX? I understand part of ATSUI does not have 64-bit counterparts, can we at lease be able to disable AAT support gracefully for 64-bit XeTeX? (aka. only use ATS to locate fonts and ICU to do the layout.) - JiangOn Mon, May 3, 2010 at 9:02 PM, Jonathan Kew wrote: > I'm guessing that you're building on a Snow Leopard system, and so the Apple tools are defaulting to a 64-bit build, which is not supported for xetex on OS X. > > If that's the case, try the following: > > export SDK_ROOT=/Developer/SDKs/MacOSX10.5.sdk/ > export CC="gcc-4.0" > export CXX="g++-4.0" > sh build-xetex.sh > > and see if that works better.
I ran into the same problem trying to compile an Universal Binary for 32- and 64-bit architectures on Leopard. The function ATSUGetAttribute is in /Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/ ApplicationServices.framework/Versions/A/Frameworks/QD.framework/ Versions/A/Headers/ATSUnicodeObjects.h inside a '#if !__LP64__' clause and has this documentation: * Availability: * Mac OS X: in version 10.0 and later in ApplicationServices.framework [32-bit only] * CarbonLib: in CarbonLib 1.0 and later * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later Invoking g++ -isysroot /Developer/SDKs/MacOSX10.5.sdk -arch ppc64 -dM -E - < / dev/null | grep _LP64 g++ -isysroot /Developer/SDKs/MacOSX10.5.sdk -arch x86_64 -dM -E - < / dev/null | grep _LP64 both show #define __LP64__ 1 So XeTeX on the Mac is a 32-bit only application.Am 03.05.2010 um 15:02 schrieb Jonathan Kew: > On 3 May 2010, at 13:47, Stephen Moye wrote: > >> I got the microtype version of xetex, and the build process seemed >> to go well until the very last few lines. Is this a fatal error? > > Well, it prevented the compilation finishing, so you got no > binary.... that seems fairly fatal! :) > >> If so, how do I fix it? >> >> %%==%% >> >> sers/sgm/xetex/texk/web2c/xetexdir/XeTeXLayoutInterface.cpp:867: >> error: ‘ATSUGetAttribute’ was not declared in this scope >> /Users/sgm/xetex/texk/web2c/xetexdir/XeTeXLayoutInterface.cpp:869: >> error: ‘FMGetATSFontRefFromFont’ was not declared in this scope >> make: *** [libxetex_a-XeTeXLayoutInterface.o] Error 1 >> + ls -l /Users/sgm/xetex/build-xetex/texk/web2c/xetex >> ls: /Users/sgm/xetex/build-xetex/texk/web2c/xetex: No such file or >> directory >> > > I'm guessing that you're building on a Snow Leopard system, and so > the Apple tools are defaulting to a 64-bit build, which is not > supported for xetex on OS X. > > If that's the case, try the following: > > export SDK_ROOT=/Developer/SDKs/MacOSX10.5.sdk/ > export CC="gcc-4.0" > export CXX="g++-4.0" > sh build-xetex.sh > > and see if that works better.
The 10.6 SDK has the following: * ATSUGetAttribute() *** DEPRECATED *** * * Deprecated: * Use CTFontDescriptorCopyAttribute instead. * * Summary: * Obtains a single attribute value for a style object. [...] * * Availability: * Mac OS X: in version 10.0 and later in ApplicationServices.framework [32-bit only] but deprecated in 10.6 * CarbonLib: in CarbonLib 1.0 and later * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later CTFontDescriptorCopyAttribute is available in 10.5 and later. AxelAm 08.05.2010 um 22:57 schrieb Peter Dyballa: > I ran into the same problem trying to compile an Universal Binary for 32- and 64-bit architectures on Leopard. The function ATSUGetAttribute is in /Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/Headers/ATSUnicodeObjects.h inside a '#if !__LP64__' clause and has this documentation: > > * Availability: > * Mac OS X: in version 10.0 and later in ApplicationServices.framework [32-bit only] > * CarbonLib: in CarbonLib 1.0 and later > * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
As has been stated in the past, 64-bit builds are not supported on OS X, because the 64-bit frameworks do not support some of the APIs that xetex uses. The solution to this will involve a move from ATSUI to Core Text as the API used for native AAT font handling. I did this on an experimental basis some time ago, when Leopard was in beta (and more recently made the equivalent migration in Firefox, as it happens), so it's definitely workable, it just needs to actually be completed. And such a version will no longer run on 10.3.9 or 10.4, so there's a price to pay for moving to the newer APIs. JK
The microtype/HZ enhanced version already does not compile with Tiger and Jaguar support: the functions CGFontGetGlyphWithGlyphName and CGFontCopyGlyphNameForGlyph are both Leopards only. They are used in XeTeX_mac.c: 495 if (&CGFontGetGlyphWithGlyphName == NULL) 509 rval = CGFontGetGlyphWithGlyphName(cgfont, glyphname); 565 if (&CGFontCopyGlyphNameForGlyph == NULL) 574 CFStringRef glyphname = CGFontCopyGlyphNameForGlyph(cgfont, gid);
Hi,Is there any patch generated from your previous work? - JiangOn Mon, May 10, 2010 at 7:04 PM, Jonathan Kew wrote: > As has been stated in the past, 64-bit builds are not supported on OS X, because the 64-bit frameworks do not support some of the APIs that xetex uses. > > The solution to this will involve a move from ATSUI to Core Text as the API used for native AAT font handling. I did this on an experimental basis some time ago, when Leopard was in beta (and more recently made the equivalent migration in Firefox, as it happens), so it's definitely workable, it just needs to actually be completed. And such a version will no longer run on 10.3.9 or 10.4, so there's a price to pay for moving to the newer APIs.
Here's another build issue: I've run into the error that was reported and discussed here: http://tug.org/pipermail/tlbuild/2010q2/00137... while trying to build on Ubuntu 9.10 (gcc 4.4.1). That is, compile ends with this error: LETypes.h:237: error: ‘UChar’ does not name a type It doesn't look as if a resolution of the problem was reported in that thread; has there been a fix or workaround that anyone knows of? Peter