Drawing differences between the ArcGIS drawing engines
Basemap layers and optimized map services in ArcGIS Server use a high-performance drawing engine to achieve better performance and drawing quality. This drawing engine provides excellent performance for all symbol types supported.
Because this drawing engine is different from the drawing engine used in ArcMap or a standard map service, you should be aware of some important differences in the appearance of a map drawn in the optimized map service. The Prepare window provides warnings that inform you of many of these differences.
However, because the differences in appearance can be subjective, you should always verify the proper appearance of your map as it is displayed. If you are preparing a basemap layer, use the basemap layer in ArcMap to visualize any differences. Use the Prepare window, accessible on the Map Service Publishing toolbar, when publishing to an optimized map service. The following sections describe some of these differences in drawing and why they occur.
Text and character marker anti-aliasing
In ArcMap and in the standard map service, text and character marker anti-aliasing is controlled by the font smoothing settings that are configured in the machine's display settings. These settings are set per user and are not configured as part of the map service. Because of this, the behavior of font smoothing may be different when a map is published to the server as a standard map service.
In the optimized map service, these settings are configured per service and stored as part of the Map Service Definition. These text anti-aliasing settings are accessed from the Options button on the Map Service Publishing toolbar.
Text drawn in a basemap layer will always be drawn with the Force option. Note that labels in a basemap layer will always be drawn using the standard display in ArcMap and will respect the machine settings mentioned above.
Because the basemap layer and optimized map service drawing engine uses a different method of enabling text and character anti-aliasing, and the algorithms used to execute this anti-aliasing are different, the rendering of text and character markers may exhibit some differences when compared with a standard map service.
Coordinate rounding differences
In ArcMap and in the standard map service, elements of the on-screen display are specified with integer coordinates. If the real coordinate of a feature (for instance, a line or a marker) does not lie exactly on that integer coordinate, it will be rounded up or down. This can result in some inaccuracies, particularly in the case of very thin lines or lines with very thin elements such as cased lines. Lines whose sizes are less than one pixel at a given zoom level or display extent are rounded up to one pixel.
In basemap layers and optimized map services, the drawing engine can use subpixel coordinates to place and draw features on the map. This results in greater accuracy of feature placement and symbology.
However, if the map's symbology was originally designed in ArcMap, the appearance may be different in a basemap layer or optimized map service. This is especially evident in line symbology.
See the section Designing Lines for a Specific Resolution in the topic Line aliasing in an optimized map service for more information on these issues and how to design line symbols for a given target resolution. In most cases, this issue will not occur in basemap layers, since basemap layers automatically correct this problem.
Simple symbols in basemap layers and optimized map service
Simple symbols (Simple Line Symbol, Simple Fill Symbol, and Simple Marker Symbol) as provided in ArcMap are displayed in a manner that can sometimes be inconsistent. Because of these inconsistencies in simple symbols, they may sometimes draw differently in a basemap layer or optimized map service. You might be informed of some of these differences by one of the analyzers in the Prepare window.
For instance, Simple Line Symbols using a dash or dash dot pattern do not honor a map's reference scale and will draw with different spacing depending on the dpi requested. In a basemap layer or optimized map service, these symbols honor the map's reference scale and do not change with the requested dpi.
For Simple Fill Symbol, the Style property is actually not available on the ArcMap user interface, but many developer samples and other third-party code snippets might create these symbols in a map. Styles other than esriSFSSolid are not supported in a basemap layer or optimized map service and will result in an error when analyzed.
For Simple Marker Symbol, the behavior of the simple markers changes depending on the size at which they are displayed, causing some variations in their size and shape.
Basemap layers and optimized map services always display marker symbols at the requested size. In the standard map service or ArcMap, when a simple marker symbol's size is below a certain threshold, it will draw no smaller. This means that when this threshold is reached, the basemap layer or optimized map service continues to display these symbols at an accurate size, whereas the standard map service and ArcMap do not, resulting in an apparent mismatch.
Line decorations in basemap layers and optimized map services
Line symbols containing line decorations in ArcMap, such as line arrowhead, will not draw the decoration when the decoration is larger than the line length of the feature being decorated. The drawing engine used by basemap layers and optimized map services will always draw line decorations regardless of the size of the line. At some scales, this can lead to a more cluttered appearance than in ArcMap, but line decorations are drawn consistently and predictably.
Color in basemap layers and optimized map services
The drawing engine used by basemap layers and optimized map services uses a color management engine. Because of this, some colors may not exactly match the appearance of the ArcMap standard display.
The ArcMap application and standard map services do not utilize color management. In particular, you may notice differences in color when using the following:
- Colors defined in color spaces other than RGB (for instance, colors defined in HSV, CMYK, or grayscale)
- Algorithmic color ramps using HSV, CIELab, or LABLch algorithms
Viewing a basemap layer in ArcMap or by using the Preview window opened from the Map Service Publishing toolbar allows you to evaluate the appearance of the map using the new graphics engine and determine whether the colors and symbology are acceptable.
One thing that can be done to minimize the color differences in an optimized map service is to change the monitor settings within ArcMap. This can be useful when authoring a map for use in an optimized map service.
To access the monitor settings, on any Symbol Properties dialog box, click the drop-down menu on the color swatch and choose More Colors.
On the Color Selector dialog box, click the arrow button in the upper right corner and choose Monitor Setup.
On the Monitor Setup dialog box, change the Gamma setting to 2.2 and click OK to close the dialog box.
This will change ArcMap to use a gamma value that more closely matches the color profile used by the drawing engine of basemap layers and optimized map services and should result in more closely matched color transformations.
This setting will only affect the appearance of maps drawn by the user and the computer on which this modification is performed. This also applies to maps served as standard map services.
Font handling differences in basemap layers and optimized map services
Fonts are handled slightly differently in a basemap layer or optimized map service when compared with ArcMap or the standard map service. There are two main differences:
- Basemap layers and optimized map services will not draw faux italic or faux bold styles. This case triggers a warning when the map document in question is analyzed.
- Basemap layers and optimized map services do not provide font fallback in cases where a specific character set or type face is not available.
Faux italic or faux bold refers to situations where a font is not available in the bold or italic styles, or the combination of properties does not have a corresponding font installed. For instance, a user might have Verdana Bold and Verdana Italic but be missing Verdana Bold Italic.
In these cases, ArcMap or the standard map service attempts to simulate these properties by graphically skewing (italic) or thickening (bold) the original font.
This does not often correspond visually to the actual bold or italic version of the typeface. Indeed, for some fonts (such as the ESRI fonts designed for use as marker symbols), it does not make sense to display them in bold or italic styles. Basemap layers and optimized map services only display with fonts and font styles that are available on the system.
Always ensure that your text renders as you expect. If you do not see bold or italic properties in your text, check to be sure that you have that particular style of typeface available on your system.
Font linking and font fallback
Fonts contain definitions for specific characters (such as the Latin letter A, Chinese glyph [qian], and so forth) in different character sets (such as Western Europe or Cyrillic) as determined by their creators. Font fallback and font linking are methods of displaying characters that do not actually exist in the requested font by drawing them in another similar font that does contain them. These methods are commonly used to display Latin characters with a font that only contains East Asian characters, or vice versa.
In cases like these, the standard ArcMap display uses Windows GDI (graphics device interface, a graphics system built into Windows) to attempt to link to another font that contains the missing glyphs so the text string can be displayed despite the missing characters. In many cases, this results in an odd appearance or behavior due to mismatches in kerning or other characteristics, in addition to other differences between the original font and the linked fallback font (see image below).
Due to these and other issues, relying on font fallback to render the proper glyphs is not a recommended practice for any map. In a basemap layer or optimized map service, glyphs that are not present in the requested font will not be rendered. Preview your basemap layer in ArcMap or your map service in the Preview window to determine cases in which this occurs.
In general, the best practice is to utilize a font that contains glyphs for the character set you are attempting to use. In the example above, the selected font Arial Unicode MS is missing the Thaana character set. To ensure that the text renders correctly, use inline text formatting tags to switch to a font containing Thaana characters, such as MV Boli.
One way to determine whether a font is falling back is to copy and paste the text into WordPad. Then select the text that you suspect may be using font fallback. If the font name changes relative to the placement of the cursor in the string, this font can be used instead of the font specified in ArcMap.
A similar technology, font substitution, is a method of displaying text in a different font when the requested font is not present on the system. For instance, if a map contains text that uses the font Helvetica but Helvetica is not installed on the machine, the text will appear in Arial instead.
Basemap layers and optimized map services can utilize font substitution just as the standard map service or ArcMap can. However, in general, it is a good practice to ensure that the fonts used in the map are available on the machine that will use the map, including the machine on which ArcGIS Server resides.