1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* ftbdf.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* FreeType API for accessing BDF-specific strings (specification). */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 79c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod/* Copyright 2002-2004, 2006, 2009, 2014 by */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTBDF_H__ 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTBDF_H__ 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h> 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FREETYPE_H 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "freetype.h of FreeType 1 has been loaded!" 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "Please fix the directory search order for header files" 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "so that freetype.h of FreeType 2 is found first." 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bdf_fonts */ 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Title> */ 410a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* BDF and PCF Files */ 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Abstract> */ 440a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* BDF and PCF specific API. */ 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 470a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* This section contains the declaration of functions specific to BDF */ 480a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* and PCF fonts. */ 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 530a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /********************************************************************** 540a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * 550a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * @enum: 560a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * FT_PropertyType 570a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * 580a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * @description: 590a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * A list of BDF property types. 600a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * 610a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * @values: 620a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * BDF_PROPERTY_TYPE_NONE :: 630a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Value~0 is used to indicate a missing property. 640a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * 650a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * BDF_PROPERTY_TYPE_ATOM :: 660a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Property is a string atom. 670a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * 680a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * BDF_PROPERTY_TYPE_INTEGER :: 690a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Property is a 32-bit signed integer. 700a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * 710a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * BDF_PROPERTY_TYPE_CARDINAL :: 720a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Property is a 32-bit unsigned integer. 730a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project */ 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef enum BDF_PropertyType_ 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project BDF_PROPERTY_TYPE_NONE = 0, 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project BDF_PROPERTY_TYPE_ATOM = 1, 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project BDF_PROPERTY_TYPE_INTEGER = 2, 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project BDF_PROPERTY_TYPE_CARDINAL = 3 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } BDF_PropertyType; 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 840a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /********************************************************************** 850a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * 860a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * @type: 870a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * BDF_Property 880a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * 890a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * @description: 900a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * A handle to a @BDF_PropertyRec structure to model a given 910a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * BDF/PCF property. 920a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project */ 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct BDF_PropertyRec_* BDF_Property; 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /********************************************************************** 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @struct: 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * BDF_PropertyRec 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This structure models a given BDF/PCF property. 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @fields: 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * type :: 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The property type. 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * u.atom :: 1099c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. May be 1109c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod * NULL, indicating an empty string. 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * u.integer :: 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * u.cardinal :: 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct BDF_PropertyRec_ 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project BDF_PropertyType type; 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project union { 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const char* atom; 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int32 integer; 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt32 cardinal; 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } u; 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } BDF_PropertyRec; 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /********************************************************************** 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @function: 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Get_BDF_Charset_ID 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 1370a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Retrieve a BDF font character set identity, according to 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the BDF specification. 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face :: 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the input face. 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @output: 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * acharset_encoding :: 1460a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Charset encoding, as a C~string, owned by the face. 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * acharset_registry :: 1490a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Charset registry, as a C~string, owned by the face. 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 1520a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * FreeType error code. 0~means success. 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This function only works with BDF faces, returning an error otherwise. 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Get_BDF_Charset_ID( FT_Face face, 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const char* *acharset_encoding, 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const char* *acharset_registry ); 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /********************************************************************** 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @function: 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Get_BDF_Property 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 1690a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Retrieve a BDF property from a BDF or PCF font file. 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face :: A handle to the input face. 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * name :: The property name. 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @output: 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * aproperty :: The property. 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 1800a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * FreeType error code. 0~means success. 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This function works with BDF _and_ PCF fonts. It returns an error 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * otherwise. It also returns an error if the property is not in the 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * font. 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 1870a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * A `property' is a either key-value pair within the STARTPROPERTIES 1880a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * ... ENDPROPERTIES block of a BDF font or a key-value pair from the 1890a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * `info->props' array within a `FontRec' structure of a PCF font. 1900a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * 1910a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Integer properties are always stored as `signed' within PCF fonts; 1920a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value 1930a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * for BDF fonts only. 1940a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * In case of error, `aproperty->type' is always set to 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @BDF_PROPERTY_TYPE_NONE. 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Get_BDF_Property( FT_Face face, 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const char* prop_name, 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project BDF_PropertyRec *aproperty ); 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTBDF_H__ */ 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 211