Index

Step by Step: How to Configure D-Type for the Highest Text Quality

Suggested Configurations For Device Independent Text

Option B1 — fractional positioning enabled, horizontal and vertical hinting enabled

Step 1: QUALITY

Set Typesetter's quality level to 6 (DV_QUALITY_HINT_FILTER_2), which is a high quality setting with a filter called Hint Filter #2.

This can be done at run-time by calling the dtTypesetterSetQuality function or during the initialization of D-Type Engine by setting up the C section of the main D-Type initialization file (dtype.inf by default) as shown below:

# C) PARAMETERS FOR D-TYPE FONT ENGINE

# 1. Size of the bitmap cache in RAM, in bytes
#    (Must be greater than parameter B1 * B2)
#
# 2. Maximum number of bitmaps to store in the bitmap cache
#
# 3. Maximum number of transformations to store in the transformation cache
#
# 4. Bitmap cache compression: 0=Disable Compression, 1=Enable Compression
#
# 5. Quality:  0=Medium, 1=High, 2=Very High
#              3=Dispersion Filter 1, 4=Dispersion Filter 2
#              5=Hint Filter 1, 6=Hint Filter 2, 7=Hint Filter 3, 8=Hint Filter 4
#              9=LCD_RGB_SUB_1, 10=LCD_RGB_INT_1, 11=LCD_BGR_SUB_1, 12=LCD_BGR_INT_1
#             13=LCD_RGB_SUB_2, 14=LCD_RGB_INT_2, 15=LCD_BGR_SUB_2, 16=LCD_BGR_INT_2
#             17=LCD_RGB_SUB_3, 18=LCD_RGB_INT_3, 19=LCD_BGR_SUB_3, 20=LCD_BGR_INT_3
#             21=LCD2_RGB_SUB_1, 22=LCD2_RGB_INT_1, 23=LCD2_BGR_SUB_1, 24=LCD2_BGR_INT_1
#             25=LCD2_RGB_SUB_2, 26=LCD2_RGB_INT_2, 27=LCD2_BGR_SUB_2, 28=LCD2_BGR_INT_2
#
# 6. Glyph alignment method: 0=Old, 1=Reserved, 2=New, 514=New(2)+CJK(512)
#
# 7. Font size subscale for fractional sizing, both horizontal and vertical.
#
# Notes:
#
# * Larger cache means better performance but higher consumption of RAM.
#
# * Bitmap cache compression is extremely fast and effective. If enabled, bitmaps
#   will be stored in a compressed format and will consume 3-10 times less space
#   in the bitmap cache than non-compressed bitmaps. This is highly recommended when
#   the size of the bitmap cache is small (e.g. in memory constrained environments).

{
2650000
8000
5000
1
6
514
1
}

Step 2 (Optional): BACKGROUND

For a more interesting and enjoyable reading experience, we suggest that you set your background to resemble the surface of a sheet of paper, as shown below. To do so, fill it with a very soft pattern fill (we suggest pattern fill 12 from pattern group 3 — see Pattern Fills) using the RGB color value FF F8 EE.

Background like a sheet of paper
Background like a sheet of paper

Whenever possible, render to D-Type's Memory Surface (see dtOutputSetAsMDC). This will give you great speed and excellent alpha-blending capabilities.

Step 3: FONTS

Use only good quality fonts to render your text. Verdana (.ttf), Tahoma (.ttf), Century Gothic (.ttf), Lucida (.ttf), Palatino (.ttf), Utopia (.pfb), Helvetica (.pfb), Adobe Garamond Pro (.otf), HSans MM (.dtf) and similar high quality font are highly recommended. Verdana and Lucida, for example, are very legible sans-serif fonts that are ideal for screen reading. Ensure your fonts are added to the Font Catalog as hinted or auto-hinted. Auto-hinting will make even poorly hinted or non-hinted fonts look very nice as long as their outlines are well designed. In other words, great looking fonts do not have to be manually hinted at all (if used with D-Type Engine). However, their outlines and metrics must be well designed.

Step 4: POSITIONING MODE

Set Typesetter's positioning mode to 0 (DV_POSITIONING_ENGINE_DEFAULT_A).

If you are using D-Type Standard Engine, this can be done by calling the dtTypesetterSetPositioning function. If you are using D-Type Power Engine, this can be done by setting the pdPositioning property of the text object's Text Layout to 0.

Step 5: HINTING MODE

Set Typesetter's hinting mode to 0 (DV_HINTING_ENGINE_DEFAULT_A).

If you are using D-Type Standard Engine, this can be done by calling the dtTypesetterSetHinting function. If you are using D-Type Power Engine, this can be done by setting the pdHinting property of the text object's Text Layout to 0.

Step 6: OUTPUT MODE

Draw text in device independent mode.

If you are using D-Type Standard Engine, this can be done by calling the dtxCharsDoOutput function and setting the kern_mode parameter to 5 (DV_TEXTMODE_KERN_FRAC). If you are using D-Type Power Engine, this can be done by setting the text object's pdDeviceMode property to 0 and setting the pdKerning property of the text object's Text Layout to 1.

Result

If you have followed all of the above recommendations, your text should appear as in the following examples.

Lucida Sans
Lucida Sans rendered at the size of 10, 12 and 14 pixels.


Verdana
Verdana rendered at the size of 10, 12 and 14 pixels.


Palatino
Palatino rendered at the size of 10, 12 and 14 pixels.


Utopia
Utopia rendered at the size of 10, 12 and 14 pixels.

Other Settings to Try

Quality
Try also the following quality levels: 2 (DV_QUALITY_VERYHIGH), 3 (DV_QUALITY_DISPERSION_FILTER_1), 4 (DV_QUALITY_DISPERSION_FILTER_2), 5 (DV_QUALITY_HINT_FILTER_1), 7 (DV_QUALITY_HINT_FILTER_3), 8 (DV_QUALITY_HINT_FILTER_4) or one of the quality levels optimized for LCD screens (DV_QUALITY_LCD_...). See dtTypesetterSetQuality for details.

Custom Gray (Alpha) Values
Try a different gray-scale table: gssqrt2.gsl or gssqrt3.gsl for example. A custom gray-scale can be specified at run-time by calling the dtRasterizerSetGrayscale function or during the initialization of D-Type Engine by setting up the A section of the main D-Type initialization file appropriately. The "best" choice will depend highly on your monitor's gamma.

 

Index