Update contrib.
3 Released by William Roberts, 7th August 1999
5 Sorted out an alignment problem which shows up with the new GCC compiler. The TCharacterMetrics class member data
6 is a TUint16 and six TInt8 values, these values occur as data in a table inside a compiled font, and are extracted
9 metrics=*((matchSection->CharacterMetricsList())+(aCode-matchSection->iStart));
11 The old GCC used to use memcpy() to transfer the 8 bytes involved, but the new compiler attempts to use
12 LDMIA followed by STMIA. This causes an alignment exception if the data does not lie at a multiple of
13 4 bytes, even though the most restrictive alignment within the structure is for a multiple of 2 bytes.
15 The fix is to specify the "packed" attribute for the structure, which tells the compiler not to assume
16 any strong alignment for the structure (unless it knows a priori, for example with local variables on the stack).
17 This is done by putting __attribute__ ((__packed__)) before the closing semicolon of the class definition,
18 but naturally it's done via a #define which is set to nothing unless GCC is being used. The effect in the code
19 is to cause the new compiler to use memcpy() once again.
21 Fixed a couple of problems in openfont.cpp which showed up with the new compiler:
23 FNTSTORE\SRC\Openfont.cpp: In method `COpenFontGlyphTreeEntry::COpenFontGlyphTreeEntry(TInt, const class TOpenFontCharMetrics &)':
24 FNTSTORE\SRC\Openfont.cpp:30: `COpenFontGlyph::~COpenFontGlyph()' is private
25 FNTSTORE\SRC\Openfont.cpp:45: within this context
27 FNTSTORE\SRC\Openfont.cpp:27: warning: return-type of `SetBitmap' defaults to `int'
29 The fixes are to make COpenFontGlyph::~COpenFontGlyph() protected, and to specify the return type TBool
34 Released by Chris Cooper, 27th May 1999
40 Released by Graham Asher, 30th March 1999
42 Breaks binary compatibility and sets a new binary standard for ER5u. The new design allows complex scripts to be supported when necessary, including ligation, kerning, diacritic placement, and access to characters via glyph indices, and there is also provision for future expansion; reserved virtual functions and data members have been added where appropriate.
44 Works only with version 087 or later of FBSERV, version 085 or later of BITGDI, and version 010 or later of FREETYPE.
48 Released by Graham Asher, 22nd January 1999
50 Fixes the following defect reported in ER5 defects:
52 EDN227054: The character encoding used in the narrow build is not converted to Unicode correctly for the Open Font System
54 Binary-compatible (forward and backward) with releases 053-056 inclusive.
58 Released by Graham Asher, 15th December 1998
60 Fixes the following defect reported in ER5 defects:
62 EDN364691: Allow larger font sizes.
64 Binary-compatible (forward and backward) with releases 053-056 inclusive.
68 Released by Graham Asher, 9th December 1998
70 Fixes the following defects reported in ER5 defects:
72 EDN998932: Bold and italic font selection doesn't work for TrueType fonts
74 EDN569925: Open Font System typefaces are not grouped into families
76 Binary-compatible (forward and backward) with releases 053-055 inclusive.
80 Released by Graham Asher, 9th December 1998
82 Fixes the following defect reported in ER5 defects:
84 EDN376593: COpenFont::GetNearestFontHelper always returns typeface index 0
86 Binary-compatible with 054 and 053.
90 Released by Graham Asher, 11th November 1998
92 Fixes the following defects:
94 SW1-322: Cache memory calculations are wrong
95 SW1-325: Error in the adjustment of almost-square aspect ratios to exactly square
97 Binary-compatible with 053.
101 Released by Graham Asher, 6th November 1998
103 Allows indefinitely large glyphs to be rendered. This is important for printing on high-resolution printers using resident fonts. This meant a change to the layout of TOpenFontGlyphData, which means that binary compatibility is broken for the Open Font System yet again (for the group consisting of FNTSTORE, FBSERV and FREETYPE).
105 Open Font System mutually compatible components: FNTSTORE 053, FBSERV 083, FREETYPE 006.
109 Released by Graham Asher, 28th October 1998
111 Uses new Unicode UIDs. Debug and release builds are compatible.
113 Default algorithmic slant used for Open Fonts changed from 3/16 to 5/16 (fixes SW1-281: ).
117 KFntstoreDllUid16 = 0x10003B1A (Unicode version of 10000179)
118 KUidOpenFontRasterizerValue16 = 0x10003B1F (Unicode version of 0x100012A6)
122 Released by Graham Asher, 26th October 1998
124 Further binary-incompatible changes for the Open Font System. New versions of FBSERV and FREETYPE need to be released. This version is soon to be superseded anyway, in another incompatible change, because of Unicode UIDs and debug/release compatibility.
126 New features: the new TOpenFontSpec class allows algorithmic slant, width, and other effects to be specified, and these effects are used automatically to compensate for non-square pixels and supply pseudo-italics where italics aren't available.
130 Released by Graham Asher, 5th October 1998
132 Fixes the following defects:
134 SW1-57: Changes to code page 1252 require changes to FNTSTORE (i.e., euro & z-caron added)
135 SW1-125: HasUnicodeCharacterL should be a member of COpenFontFile, not COpenFont
136 SW1-218: The Open Font System should allow a file to contain more than one typeface
138 The most important change is the last one, and it is binary-incompatible with respect
139 to rasterizers (but binary-compatible for everything else that depends on it); in other
140 words, rasterizer DLLs, like FREETYPE 002, that depend on FNTSTORE 049 or FNTSTORE 048, need
141 to be rereleased. No rasterizers are part of an EPOC platform release yet, so this
146 Released by Graham Asher, 18th May 1998
148 Fixes bugs introduced in 048, which was the first release to support the Open Font system.
150 SW1-36: CFontStore memory leaks: COpenFontSessionCache and COpenFontSessionCacheList
151 SW1-37: CFontStore::RemoveFile breaks FBSERV test code
152 SW1-40: Some font metric functions don't take account of algorithmic width and height
156 Released by Graham Asher, 8th May 1998
158 Added support for the Open Font system. The main changes are those to fntstore.cpp,
159 which acquires functions to install Open Font rasterizers and use them to create
160 Open Fonts, and the introduction of openfont.h, which declares the base classes for
161 the Open Font system, and openfont.cpp, which contains the base class member functions.
166 1) Rebuilt with E32 125 to achieve MARM DEB/REL compatibility, rendering MARM DEB binary incompatible with previous versions.
167 2) Switched to MAKMAKE for building.
168 3) Moved the build commands to EBLD.BAT.
172 (Release by JamesD, 09-1-98)
174 1)Built with E32 107, F32 074, STORE 043 and GDI 057
176 2) Uses .GDR files created by GDTRAN 020 or above.
178 3) Re-built against GDI 057 which is incompatible with GDI 053 in
183 (Release by JamesD, 22-9-97)
185 1)Built with E32 107, F32 074, STORE 043 and GDI 053.
187 2) Uses .GDR files created by GDTRAN 020 or above.
189 3) Only change involves re-writing search through code sections
190 to find the metrics and bitmap for a particular font. This is now
191 done using a binary chop to improve performance when a large
192 number of code sections are present.
196 (Release by CJCW, 28-5-97)
198 1) Released in sync with E32 107, F32 074, STORE 043 and GDI 053.
200 2) Uses .GDR files created by GDTRAN 020 or above.
202 3) Version number testing of .GDR files changed to fit with above.
204 4) .MAP files added to ARM releasables.
208 (Release by CJCW, 19-5-97)
210 1) Released in sync with E32 099, F32 069, STORE 042 and GDI 050.
212 2) Uses .GDR files created by GDTRAN 020, 021, 022 or 023.
214 3) To avoid rounding errors in FNTSTORE, Twips to Pixels conversions
215 are rounded down and Pixels to Twips conversions are rounded up.
216 This will eliminate the feature found in the Font dialogue, whereby
217 a the twips height of a CBitmapFont was larger than the twips height
218 passed into GetNearestFont().
222 (Release by CJCW, 9-5-97)
224 1) Released in sync with E32 099, F32 069, STORE 042 and GDI 050.
226 2) Uses .GDR files created by GDTRAN 020, 021, 022 or 023.
228 3) The FontSpecInTwips() for a CBitmapFont passed into a GetNearestFontInTwips()
229 will return an equivalent font.
231 4) Binary compatible with 039.
235 (Release by CJCW, 8-5-97)
237 1) Released in sync with E32 099, F32 069, STORE 042 and GDI 050.
239 2) Uses .GDR files created by GDTRAN 020, 021, 022 or 023.
241 3) The FontSpecInTwips() for a CBitmapFont passed into a GetNearestFontInTwips()
242 will return the same font.
246 (Release by CJCW, 6-5-97)
248 1) Released in sync with E32 099, F32 069, STORE 042 and GDI 050.
250 2) Uses .GDR files created by GDTRAN 020, 021, 022 or 023.
252 3) CFontBitmaps now delete themselves when the usage count is 0.
256 (Release by CJCW, 22-4-97)
258 1) Released in sync with E32 099, F32 069, STORE 042 and GDI 050.
260 2) Uses .GDR files created by GDTRAN 020 or GDTRAN 21.
262 3) uid2 and uid3 added to FNTSTR.DLL during ARM build.
266 (Release by CJCW, 4-4-97)
268 1) Released in sync with E32 096, F32 065, STORE 040 and GDI 047.
270 2) Uses .GDR files created by GDTRAN 020.
272 3) WINS builds are done by ordinal.
274 4) ARM builds are done using .FRZ files.
278 (Release by CJCW, 27-3-97)
280 1) Released in sync with E32 095, F32 063, STORE 038 and GDI 046.
282 2) Uses .GDR files created by GDTRAN 020.
284 3) iKPixelAspectRatio added to CFonStoreFile, so that in GetNearestFontInPixels()
285 the TAlgStyle::iWidthFactor can be adjusted accordingly.
289 (Release by CJCW, 20-2-97)
291 1) Released in sync with E32 089, F32 055, STORE 035 and GDI 043.
293 2) Uses .GDR files created by GDTRAN 017.
297 (Release by CJCW, 30-1-97)
299 1) Released in sync with E32 086, F32 050, STORE 034 and GDI 042.
301 2) Uses .GDR files created by GDTRAN 016.
303 3) NumCodeSections() and CodeSection() added to CBitmapFont.
307 (Release by ST, 15-1-97)
309 1) Released in sync with E32 085, F32 049, STORE 033, E32TOOLS 050, GDI 041.
311 2) Uses .GDR files created by GDTRAN 016.
315 (Release by CJCW, 7-1-97)
317 1) Released in sync with E32 082, F32 046, STORE 032 and GDI 040.
319 2) Uses .GDR files created by GDTRAN 016.
323 (Release by LCR, 2-12-96)
325 1) Released in sync with E32 075, etc.
327 2) Uses .GDR files created by GDTRAN 014.
331 (Release by CJCW, 88-11-96)
333 1) Released in sync with E32 074, F32 040, STORE 029 and GDI 038.
335 2) Uses .GDR files created by GDTRAN 014.
339 (Release by CJCW, 28-10-96)
341 1) Released in sync with E32 072, F32 038, STORE 028 and GDI 036.
343 2) Uses .GDR files created by GDTRAN 014.
345 3) iDoubleWidth and iDoubleHeight changed to iWidthFactor and iHeightFactor
346 in both TTypefaceFontBitmap and TAlgStyle.
348 4) Re-released 29-10-96 with amended TAlgStyle::operator ==.
352 (Release by CJCW, 10-10-96)
354 1) Released in sync with E32 070, F32 036, STORE 026 and GDI 035.
356 2) CharWidthInPixels() added to CBitmapFont.
360 (Release by CJCW, 27-9-96)
362 1) Released in sync with E32 069, F32 035, STORE 025 and GDI 034.
364 2) Uses .GDR files created by GDTRAN 013.
368 (Release by CJCW, 27-9-96)
370 1) Released in sync with E32 069, F32 035, STORE 024 and GDI 034.
374 (Release by CJCW, 24-9-96)
376 1) Released in sync with E32 068, F32 034, STORE 023 and GDI 033.
378 2) Binary compatible with 025.
380 3) MNT.CMD and OBY files updated to produce MARM REL and DEB builds.
384 (Release by CJCW, 17-9-96)
386 1) Released in sync with E32 067, F32 033, STORE 021 and GDI 032.
388 2) Binary compatible with 024.
390 3) MNT.CMD and OBY files updated.
394 (Release by CJCW, 2-9-96)
396 1) Released in sync with E32 066, F32 031, STORE 021 and GDI 031.
400 (Release by CJCW, 21-8-96)
402 1) Released in sync with E32 065, F32 029, STORE 020 and GDI 030.
404 2) Relevant changes made with \epoc32 directory structure.
408 (Release by CJCW, 7-8-96)
410 1) Released in sync with E32 064, F32 028, STORE 019 and GDI 029.
414 (Release by CJCW, 29-7-96)
416 1) Released in sync with E32 064, F32 028, STORE 019 and GDI 028.
418 2) Uses .GDR files from GDTRAN 012.
422 (Release by CJCW, 15-7-96)
424 1) Released in sync with E32 063, F32 027, STORE 018 and GDI 027.
426 2) Code implimented in CFontStore to support AddFontL() and ReleaseFont
431 (Release by CJCW, 3-7-96)
433 1) Released in sync with E32 063, F32 027, STORE 017 and GDI 025.
435 2) CCodeSection converted to TCodeSection.
437 3) CFontBitmap converted to TFontBitmap.
439 4) TCodeSection components (bitmap and metrics) are not loaded into
440 RAM if the fontstore file is in ROM to save memory.
444 (Release by CJCW, 12-6-96)
446 1) Released in sync with E32 062, F32 026, STORE 016 and GDI 024.
448 2) CFontBitmap::CharacterMetrics() changed so that the metrics for
449 a character not defined are all zeroed.
451 3) Unicode builds do not work due to F32's binary incompatibility.
453 4) DoubleHeight and DoubleWidth implimented for FontBitmaps.
455 5) KCBitmapFontUid defined for CBitmapFont.
459 (Release by CJCW, 21-5-96)
461 1) Released in sync with E32 059, F32 023, STORE 014 and GDI 023.
463 2) Uses .GDR files produced by GDTRAN 009.
465 3) KFontStoreFileVer9Uid used to identify .GDR files.
469 (Release by CJCW, 15-5-96)
471 1) Released in sync with E32 059, F32 023, STORE 013 and GDI 022.
473 2) Uses .GDR files produced by GDTRAN 008.
475 3) Three TUids to identify .GDR files.
477 4) TInts converted to TUids where appropriate.
481 (Release by CJCW, 9-5-96)
483 1) Released in sync with E32 058, F32 022, STORE 013 and GDI 021.
485 2) Uses .GDR files produced by GDTRAN 007.
487 3) The versions of .GDR files are now detected.
489 4) Class TAlgStyle used for algorithmic attributes of CBitmapFont.
493 (Release by LCR, 2-5-96)
495 ARM code size - FNTSTR.DLL: 16900 Bytes.
497 1) Fixed bold/italic swapping issue.
499 2) Intermediate release to facilitate the release of BITGDI.
503 (Release by CJCW, 25-4-96)
505 1) Released in sync with E32 057, F32 021, STORE 012 and GDI 019.
507 2) Proportional FontBitmaps used with a Monospaced BitmapFont are
508 algorithmically monoized.
510 3) Typefaces now have a flag to say wether they consist of symbol
511 or alphabetic characters.
513 4) BitmapFonts created through FontStore::GetFontById() have a blank
518 (Release by CJCW, 11-4-96)
520 1) Released in sync with E32 056, F32 020, STORE 011 and GDI 018.
524 (Release by CJCW, 9-4-96)
526 1) Released in sync with E32 056, F32 020, STORE 011 and GDI 017.
528 2) Uses .GDR files created by FNTTRAN in GDTRAN 005.
530 3) GetFontById now takes a File Id and a FontBitmap Id.
532 4) FontBitmaps can now be shared by Typefaces, useful for 1, 2,
533 3 and 4 pixel FontBitmaps.
537 (Release by CJCW, 20-3-96)
539 1) Released in sync with E32 055, F32 019, STORE 010 and GDI 016.
541 2) Uses .GDR files created by FNTTRAN in GDTRAN 004.
545 (Release by CJCW, 13-3-96)
547 1) Released in sync with E32 054, F32 018, STORE 009 and GDI 015.
551 (Release by CJCW, 29-2-96)
553 1) Released in sync with E32 054, F32 018, STORE 009 and GDI 014.
555 2) The size of leading counts for strings and lists has been increased
556 to 32 bits in order to be compatible with stream chevrons defined in
557 STORE. *.GD files must now be compiled using FNTTRAN in GDTRAN
560 3) Fonts are now held on a user defined heap passed into FontStore::NewL()
564 (Release by CJCW, 5-2-96)
566 1) Released in sync with E32 053, F32 017, STORE 008 and GDI 012.
570 (Release by CJCW, 1-2-96)
572 1) Released in sync with E32 053, F32 017, STORE 008 and GDI 011.
574 2) HCIL3.GDR to be used for HCIL fonts.
576 4) To be used in conjunction with FNTTRAN, released with GDTRAN 003,
577 for creating .GDR files - Format has changed slightly.
579 5) FontStore functions OpenL() and AppendL() combined in AddFile() which returns
582 6) Close() can be used to close all FileStores with argument zero or particular
583 FontStore with Id argument.
587 (Release by CJCW, 27-12-95)
589 1) Released in sync with E32 051, F32 015, STORE 006 and GDI 008
591 2) HCIL2.GDR to be used for HCIL fonts
593 4) To be used in conjunction with FNTTRAN, released with GDTRAN 002,
594 for creating .GDR files
596 5) FontHeightInTwips has been modified to round up and down to nearest
599 5) CCodeSection renamed CBitmapCodeSection to avoid confusion with
600 CWidthCodeSection in PdrStore
602 6) iPixelWidthInTwips and iPixelHeightInTwips changed to iKPixelWidthInTwips
603 and iKPixelHeightInTwips to indicate 1000 pixels
607 (Release by CJCW, 14-12-95)
609 1) Released in sync with E32 050, F32 014, STORE 005 and GDI 007
611 2) HCIL2.GDR to be used for HCIL fonts
613 4) To be used in conjunction with FNTTRAN, released with GDTRAN 002,
614 for creating .GDR files
616 5) The directories SGDS and TGDS have been renamed SFS and TFS respectively
620 (Release by CJCW, 29-11-95)
622 1) Released in sync with STORE 004 and GDI 006, replaces GDSTORE
624 2) New format of .GDR file used - HCIL2.GDR with all your favourite HCIL
627 3) AppendL() added to CFontStore, so that more than one .GDR files can
630 4) To be used in conjunction with FNTTRAN, released with GDTRAN 002,
631 for creating .GDR files
633 5) CFontStore is device independant in that no model needs to be set as
636 6) iPixelHeightInTwips and iPixelWidthInTwips are public data members of
637 CFontStore, with default values corresponding to the Protea screen