[RFC]: Breaking out fontconfig and freetype into seperate packages

Harold L Hunt II huntharo@msu.edu
Tue Sep 16 22:18:00 GMT 2003


Nicholas,

I was wondering how fontconfig and freetype2 were coming along?

I have used the following two suggestions in my build for Cygwin 1.5.4:

 > Ditch -DNO_ALLOCA and replace with -DINCLUDE_ALLOCA_H for
 > AllocateLocalDefines.
 >
 > Ditch "-DUSE_XWCHAR_STRING -DUSE_XMBTOWC" and use "-DHAS_WCHAR_H
 > -DHAS_WCTYPE_H -DHAS_ISW_FUNCS -DNO_WIDEC_H" for XawI18nDefines.


Both of these worked flawlessly.

As a side note, I am also now using Cygwin's expat, rather than the 
version distributed with XFree86.  I would like to start using a generic 
fontconfig and freetype2 as well.

Let me know if you are just too busy to do this now... then I will know 
not to hold my breath waiting.


Thanks for contributing,

Harold


Nicholas Wourms wrote:

> Harold L Hunt II wrote:
> 
>> Nicholas,
>>
>> Can you explain to me what fontconfig and freetype2 are, specifically?
> 
> 
> Freetype2, quoting the homepage [1]:
>      "FreeType 2 is a software font engine that is designed to be small,
>       efficient, highly customizable and portable while capable of
>       producing high-quality output (glyph images)."
>       ...
>       "Note that FreeType2 is a font service and doesn't provide APIs
>        to perform higher-level features, like text layout or graphics
>        processing (e.g. colored text rendering, "hollowing", etc..).
>        However, it greatly simplifies these tasks by providing a simple,
>        easy to use and uniform interface to access the content of font
>        files."
> 
> In other words, freetype2 provides the generic API for reading and 
> preprocessing font files.  It also provides the core engine for certain 
> font-related features (such as hinting, anti-aliasing, & greater 
> multibyte glyph capabilities).  It currently supports:
>      *TrueType fonts (and collections)
>      *Adobe Type 1 fonts
>      *CID-keyed Type 1 fonts
>      *CFF fonts
>      *OpenType fonts (both TrueType and CFF variants)
>      *SFNT-based bitmap fonts
>      *X11 PCF fonts
>      *Windows FNT fonts
>      *BDF fonts (including anti-aliased ones)
>      *PFR fonts
>      *Adobe Type42 fonts (limited support)
> 
> Freetype1 is an older version of freetype2 and is NOT API source or 
> binary compatible with freetype2.  Some applications still depend on it 
> at compile-time, but I don't think XFree86 still does.  Most notable is 
> the fact that its library is libttf* as opposed to libfreetype* in 
> freetype2.
> 
> Fontconfig is a library for configuring and customizing font access. It 
> is the middleware between freetype2 and Xft.  But it also provides 
> equivalent interfaces between freetype2 and other applications.  From 
> the webpage[2]:
> 
> "Fontconfig can:
> 
> *discover new fonts when installed automatically, removing a common
>  source of configuration problems.
> *perform font name substitution, so that appropriate alternative fonts
>  can be selected if fonts are missing.
> *identify the set of fonts required to completely cover a set of
>  languages.
> *have GUI configuration tools built as it uses an XML-based
>  configuration file (though with autodiscovery, we believe this need is
>  minimized).
> *efficiently and quickly find the fonts you need among the set of fonts
>  you have installed, even if you have installed thousands of fonts,
>  while minimizing memory usage.
> *be used in concert with the X Render Extension and FreeType to
>  implement high quality, anti-aliased and subpixel rendered text on a
>  display.
> 
> Fontconfig does not:
> 
> *render the fonts themselves (this is left to FreeType or other
>  rendering mechanisms)
> *depend on the X Window System in any fashion, so that printer only
>  applications do not have such dependencies."
> 
> If you are interested, the XFree86 backend (Xft2) is described in detail 
> on the same page.
> 
>> Do they consist of a couple libraries and some executables?
>> How many files are involved in a package that contains them?
> 
> 
> freetype1, freetype2, & fontconfig each consist of some headers, some 
> shared data, some i18n/l10n crap, and a few utility executables.
> 
> For instance, redhat has the following packages in Shrike(RH9):
> [Note that the freetype1 stuff is included in the freetype2 packages]
> 
> freetype 2.1.3-6:
> -----------------
> /usr/lib/libfreetype.so.6
> /usr/lib/libfreetype.so.6.3.2
> /usr/lib/libttf.so.2
> /usr/lib/libttf.so.2.3.0
> /usr/share/doc/freetype-2.1.3
> /usr/share/doc/freetype-2.1.3/ChangeLog
> /usr/share/doc/freetype-2.1.3/README
> /usr/share/doc/freetype-2.1.3/README.UNX
> /usr/share/doc/freetype-2.1.3/announce
> /usr/share/doc/freetype-2.1.3/docs
> /usr/share/doc/freetype-2.1.3/docs/BUGS
> /usr/share/doc/freetype-2.1.3/docs/BUILD
> /usr/share/doc/freetype-2.1.3/docs/CHANGES
> /usr/share/doc/freetype-2.1.3/docs/DEBUG.TXT
> /usr/share/doc/freetype-2.1.3/docs/FTL.txt
> /usr/share/doc/freetype-2.1.3/docs/GPL.txt
> /usr/share/doc/freetype-2.1.3/docs/INSTALL
> /usr/share/doc/freetype-2.1.3/docs/PATENTS
> /usr/share/doc/freetype-2.1.3/docs/TODO
> /usr/share/doc/freetype-2.1.3/docs/VERSION.DLL
> /usr/share/doc/freetype-2.1.3/docs/cache.html
> /usr/share/doc/freetype-2.1.3/docs/design
> /usr/share/doc/freetype-2.1.3/docs/design/basic-design.png
> /usr/share/doc/freetype-2.1.3/docs/design/design-1.html
> /usr/share/doc/freetype-2.1.3/docs/design/design-2.html
> /usr/share/doc/freetype-2.1.3/docs/design/design-3.html
> /usr/share/doc/freetype-2.1.3/docs/design/design-4.html
> /usr/share/doc/freetype-2.1.3/docs/design/design-5.html
> /usr/share/doc/freetype-2.1.3/docs/design/design-6.html
> /usr/share/doc/freetype-2.1.3/docs/design/detailed-design.png
> /usr/share/doc/freetype-2.1.3/docs/design/hierarchy-example.png
> /usr/share/doc/freetype-2.1.3/docs/design/index.html
> /usr/share/doc/freetype-2.1.3/docs/design/library-model.png
> /usr/share/doc/freetype-2.1.3/docs/design/modules.html
> /usr/share/doc/freetype-2.1.3/docs/design/simple-model.png
> /usr/share/doc/freetype-2.1.3/docs/freetype2
> /usr/share/doc/freetype-2.1.3/docs/freetype2/build-system.html
> /usr/share/doc/freetype-2.1.3/docs/freetype2/demo-programs.png
> /usr/share/doc/freetype-2.1.3/docs/freetype2/drivers-list.png
> /usr/share/doc/freetype-2.1.3/docs/freetype2/index.html
> /usr/share/doc/freetype-2.1.3/docs/freetype2/io-frames.html
> /usr/share/doc/freetype-2.1.3/docs/freetype2/library-compilation.png
> /usr/share/doc/freetype-2.1.3/docs/freetype2/logo1.png
> /usr/share/doc/freetype-2.1.3/docs/freetype2/platform-detection.png
> /usr/share/doc/freetype-2.1.3/docs/freetype2/system-interface.html
> /usr/share/doc/freetype-2.1.3/docs/freetype2/tutorial.html
> /usr/share/doc/freetype-2.1.3/docs/ft2faq.html
> /usr/share/doc/freetype-2.1.3/docs/glyphs
> /usr/share/doc/freetype-2.1.3/docs/glyphs/Image1.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/Image2.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/Image3.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/Image4.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/bbox1.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/bbox2.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/body_comparison.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/bravo_kerned.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/bravo_unkerned.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/clipping.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/down_flow.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/glyphs-1.html
> /usr/share/doc/freetype-2.1.3/docs/glyphs/glyphs-2.html
> /usr/share/doc/freetype-2.1.3/docs/glyphs/glyphs-3.html
> /usr/share/doc/freetype-2.1.3/docs/glyphs/glyphs-4.html
> /usr/share/doc/freetype-2.1.3/docs/glyphs/glyphs-5.html
> /usr/share/doc/freetype-2.1.3/docs/glyphs/glyphs-6.html
> /usr/share/doc/freetype-2.1.3/docs/glyphs/glyphs-7.html
> /usr/share/doc/freetype-2.1.3/docs/glyphs/grid_1.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/index.html
> /usr/share/doc/freetype-2.1.3/docs/glyphs/index2.htm
> /usr/share/doc/freetype-2.1.3/docs/glyphs/points_conic.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/points_conic2.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/points_cubic.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/points_segment.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/twlewis1.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/twlewis2.png
> /usr/share/doc/freetype-2.1.3/docs/glyphs/up_flow.png
> /usr/share/doc/freetype-2.1.3/docs/license.txt
> /usr/share/doc/freetype-2.1.3/docs/modules.txt
> /usr/share/doc/freetype-2.1.3/docs/readme.vms
> /usr/share/doc/freetype-2.1.3/docs/reference
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-base_interface.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-basic_types.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-bdf_fonts.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-cache_subsystem.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-computations.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-glyph_management.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-header_file_macros.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-index.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-list_processing.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-mac_specific.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-module_management.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-multiple_masters.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-outline_processing.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-pfr_fonts.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-raster.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-sfnt_names.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-sizes_management.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-system_interface.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-toc.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-truetype_tables.html
> /usr/share/doc/freetype-2.1.3/docs/reference/ft2-type1_tables.html
> /usr/share/doc/freetype-2.1.3/docs/tutorial
> /usr/share/doc/freetype-2.1.3/docs/tutorial/metrics.png
> /usr/share/doc/freetype-2.1.3/docs/tutorial/metrics2.png
> /usr/share/doc/freetype-2.1.3/docs/tutorial/step1.html
> /usr/share/doc/freetype-2.1.3/docs/tutorial/step2.html
> /usr/share/locale/cs/LC_MESSAGES/freetype.mo
> /usr/share/locale/de/LC_MESSAGES/freetype.mo
> /usr/share/locale/es/LC_MESSAGES/freetype.mo
> /usr/share/locale/fr/LC_MESSAGES/freetype.mo
> /usr/share/locale/nl/LC_MESSAGES/freetype.mo
> 
> freetype-devel 2.1.3-6:
> -----------------------
> /usr/bin/freetype-config
> /usr/include/freetype1
> /usr/include/freetype1/freetype
> /usr/include/freetype1/freetype/freetype.h
> /usr/include/freetype1/freetype/fterrid.h
> /usr/include/freetype1/freetype/ftnameid.h
> /usr/include/freetype1/freetype/ftxcmap.h
> /usr/include/freetype1/freetype/ftxerr18.h
> /usr/include/freetype1/freetype/ftxgasp.h
> /usr/include/freetype1/freetype/ftxgdef.h
> /usr/include/freetype1/freetype/ftxgpos.h
> /usr/include/freetype1/freetype/ftxgsub.h
> /usr/include/freetype1/freetype/ftxkern.h
> /usr/include/freetype1/freetype/ftxopen.h
> /usr/include/freetype1/freetype/ftxpost.h
> /usr/include/freetype1/freetype/ftxsbit.h
> /usr/include/freetype1/freetype/ftxwidth.h
> /usr/include/freetype2
> /usr/include/freetype2/freetype
> /usr/include/freetype2/freetype/cache
> /usr/include/freetype2/freetype/cache/ftccache.h
> /usr/include/freetype2/freetype/cache/ftccmap.h
> /usr/include/freetype2/freetype/cache/ftcglyph.h
> /usr/include/freetype2/freetype/cache/ftcimage.h
> /usr/include/freetype2/freetype/cache/ftcmanag.h
> /usr/include/freetype2/freetype/cache/ftcsbits.h
> /usr/include/freetype2/freetype/cache/ftlru.h
> /usr/include/freetype2/freetype/config
> /usr/include/freetype2/freetype/config/ftconfig.h
> /usr/include/freetype2/freetype/config/ftheader.h
> /usr/include/freetype2/freetype/config/ftmodule.h
> /usr/include/freetype2/freetype/config/ftoption.h
> /usr/include/freetype2/freetype/config/ftstdlib.h
> /usr/include/freetype2/freetype/freetype.h
> /usr/include/freetype2/freetype/ftbbox.h
> /usr/include/freetype2/freetype/ftbdf.h
> /usr/include/freetype2/freetype/ftcache.h
> /usr/include/freetype2/freetype/ftchapters.h
> /usr/include/freetype2/freetype/fterrdef.h
> /usr/include/freetype2/freetype/fterrors.h
> /usr/include/freetype2/freetype/ftglyph.h
> /usr/include/freetype2/freetype/ftgzip.h
> /usr/include/freetype2/freetype/ftimage.h
> /usr/include/freetype2/freetype/ftincrem.h
> /usr/include/freetype2/freetype/ftlist.h
> /usr/include/freetype2/freetype/ftmac.h
> /usr/include/freetype2/freetype/ftmm.h
> /usr/include/freetype2/freetype/ftmoderr.h
> /usr/include/freetype2/freetype/ftmodule.h
> /usr/include/freetype2/freetype/ftoutln.h
> /usr/include/freetype2/freetype/ftpfr.h
> /usr/include/freetype2/freetype/ftrender.h
> /usr/include/freetype2/freetype/ftsizes.h
> /usr/include/freetype2/freetype/ftsnames.h
> /usr/include/freetype2/freetype/ftstroker.h
> /usr/include/freetype2/freetype/ftsynth.h
> /usr/include/freetype2/freetype/ftsysio.h
> /usr/include/freetype2/freetype/ftsysmem.h
> /usr/include/freetype2/freetype/ftsystem.h
> /usr/include/freetype2/freetype/fttrigon.h
> /usr/include/freetype2/freetype/fttypes.h
> /usr/include/freetype2/freetype/ftxf86.h
> /usr/include/freetype2/freetype/internal
> /usr/include/freetype2/freetype/internal/autohint.h
> /usr/include/freetype2/freetype/internal/bdftypes.h
> /usr/include/freetype2/freetype/internal/cfftypes.h
> /usr/include/freetype2/freetype/internal/fnttypes.h
> /usr/include/freetype2/freetype/internal/ftcalc.h
> /usr/include/freetype2/freetype/internal/ftcore.h
> /usr/include/freetype2/freetype/internal/ftdebug.h
> /usr/include/freetype2/freetype/internal/ftdriver.h
> /usr/include/freetype2/freetype/internal/ftexcept.h
> /usr/include/freetype2/freetype/internal/ftgloadr.h
> /usr/include/freetype2/freetype/internal/fthash.h
> /usr/include/freetype2/freetype/internal/ftmemory.h
> /usr/include/freetype2/freetype/internal/ftobject.h
> /usr/include/freetype2/freetype/internal/ftobjs.h
> /usr/include/freetype2/freetype/internal/ftstream.h
> /usr/include/freetype2/freetype/internal/fttrace.h
> /usr/include/freetype2/freetype/internal/internal.h
> /usr/include/freetype2/freetype/internal/pcftypes.h
> /usr/include/freetype2/freetype/internal/pfr.h
> /usr/include/freetype2/freetype/internal/psaux.h
> /usr/include/freetype2/freetype/internal/pshints.h
> /usr/include/freetype2/freetype/internal/psnames.h
> /usr/include/freetype2/freetype/internal/sfnt.h
> /usr/include/freetype2/freetype/internal/t1types.h
> /usr/include/freetype2/freetype/internal/t42types.h
> /usr/include/freetype2/freetype/internal/tttypes.h
> /usr/include/freetype2/freetype/t1tables.h
> /usr/include/freetype2/freetype/ttnameid.h
> /usr/include/freetype2/freetype/tttables.h
> /usr/include/freetype2/freetype/tttags.h
> /usr/include/ft2build.h
> /usr/lib/libfreetype.a
> /usr/lib/libfreetype.la
> /usr/lib/libfreetype.so
> /usr/lib/libttf.a
> /usr/lib/libttf.la
> /usr/lib/libttf.so
> /usr/share/aclocal/freetype2.m4
> 
> freetype-utils 2.1.3-6:
> -----------------------
> /usr/bin/fterror
> /usr/bin/ftmetric
> /usr/bin/ftsbit
> /usr/bin/ftstrpnm
> 
> freetype-demos 2.1.3-6:
> -----------------------
> /usr/bin/ftdump
> /usr/bin/ftlint
> /usr/bin/ftmemchk
> /usr/bin/ftmulti
> /usr/bin/ftstring
> /usr/bin/fttimer
> /usr/bin/ftview
> 
> fontconfig 2.1-9:
> -----------------
> /etc/fonts
> /etc/fonts/fonts.conf
> /etc/fonts/fonts.dtd
> /usr/bin/fc-cache
> /usr/bin/fc-list
> /usr/lib/libfontconfig.so.1
> /usr/lib/libfontconfig.so.1.0
> /usr/share/doc/fontconfig-2.1
> /usr/share/doc/fontconfig-2.1/AUTHORS
> /usr/share/doc/fontconfig-2.1/COPYING
> /usr/share/doc/fontconfig-2.1/README
> /usr/share/man/man3/fontconfig.3.gz
> 
> fontconfig-devel 2.1-9:
> -----------------------
> /usr/bin/fontconfig-config
> /usr/include/fontconfig
> /usr/include/fontconfig/fcfreetype.h
> /usr/include/fontconfig/fcprivate.h
> /usr/include/fontconfig/fontconfig.h
> /usr/lib/libfontconfig.so
> /usr/lib/pkgconfig
> /usr/lib/pkgconfig/fontconfig.pc
> 
> However, as a disciple of the packaging gospel according to Charles 
> Wilson, I will be sticking to the system he uses.  This is how I've 
> tentatively split the packages:
> 
> freetype1         - contains core exe's and/or scripts + runtime shared
>                     data + manpages + documentation
> freetype1-contrib - contains extra/non-essential exe's and/or scripts
> freetype1-devel   - contains headers + static&import&libtool archives
>                     + *-config scripts + pkgconfig data
> libttf2           - contains the single runtime dll
> -------------------
> freetype2         - contains core exe's and/or scripts + runtime shared
>                     data + manpages + documentation
> freetype2-contrib - contains extra/non-essential exe's and/or scripts
> freetype2-devel   - contains headers + static&import&libtool archives
>                     + *-config scripts + pkgconfig data
> libfreetype(n)    - contains the single runtime dll (n being the libtool
>                     versioned dll identifier)
> -------------------
> fontconfig        - contains core exe's and/or scripts + runtime shared
>                     data + manpages + documentation
> fontconfig-devel  - contains headers + static&import&libtool archives
>                     + *-config scripts + pkgconfig data
> libfontconfig(n)  - contains the single runtime dll (n being the libtool
>                     versioned dll identifier)
> 
> In addition, I plan to include ttfmkdir, which assists in generating 
> font config files specifically for TTF's.
> 
>> Are any of their libraries linked to from within the standard XFree86 
>> distribution?
> 
> 
> Yes, but the sources are actually contained in xc/extra/freetype2 and 
> xc/extra/fontconfig and there are Imake directives to automagically 
> handle external versions as opposed to internal versions.  This is how 
> the aforementioned vendors do it, by adding the following directives to 
> host.def (or whatever you use for xcompiling)*:
> 
> HasFreetype2  YES
> HasFontconfig YES
> HasExpat      YES
> HasZlib       YES
> 
> The Imake system will look in the standard location under /usr for these 
> libs, so no additional fuss is necessary.  It should be fairly automated 
> from there.  Do make sure to include these directives in the default 
> configuration when installed.
> 
> I also plan to keep abreast of any vendor and/or XFree86 patches to 
> these libs, so there ought to be no negative impact on how XFree86 behaves.
> 
> *Note that I haven't inspected your tree to see what directives you are 
> using, so I might be redundant in some cases.
> 
>> The reason I ask these questions is that I am all for splitting out 
>> fontconfig and freetype2, as long as I can cleanly exclude them from 
>> the packaging scripts and if I don't have to do too much recompiling 
>> when new fontconfig/freetype2 packages are released.
> 
> 
> No problem, I understand.  I anticipate that the installation size will 
> not or only slightly exceed the size for current dependencies.
> I anticipate that the only packages actually required by the core server 
> should be:
> *libfreetype(n)
> *libfontconfig(n)
> 
> If any fonts are installed, then we add to the dependencies (this is 
> because the post-install scripts for the fonts may need to run some of 
> the utilities):
> *freetype2
> *fontconfig
> *ttmkfdir(possibly)
> 
> Finally, I see that the following being dependencies of the XFree86 
> devel package:
> *freetype2-devel
> *fontconfig-devel
> 
> The way the scheme works, even *if* they make horrendous binary 
> incompatible changes to the core libs (thus changing the result of the 
> libtool versioning expression [[CURRENT] - [AGE]]), you'll still be 
> fine.  Since the gospel of packaging according to Chuck dictates that 
> prior runtime library versions must still be available, you need not 
> recompile against the new version until YOU are ready to.  Think 
> ncurses.  Of course, if some incompatibility does slip in without a 
> versioning bump, I can always manually bump it.
> 
> That being said, you'll initially have to recompile against the new 
> libraries since libtool versioning is slightly more sophisticated then 
> Imake versioning (unfortunately), thus meaning the runtime dlls are 
> probably going to have different numerical suffixes.
> 
> Also, a few vendor patches may need to be applied to the core sources 
> now and in the future if there are critical issues with font 
> readability.  Of course, this is at your discretion and definitely at 
> your convience as to when and if you do it.  I guess we can cross that 
> bridge when we come to it.
> 
> Finally, we might want to dll'ize some X libraries which are currently 
> only built static.  I hope (and pray) that we can nip the libXt problem 
> in order to get a shared libXt.  This is currently what prevents me from 
> releasing a new Xaw3d with working shared libs (static is ok).  Still, I 
> don't anticipate the libXt problem to enter into the scenario I'm 
> proposing now.  Also, I noticed that we could probably change some of 
> the defines when we migrated to 1.5.0, most notably is that the alloca 
> interface is now provided by cygwin and cygwin has much more support for 
> widechars.
> 
> Ditch -DNO_ALLOCA and replace with -DINCLUDE_ALLOCA_H for 
> AllocateLocalDefines.
> 
> Ditch "-DUSE_XWCHAR_STRING -DUSE_XMBTOWC" and use "-DHAS_WCHAR_H 
> -DHAS_WCTYPE_H -DHAS_ISW_FUNCS -DNO_WIDEC_H" for XawI18nDefines.
> 
> I'd willing to do some careful auditing of our current defines to see 
> what else the cygwin dll is providing that we aren't taking advantage 
> of.  Of course, I'll leave that for future discussions.
> 
>> Answer those questions and we can think about it.
>>
> 
> I hope my response was detailed and concise enough to alleviate any 
> fears.  I look forward to further discussion.
> 
> The good news is, that by using the most current of these libraries, 
> most newer versions of our included windowmanagers will support using 
> the truetype fonts found on every Windows box.  Openbox, WindowMaker, 
> and lesstif all have some base support for these libs.  Unfortunately, 
> the older fontconfig distributed with 4.3.0.1 had some pretty notorious 
> issues, but it is too long of a story to get into about why XFree86 is 
> so slow to update (This centers around the whole Keith 
> Packard/XFree86-core falling out).
> 
> Cheers,
> Nicholas
> 
> [1] http://freetype.sourceforge.net/freetype2/index.html#features
> [2] http://fontconfig.org/
> 



More information about the Cygwin-xfree mailing list