CartoType TimeLine

a log of noteworthy events - most recent first

28th August 2008: Multiple string attributes for map objects: The native data format, CTM1, supported only a single string attribute for each map object: the name. This hadn't been a major problem in the past but two things made me want to fix it: the need to store both the name (Akeman Street, Long Lane) and the highway code (A41, M1, B4009, I-95) of a road; and the need to store names in more than one language, giving the choice, for instance, of displaying names in English or Chinese for a map of China. I've made a minor change to the CTM1 format, and some associated changes to the CTM1 generator and style sheet format, to support this new feature. The way it works is this. The string that formerly stored just the name now stores all the string attributes. The standard name comes first, and other string attributes follow, separated by nulls (the Unicode character U+0000, stored as a single 0 byte in UTF-8). Each attribute is stored as <attrib>=<value>. For example, a road called 'High Street' with the highway code A41, which is the 'ref' attribute in OpenStreetMap parlance, would store its string attributes as "High Street<null>ref=A41".

The new version of generate_map_data_type1 is relatively sparing in its use of string attributes. It writes just "ref" and any attributes starting with "name:", to capture language variants of names.

You can use the new attributes in style sheets only in very simple ways at the moment, but that will of course change. You can add attribute search paths telling CartoType which attributes to look for when drawing a label. In the <CartoTypeStyleSheet> element you can use the new attribute labelAttrib, which gives the default search path, and you can override that by using a labelAttrib attribute in a <label> element. The value of the attribute is a semicolon-separated list of string attribute names. An empty name matches the default name of the object. Thus to use the 'ref' attribute, or the standard name if not present, say labelAttrib='ref;' (note the final ';') and to use the Chinese name, or the English name if it is not present, say labelAttrib='name:zh;name:en'.

15th July 2008: CartoType's native map data format, CTM1, is now documented and available for free use under a license requiring attribution.

23rd June 2008: The Windows Mobile 2005 demo now supports GPS tracking. It displays your current position and track.

9th May 2008: Dashed lines are now supported in both style sheets and the SVG interpreter. Yes, I know this feature is long overdue, but I've realised finally that is it essential. The railway line below is drawn as a dashed line with a border, using this code in the style sheet:

<layer name='railway'>
<line width='12m,2pt' border='grey' borderWidth='10%,0.7,2' fill='white' dashArray='5,5'/>
<label font-size='75%,8pt' glow='white' color='black' case='assume-title'/>
</layer>

White dashes are drawn over a grey border; when there are dashes, the border is also the colour between the dashes.

14th April 2008: The Windows Mobile 2005 Demo with full UK map is now available for download. I've tested it on my mobile phone, an O2-branded XDA Orbit. It's still slow at small scale but fine when you zoom in.

9th April 2008: I've now converted the entire UK data from OpenStreetMap into one 26MB CartoType map. I'm in the middle of writing a style sheet for OSM-derived data. It's not finished but the maps are now good enough to show here:

There are still a lot of missing features such as icons for points of interest, place names, road reference codes (e.g., M4, A41). I'll be getting to those as soon as I can.

31st March 2008: CartoType's data conversion tool can now create maps from OpenStreetMap data. The conversion is not yet very good because not all layers are handled properly and a new style sheet is needed to make the best use of the OSM data, but the hard work of writing the converter is done.

12th November 2007: Here is a summary of some new features that have been added over the last few months, many of them in response to helpful feedback and feature requests from Icom.

DBF files can be split into several layers: Added a new attribute to the SHP accessor control file: "MappedObjectsOnly" in the <File> tag. It allows extracts of files to be made into layers; a single file can become many layers.

Code page conversion: You can now specify the code page of a file, to interpret 8-bit fields in DBF files, when reading SHP files. This allows generate_map_data_type1 to handle non-UTF8 data. Only Windows Cyrillic (Codepage 1251) is handled right now; more code pages can be added as needed.

New sample fonts: DejaVu TrueType fonts are now included in the standard release. They support more characters than the Computer Modern Roman fonts, in particular the Cyrillic script.

Suppress labels on very small polygons: Labels in polygons are now drawn only if the polygon's size (maximum of width and height) exceeds a new parameter, the minimum polygon size, set using minPolygonSize in the label section in a style sheet.

Ellipsoidal UTM projection: There is now an ellipsoidal version of the Universal Transverse Mercator projection, so that projected coordinates exactly match those on topographic maps. Formerly only a spherical version was supported, which was adequate for map display but not for consistency with coordinate conversion. This allows you to overlay a CartoType map with data from a different source from the map data, if the map data is in pre-projected form and the overlay data is not.

Full control over anti-aliasing: The style sheet now gives full control over anti-aliasing. Added 'font-smooth' attribute as in proposed new version of CSS standard. Added 'antiAlias' attribute with values 'true' and 'false' to <shape> and <line> elements in style sheet.

Generalization of repeated symbols: Repeated symbols can now be drawn along any linear feature. Now you can use 'repeatedSymbol' in any layer, using the same syntax as 'oneWayArrow'. Repeated symbols are drawn unconditionally. And repeated symbols can have a border, specified using new 'border' and 'borderWidth' parameters.

Generalization of borders: Borders can now be drawn on any linear feature, not just roads. For example, a combination of borders and repeated crosstie symbols can be used to symbolize a railway track.

Custom icons and styles: Added a custom icon list to CMapDrawParam. Icons placed here override those in the style sheet. You can also override the style for any layer by adding a style to a new custom style list in CMapDrawParam.

Every object can have its own custom style: Added a pointer to an interface class MObjectStyleOverride to CMapDrawParam. If it is non-null MObjectStyleOverride::ObjectStyle is called for every object to allow the style to be replaced or customized according to the object attributes. The object and its default style are supplied to the function.

Multiple label layers: You can now have as many label layers as you like. Each one draws any icons and labels accumulated since the last label layer if any. For example, this allows you to draw the labels and icons associated with an overlaid route independently of, and overlapping, any other labels and icons.

27th June 2007: Icom Consulting, Inc., became a CartoType licensee. Icom Consulting Inc. is an information security and mobile data applications firm with offices in New York and Sofia, Bulgaria.

18th September 2005: Added US highway shields and the ability to draw names beside roads and other linear features as well as on top of them:

26th July 2005: Added a glowing effect for labels, and logarithmic (non-linear) scaling for widths of roads and other features. This map demonstrates both features.

15th May 2005: CartoType now runs on Microsoft Pocket PC 2003.

20th April 2005: Added a hachure effect to the graphics system.

Polygons can now be shaded using hachure at any angle, in any color, at any pitch and interval.

3rd April 2005: Font selection is now much more flexible, and conforms with SVG as far as it goes. You can now easily specify labels in a variety of fonts and styles.

26th March 2005: Added printing support, using the full printer resolution, to the Windows demo.

14th March 2005: The CTM1 (CartoType Map data Format 1) file format now contains an optional fast placename index, enabling names to be found very quickly, with support for partial matches.

11th March 2005: Labels can now be drawn in multiple colors. All labels are now handled by the system that prevents overlap; label overlap has now been completely abolished.

5th March 2005: Added support for drawing one-way streets.

Optional arrows (or whatever symbol you like) can be drawn along one-way streets at selected scales.

3rd March 2005: Moved the source code repository to CVSDude, a Subversion and CVS hosting service. This excellent service is run by Mark Bathie, who gives friendly and fast personal support. I am very impressed, and I'd recommend CVSDude to other ISVs. We use TortoiseSVN as the Subversion client.

7th January 2005: The Current Science Group licensed CartoType for use by all companies in the group. These include MapByte, which creates and manages location-based services, navigation and telematics applications over the web and via mobile platforms, Mapa Publishers, Israel’s leading publisher of maps, atlases, and travel, food and leisure guides for Israel, and Telmap, a leading technology developer and software provider of a wide range of innovative applications designed for the mobile mapping arena.

23rd November 2004: CartoType's routing system ran for the first time. The router uses data from any source, via the standard data accessor interface. It finds the best route between any two places, taking into account road type and speed category, access restrictions, one-way streets, and banned turns. Here is a route across a complicated part of San Francisco, California:

4th April 2004: CartoType now runs on Palm OS 5:

This is an image from the simulator. The demo runs perfectly on the hardware too.

29th January 2004: The CartoType demonstration program now runs on Symbian OS, on both the emulator and on an actual device: the Sony Ericsson P900 smartphone. This picture shows the P900.

This clearer image is of the same program running on the Symbian OS emulator:

In both cases what is shown is part of the Isle of Wight. The typeface was also changed between versions; a sans-serif face is now preferred, which gives clearer text at small sizes.

3rd December 2003: A UK limited company, Cartography Ltd., has been founded to own, develop and market CartoType.

11th August 2003: The CartoType graphics system is now to be expanded so that it can support Scalable Vector Graphics (SVG). The plan is to write a compact portable SVG interpreter for use on small devices. The SVG interpreter will be a separate product that uses the same graphics library.24th January 2003: Start of project. The basic idea was set down as follows:

1st July 2003: Many of the fundamental CartoType components are now in place; not as final versions, but with mature designs that will evolve towards the first released version. These include

18th February 2003: Coding of the CartoType system started.

The idea is to offer an engine that can work at all screen resolutions using the same data, producing, if the resolution is high enough (say, 1200dpi) maps of professional typeset quality, but also scaling well to resolutions found on PCs and PDAs. It will use concepts drawn from computerized typography including hinting and automatic curve-fitting. The product will be delivered as licensable source code in a subset of standard C++ that will work on many platforms including Windows, Linux, PalmOS, Symbian OS. There will be a style sheet system enabling the same data to be displayed in various formats (e.g., Ordnance Survey and Michelin look-alikes). Naturally text will be Unicode-based and both Adobe and TrueType fonts will be supported.