summaryrefslogtreecommitdiff
path: root/Build/source/libs/freetype/freetype-1.5/docs/changes.txt
blob: e76cf6fce66a7e7124d261b455c33a3a8354952d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
Changes between FreeType version 1.3.1 and version 1.5
======================================================
**
**  WARNING:  Because of  the  Apple patents  problem, the  TrueType
**  bytecode  interpreter  is now  turned  *OFF*  by default.   Edit
**  ft_conf.h if you want to (and can) use grid-fitting.
**

Note: Version 1.4 has never been released officially.


Documentation
-------------

    apiref.txt has been again revised.


    apirefx.txt has been extended to document the GPOS interface.


    TODO has  been  dropped  (since  we  consider there  will be  no
    further development).


API functions
-------------

    TT_Char_Index() now uses  TT_ULong for character codes.   It now
    supports cmap tables in format 8 and 12.


    New error  code (TT_Err_Too_Many_FDefs)  when a font defines too
    many functions.


Architectures
-------------

    Support files  for BeOS have been contributed  by Chris Herborth
    <cherborth@vdelta.com>.


    The  EXPORT_DEF/EXPORT_FUNC/etc. stuff has  been replaced with a
    more elaborate  scheme (coming  from the Freetype 2  experience)
    that allows more complex cases of interface  to be handled.  See
    ttconfig.h for details.


    Cleaning up of the ft_conf.h files to remove obsolete stuff.


Extensions
----------
**
**  Full support for the GPOS table has been implemented.  As usual,
**  the  documentation  is available  in  apirefx.txt, and  ftstrtto
**  demonstrates how to use it.
**

    TT_GSUB_Add_String()  has two  additional parameters  needed for
    GPOS support.


    TT_CharMap_Next() of  the ftxcmap extension  now uses `TT_ULong'
    as the second parameter.


    A  long-lived  bug  in  ftxpost.c  (with  2.0 format,  when  the
    additional names  were out of order,  the names were incorrectly
    assigned) has been extermined.  Thanks to Jean-Christophe Dubacq
    <Jean-Christophe.Dubacq@lri.fr>.


Test programs
-------------

    ftstrtto now  uses `S'  instead of `G'  to toggle  activation of
    GSUB.   `P' will  toggle GPOS activation  (this is new).   UTF-8
    values greater than U+FFFF are supported.


    ftdump will dump some information about the GPOS table also.


    ftstrpnm now supports coloured text.


Miscellaneous
-------------
**
**  You  can now  at your  option  use either  the FreeType  license
**  (usable in commercial products) or the GPL license  (usable with
**  other free  software, but this requires  any further development
**  to be released to the public).
**

    The library has been updated to use libtool 1.3.4.


    Fixed a mutex bug in the ttraster module.


    The  FreeType license  has been  reworded to  improve legibility
    (thanks to Ruthanna Wilson <ruthanna@us.ibm.com>).


    Fixed a property bug in the arabic module.


    Various small fixes to reduce compiler warnings.


    Fixed the thread-safe build.  The following files didn't compile
    properly when TT_CONFIG_OPTION_THREAD_SAFE is defined:
    
      lib/arch/unix/ttmmap.c
      lib/extend/ftxsbit.c
      lib/extend/ftxgpos.c
      lib/extend/ftxgdef.c
      lib/extend/ftxgsub.c


    More tests to prevent division by zero.


    <ttnameid.h> has been updated.


    OS/2 table version 2 is now recognized.


Contributed programs
--------------------

    ttf2bdf:
      Changed bitmap generation for outline glyphs to Flow_Down.


      Added support for strikes (bitmaps).


      Added missing parameter documentation.


      Minor  documentation  changes  and compatibility  with  latest
      Freetype.


    ttf2pk:
      Added support for multiple SFD files.

      New option `-L' to provide a ligature mapping file (patch from
      CHO Jin-Hwan <chofchof@kias.re.kr>).

      New  option  `-w'  to  emit PostScript  encoding  vectors  for
      subfont  files  to  be  used  with pdfLaTeX  (patch  from  CHO
      Jin-Hwan <chofchof@kias.re.kr>).

      Add support  for a  configuration file (ttf2pk.cfg)  which can
      read more  than a  single map file,  similar to  pdfTeX (patch
      from CHO Jin-Hwan <chofchof@kias.re.kr>).

      Support for  character codes  greater than 0xFFFF  (patch from
      Dominique Unruh <dominique@unruh.de>).

      ttf2tfm no longer  assumes that the x-height  is always 400 PS
      units.


Pascal source code
------------------
**
**  The Pascal  source files have  been completely removed  from the
**  FreeType distribution.  It is now available as an extra package;
**  for more information please visit http://www.freetype.org.
**


Changes between FreeType version 1.3 and version 1.3.1
======================================================

    Bug fixes.



Changes between FreeType version 1.2 and version 1.3
====================================================


Documentation
-------------

    Improved installation instructions.


    Complete revision of almost all documentation files.

**
**  Added  the file apirefx.txt  to document  all extensions  to the
**  FreeType library.  Consequently, errstr.txt has been removed.
**
  
    Added the file optimize.txt,  explaining how to improve FreeType
    on a given architecture.

**
**  Documentation about possible patent restrictions added.
**

    Added  howto/mac.txt (stating basically  that the  FreeType team
    can't  support  the  Macintosh   platform  because  of  lack  of
    knowledge).


    Added howto/msdos.txt, documenting compilation for various 16bit
    and 32bit compilers.


API functions
-------------

    TT_Load_Kerning_Table()   now   returns  TT_Err_Invalid_Argument
    instead of  TT_Err_Bad_Argument (which  is used for  an internal
    error  only)  for  an  invalid  argument.  The  same  holds  for
    TT_Get_Face_Widths() and TT_Get_Glyph_Big_Metrics().


    If   the   glyf  table   is   missing,   the   new  error   code
    TT_Err_Glyf_Table_Missing     is     returned     instead     of
    TT_Err_Table_Missing.     This   affects   TT_Get_Face_Widths(),
    TT_Load_Glyph(), and TT_Open_Face().

**
**  New function  TT_FreeType_Version() to  get the major  and minor
**  version dynamically.
**

    TT_Load_Glyph() has  now two additional  flags.  TTLOAD_PEDANTIC
    will  force pedantic  handling  of the  glyph instructions,  and
    TTLOAD_IGNORE_GLOBAL_ADVANCE_WIDTH  is  needed  for  some  fonts
    which have  correct advance width  values for the glyphs  but an
    incorrect global advance width value.


    TT_Get_Glyph_Big_Metrics() now  returns correct vertical bearing
    values (both linear and pixel values).


    New error code TT_Err_Glyf_Table_Missing (0x89) used to indicate
    a missing `glyf' table.


    The  following macros  have been  shortened to  stay  within the
    limit  of  32  characters  (the  longer macro  names  are  still
    available if HAVE_LIMITS_ON_IDENTS is not defined).

      TT_UCR_ARABIC_PRESENTATION_FORMS_A ->
          TT_UCR_ARABIC_PRESENTATIONS_A
      TT_UCR_ARABIC_PRESENTATION_FORMS_B ->
          TT_UCR_ARABIC_PRESENTATIONS_B           

      TT_UCR_COMBINING_DIACRITICAL_MARKS ->
          TT_UCR_COMBINING_DIACRITICS
      TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB ->
          TT_UCR_COMBINING_DIACRITICS_SYMB


    freetype.h:

      TT_Bool is now typedef'ed as `typedef int'.

      New typedefs: TT_Int and TT_UInt.

      Declarations  of  TT_Matrix_Multiply() and  TT_Matrix_Invert()
      have   been   removed  since   these   functions  were   never
      implemented.


Architectures
-------------

    Added  `ansi' directory  to the  supported architectures  -- any
    ANSI C compiler should compile FreeType with these files.


    Added `debugger'  directory to  the architectures.  Use  this to
    build  a  special version  of  FreeType  for bytecode  debugging
    (tested with OS/2 and Unix).


    Added  more files to  the `mac'  architecture directory  to make
    basic support complete.


    Support   for  VMS   added  (to   compile  the   library  only).
    Contributed by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.


    Added `win16' architecture directory for older Windows versions.
    A  graphics  driver (gw_win16.c)  for  the  example programs  is
    available also.

**
**  Antoine  Leca contributed  support for  many MS-DOS  and Windows
**  compilers (including library fixes to make it 16bit compliant):
**
      Borland C++ for MS-DOS (tested with v. 3.1, 4.02, 5.0),
      Microsoft C for MS-DOS,
      Turbo C (versions 1.5 and 2.0 -- version 1.0 is too old),
      Borland C++ 4.0 and 5.0 for Windows (both 16bit and 32bit
        versions),
      gcc under Win32 (Cygwin32 or MinGW32),
      Microsoft Visual C++ 2.x, 4.x, 5.0, and 6.0 for Windows


    Support  for the gettext  package with  DJGPP compiler  has been
    added.


    Since many older compilers  on both MS-DOS and Windows platforms
    have problems  to build dependency  files automatically, scripts
    for gcc  under Unix  have been added  to do this.   Similarly, a
    script to produce  a DLL definition file is  now included in the
    distribution.


    Moved old  win32 support  to contrib/win32, replacing  all CR/LF
    with LF,  and using only  lowercase file names  for consistency.
    Additionally,   some   missing  files   in   the  FreeType   1.2
    distribution have  been added.  Antoine Leca has  written a new,
    light-weight graphics driver (gw_win32.c) which fits better into
    the current scheme.


    Small additions have been made to the Amiga graphics driver.


    The use  of the ARM  macro (intended for this  architecture) has
    been completely removed due to lack of support.


    Checks  for  endianness   have  been  removed  completely  since
    FreeType isn't dependent on it.


Global compilation macros
-------------------------

    The TT_HUGE_PTR macro has been  added to support fonts with more
    than  16000  characters  or  so  with  16bit  MS-DOS  compilers.
    Consequently, the files hugefile.c and hugemem.c have been added
    which provide special versions for these compilers.


    HAVE_LIMITS_ON_IDENTS   has    been   introduced   to   overcome
    restrictions with  old compilers which  can't digest identifiers
    longer than 32 characters.

**
**  Added option  TT_CONFIG_OPTION_NO_INTERPRETER to desactivate the
**  bytecode interpreter completely.  This option is off by default.
**

    Added       options      TT_CONFIG_OPTION_STATIC_RASTER      and
    TT_CONFIG_OPTION_STATIC_INTERPRETER to  build static versions of
    the respective  components.  Off  by default.  (It  was formerly
    called TT_STATIC_RASTER.)

    Better   debugging  support   (see   ttconfig.h  for   details):
    DEBUG_LEVEL_TRACE,     DEBUG_LEVEL_ERROR,     DEBUG_INTERPRETER,
    DEBUG_MEMORY, DEBUG_FILE.

    Added  TT_MAX_EXTENSIONS   to  define  the   maximal  number  of
    extensions (currently set  to 8 -- this macro  was previously in
    ttextend.c).


Extensions
----------
**
**  Full support  for TrueType Open  resp. OpenType GSUB  tables has
**  been implemented.  It uses a GDEF table if available; otherwise,
**  a method  to construct an  artificial GDEF table has  been added
**  (note that  GDEF parts  not related to  GSUB are loaded  but not
**  further handled).  An example how to  use it can be found in the
**  new test program ftstrtto.
**

    Rudimentary  GPOS support --  currently, you  can load  the GPOS
    subtables but nothing more.

**
**  Documentation  for  all extensions  can  be  found  in the  file
**  apirefx.txt.
**

    Fixed a  bug in TT_Load_PS_Names() which returned  a local, thus
    invalid pointer.

**
**  Support  for   embedded  bitmaps  has  been   added  (thanks  to
**  YAMANO'UCHI Hidetoshi  <mer@interlink.or.jp> who has contributed
**  a lot of  the code).  It can handle  `bloc', `bdat', `EBLC', and
**  `EBDT'  tables.   [TrueType  embedded  bitmaps are  also  called
**  `sbits' (for `scaler bitmaps').]
**

Test programs
-------------
**
**  A  new test  program  called  ftstrtto has  been  added to  test
**  TrueType   Open  features.    Almost   all  available   FreeType
**  extensions  are used  in this  program --  it displays  a  UTF 8
**  encoded string  on screen, allowing to  toggle kerning, embedded
**  bitmaps,  GSUB support,  and  hinting.  Additionally,  it has  a
**  special  module  to  handle   the  Arabic  script  properly  (in
**  arabic.c), i.e., it treats  initial, medial, final, and isolated
**  glyphs correctly.
**

    The  new  module  `blitter.c'  provides  the  blitting  function
    Blit_Bitmap() for bitmaps of various depth.


    The debugging  program `fdebug' has been rewritten  to provide a
    better user interface.


    ftdump  has been  extended  to show  information about  embedded
    bitmaps and  GSUB data.   It will now  also show  the PostScript
    name of the font.


    The new test program ftmetric  can dump metrics and glyphs -- it
    uses the gettext package for i18n support.


    Another  new test  program is  ftsbit to  dump  embedded bitmaps
    contained in a font.


    A  small bug has  been fixed  in ftstring  to compute  the right
    bounding box of the string.


    ftview  has  been  extended  to display  embedded  bitmaps  also
    (switch `-B').


    The maximal point size of glyphs in ftview has been increased to
    5000pt -- this has shown  some clipping bugs in the engine which
    have  been  fixed  meanwhile.    As  a  demonstration,  it  also
    activates  tracing   of  the  raster  and   gload  component  if
    DEBUG_LEVEL_TRACE (see above) is defined.


Miscellaneous
-------------

    The library  has been updated  to use autoconf 2.13  and libtool
    1.3.3 throughout.

**
**  FreeType    will    now   install    its    header   files    in
**  <prefix>/freetype/... since the number of files has grown again.
**

    Added a  lot of  EXPORT_FUNC/EXPORT_DEF macros to  functions for
    correct exporting in DLLs.

**
**  FreeType can now successfully load Mac fonts which don't have an
**  `OS/2' table.
**

    Fixed  a bug in  handling composite  glyphs where  the composite
    elements use attached points.


    Better debugging support for instructions.


    Various  workarounds have been  implemented to  support slightly
    broken  fonts  (or  rather,  fonts  not  following  exactly  the
    TrueType specifications).


Contributed programs
--------------------

    ttf2bdf:
**
**    Swapped all the columns in the mapping files.
**

      Changed the mapping table loader to index on the second column
      instead of the first.


      Changed the includes to deal with compilation on Windows.


      Added some new mapping tables.


      Fixed an incorrect parameter for Traditional C compilers.


      Added generation of the _XFREE86_GLYPH_RANGES properties.


      Change  all CRLF's,  CR's,  or LF's  in  copyright strings  to
      double spaces.


      Changed it so gcc 2.8.1 likes the return type of main() again.


      Changed   Makefile.in  a   bit  to   make   installation  more
      consistent.


      Changed  the  lower  limit  for the  vertical  and  horizontal
      resolutions to be 10dpi instead of 50dpi.


    ttf2pfb:

      Has now  rudimentary support for mapping  tables (switch `-m')
      and better  PostScript name support for ordinary  Type 1 fonts
      -- nevertheless, it  is far from finished, and  there are some
      plans to merge it with ttf2pt1.

      configure script added.

      Option `-k' added to keep output file in case of error.

      `-v' is now really verbose.

    ttf2pk:
**
**    Support  for MiKTeX's file  searching mechanism  added (ttf2pk
**    and ttf2tfm are now part of the MiKTeX).
**
**
**    Support for rotated glyphs  added (only for subfonts; switches
**    `-x' and  `-y' to activate  rotation resp.  controlling  the y
**    offset).  If a GSUB table with the `vert' feature is available
**    in the font, vertical glyph presentation forms are used.
**

      Added  warning message  to the  configure script  in  case the
      kpathsea library isn't used.


      Fixed an omission in Bg5.sfd.

**
**    Added  UBg5plus.sfd  for  mapping  Unicode to  Bg5+  encoding.
**    Similar SFD files  now available: UBg5.sfd, UGB.sfd, UGBK.sfd,
**    UJIS.sfd, UKS.sfd.
**

      Added documentation for dvidrv.btm.


      Will now compile with kpathsea version 3.3 or newer also.


      Subfont ligature support added as needed in the HLaTeX package
      for Korean (switch `-l').

**
**    Since ttf2pk support  has been added to teTeX  version 1.0 and
**    newer, no patch are necessary.
**

      Fixed  a   string  initialization  bug   in  buildtfm()  (file
      tfmaux.c).


      Added  more  documentation about  file  searching  and a  full
      example how to use ttf2tfm.


      Fixed a small bug  in ttf2tfm.c which printed `(null)' instead
      of nothing for  the ttfonts.map entry if the  font name prefix
      string was empty.


      ttf2tfm  will now  use the  first  type 0  kerning table  only
      (instead of the first kerning table only).


      Both ttf2pk and ttf2tfm will now apply stretching and slanting
      directly to the outline.  This usually yields smaller bounding
      boxes.


      ttf2tfm will  now output a comment  string to the  VPL file to
      illustrate the meaning of the `HEADER' lines.


    ttfbanner:

      Added Makefile for emx+gcc compiler.


      Added autoconf support.


      Fixed a lot of compilation warnings.


Pascal source code
------------------

    The  Pascal source code  has been  seriously updated  since 1.2.
    Here are the most important changes.

**
**  A. Support for charmaps and the name table
**
**
**    The  Charmap functions were  not correctly  implemented before
**    1.3.  They are now available in the Pascal API.
**
**
**    Similarly,  the   `name'  table   was  not  loaded,   and  the
**    TT_Get_Name function wasn't implemented before 1.3.  It is now
**    done.
**
**
**    The  Pascal engine  is  now feature-complete,  except that  it
**    provides no extensions like the C source code.
**
  
    B. Improvements in the glyph loader and the interpreter


      Several changes  were made  in order to  be able to  load more
      broken fonts, as well as old Apple fonts which happened to use
      some very rarely-used aspects of the specification.


      Note that  the Pascal bytecode interpreter, contrary  to the C
      version, is not able to  silently accept broken glyphs yet, or
      even  use  the  flag  TTLOAD_PEDANTIC.  Implementing  this  in
      Pascal  would require some  serious work  (unlike to  C, where
      this  feature was  introduced easily  with  the use  of a  few
      macros  to minimize source  changes).  So  TT_Load_Glyph might
      return an error with the  Pascal engine while the C one accept
      the same request successfully.
  
  
    C. Ports to Delphi and Free Pascal
  
      This release has been compiled on the following compilers:
  
        - Free Pascal 0.9                     (Dos,Linux,Win32,OS/2)
        - Virtual Pascal 1.1 and 2.0                (Win32 and OS/2)
        - Turbo Pascal 6.0 and Borland Pascal 7.0              (Dos)
        - Delphi 1, 2, and 3.  It should work with D4 and D5 also.
                                                           (Windows)
  
      Note  that most  of  the  test programs  will  not compile  on
      anything except  MS-DOS or OS/2.  The debugger  also needs the
      Turbo  Vision library.  The  library, however,  should compile
      fine with all tools cited above.



Changes between FreeType 1.1 and 1.2
====================================

Mostly bug fixes and build fixes.



Changes between FreeType 1.0 and 1.1
====================================

There were  various changes  since the 1.0  release.  Here  they are
summarized:

- Added vertical layout support

  The engine now loads the  vertical header and metrics if available
  and makes  them visible  through the new  `vertical' field  of the
  face properties (it  is set to NULL if no  vertical data was found
  in the font file).

  The glyph loader now  loads all metrics (horizontal and vertical),
  but  still   returns  the  horizontal  ones  only   with  the  API
  TT_Get_Glyph_Metrics().   However,  TT_Get_Glyph_Bit_Metrics() has
  been added to extract them from a glyph container.


- Serialization of coordinates arrays in TT_Outline()

  As  announced in  the  previous API  reference,  the structure  of
  TT_Outline changed slightly, as well  as the naming of its fields.
  The points are now stored  in a single array of TT_Vector, instead
  of two parallel arrays (one for the Xs, the other for the Ys).


- New API function TT_Get_Face_Metrics()

  Useful to access unscaled metrics like left side bearings, advance
  widths, top side  bearings, and advance height, for  a given range
  of glyphs.


- New extension: ftxcmap.c

  Used  by some  applications  to enumerate  and  parse the  charmap
  tables in an easier way.


- New extension: ftxpost.c

  With  this extension  you can  access the  PostScript  glyph names
  given in the `post' table.


- New extension: ftxwidth.c

  This extension  is used to parse  the `glyf' table  to extract the
  bounding boxes  of a given range  of glyphs.  This  is much faster
  than loading individual glyphs.


- The FreeType engine is now THREAD-SAFE and REENTRANT

  However, the  implementation of ttmutex  must be refined  for your
  system  -- the default  one is  a dummy  and doesn't  do anything!
  Beware!  THIS IS STILL IN BETA.

  The thread-safe and  reentrant builds now compile and  seem to run
  well when used with a single thread.  Some efforts have been spent
  to check the coherency of  the lock contentions within the engine,
  but we haven't tested multi-threading heavily.


- Large internal re-organization

  Too technical  to explain  shortly, but results  in a  much better
  memory  footprint  and   smaller  code,  especially  when  opening
  multiple faces.


- Fixes/enhancements to the interpreter

  The  infamous  Monotype.com  bug  (a  new free  font  released  by
  Microsoft Typography  a few days after the  FreeType 1.0 release!)
  is fixed,  of course, as well  as few other  little and unpleasant
  artifacts...

  The interpreter  was also seriously re-organized to  allow the use
  of a very large `switch' statement, instead of a jump table, which
  results in smaller  and faster code on some  systems (depending of
  the compiler too).   Users of the library can  experiment with the
  TT_CONFIG_OPTION_INTERPRETER_SWITCH  configuration  macro to  test
  this.


- Single object compilation mode

  The core  engine can  now be compiled  into a single  object file.
  This allows optimizing compilers  to do more global optimizations,
  and get rid of many of the `intermediate' internal symbols used to
  link internal engine components together.

  The engine now takes only 48kByte of stripped Intel object code!


- DLL compilation mode

  In order  to allow the  compilation of the  library as a  DLL, the
  keyword EXPORT  has been added as  a prefix to  all high-level API
  functions found in `freetype.h'.  Define  it to the value you need
  before `#include "freetype.h"' when building the DLL (if undefined
  it will default to nothing within this header file).

  (Apparently, this is only useful on Win32, maybe on OS/2.)


- Renamed configuration macros

  These  were  renamed  to  forms  of  TT_CONFIG_OPTION_XXXXX_YYYYY.
  They're  located  in   ttconfig.h  and  can  be  defined/undefined
  manually by  developers who  want to tune  the compilation  of the
  engine:

    TT_CONFIG_OPTION_EXTEND_ENGINE

      Allows extensions to be  linked with the single object engine.
      If  you don't  need any  of  them, you  may save  one or  more
      kilobytes by undefining it.


    TT_CONFIG_OPTION_GRAY_SCALING
  
      Allows  the compilation of  the gray-scaling  (font smoothing)
      code in ttraster.  If undefined, some APIs won't be available:

        TT_Set_Raster_Palette(),
        TT_Get_Glyph_Pixmap(),
        TT_Get_Outline_Pixmap()


    TT_CONFIG_OPTION_INTERPRETER_SWITCH

      Uses a  large `switch'  statement in the  bytecode interpreter
      instead of a constant call-table.  Depending on your processor
      and compiler,  this can lead to significant  reduction of code
      size and/or increase of performance.


    TT_CONFIG_OPTION_THREAD_SAFE

      When defined, a thread-safe version of the engine is built.  A
      thread-safe version is a bit bigger, probably not slower, than
      a non-threaded  build.  ATTENTION: You must  redefine the file
      `lib/ttmutex.c'  for  your own  platform  to  get  it to  work
      correctly.


    Some more options may come in the future...


- New API functions TT_MulDiv() and TT_MulFix()"

  To help you compute `a*b/c' with 64-bit intermediate precision, or
  `a*b/0x10000' with the same one...

  These  are not  necessarily  the fastest  functions  but they  are
  clearly  portable and  overflow-safe.   Your runtime/compiler  may
  provide better replacements, though...



Changes between FreeType Beta and 1.0
=====================================

There were a number of changes since the public beta:


I. Bug fixes
------------

  The following bugs have been fixed in this release:


  - Incorrect advance width and left side bearings

    The glyph loader has been  re-designed to match the values found
    in the pre-calc tables...


  - Problems when opening multiple fonts

    Fixed.  A stupid bug in the i/o component.


  - Problems with some Georgian fonts

    Fixed.  Discovered some new undocumented opcodes behaviour...


  - Buglets  in the  test programs  which made  them  return invalid
    error codes

    Fixed.


  - Memory leaks when trying to open broken some font files

    Fixed.  Waiting for more broken fonts to test...


  - Non-square resolutions don't work or display correctly

    They now work very well!


  - The scan-line  converter, while in  font-smoothing mode, doesn't
    perform horizontal drop-out control

    This  wasn't really  bug,  but the  feature  has been  correctly
    added.


The remaining `features' persist, as they're not essential yet:

  - The `rotated'  and `stretched' flags do not  work (glyph loading
    will  then return  errors).  However,  it is  still  possible to
    rotate or transform any outline without setting these flags.

  - We  always use drop-out  mode number  2, as  some of  the values
    returned by some `cvt programs' seem invalid for now...


Note also that an `event  hook/callback' has been introduced in this
release, but  is still under alpha  (not even beta;  it is commented
out currently).  You should not rely on this...


II. Code changes
----------------

  1. API Changes

    A few API  changes were necessary in order  to support important
    features,  or  future  improvements  which will  come  in  later
    releases.


    - TT_Set_Instance_Resolution() was renamed to
      TT_Set_Instance_Resolutions().


    - TT_Set_Instance_PointSize()  has  disappeared.   Instead,  the
      following APIs have been defined:

        TT_Set_Instance_CharSize()
        TT_Set_Instance_CharSizes()
        TT_Set_Instance_PixelSizes()


    - The  TT_Engine  class  has  been introduced.   It  models  one
      instance of the library, and  is used to allow re-entrance and
      shared  library code.   The functions  which now  depend  on a
      TT_Engine parameter are:

        TT_Init_FreeType()
        TT_Done_FreeType()
        TT_Open_Face()
        TT_Open_Collection()
        TT_Set_Raster_Palette()
        TT_Get_Outline_Bitmap()
        TT_Get_Outline_Pixmap()

      Note that  there is _no_ sharing of  objects between distinct
      engines.


    - Each face and instance object have an inside pointer which use
      is  reserved  to client  application.   Several functions  are
      defined to set and read it:

        TT_Set_Face_Pointer() / TT_Get_Face_Pointer()
        TT_Set_Instance_Pointer() / TT_Get_Instance_Pointer()


    - TT_Apply_Outline_Matrix() has been renamed to
      TT_Transform_Outline().
      TT_Apply_Outline_Translation() has been renamed to
      TT_Translate_Outline()
      TT_Apply_Vector_Matrix() has been renamed to
      TT_Transform_Vector()

      all for the sake of clarity.


  2. Structural changes

    Some structures have evolved.


    - The  instance  metrics  have  now  two new  fields  which  are
      `x_scale'  and  `y_scale'.   Each  one is  a  scaling  factor,
      expressed in the 16.16  fixed float format (TT_Fixed), used to
      convert  one distance expressed  in font  units into  the same
      distance in fractional (26.6) pixels.


    - A  new  structure TT_BBox  has  been  defined  to describe  an
      outline's bounding box.


    - The outlines  are now full-class  citizen.  It is  possible to
      create  new outlines,  copy, clone,  transform,  translate and
      render them  through specific methods of  the TT_Outline class
      (previously called TT_Glyph_Outline).   Read the API reference
      for a complete listing.


    - The glyph metrics have a new structure: they contain a TT_BBox
      field, a  TT_Outline field, as  well as three  metrics values,
      which  are `bearingX',  `bearingY', and  `advance'.   Read the
      file `glyphs.txt' for more information about their definitions
      and uses.


  3. Small but IMPORTANT changes


    - The `max_Faces' field of  a face's properties has disappeared.
      It is replaced by `num_Faces'  which gives the total number of
      fonts embedded  in a collection  (the previous field  gave the
      total minus one).


    - TT_Load_Glyph()  now returns  correctly  placed outlines,  and
      computes advance widths which match the pre-calc values in the
      "hdmx" table in nearly all cases.


    - TT_Get_Glyph_Metrics() returns  grid-fitted metrics for hinted
      glyphs   (i.e.,   loaded   with  the   TTLOAD_HINT_GLYPH,   or
      TTLOAD_DEFAULT, flags).   This includes the  bounding box.  To
      get  the exact  bounding box  of  a hinted  glyph, you  should
      extract its outline, then call TT_Get_Outline_BBox().


    - Some  improvements   in  the  glyph   loader,  which  improves
      drastically  the  placement  of glyphs  (especially  composite
      ones)   which  previously  caused   trouble  for   some  fonts
      (e.g. goudy.ttf).


    - Several  minor  improvements  in  the interpreter  to  improve
      rendering and bounds checking...


    - Up-to-date Pascal source code, with output equivalent to the C
      tree...


--- END ---