Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(403)

Side by Side Diff: include/freetype/freetype.h

Issue 89753003: Update freetype to latest version of ASOP. (Closed) Base URL: https://chromium.googlesource.com/chromium/src/third_party/freetype.git@master
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « include/freetype/config/ftstdlib.h ('k') | include/freetype/ftadvanc.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 */
OLDNEW
« no previous file with comments | « include/freetype/config/ftstdlib.h ('k') | include/freetype/ftadvanc.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698