summaryrefslogtreecommitdiff
path: root/Build/source/libs/freetype/freetype-1.5/docs/FAQ
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/freetype/freetype-1.5/docs/FAQ')
-rw-r--r--Build/source/libs/freetype/freetype-1.5/docs/FAQ843
1 files changed, 0 insertions, 843 deletions
diff --git a/Build/source/libs/freetype/freetype-1.5/docs/FAQ b/Build/source/libs/freetype/freetype-1.5/docs/FAQ
deleted file mode 100644
index 3e80f2b69ba..00000000000
--- a/Build/source/libs/freetype/freetype-1.5/docs/FAQ
+++ /dev/null
@@ -1,843 +0,0 @@
- FreeType 1 User FAQ
-
---------------------------------------------------------------------
-
-
- Table of contents
-
-
-1. How do I compile the test programs?
-
-2. What are the test programs?
-
-3. How do I use them?
-
-4. How do I only compile the FreeType library?
-
-5. The library compiles fine on my system, unfortunately it seems
- the test programs won't. What can I do?
-
-6. I did compile the test programs `out of the box' without
- problems, but the results are ugly. What did I have wrong?
-
-7. What is FreeType, and what is it not?
-
-8. Can FreeType be ported to other platforms?
-
-9. My TrueType font only works on a Mac/in Windows. Will I be able
- to use it with FreeType?
-
-10. What are the most common character mappings?
-
-11. How do I render text with FreeType?
-
-12. How do I render rotated/slanted text with FreeType?
-
-13. How do I compute a glyph bitmap's dimensions?
-
-14. Why is text rendering so slow? Does FreeType cache glyphs?
-
-15. Do you always render the same glyphs as Windows or the Mac?
-
-16. The program `ftlint' reports errors with one of my fonts, though
- it works perfectly under Windows. What does this mean?
-
-17. What does the `fttimer' test program benchmarks?
-
-18. Is it possible to perform styling (like oblique, italic, bold,
- underline, etc.) with FreeType?
-
-19. When does glyph hinting takes place? Is it when the glyph is
- loaded, or when it is converted to a bitmap/pixmap?
-
-20. Which is the best, caching outlines or bitmaps?
-
-21. Can I open OpenType and/or TrueType GX fonts with FreeType?
-
-22. How can I access additional TrueType tables that FreeType
- doesn't support?
-
-23. When will I be able to use FreeType to display TrueType fonts in
- X11, Wine, or OS/2, or even other systems?
-
-24. What does the `free' in FreeType really means?
-
-25. Does FreeType support threads? Is it re-entrant?
-
-26. Does FreeType support `foreign languages'?
-
-27. I'm using fractional char sizes, but the glyphs stay at the same
- integer size. Why?
-
-28. Hinting doesn't work at very small sizes. Why?
-
---------------------------------------------------------------------
-
-1. How do I compile the test programs?
-
- Detailed compilation steps are given in the `freetype/INSTALL'
- file, as well as system and compiler specific hints in the
- `freetype/howto' directory. What follows is a _very_ simple
- guide:
-
- For Unix:
-
- Do the following on the prompt while in the base directory of
- the FreeType package:
-
- % ./configure
- % make
- % make install
-
- This will build and install the library (shared, if supported)
- together with the test programs. Say `./configure --help' to
- see the available configuring options.
-
- This should work with any ANSI C compiler.
-
- For other platforms:
-
- Go to the `test' directory. Look at one of the makefiles
- located in the `arch/<system>' directory, and use the
- appropriate makefile from there.
-
- For example:
-
- make -f arch/msdos/makefile.gcc (DJGPP or emx)
- wmake -f=arch\msdos\makefile.wat (Watcom DOS)
- nmake -f arch\os2\makefile.icc (Visual Age OS/2)
- make -f arch/amigaos/makefile.gcc (GCC Amiga)
-
- This will compile both the library and the test programs.
-
-
---------------------------------------------------------------------
-
-2. What are the test programs?
-
- The test programs are simple sources that `show off' the FreeType
- library. They are located in the `test' directory. They make use
- of a small graphics sub-system which is able to display bitmaps
- and pixmaps on a variety of platforms through the use of
- system-specific `drivers'.
-
- The test programs are:
-
- ftdump: A simple TTF information dumper. Also prints the
- memory used by each opened font file with FreeType.
- Doesn't use the graphics sub-system.
-
- ftlint: A simple TrueType bytecode verifier. It simply hints
- all glyphs of one or more font files at a given size
- and reports errors. Doesn't use the graphics
- sub-system.
-
- ftview: A simple font viewer. Displays all glyphs in a font
- file in a window.
-
- ftstring: Renders a simple string to the screen. Demonstrates
- how to produce text with FreeType.
-
- fttimer: A simple benchmark, used to profile the scan-line
- conversion routines (and only them). Supports also
- display.
-
- ftstrpnm: A version of `ftstring' which saves a bit/pixmap to a
- PNM file rather than to the screen. No graphics
- sub-system needed.
-
- ftzoom: A simple glyph viewer, useful to view, zoom and rotate
- individual glyphs in a font file.
-
- fterror: This program demonstrates how to use the ftxerr18
- extension. Note that internationalized strings will
- be available on some platforms only (e.g. Linux).
-
- ftmetric: A simple metric/glyph dumper. No graphics sub-system
- needed.
-
- ftsbit: Displays data about embedded bitmaps in a TrueType
- font.
-
- ftstrtto: Renders a string to screen, using TrueType Open
- features.
-
- NOTE: The file `ftdebug.c' isn't part of the test suite. It is
- used only by the developers team to debug the engine at a
- higher level. It won't work with a standard library
- compile.
-
-
- The tiny graphics subsystem is defined in the following files:
-
- gmain.h/gmain.c: The subsystem's main body/interface.
-
- gevents.h: The definition of events defined for the
- subsystem
-
- gdriver.h: The generic interface of all system-specific
- drivers.
-
- System-specific drivers are in the `test/arch/<system>'
- directories, like:
-
- test/arch/msdos/gfs_dos.c Full-Screen DOS driver
- test/arch/os2/gpm_os2.c PM (Windowed) OS/2 driver
- test/arch/unix/gwin_x11.c X11 Windowed driver
-
- etc.
-
-
---------------------------------------------------------------------
-
-3. How do I use them?
-
- Please read the file freetype/README for a full description.
-
-
---------------------------------------------------------------------
-
-4. How do I only compile the FreeType library?
-
- For Unix:
-
- Do a `configure' run as described in section 1. Then change to
- the lib subdirectory and say `make' and `make install'.
-
- For other platforms:
-
- Go to the `lib' directory. Look at one of the makefiles located
- in the `arch/<system>' directory, and use it from `lib'.
-
- For example:
-
- make -f arch/msdos/makefile.gcc (DJGPP or emx)
- wmake -f=arch\msdos\makefile.wat (Watcom DOS)
- nmake -f arch\os2\makefile.icc (Visual Age OS/2)
- make -f arch/amigaos/makefile.gcc (GCC Amiga)
-
- The library is pure ANSI C and doesn't depend on any
- system-specific package. You do not need gcc to compile it.
-
-
---------------------------------------------------------------------
-
-5. The library compiles fine on my system, unfortunately it seems
- the test programs won't. What can I do?
-
- As said before, some test programs rely on a small graphics
- sub-system to display the bitmaps and pixmaps produced by the
- library. The following systems are currently supported:
-
- DOS Full-Screen Note that the windowed graphics
- Amiga Full-Screen driver are very 'basic', they do
- Amiga Windowed not provide menus, dialog boxes,
- OS/2 Full-Screen etc. Rather, they provide one
- OS/2 Windowed windowed bitmap/pixmap and translate
- X11 Windowed events to the ones defined in
- Win32 Windowed `test/gevents'.
-
- If you want to add support to your system, you should write a new
- graphics driver. To do that, read the file `test/gdriver.h' which
- contains the driver generic interface, then browse the drivers
- that are already provided.
-
- The graphics drivers are located in the `test/arch/<system>'
- directories. They're not part of the library proper.
-
- IMPORTANT NOTE:
-
- You can also directly link the library to your own application
- and render glyphs directly into your own bitmaps with very few
- efforts.
-
-
---------------------------------------------------------------------
-
-6. I did compile the test programs `out of the box' without
- problems, but the results are ugly. What did I have wrong?
-
- Well, chances are you built the `patents-free' version of the
- Freetype library, which does not enable the bytecode interpreter,
- which means that at small to normal point sizes, the glyphs are
- distorded, hence ugly.
-
- Apple Computer owns three patents that are related to the
- processing of glyph outlines within TrueType fonts. This process
- if also called hinting or grid-fitting and is used to enhance the
- quality of glyphs at small bitmap sizes.
-
- When the work with Freetype began, we were not aware of these
- patents. Since version 1.3, however, we have provided a way to
- build a patent-compliant version of the library, which completely
- disables the TrueType interpreter (quite a rude way). If the
- result is usable with big point sizes, or for special tasks such
- as font converting, it results about useless for normal screen
- reading. Beginning with version 1.5, this behaviour is even by
- default, so this is what you get if you compile `out of the box'.
-
- However, the source code for the bytecode interpreter is still
- available and can be activated at compile time, for those who
- want to use it anyway (because they purchased a license from
- Apple, or because they are in a country where the patents do not
- apply, etc.). For details, check the `freetype/INSTALL' file.
-
-
---------------------------------------------------------------------
-
-7. What is FreeType, and what is it not?
-
- FreeType is a rather low-level font engine. It has been designed
- primarily to be the basis of several font servers, for very
- different systems which all have their own metrics and graphics
- models. This means that it focuses on the following points:
-
- - Opening and loading font files in memory.
-
- - Giving access to most important font properties and TrueType
- tables.
-
- - Providing a simple way to translate system-specific character
- codes into glyph indexes, according to the TrueType `cmap'
- specification.
-
- - Loading and rendering _individual_ glyphs as nicely as possible
- (either in outlines, bitmaps, or pixmaps), and performing
- excellent hinting.
-
- It isn't a high-level text rendering library, and many tasks will
- have to be performed by higher level layers like:
-
- - glyph caching (outlines and/or maps)
- - text rendering
- - justification, kerning
- - font mapping
- - rotated/slanted text
-
- However, its API provides many functions that ease these
- operations considerably:
-
- - Glyph outlines can be copied and transformed easily with the API
- functions, then rendered to bitmaps or pixmaps with FreeType's
- scan-line converter, which is very fast.
-
- - The glyph loader places the outlines in order to ease the
- process of text rendering. See the documentation file named
- `glyphs.htm' (resp. `glyphs.txt') or `ftstring's source for more
- details.
-
- - The engine gives you access to several TrueType tables that can
- be processed by your application to provide more powerful
- rendering (e.g. kerning).
-
- - It is possible, and rather simple, to write separately
- compilable extensions to the engine to access other TrueType
- tables that are not supported by the engine in this release.
- This can be handy if one wants to access data in TrueType GX or
- OpenType fonts (as these formats comply to the TrueType `sfnt'
- file storage format, they can be opened by the FreeType engine
- as a normal TrueType file).
-
-
---------------------------------------------------------------------
-
-8. Can FreeType be ported to other platforms?
-
- FreeType is written in pure ANSI C and should compile well on all
- 16, 32, and 64 bit processors. Note, however, that the 16-bit
- port requires a large memory model. Furthermore, some tables
- found in TrueType programs may exceed 64 kBytes, which calls for
- the so-called huge memory model. This is really true for CJK and
- Unicode fonts. Nearly all others should work fine with the large
- model.
-
- It does not support some very exotic platforms though, like a
- 32-bit only processor (where the only word size is 32-bit, even
- for chars and shorts). However, nothing prevents you to test it
- by yourself...
-
- The memory management and file access routines have been gathered
- in two components, namely `ttmemory' and `ttfile', which can be
- specialized for a specific system. Their standard version, found
- in the `lib' directory, uses simply the ANSI libc. However,
- examples are given of alternative file components for OS/2 and
- Unix in:
-
- lib/arch/os2/ttfile.c
- (accessing the low-level OS/2 file API directly)
-
- lib/arch/unix/ttmmap.c
- (using memory-mapped files for improved access)
-
- You would certainly need to rewrite these components if you intend
- to use FreeType in an embedded system.
-
-
---------------------------------------------------------------------
-
-9. My TrueType font only works on a Mac/in Windows. Will I be able
- to use it with FreeType?
-
- Short Answer: YES, but be cautious!
-
- If you have read section 9 or 25, you know that a font file might
- have different charMaps entries, used to translate character codes
- to glyph indexes. The problem of most `system-specific' TrueType
- fonts (sigh) is that they only contain one single mapping, like
- Apple Roman, or Windows Glyph List, making it usable only on the
- platform it was `designed' for.
-
- The test program `ftdump' can be used to display the character
- encodings supported in a font file. Most fonts come with Apple
- Roman and Windows Unicode.
-
- FreeType can use every charmap found in a font file, so it is up
- to your application to choose the one that fits its task best. If
- you use a font which only provides an Apple Roman charcode, you'll
- probably have a hard time rendering Unicode strings without an
- additional translation.
-
- Note that the tool `ttf_edit' can actually add missing cmaps to a
- TrueType font file. More info on this can be found at:
-
- http://www.truetex.com
-
- Another possibility is to use Just van Rossum's TTX compiler
- (still beta) which can convert a TrueType font into an XML
- description and vice versa; it can be found at
-
- http://www.letterror.com/ttx/
- http://sourceforge.net/projects/fonttools/
-
-
---------------------------------------------------------------------
-
-10. What are the most common character mappings?
-
- If you don't want to read the TrueType specification, here is some
- information about the most used char maps. Each map is designed
- by a `platform ID', followed by a platform-specific `encoding ID':
-
- Examples:
-
- 0, 0 : Apple Unicode
- 1, 0 : Apple Roman
- 3, 0 : Windows Symbol
- 3, 1 : Windows Unicode
-
- Windows and Apple Unicode charmaps differ only in internal storage
- layout. Both can be used transparently with FreeType.
-
- Many fonts come also with both Apple Roman and Windows Unicode.
-
-
---------------------------------------------------------------------
-
-11. How do I render text with FreeType?
-
- This is explained with great detail in the glyphs documentation
- file available in both text (glyphs.txt) and HTML (glyphs.htm,
- including schematics).
-
- Text rendering isn't difficult. One can also look at the code for
- `ftstring' or `ftstrtto' to see how it is done.
-
-
---------------------------------------------------------------------
-
-12. How do I render rotated/slanted text with FreeType?
-
- It is possible to transform the outlines returned by the glyph
- loader, hence producing rotated or slanted text. Please read the
- `glyphs' documentation file, which explains this in great detail,
- as well as some other important things.
-
-
---------------------------------------------------------------------
-
-13. How do I compute a glyph bitmap's dimensions?
-
- You should grid-fit its bounding box, then compute its width and
- height. This is explained in the `bitmaps.txt' documentation
- file.
-
-
---------------------------------------------------------------------
-
-14. Why is text rendering so slow?
- Does FreeType cache glyphs?
-
- The FreeType 1 engine doesn't cache anything, be it outlines or
- bitmaps. Hence, a program that renders text by calling the glyph
- loader on each letter is slow.
-
- Because caching cannot be performed in both an _easy_ and
- _portable_ way it is left to the application. Moreover, some
- graphics systems already provide some sort of caching, and it is
- better to take advantage of it rather than re-implementing it.
-
- The `how's and `when's of caching are explained in the `glyphs'
- documentation file. The `bitmaps' documentation file is also a
- good source of information if you intend to render individual
- glyph bitmaps.
-
-
---------------------------------------------------------------------
-
-15. Do you always render the same glyphs as Windows or the Mac?
-
- Short answer: No for rare cases.
-
- There are a lot of technical details, too numerous and lengthy to
- be put here, that prevents the FreeType library from matching 100%
- the glyphs produced by the Windows or Macintosh rasterizers.
-
- This engine is a clean-room implementation, and most of the
- reasons why its development took so much time is the largely
- deficient TrueType specification published by Apple and Microsoft.
- A number of key technical aspects are missing, and we found many
- `undocumented' features in the TrueType bytecode, after several
- months of testing and trying. We are now very satisfied with the
- current quality, though still try to improve it.
-
- The glyph metrics (bearings and advances) also match significantly
- those computed by Windows, or found in the TrueType pre-calc
- tables.
-
- As hinting glyphs also makes use of several rounding operations,
- we will be unable to provide a perfect clone unless we implement
- the exact same computations _and_ rounding errors -- this is
- very unlikely...
-
-
---------------------------------------------------------------------
-
-16. The program `ftlint' reports errors with one of my fonts, though
- it works perfectly under Windows. What does this mean?
-
- Associated to each glyph is a small `program', written in a
- specific bytecode language, which is in charge of hinting the
- glyph's outline to make it perfect on screen as on paper. Some of
- these programs can be broken (e.g., accessing invalid areas of
- memory, performing a divide by zero, etc.), and these are the
- errors that are reported by `ftlint'.
-
- They can also mean a bug in the TrueType bytecode interpreter (or
- more likely an `undocumented' feature we haven't discovered yet),
- but should now be extremely rare.
-
- Surprisingly, even largely distributed fonts can contain broken
- glyph programs. For example:
-
- - antqua.ttf, glyph 163 (MS Office 4.2):
-
- The program tries to access point number 0x127, which is too
- much.
-
- - timesbs, arialbs, courbs (MS Office International):
-
- The back-slanted versions of the MS core fonts produce stack
- overflows in many glyphs, and other oddities. It seems their
- `maximum profile' table is invalid.
-
- - a ton of `free' fonts, apparently designed with mediocre tools.
-
- It seems the Windows TrueType engine doesn't check its arguments
- often, and let all overflows run, possibly writing to critical
- portions of memory. Please, don't ask us what this could do to
- Windows NT :-)
-
- The FreeType engine performs checks on every opcode. We cannot
- guarantee that it is bullet proof, of course, but it seems to work
- well and catch font bugs accordingly.
-
- We also have artificially `enlarged' some allocated tables to make
- the engine work with the back-slanted fonts without compromising
- security, but it's clearly a hack we would have preferred to
- avoid!
-
-
---------------------------------------------------------------------
-
-17. What does the `fttimer' test program benchmarks?
-
- This test program is only dedicated to profiling FreeType's
- scan-line converter, a component also called `rasterizer', which
- is in charge of converting a vectorial outline into a bitmap, or a
- pixmap.
-
- It simply loads all glyphs of a font file (by slices of 512 at
- once), then converts them. Only the conversion is actually
- benchmarked.
-
- The glyphs are rendered at size 400pt at a resolution of 96dpi
- (this is about 500 pixels high). As you'll see by running
- `fttimer', the rasterizer is very fast.
-
-
---------------------------------------------------------------------
-
-18. Is it possible to perform styling (like oblique, italic, bold,
- underline, etc.) with FreeType?
-
- Actually, these refer to very different things:
-
- - Italic and Bold styles usually mean many variations from the
- `Regular' font. This is why you normally need a proper font
- file for each of these. For example, the MS core font Times
- comes in the following TrueType files:
-
- TIMES.TTF Times New Roman Regular
- TIMESI.TTF Times New Roman Italic
- TIMESB.TTF Times New Roman Bold
- TIMESBI.TTF Times New Roman Bold Italic
- (sometimes named TIMESZ.TTF)
-
- With FreeType, you simply need the required font file to use it.
-
- - Oblique style refers to a transformation that is applied to a
- regular font in order to make it `slanted', likes italics do.
- However, an italic font very frequently contains small but
- important variations that cannot be produced by this method and
- make the font more appealing.
-
- Slanting can easily be done with a transformation under
- FreeType, with the exact same process as rendering rotated text.
- Please read the `glyphs' documentation file where it is
- explained in details.
-
- Usually, Windows or the Macintosh produce oblique versions of a
- regular font if the corresponding italic TrueType file isn't
- available. They also stretch regular fonts horizontally if the
- bold one isn't available. All of this can be done with trivial
- transformations.
-
- - Underlining and stroking are not really part of the glyphs.
- They're simply lines that are printed on the glyph after it has
- been rendered. Each TrueType file provides, in its OS/2 table
- (which is accessible through the face object properties in
- FreeType), several values that define the position and width of
- those lines, in notional font units.
-
- If you want to use them, you'll have to scale these values to
- your current instance/point size, then draw the lines yourself.
-
-
---------------------------------------------------------------------
-
-19. When does glyph hinting takes place? Is it when the glyph is
- loaded, or when it is converted to a bitmap/pixmap?
-
- The glyph loader returns fitted outlines by default (it can be
- asked to return a non-fitted one, or simply the original outline
- in notional coordinates too).
-
- This is important to have a glyph's correct metrics, even if it is
- not to be rendered immediately, like when caching outlines for
- rotated text.
-
-
---------------------------------------------------------------------
-
-20. Which is the best, caching outlines or bitmaps?
-
- It depends on your application, and what it does with text.
-
- Usually, if all you need is render some simple text at specific
- point sizes, then simply cache the bitmaps or pixmaps.
-
- However, if you want to do more advanced things, like rotated
- text, which require sub-pixel placement to look good, you should
- then only cache the outlines, and transform/place them as needed
- before sending them to the scan-line converter.
-
- It's always possible to produce a bitmap from an outline, and the
- scan-converter is very fast. It's up to you then...
-
-
---------------------------------------------------------------------
-
-21. Can I open OpenType and/or TrueType GX fonts with FreeType?
-
- TrueType GX fonts are normal TrueType fonts with enhanced tables
- and capabilities. They can always be opened by a normal TrueType
- engine (like Windows, the Mac, or FreeType), but their improved
- features won't be available.
-
- On the contrary, OpenType fonts may vary. While some may contain
- legal TrueType glyphs, an `otf' file may only contain glyphs
- encoded in the Type 2 format. You won't be able to produce any
- glyphs from such a font file without a dedicated font engine (like
- the ones promised in NT 5 and Java 2D... or with Freetype 2).
-
- FreeType 1 is a TrueType glyph engine and doesn't support Type 2
- fonts. Supporting them would require a very different philosophy
- and a different core engine (even though they could share an API).
-
- Note that you can write extensions to the engine to access
- supplemental tables defined in these formats (see next question).
-
- Note that FreeType version 2 (which is now widely available)
- includes a PostScript Type 1 / Type 2 interpreter...
-
-
---------------------------------------------------------------------
-
-22. How can I access additional TrueType tables that FreeType
- doesn't support?
-
- You can write an `engine extension'. This is a separately
- compilable component which can enhance the base library's
- functionalities, without recompiling it. Some important
- extensions are provided in the `lib/extend' directory.
-
- You'll need of course to know the TrueType specification
- precisely, as well as some of the conventions used to access
- tables and to manage memory. Read the documentation files for
- more details, or contact the developers at:
-
- devel@freetype.org
-
-
---------------------------------------------------------------------
-
-23. When will I be able to use FreeType to display TrueType fonts in
- X11, Wine or OS/2, or even other systems?
-
- Actually, an OS/2 replacement for TRUETYPE.DLL based on FreeType
- is part of this package (to be found in contrib/ftos2). Thanks go
- to Michal Necasek (mike@mendelu.cz) for his excellent work!
-
- At least three X11 TrueType font servers are available; two of
- them (xfsft and xtt) are based on FreeType, whereas the third
- (xfstt) uses a separately developed TrueType engine.
-
- More information about these servers is available at the FreeType
- homepage (http://www.freetype.org).
-
- Don't hesitate to contact us if you plan to use or port the engine
- to exotic platforms, we're always interested in helping out.
-
-
---------------------------------------------------------------------
-
-24. What does the `free' in FreeType really means?
-
- The previous releases of FreeType (alphas and beta) were placed
- under the LGPL. FreeType 1.0, and later releases, come with an an
- alternate license, inspired from the BSD, Artistic, and IJG's
- (Independent JPEG Group) ones. In short:
-
- - You are encouraged to use and distribute this program in all
- kinds of products, including commercial ones.
-
- - You don't have to pay us anything for it (royalty-free).
-
- - You may not pretend you wrote it, or part of it that you may use
- in one of your product, and you have to state clearly that you
- use the FreeType code if you distribute products based on it, or
- parts of it (credits clause).
-
- - This source code is provided AS IS, with no warranty whatsoever,
- and we cannot promise support for it.
-
- From version 1.5 and later releases, we added the choice for the
- user of the library to use the GNU General Public License instead.
- As a result, you can link the Freetype library with any GPL-ed
- software, without any inconvenience; however, you then have the
- obligation to publish all of the source code of the products you
- release.
-
- The exact and legal terms are in the files `docs/FTL.txt' and
- `docs/GPL.txt', respectively.
-
- Enjoy ;-)
-
-
---------------------------------------------------------------------
-
-25. Does FreeType support threads? Is it re-entrant?
-
- Short answer: Basically yes, but not fully tested.
-
- We have changed some code since FreeType 1.0 in order to support
- multi-threaded environments. However, these have not been tested
- yet. Apparently, the thread-safe and reentrant builds now work
- well perfectly once compiled; however, no serious concurrency
- testing has been performed (of course, a serious lock analysis was
- done in order to modify the source).
-
- Right now, the mutex management functions are all gathered in the
- component `ttmutex', which has to be specialized for your own
- system if a thread build will be necessary.
-
-
---------------------------------------------------------------------
-
-26. Does FreeType support `foreign languages'?
-
- Short Answer: YES, it does!
-
- From a TrueType font file point of view, there are several parts
- to the file, one of them being the `glyphs', i.e., picture
- representations of the symbols.
-
- Another part is the mapping table, also called `charMap'.
-
- For example, glyph #1 could be letter `A', and glyph #2 could be
- letter `Z'. Glyphs can be stored in any order in a font file.
-
- The mapping tables contain at least one char-map entry. For
- example, you could have an ASCII-map that maps character code 0x41
- to glyph #1, and code 0x5A to glyph #2, etc. FreeType provides a
- `charMap' object class to access and use this information easily.
-
- There are several character encodings recognized and defined by
- the TrueType specification, like Latin-1, Unicode, Apple Scripts,
- WGL, etc., but a font file might only contain one or two of them.
-
- When using a more `exotic' character encoding like EBCDIC (this is
- IBM mainframe stuff!), you would need to translate it to one of
- the available formats (or to add a charmap table to the font).
- Cf. section 8.
-
-
---------------------------------------------------------------------
-
-27. I'm using fractional char sizes, but the glyphs stay at the same
- integer size. Why?
-
- Because hinting only works well with integer pixel sizes. There
- is a flag that can be set in a TrueType font file to force integer
- pixel size scaling, even if you ask for fractional sizes with an
- API function like TT_Set_Instance_CharSize(). Needless to say,
- nearly all fonts have the flag set. So this is normal.
-
- Also, notice that when giving a charsize in fractional points,
- this will be converted to integer pixels with the formula:
-
- pixel_size = char_size * y_resolution / 72
-
- For example, using a resolution of 96 dpi, we would have:
-
- 9.5 pts => 12.666 pixels => 13 pixels
- 10.0 pts => 13.333 pixels => 13 pixels, i.e. same size
- 10.5 pts => 14 pixels => 14 pixels
- 11.0 pts => 14.666 pixels => 15 pixels
- 11.5 pts => 15.333 pixels => 15 pixels, i.e. same size
-
- If you want to control the exact size in pixels of your glyphs,
- simply use a resolution of 72dpi, where char_size = pixel_size.
-
-
---------------------------------------------------------------------
-
-28. Hinting doesn't work at very small sizes. Why?
-
- This is normal. There are very good technical reasons why hinting
- doesn't work well at sizes under 7 ppem, usually meaning the
- appearance of ugly spikes and glyph distortions. This is why the
- engine disables hinting by default at such low sizes.
-
-
---- end of FAQ ---