OLD | NEW |
1 /***************************************************************************/ | 1 /***************************************************************************/ |
2 /* */ | 2 /* */ |
3 /* freetype.h */ | 3 /* freetype.h */ |
4 /* */ | 4 /* */ |
5 /* FreeType high-level API and common types (specification only). */ | 5 /* FreeType high-level API and common types (specification only). */ |
6 /* */ | 6 /* */ |
7 /* Copyright 1996-2012 by */ | 7 /* Copyright 1996-2013 by */ |
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ | 8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
9 /* */ | 9 /* */ |
10 /* This file is part of the FreeType project, and may only be used, */ | 10 /* This file is part of the FreeType project, and may only be used, */ |
11 /* modified, and distributed under the terms of the FreeType project */ | 11 /* modified, and distributed under the terms of the FreeType project */ |
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | 12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ |
13 /* this file you indicate that you have read the license and */ | 13 /* this file you indicate that you have read the license and */ |
14 /* understand and accept it fully. */ | 14 /* understand and accept it fully. */ |
15 /* */ | 15 /* */ |
16 /***************************************************************************/ | 16 /***************************************************************************/ |
17 | 17 |
18 | 18 |
| 19 #ifndef __FREETYPE_H__ |
| 20 #define __FREETYPE_H__ |
| 21 |
| 22 |
19 #ifndef FT_FREETYPE_H | 23 #ifndef FT_FREETYPE_H |
20 #error "`ft2build.h' hasn't been included yet!" | 24 #error "`ft2build.h' hasn't been included yet!" |
21 #error "Please always use macros to include FreeType header files." | 25 #error "Please always use macros to include FreeType header files." |
22 #error "Example:" | 26 #error "Example:" |
23 #error " #include <ft2build.h>" | 27 #error " #include <ft2build.h>" |
24 #error " #include FT_FREETYPE_H" | 28 #error " #include FT_FREETYPE_H" |
25 #endif | 29 #endif |
26 | 30 |
27 | 31 |
28 #ifndef __FREETYPE_H__ | |
29 #define __FREETYPE_H__ | |
30 | |
31 | |
32 #include <ft2build.h> | 32 #include <ft2build.h> |
33 #include FT_CONFIG_CONFIG_H | 33 #include FT_CONFIG_CONFIG_H |
| 34 #include FT_TYPES_H |
34 #include FT_ERRORS_H | 35 #include FT_ERRORS_H |
35 #include FT_TYPES_H | |
36 | 36 |
37 | 37 |
38 FT_BEGIN_HEADER | 38 FT_BEGIN_HEADER |
39 | 39 |
40 | 40 |
41 | 41 |
42 /*************************************************************************/ | 42 /*************************************************************************/ |
43 /* */ | 43 /* */ |
44 /* <Section> */ | 44 /* <Section> */ |
45 /* user_allocation */ | 45 /* user_allocation */ |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 /* mean further below the vertical glyph origin. */ | 230 /* mean further below the vertical glyph origin. */ |
231 /* */ | 231 /* */ |
232 /* vertAdvance :: */ | 232 /* vertAdvance :: */ |
233 /* Advance height for vertical layout. Positive values mean the */ | 233 /* Advance height for vertical layout. Positive values mean the */ |
234 /* glyph has a positive advance downward. */ | 234 /* glyph has a positive advance downward. */ |
235 /* */ | 235 /* */ |
236 /* <Note> */ | 236 /* <Note> */ |
237 /* If not disabled with @FT_LOAD_NO_HINTING, the values represent */ | 237 /* If not disabled with @FT_LOAD_NO_HINTING, the values represent */ |
238 /* dimensions of the hinted glyph (in case hinting is applicable). */ | 238 /* dimensions of the hinted glyph (in case hinting is applicable). */ |
239 /* */ | 239 /* */ |
| 240 /* Stroking a glyph with an outside border does not increase */ |
| 241 /* `horiAdvance' or `vertAdvance'; you have to manually adjust these */ |
| 242 /* values to account for the added width and height. */ |
| 243 /* */ |
240 typedef struct FT_Glyph_Metrics_ | 244 typedef struct FT_Glyph_Metrics_ |
241 { | 245 { |
242 FT_Pos width; | 246 FT_Pos width; |
243 FT_Pos height; | 247 FT_Pos height; |
244 | 248 |
245 FT_Pos horiBearingX; | 249 FT_Pos horiBearingX; |
246 FT_Pos horiBearingY; | 250 FT_Pos horiBearingY; |
247 FT_Pos horiAdvance; | 251 FT_Pos horiAdvance; |
248 | 252 |
249 FT_Pos vertBearingX; | 253 FT_Pos vertBearingX; |
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
837 /* */ | 841 /* */ |
838 /* charmaps :: An array of the charmaps of the face. */ | 842 /* charmaps :: An array of the charmaps of the face. */ |
839 /* */ | 843 /* */ |
840 /* generic :: A field reserved for client uses. See the */ | 844 /* generic :: A field reserved for client uses. See the */ |
841 /* @FT_Generic type description. */ | 845 /* @FT_Generic type description. */ |
842 /* */ | 846 /* */ |
843 /* bbox :: The font bounding box. Coordinates are */ | 847 /* bbox :: The font bounding box. Coordinates are */ |
844 /* expressed in font units (see */ | 848 /* expressed in font units (see */ |
845 /* `units_per_EM'). The box is large enough */ | 849 /* `units_per_EM'). The box is large enough */ |
846 /* to contain any glyph from the font. Thus, */ | 850 /* to contain any glyph from the font. Thus, */ |
847 /* `bbox.yMax' can be seen as the `maximal */ | 851 /* `bbox.yMax' can be seen as the `maximum */ |
848 /* ascender', and `bbox.yMin' as the `minimal */ | 852 /* ascender', and `bbox.yMin' as the `minimum */ |
849 /* descender'. Only relevant for scalable */ | 853 /* descender'. Only relevant for scalable */ |
850 /* formats. */ | 854 /* formats. */ |
851 /* */ | 855 /* */ |
852 /* Note that the bounding box might be off by */ | 856 /* Note that the bounding box might be off by */ |
853 /* (at least) one pixel for hinted fonts. See */ | 857 /* (at least) one pixel for hinted fonts. See */ |
854 /* @FT_Size_Metrics for further discussion. */ | 858 /* @FT_Size_Metrics for further discussion. */ |
855 /* */ | 859 /* */ |
856 /* units_per_EM :: The number of font units per EM square for */ | 860 /* units_per_EM :: The number of font units per EM square for */ |
857 /* this face. This is typically 2048 for */ | 861 /* this face. This is typically 2048 for */ |
858 /* TrueType fonts, and 1000 for Type~1 fonts. */ | 862 /* TrueType fonts, and 1000 for Type~1 fonts. */ |
859 /* Only relevant for scalable formats. */ | 863 /* Only relevant for scalable formats. */ |
860 /* */ | 864 /* */ |
861 /* ascender :: The typographic ascender of the face, */ | 865 /* ascender :: The typographic ascender of the face, */ |
862 /* expressed in font units. For font formats */ | 866 /* expressed in font units. For font formats */ |
863 /* not having this information, it is set to */ | 867 /* not having this information, it is set to */ |
864 /* `bbox.yMax'. Only relevant for scalable */ | 868 /* `bbox.yMax'. Only relevant for scalable */ |
865 /* formats. */ | 869 /* formats. */ |
866 /* */ | 870 /* */ |
867 /* descender :: The typographic descender of the face, */ | 871 /* descender :: The typographic descender of the face, */ |
868 /* expressed in font units. For font formats */ | 872 /* expressed in font units. For font formats */ |
869 /* not having this information, it is set to */ | 873 /* not having this information, it is set to */ |
870 /* `bbox.yMin'. Note that this field is */ | 874 /* `bbox.yMin'. Note that this field is */ |
871 /* usually negative. Only relevant for */ | 875 /* usually negative. Only relevant for */ |
872 /* scalable formats. */ | 876 /* scalable formats. */ |
873 /* */ | 877 /* */ |
874 /* height :: The height is the vertical distance */ | 878 /* height :: This value is the vertical distance */ |
875 /* between two consecutive baselines, */ | 879 /* between two consecutive baselines, */ |
876 /* expressed in font units. It is always */ | 880 /* expressed in font units. It is always */ |
877 /* positive. Only relevant for scalable */ | 881 /* positive. Only relevant for scalable */ |
878 /* formats. */ | 882 /* formats. */ |
879 /* */ | 883 /* */ |
880 /* max_advance_width :: The maximal advance width, in font units, */ | 884 /* If you want the global glyph height, use */ |
| 885 /* `ascender - descender'. */ |
| 886 /* */ |
| 887 /* max_advance_width :: The maximum advance width, in font units, */ |
881 /* for all glyphs in this face. This can be */ | 888 /* for all glyphs in this face. This can be */ |
882 /* used to make word wrapping computations */ | 889 /* used to make word wrapping computations */ |
883 /* faster. Only relevant for scalable */ | 890 /* faster. Only relevant for scalable */ |
884 /* formats. */ | 891 /* formats. */ |
885 /* */ | 892 /* */ |
886 /* max_advance_height :: The maximal advance height, in font units, */ | 893 /* max_advance_height :: The maximum advance height, in font units, */ |
887 /* for all glyphs in this face. This is only */ | 894 /* for all glyphs in this face. This is only */ |
888 /* relevant for vertical layouts, and is set */ | 895 /* relevant for vertical layouts, and is set */ |
889 /* to `height' for fonts that do not provide */ | 896 /* to `height' for fonts that do not provide */ |
890 /* vertical metrics. Only relevant for */ | 897 /* vertical metrics. Only relevant for */ |
891 /* scalable formats. */ | 898 /* scalable formats. */ |
892 /* */ | 899 /* */ |
893 /* underline_position :: The position, in font units, of the */ | 900 /* underline_position :: The position, in font units, of the */ |
894 /* underline line for this face. It is the */ | 901 /* underline line for this face. It is the */ |
895 /* center of the underlining stem. Only */ | 902 /* center of the underlining stem. Only */ |
896 /* relevant for scalable formats. */ | 903 /* relevant for scalable formats. */ |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1098 #define FT_HAS_HORIZONTAL( face ) \ | 1105 #define FT_HAS_HORIZONTAL( face ) \ |
1099 ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) | 1106 ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) |
1100 | 1107 |
1101 | 1108 |
1102 /************************************************************************* | 1109 /************************************************************************* |
1103 * | 1110 * |
1104 * @macro: | 1111 * @macro: |
1105 * FT_HAS_VERTICAL( face ) | 1112 * FT_HAS_VERTICAL( face ) |
1106 * | 1113 * |
1107 * @description: | 1114 * @description: |
1108 * A macro that returns true whenever a face object contains vertical | 1115 * A macro that returns true whenever a face object contains real |
1109 * metrics. | 1116 * vertical metrics (and not only synthesized ones). |
1110 * | 1117 * |
1111 */ | 1118 */ |
1112 #define FT_HAS_VERTICAL( face ) \ | 1119 #define FT_HAS_VERTICAL( face ) \ |
1113 ( face->face_flags & FT_FACE_FLAG_VERTICAL ) | 1120 ( face->face_flags & FT_FACE_FLAG_VERTICAL ) |
1114 | 1121 |
1115 | 1122 |
1116 /************************************************************************* | 1123 /************************************************************************* |
1117 * | 1124 * |
1118 * @macro: | 1125 * @macro: |
1119 * FT_HAS_KERNING( face ) | 1126 * FT_HAS_KERNING( face ) |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1331 /* */ | 1338 /* */ |
1332 /* ascender :: The ascender in 26.6 fractional pixels. See */ | 1339 /* ascender :: The ascender in 26.6 fractional pixels. See */ |
1333 /* @FT_FaceRec for the details. */ | 1340 /* @FT_FaceRec for the details. */ |
1334 /* */ | 1341 /* */ |
1335 /* descender :: The descender in 26.6 fractional pixels. See */ | 1342 /* descender :: The descender in 26.6 fractional pixels. See */ |
1336 /* @FT_FaceRec for the details. */ | 1343 /* @FT_FaceRec for the details. */ |
1337 /* */ | 1344 /* */ |
1338 /* height :: The height in 26.6 fractional pixels. See */ | 1345 /* height :: The height in 26.6 fractional pixels. See */ |
1339 /* @FT_FaceRec for the details. */ | 1346 /* @FT_FaceRec for the details. */ |
1340 /* */ | 1347 /* */ |
1341 /* max_advance :: The maximal advance width in 26.6 fractional */ | 1348 /* max_advance :: The maximum advance width in 26.6 fractional */ |
1342 /* pixels. See @FT_FaceRec for the details. */ | 1349 /* pixels. See @FT_FaceRec for the details. */ |
1343 /* */ | 1350 /* */ |
1344 /* <Note> */ | 1351 /* <Note> */ |
1345 /* The scaling values, if relevant, are determined first during a */ | 1352 /* The scaling values, if relevant, are determined first during a */ |
1346 /* size changing operation. The remaining fields are then set by the */ | 1353 /* size changing operation. The remaining fields are then set by the */ |
1347 /* driver. For scalable formats, they are usually set to scaled */ | 1354 /* driver. For scalable formats, they are usually set to scaled */ |
1348 /* values of the corresponding fields in @FT_FaceRec. */ | 1355 /* values of the corresponding fields in @FT_FaceRec. */ |
1349 /* */ | 1356 /* */ |
1350 /* Note that due to glyph hinting, these values might not be exact */ | 1357 /* Note that due to glyph hinting, these values might not be exact */ |
1351 /* for certain fonts. Thus they must be treated as unreliable */ | 1358 /* for certain fonts. Thus they must be treated as unreliable */ |
(...skipping 868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2220 /* */ | 2227 /* */ |
2221 /* <Return> */ | 2228 /* <Return> */ |
2222 /* FreeType error code. 0~means success. */ | 2229 /* FreeType error code. 0~means success. */ |
2223 /* */ | 2230 /* */ |
2224 /* <Note> */ | 2231 /* <Note> */ |
2225 /* Although drivers may select the bitmap strike matching the */ | 2232 /* Although drivers may select the bitmap strike matching the */ |
2226 /* request, you should not rely on this if you intend to select a */ | 2233 /* request, you should not rely on this if you intend to select a */ |
2227 /* particular bitmap strike. Use @FT_Select_Size instead in that */ | 2234 /* particular bitmap strike. Use @FT_Select_Size instead in that */ |
2228 /* case. */ | 2235 /* case. */ |
2229 /* */ | 2236 /* */ |
| 2237 /* The relation between the requested size and the resulting glyph */ |
| 2238 /* size is dependent entirely on how the size is defined in the */ |
| 2239 /* source face. The font designer chooses the final size of each */ |
| 2240 /* glyph relative to this size. For more information refer to */ |
| 2241 /* `http://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html' */ |
| 2242 /* */ |
2230 FT_EXPORT( FT_Error ) | 2243 FT_EXPORT( FT_Error ) |
2231 FT_Request_Size( FT_Face face, | 2244 FT_Request_Size( FT_Face face, |
2232 FT_Size_Request req ); | 2245 FT_Size_Request req ); |
2233 | 2246 |
2234 | 2247 |
2235 /*************************************************************************/ | 2248 /*************************************************************************/ |
2236 /* */ | 2249 /* */ |
2237 /* <Function> */ | 2250 /* <Function> */ |
2238 /* FT_Set_Char_Size */ | 2251 /* FT_Set_Char_Size */ |
2239 /* */ | 2252 /* */ |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2289 /* face :: A handle to the target face object. */ | 2302 /* face :: A handle to the target face object. */ |
2290 /* */ | 2303 /* */ |
2291 /* <Input> */ | 2304 /* <Input> */ |
2292 /* pixel_width :: The nominal width, in pixels. */ | 2305 /* pixel_width :: The nominal width, in pixels. */ |
2293 /* */ | 2306 /* */ |
2294 /* pixel_height :: The nominal height, in pixels. */ | 2307 /* pixel_height :: The nominal height, in pixels. */ |
2295 /* */ | 2308 /* */ |
2296 /* <Return> */ | 2309 /* <Return> */ |
2297 /* FreeType error code. 0~means success. */ | 2310 /* FreeType error code. 0~means success. */ |
2298 /* */ | 2311 /* */ |
| 2312 /* <Note> */ |
| 2313 /* You should not rely on the resulting glyphs matching, or being */ |
| 2314 /* constrained, to this pixel size. Refer to @FT_Request_Size to */ |
| 2315 /* understand how requested sizes relate to actual sizes. */ |
| 2316 /* */ |
2299 FT_EXPORT( FT_Error ) | 2317 FT_EXPORT( FT_Error ) |
2300 FT_Set_Pixel_Sizes( FT_Face face, | 2318 FT_Set_Pixel_Sizes( FT_Face face, |
2301 FT_UInt pixel_width, | 2319 FT_UInt pixel_width, |
2302 FT_UInt pixel_height ); | 2320 FT_UInt pixel_height ); |
2303 | 2321 |
2304 | 2322 |
2305 /*************************************************************************/ | 2323 /*************************************************************************/ |
2306 /* */ | 2324 /* */ |
2307 /* <Function> */ | 2325 /* <Function> */ |
2308 /* FT_Load_Glyph */ | 2326 /* FT_Load_Glyph */ |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2402 * scalable outline. If one is found, it is loaded from the font | 2420 * scalable outline. If one is found, it is loaded from the font |
2403 * file, scaled to device pixels, then `hinted' to the pixel grid | 2421 * file, scaled to device pixels, then `hinted' to the pixel grid |
2404 * in order to optimize it. The outline data can be accessed from | 2422 * in order to optimize it. The outline data can be accessed from |
2405 * the glyph slot (see note below). | 2423 * the glyph slot (see note below). |
2406 * | 2424 * |
2407 * Note that by default, the glyph loader doesn't render outlines into | 2425 * Note that by default, the glyph loader doesn't render outlines into |
2408 * bitmaps. The following flags are used to modify this default | 2426 * bitmaps. The following flags are used to modify this default |
2409 * behaviour to more specific and useful cases. | 2427 * behaviour to more specific and useful cases. |
2410 * | 2428 * |
2411 * FT_LOAD_NO_SCALE :: | 2429 * FT_LOAD_NO_SCALE :: |
2412 * Don't scale the outline glyph loaded, but keep it in font units. | 2430 * Don't scale the loaded outline glyph but keep it in font units. |
2413 * | 2431 * |
2414 * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and | 2432 * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and |
2415 * unsets @FT_LOAD_RENDER. | 2433 * unsets @FT_LOAD_RENDER. |
2416 * | 2434 * |
| 2435 * If the font is `tricky' (see @FT_FACE_FLAG_TRICKY for more), using |
| 2436 * FT_LOAD_NO_SCALE usually yields meaningless outlines because the |
| 2437 * subglyphs must be scaled and positioned with hinting instructions. |
| 2438 * This can be solved by loading the font without FT_LOAD_NO_SCALE and |
| 2439 * setting the character size to `font->units_per_EM'. |
| 2440 * |
2417 * FT_LOAD_NO_HINTING :: | 2441 * FT_LOAD_NO_HINTING :: |
2418 * Disable hinting. This generally generates `blurrier' bitmap glyph | 2442 * Disable hinting. This generally generates `blurrier' bitmap glyphs |
2419 * when the glyph is rendered in any of the anti-aliased modes. See | 2443 * when the glyph are rendered in any of the anti-aliased modes. See |
2420 * also the note below. | 2444 * also the note below. |
2421 * | 2445 * |
2422 * This flag is implied by @FT_LOAD_NO_SCALE. | 2446 * This flag is implied by @FT_LOAD_NO_SCALE. |
2423 * | 2447 * |
2424 * FT_LOAD_RENDER :: | 2448 * FT_LOAD_RENDER :: |
2425 * Call @FT_Render_Glyph after the glyph is loaded. By default, the | 2449 * Call @FT_Render_Glyph after the glyph is loaded. By default, the |
2426 * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be | 2450 * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be |
2427 * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. | 2451 * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. |
2428 * | 2452 * |
2429 * This flag is unset by @FT_LOAD_NO_SCALE. | 2453 * This flag is unset by @FT_LOAD_NO_SCALE. |
2430 * | 2454 * |
2431 * FT_LOAD_NO_BITMAP :: | 2455 * FT_LOAD_NO_BITMAP :: |
2432 * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this | 2456 * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this |
2433 * flag. | 2457 * flag. |
2434 * | 2458 * |
2435 * @FT_LOAD_NO_SCALE always sets this flag. | 2459 * @FT_LOAD_NO_SCALE always sets this flag. |
2436 * | 2460 * |
2437 * FT_LOAD_VERTICAL_LAYOUT :: | 2461 * FT_LOAD_VERTICAL_LAYOUT :: |
2438 * Load the glyph for vertical text layout. _Don't_ use it as it is | 2462 * Load the glyph for vertical text layout. In particular, the |
2439 * problematic currently. | 2463 * `advance' value in the @FT_GlyphSlotRec structure is set to the |
| 2464 * `vertAdvance' value of the `metrics' field. |
| 2465 * |
| 2466 * In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use |
| 2467 * this flag currently. Reason is that in this case vertical metrics |
| 2468 * get synthesized, and those values are not always consistent across |
| 2469 * various font formats. |
2440 * | 2470 * |
2441 * FT_LOAD_FORCE_AUTOHINT :: | 2471 * FT_LOAD_FORCE_AUTOHINT :: |
2442 * Indicates that the auto-hinter is preferred over the font's native | 2472 * Indicates that the auto-hinter is preferred over the font's native |
2443 * hinter. See also the note below. | 2473 * hinter. See also the note below. |
2444 * | 2474 * |
2445 * FT_LOAD_CROP_BITMAP :: | 2475 * FT_LOAD_CROP_BITMAP :: |
2446 * Indicates that the font driver should crop the loaded bitmap glyph | 2476 * Indicates that the font driver should crop the loaded bitmap glyph |
2447 * (i.e., remove all space around its black bits). Not all drivers | 2477 * (i.e., remove all space around its black bits). Not all drivers |
2448 * implement this. | 2478 * implement this. |
2449 * | 2479 * |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2486 * monochrome-optimized hinting algorithm is used. | 2516 * monochrome-optimized hinting algorithm is used. |
2487 * | 2517 * |
2488 * FT_LOAD_LINEAR_DESIGN :: | 2518 * FT_LOAD_LINEAR_DESIGN :: |
2489 * Indicates that the `linearHoriAdvance' and `linearVertAdvance' | 2519 * Indicates that the `linearHoriAdvance' and `linearVertAdvance' |
2490 * fields of @FT_GlyphSlotRec should be kept in font units. See | 2520 * fields of @FT_GlyphSlotRec should be kept in font units. See |
2491 * @FT_GlyphSlotRec for details. | 2521 * @FT_GlyphSlotRec for details. |
2492 * | 2522 * |
2493 * FT_LOAD_NO_AUTOHINT :: | 2523 * FT_LOAD_NO_AUTOHINT :: |
2494 * Disable auto-hinter. See also the note below. | 2524 * Disable auto-hinter. See also the note below. |
2495 * | 2525 * |
| 2526 * FT_LOAD_COLOR :: |
| 2527 * This flag is used to request loading of color embedded-bitmap |
| 2528 * images. The resulting color bitmaps, if available, will have the |
| 2529 * @FT_PIXEL_MODE_BGRA format. When the flag is not used and color |
| 2530 * bitmaps are found, they will be converted to 256-level gray |
| 2531 * bitmaps transparently. Those bitmaps will be in the |
| 2532 * @FT_PIXEL_MODE_GRAY format. |
| 2533 * |
2496 * @note: | 2534 * @note: |
2497 * By default, hinting is enabled and the font's native hinter (see | 2535 * By default, hinting is enabled and the font's native hinter (see |
2498 * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can | 2536 * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can |
2499 * disable hinting by setting @FT_LOAD_NO_HINTING or change the | 2537 * disable hinting by setting @FT_LOAD_NO_HINTING or change the |
2500 * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set | 2538 * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set |
2501 * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be | 2539 * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be |
2502 * used at all. | 2540 * used at all. |
2503 * | 2541 * |
2504 * See the description of @FT_FACE_FLAG_TRICKY for a special exception | 2542 * See the description of @FT_FACE_FLAG_TRICKY for a special exception |
2505 * (affecting only a handful of Asian fonts). | 2543 * (affecting only a handful of Asian fonts). |
2506 * | 2544 * |
2507 * Besides deciding which hinter to use, you can also decide which | 2545 * Besides deciding which hinter to use, you can also decide which |
2508 * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. | 2546 * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. |
2509 * | 2547 * |
| 2548 * Note that the auto-hinter needs a valid Unicode cmap (either a native |
| 2549 * one or synthesized by FreeType) for producing correct results. If a |
| 2550 * font provides an incorrect mapping (for example, assigning the |
| 2551 * character code U+005A, LATIN CAPITAL LETTER Z, to a glyph depicting a |
| 2552 * mathematical integral sign), the auto-hinter might produce useless |
| 2553 * results. |
| 2554 * |
2510 */ | 2555 */ |
2511 #define FT_LOAD_DEFAULT 0x0 | 2556 #define FT_LOAD_DEFAULT 0x0 |
2512 #define FT_LOAD_NO_SCALE ( 1L << 0 ) | 2557 #define FT_LOAD_NO_SCALE ( 1L << 0 ) |
2513 #define FT_LOAD_NO_HINTING ( 1L << 1 ) | 2558 #define FT_LOAD_NO_HINTING ( 1L << 1 ) |
2514 #define FT_LOAD_RENDER ( 1L << 2 ) | 2559 #define FT_LOAD_RENDER ( 1L << 2 ) |
2515 #define FT_LOAD_NO_BITMAP ( 1L << 3 ) | 2560 #define FT_LOAD_NO_BITMAP ( 1L << 3 ) |
2516 #define FT_LOAD_VERTICAL_LAYOUT ( 1L << 4 ) | 2561 #define FT_LOAD_VERTICAL_LAYOUT ( 1L << 4 ) |
2517 #define FT_LOAD_FORCE_AUTOHINT ( 1L << 5 ) | 2562 #define FT_LOAD_FORCE_AUTOHINT ( 1L << 5 ) |
2518 #define FT_LOAD_CROP_BITMAP ( 1L << 6 ) | 2563 #define FT_LOAD_CROP_BITMAP ( 1L << 6 ) |
2519 #define FT_LOAD_PEDANTIC ( 1L << 7 ) | 2564 #define FT_LOAD_PEDANTIC ( 1L << 7 ) |
2520 #define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ( 1L << 9 ) | 2565 #define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ( 1L << 9 ) |
2521 #define FT_LOAD_NO_RECURSE ( 1L << 10 ) | 2566 #define FT_LOAD_NO_RECURSE ( 1L << 10 ) |
2522 #define FT_LOAD_IGNORE_TRANSFORM ( 1L << 11 ) | 2567 #define FT_LOAD_IGNORE_TRANSFORM ( 1L << 11 ) |
2523 #define FT_LOAD_MONOCHROME ( 1L << 12 ) | 2568 #define FT_LOAD_MONOCHROME ( 1L << 12 ) |
2524 #define FT_LOAD_LINEAR_DESIGN ( 1L << 13 ) | 2569 #define FT_LOAD_LINEAR_DESIGN ( 1L << 13 ) |
2525 #define FT_LOAD_NO_AUTOHINT ( 1L << 15 ) | 2570 #define FT_LOAD_NO_AUTOHINT ( 1L << 15 ) |
| 2571 /* Bits 16..19 are used by `FT_LOAD_TARGET_' */ |
| 2572 #define FT_LOAD_COLOR ( 1L << 20 ) |
2526 | 2573 |
2527 /* */ | 2574 /* */ |
2528 | 2575 |
2529 /* used internally only by certain font drivers! */ | 2576 /* used internally only by certain font drivers! */ |
2530 #define FT_LOAD_ADVANCE_ONLY ( 1L << 8 ) | 2577 #define FT_LOAD_ADVANCE_ONLY ( 1L << 8 ) |
2531 #define FT_LOAD_SBITS_ONLY ( 1L << 14 ) | 2578 #define FT_LOAD_SBITS_ONLY ( 1L << 14 ) |
2532 | 2579 |
2533 | 2580 |
2534 /************************************************************************** | 2581 /************************************************************************** |
2535 * | 2582 * |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2573 * FT_LOAD_TARGET_LCD_V :: | 2620 * FT_LOAD_TARGET_LCD_V :: |
2574 * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically | 2621 * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically |
2575 * decimated LCD displays. | 2622 * decimated LCD displays. |
2576 * | 2623 * |
2577 * @note: | 2624 * @note: |
2578 * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your | 2625 * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your |
2579 * `load_flags'. They can't be ORed. | 2626 * `load_flags'. They can't be ORed. |
2580 * | 2627 * |
2581 * If @FT_LOAD_RENDER is also set, the glyph is rendered in the | 2628 * If @FT_LOAD_RENDER is also set, the glyph is rendered in the |
2582 * corresponding mode (i.e., the mode which matches the used algorithm | 2629 * corresponding mode (i.e., the mode which matches the used algorithm |
2583 * best) unless @FT_LOAD_MONOCHROME is set. | 2630 * best). An exeption is FT_LOAD_TARGET_MONO since it implies |
| 2631 * @FT_LOAD_MONOCHROME. |
2584 * | 2632 * |
2585 * You can use a hinting algorithm that doesn't correspond to the same | 2633 * You can use a hinting algorithm that doesn't correspond to the same |
2586 * rendering mode. As an example, it is possible to use the `light' | 2634 * rendering mode. As an example, it is possible to use the `light' |
2587 * hinting algorithm and have the results rendered in horizontal LCD | 2635 * hinting algorithm and have the results rendered in horizontal LCD |
2588 * pixel mode, with code like | 2636 * pixel mode, with code like |
2589 * | 2637 * |
2590 * { | 2638 * { |
2591 * FT_Load_Glyph( face, glyph_index, | 2639 * FT_Load_Glyph( face, glyph_index, |
2592 * load_flags | FT_LOAD_TARGET_LIGHT ); | 2640 * load_flags | FT_LOAD_TARGET_LIGHT ); |
2593 * | 2641 * |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2915 /* */ | 2963 /* */ |
2916 /* <Description> */ | 2964 /* <Description> */ |
2917 /* Retrieve the ASCII name of a given glyph in a face. This only */ | 2965 /* Retrieve the ASCII name of a given glyph in a face. This only */ |
2918 /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. */ | 2966 /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. */ |
2919 /* */ | 2967 /* */ |
2920 /* <Input> */ | 2968 /* <Input> */ |
2921 /* face :: A handle to a source face object. */ | 2969 /* face :: A handle to a source face object. */ |
2922 /* */ | 2970 /* */ |
2923 /* glyph_index :: The glyph index. */ | 2971 /* glyph_index :: The glyph index. */ |
2924 /* */ | 2972 /* */ |
2925 /* buffer_max :: The maximal number of bytes available in the */ | 2973 /* buffer_max :: The maximum number of bytes available in the */ |
2926 /* buffer. */ | 2974 /* buffer. */ |
2927 /* */ | 2975 /* */ |
2928 /* <Output> */ | 2976 /* <Output> */ |
2929 /* buffer :: A pointer to a target buffer where the name is */ | 2977 /* buffer :: A pointer to a target buffer where the name is */ |
2930 /* copied to. */ | 2978 /* copied to. */ |
2931 /* */ | 2979 /* */ |
2932 /* <Return> */ | 2980 /* <Return> */ |
2933 /* FreeType error code. 0~means success. */ | 2981 /* FreeType error code. 0~means success. */ |
2934 /* */ | 2982 /* */ |
2935 /* <Note> */ | 2983 /* <Note> */ |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3074 /* face :: A handle to the source face object. */ | 3122 /* face :: A handle to the source face object. */ |
3075 /* */ | 3123 /* */ |
3076 /* charcode :: The character code. */ | 3124 /* charcode :: The character code. */ |
3077 /* */ | 3125 /* */ |
3078 /* <Return> */ | 3126 /* <Return> */ |
3079 /* The glyph index. 0~means `undefined character code'. */ | 3127 /* The glyph index. 0~means `undefined character code'. */ |
3080 /* */ | 3128 /* */ |
3081 /* <Note> */ | 3129 /* <Note> */ |
3082 /* If you use FreeType to manipulate the contents of font files */ | 3130 /* If you use FreeType to manipulate the contents of font files */ |
3083 /* directly, be aware that the glyph index returned by this function */ | 3131 /* directly, be aware that the glyph index returned by this function */ |
3084 /* doesn't always correspond to the internal indices used within */ | 3132 /* doesn't always correspond to the internal indices used within the */ |
3085 /* the file. This is done to ensure that value~0 always corresponds */ | 3133 /* file. This is done to ensure that value~0 always corresponds to */ |
3086 /* to the `missing glyph'. */ | 3134 /* the `missing glyph'. If the first glyph is not named `.notdef', */ |
| 3135 /* then for Type~1 and Type~42 fonts, `.notdef' will be moved into */ |
| 3136 /* the glyph ID~0 position, and whatever was there will be moved to */ |
| 3137 /* the position `.notdef' had. For Type~1 fonts, if there is no */ |
| 3138 /* `.notdef' glyph at all, then one will be created at index~0 and */ |
| 3139 /* whatever was there will be moved to the last index -- Type~42 */ |
| 3140 /* fonts are considered invalid under this condition. */ |
3087 /* */ | 3141 /* */ |
3088 FT_EXPORT( FT_UInt ) | 3142 FT_EXPORT( FT_UInt ) |
3089 FT_Get_Char_Index( FT_Face face, | 3143 FT_Get_Char_Index( FT_Face face, |
3090 FT_ULong charcode ); | 3144 FT_ULong charcode ); |
3091 | 3145 |
3092 | 3146 |
3093 /*************************************************************************/ | 3147 /*************************************************************************/ |
3094 /* */ | 3148 /* */ |
3095 /* <Function> */ | 3149 /* <Function> */ |
3096 /* FT_Get_First_Char */ | 3150 /* FT_Get_First_Char */ |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3376 /* <Description> */ | 3430 /* <Description> */ |
3377 /* Many CJK characters have variant forms. They are a sort of grey */ | 3431 /* Many CJK characters have variant forms. They are a sort of grey */ |
3378 /* area somewhere between being totally irrelevant and semantically */ | 3432 /* area somewhere between being totally irrelevant and semantically */ |
3379 /* distinct; for this reason, the Unicode consortium decided to */ | 3433 /* distinct; for this reason, the Unicode consortium decided to */ |
3380 /* introduce Ideographic Variation Sequences (IVS), consisting of a */ | 3434 /* introduce Ideographic Variation Sequences (IVS), consisting of a */ |
3381 /* Unicode base character and one of 240 variant selectors */ | 3435 /* Unicode base character and one of 240 variant selectors */ |
3382 /* (U+E0100-U+E01EF), instead of further extending the already huge */ | 3436 /* (U+E0100-U+E01EF), instead of further extending the already huge */ |
3383 /* code range for CJK characters. */ | 3437 /* code range for CJK characters. */ |
3384 /* */ | 3438 /* */ |
3385 /* An IVS is registered and unique; for further details please refer */ | 3439 /* An IVS is registered and unique; for further details please refer */ |
3386 /* to Unicode Technical Report #37, the Ideographic Variation */ | 3440 /* to Unicode Technical Standard #37, the Ideographic Variation */ |
3387 /* Database. To date (October 2007), the character with the most */ | 3441 /* Database: */ |
3388 /* variants is U+908A, having 8~such IVS. */ | 3442 /* */ |
| 3443 /* http://www.unicode.org/reports/tr37/ */ |
| 3444 /* */ |
| 3445 /* To date (November 2012), the character with the most variants is */ |
| 3446 /* U+9089, having 31 such IVS. */ |
3389 /* */ | 3447 /* */ |
3390 /* Adobe and MS decided to support IVS with a new cmap subtable */ | 3448 /* Adobe and MS decided to support IVS with a new cmap subtable */ |
3391 /* (format~14). It is an odd subtable because it is not a mapping of */ | 3449 /* (format~14). It is an odd subtable because it is not a mapping of */ |
3392 /* input code points to glyphs, but contains lists of all variants */ | 3450 /* input code points to glyphs, but contains lists of all variants */ |
3393 /* supported by the font. */ | 3451 /* supported by the font. */ |
3394 /* */ | 3452 /* */ |
3395 /* A variant may be either `default' or `non-default'. A default */ | 3453 /* A variant may be either `default' or `non-default'. A default */ |
3396 /* variant is the one you will get for that code point if you look it */ | 3454 /* variant is the one you will get for that code point if you look it */ |
3397 /* up in the standard Unicode cmap. A non-default variant is a */ | 3455 /* up in the standard Unicode cmap. A non-default variant is a */ |
3398 /* different glyph. */ | 3456 /* different glyph. */ |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3607 /*************************************************************************/ | 3665 /*************************************************************************/ |
3608 | 3666 |
3609 | 3667 |
3610 /*************************************************************************/ | 3668 /*************************************************************************/ |
3611 /* */ | 3669 /* */ |
3612 /* <Function> */ | 3670 /* <Function> */ |
3613 /* FT_MulDiv */ | 3671 /* FT_MulDiv */ |
3614 /* */ | 3672 /* */ |
3615 /* <Description> */ | 3673 /* <Description> */ |
3616 /* A very simple function used to perform the computation `(a*b)/c' */ | 3674 /* A very simple function used to perform the computation `(a*b)/c' */ |
3617 /* with maximal accuracy (it uses a 64-bit intermediate integer */ | 3675 /* with maximum accuracy (it uses a 64-bit intermediate integer */ |
3618 /* whenever necessary). */ | 3676 /* whenever necessary). */ |
3619 /* */ | 3677 /* */ |
3620 /* This function isn't necessarily as fast as some processor specific */ | 3678 /* This function isn't necessarily as fast as some processor specific */ |
3621 /* operations, but is at least completely portable. */ | 3679 /* operations, but is at least completely portable. */ |
3622 /* */ | 3680 /* */ |
3623 /* <Input> */ | 3681 /* <Input> */ |
3624 /* a :: The first multiplier. */ | 3682 /* a :: The first multiplier. */ |
3625 /* b :: The second multiplier. */ | 3683 /* b :: The second multiplier. */ |
3626 /* c :: The divisor. */ | 3684 /* c :: The divisor. */ |
3627 /* */ | 3685 /* */ |
(...skipping 14 matching lines...) Expand all Loading... |
3642 /* hiding the internal `FT_MULFIX_INLINED' macro. */ | 3700 /* hiding the internal `FT_MULFIX_INLINED' macro. */ |
3643 | 3701 |
3644 #if 0 | 3702 #if 0 |
3645 /*************************************************************************/ | 3703 /*************************************************************************/ |
3646 /* */ | 3704 /* */ |
3647 /* <Function> */ | 3705 /* <Function> */ |
3648 /* FT_MulFix */ | 3706 /* FT_MulFix */ |
3649 /* */ | 3707 /* */ |
3650 /* <Description> */ | 3708 /* <Description> */ |
3651 /* A very simple function used to perform the computation */ | 3709 /* A very simple function used to perform the computation */ |
3652 /* `(a*b)/0x10000' with maximal accuracy. Most of the time this is */ | 3710 /* `(a*b)/0x10000' with maximum accuracy. Most of the time this is */ |
3653 /* used to multiply a given value by a 16.16 fixed float factor. */ | 3711 /* used to multiply a given value by a 16.16 fixed-point factor. */ |
3654 /* */ | 3712 /* */ |
3655 /* <Input> */ | 3713 /* <Input> */ |
3656 /* a :: The first multiplier. */ | 3714 /* a :: The first multiplier. */ |
3657 /* b :: The second multiplier. Use a 16.16 factor here whenever */ | 3715 /* b :: The second multiplier. Use a 16.16 factor here whenever */ |
3658 /* possible (see note below). */ | 3716 /* possible (see note below). */ |
3659 /* */ | 3717 /* */ |
3660 /* <Return> */ | 3718 /* <Return> */ |
3661 /* The result of `(a*b)/0x10000'. */ | 3719 /* The result of `(a*b)/0x10000'. */ |
3662 /* */ | 3720 /* */ |
3663 /* <Note> */ | 3721 /* <Note> */ |
(...skipping 23 matching lines...) Expand all Loading... |
3687 #endif | 3745 #endif |
3688 | 3746 |
3689 | 3747 |
3690 /*************************************************************************/ | 3748 /*************************************************************************/ |
3691 /* */ | 3749 /* */ |
3692 /* <Function> */ | 3750 /* <Function> */ |
3693 /* FT_DivFix */ | 3751 /* FT_DivFix */ |
3694 /* */ | 3752 /* */ |
3695 /* <Description> */ | 3753 /* <Description> */ |
3696 /* A very simple function used to perform the computation */ | 3754 /* A very simple function used to perform the computation */ |
3697 /* `(a*0x10000)/b' with maximal accuracy. Most of the time, this is */ | 3755 /* `(a*0x10000)/b' with maximum accuracy. Most of the time, this is */ |
3698 /* used to divide a given value by a 16.16 fixed float factor. */ | 3756 /* used to divide a given value by a 16.16 fixed-point factor. */ |
3699 /* */ | 3757 /* */ |
3700 /* <Input> */ | 3758 /* <Input> */ |
3701 /* a :: The first multiplier. */ | 3759 /* a :: The first multiplier. */ |
3702 /* b :: The second multiplier. Use a 16.16 factor here whenever */ | 3760 /* b :: The second multiplier. Use a 16.16 factor here whenever */ |
3703 /* possible (see note below). */ | 3761 /* possible (see note below). */ |
3704 /* */ | 3762 /* */ |
3705 /* <Return> */ | 3763 /* <Return> */ |
3706 /* The result of `(a*0x10000)/b'. */ | 3764 /* The result of `(a*0x10000)/b'. */ |
3707 /* */ | 3765 /* */ |
3708 /* <Note> */ | 3766 /* <Note> */ |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3827 * FREETYPE_PATCH :: The patch level. | 3885 * FREETYPE_PATCH :: The patch level. |
3828 * | 3886 * |
3829 * @note: | 3887 * @note: |
3830 * The version number of FreeType if built as a dynamic link library | 3888 * The version number of FreeType if built as a dynamic link library |
3831 * with the `libtool' package is _not_ controlled by these three | 3889 * with the `libtool' package is _not_ controlled by these three |
3832 * macros. | 3890 * macros. |
3833 * | 3891 * |
3834 */ | 3892 */ |
3835 #define FREETYPE_MAJOR 2 | 3893 #define FREETYPE_MAJOR 2 |
3836 #define FREETYPE_MINOR 4 | 3894 #define FREETYPE_MINOR 4 |
3837 #define FREETYPE_PATCH 9 | 3895 #define FREETYPE_PATCH 12 |
3838 | 3896 |
3839 | 3897 |
3840 /*************************************************************************/ | 3898 /*************************************************************************/ |
3841 /* */ | 3899 /* */ |
3842 /* <Function> */ | 3900 /* <Function> */ |
3843 /* FT_Library_Version */ | 3901 /* FT_Library_Version */ |
3844 /* */ | 3902 /* */ |
3845 /* <Description> */ | 3903 /* <Description> */ |
3846 /* Return the version of the FreeType library being used. This is */ | 3904 /* Return the version of the FreeType library being used. This is */ |
3847 /* useful when dynamically linking to the library, since one cannot */ | 3905 /* useful when dynamically linking to the library, since one cannot */ |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3936 | 3994 |
3937 /* */ | 3995 /* */ |
3938 | 3996 |
3939 | 3997 |
3940 FT_END_HEADER | 3998 FT_END_HEADER |
3941 | 3999 |
3942 #endif /* __FREETYPE_H__ */ | 4000 #endif /* __FREETYPE_H__ */ |
3943 | 4001 |
3944 | 4002 |
3945 /* END */ | 4003 /* END */ |
OLD | NEW |