123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- {*
- * fontconfig/fontconfig/fontconfig.h
- *
- * Copyright © 2001 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *}
- {$IFNDEF FPC_DOTTEDUNITS}
- unit fontconfig;
- {$ENDIF FPC_DOTTEDUNITS}
- {$mode objfpc}{$H+}
- {$packrecords c}
- interface
- {$IFDEF FPC_DOTTEDUNITS}
- uses
- System.Classes, System.SysUtils, Api.X11.X, Api.X11.Xlib, Api.X11.Xutil, System.CTypes;
- {$ELSE FPC_DOTTEDUNITS}
- uses
- Classes, SysUtils, X, XLib, Xutil, ctypes;
- {$ENDIF FPC_DOTTEDUNITS}
- const
- {$IF Defined(DARWIN)}
- fclib = 'libfontconfig.dylib';
- {$LINKLIB libfontconfig}
- {$ELSE}
- fclib = 'libfontconfig.so';
- {$IFEND}
- //#define FcPublic
- type
- FcChar8 = cuchar;
- PFcChar8 = ^FcChar8;
- FcChar16 = cushort;
- FcChar32 = cuint;
- FcBool = cint;
- const
- {*
- * Current Fontconfig version number. This same number
- * must appear in the fontconfig configure.in file. Yes,
- * it'a a pain to synchronize version numbers like this.
- *}
- FC_MAJOR = 2;
- FC_MINOR = 8;
- FC_REVISION = 0;
- FC_VERSION = ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION));
- {*
- * Current font cache file format version
- * This is appended to the cache files so that multiple
- * versions of the library will peacefully coexist
- *
- * Change this value whenever the disk format for the cache file
- * changes in any non-compatible way. Try to avoid such changes as
- * it means multiple copies of the font information.
- *}
- FC_CACHE_VERSION = '3';
- FcTrue = 1;
- FcFalse = 0;
- const
- FC_FAMILY = 'family'; //* String */
- FC_STYLE = 'style'; //* String */
- FC_SLANT = 'slant'; //* Int */
- FC_WEIGHT = 'weight'; //* Int */
- FC_SIZE = 'size'; //* Double */
- FC_ASPECT = 'aspect'; //* Double */
- FC_PIXEL_SIZE = 'pixelsize'; //* Double */
- FC_SPACING = 'spacing'; //* Int */
- FC_FOUNDRY = 'foundry'; //* String */
- FC_ANTIALIAS = 'antialias'; //* Bool (depends) */
- FC_HINTING = 'hinting'; //* Bool (true) */
- FC_HINT_STYLE = 'hintstyle'; //* Int */
- FC_VERTICAL_LAYOUT = 'verticallayout';//* Bool (false) */
- FC_AUTOHINT = 'autohint'; //* Bool (false) */
- FC_GLOBAL_ADVANCE = 'globaladvance'; //* Bool (true) */
- FC_WIDTH= 'width'; //* Int */
- FC_FILE = 'file'; //* String */
- FC_INDEX = 'index'; //* Int */
- FC_FT_FACE = 'ftface'; //* FT_Face */
- FC_RASTERIZER = 'rasterizer'; //* String */
- FC_OUTLINE = 'outline'; //* Bool */
- FC_SCALABLE = 'scalable'; //* Bool */
- FC_SCALE = 'scale'; //* double */
- FC_DPI = 'dpi'; //* double */
- FC_RGBA = 'rgba'; //* Int */
- FC_MINSPACE = 'minspace'; //* Bool use minimum line spacing */
- FC_SOURCE = 'source'; //* String (X11, freetype) */
- FC_CHARSET = 'charset'; //* CharSet */
- FC_LANG = 'lang'; //* String RFC 3066 langs */
- FC_FONTVERSION = 'fontversion'; //* Int from 'head' table */
- FC_FULLNAME = 'fullname'; //* String */
- FC_FAMILYLANG = 'familylang'; //* String RFC 3066 langs */
- FC_STYLELANG = 'stylelang'; //* String RFC 3066 langs */
- FC_FULLNAMELANG = 'fullnamelang'; //* String RFC 3066 langs */
- FC_CAPABILITY = 'capability'; //* String */
- FC_FONTFORMAT = 'fontformat'; //* String */
- FC_EMBOLDEN = 'embolden'; //* Bool - true if emboldening needed*/
- FC_EMBEDDED_BITMAP = 'embeddedbitmap';//* Bool - true to enable embedded bitmaps */
- FC_DECORATIVE = 'decorative'; //* Bool - true if style is a decorative variant */
- FC_LCD_FILTER = 'lcdfilter'; //* Int */
- //FC_CACHE_SUFFIX ".cache-"FC_CACHE_VERSION
- //FC_DIR_CACHE_FILE "fonts.cache-"FC_CACHE_VERSION
- //FC_USER_CACHE_FILE ".fonts.cache-"FC_CACHE_VERSION
- // Adjust outline rasterizer */
- FC_CHAR_WIDTH = 'charwidth'; // Int */
- FC_CHAR_HEIGHT = 'charheight'; // Int */
- FC_MATRIX = 'matrix'; //* FcMatrix */
- FC_WEIGHT_THIN = 0;
- FC_WEIGHT_EXTRALIGHT = 40;
- FC_WEIGHT_ULTRALIGHT = FC_WEIGHT_EXTRALIGHT;
- FC_WEIGHT_LIGHT = 50;
- FC_WEIGHT_BOOK = 75;
- FC_WEIGHT_REGULAR = 80;
- FC_WEIGHT_NORMAL = FC_WEIGHT_REGULAR;
- FC_WEIGHT_MEDIUM = 100;
- FC_WEIGHT_DEMIBOLD = 180;
- FC_WEIGHT_SEMIBOLD = FC_WEIGHT_DEMIBOLD;
- FC_WEIGHT_BOLD = 200;
- FC_WEIGHT_EXTRABOLD = 205;
- FC_WEIGHT_ULTRABOLD = FC_WEIGHT_EXTRABOLD;
- FC_WEIGHT_BLACK = 210;
- FC_WEIGHT_HEAVY = FC_WEIGHT_BLACK;
- FC_WEIGHT_EXTRABLACK = 215;
- FC_WEIGHT_ULTRABLACK = FC_WEIGHT_EXTRABLACK;
- FC_SLANT_ROMAN = 0;
- FC_SLANT_ITALIC = 100;
- FC_SLANT_OBLIQUE = 110;
- FC_WIDTH_ULTRACONDENSED = 50;
- FC_WIDTH_EXTRACONDENSED = 63;
- FC_WIDTH_CONDENSED = 75;
- FC_WIDTH_SEMICONDENSED = 87;
- FC_WIDTH_NORMAL = 100;
- FC_WIDTH_SEMIEXPANDED = 113;
- FC_WIDTH_EXPANDED = 125;
- FC_WIDTH_EXTRAEXPANDED = 150;
- FC_WIDTH_ULTRAEXPANDED = 200;
- FC_PROPORTIONAL = 0;
- FC_DUAL = 90;
- FC_MONO = 100;
- FC_CHARCELL = 110;
- //* sub-pixel order */
- FC_RGBA_UNKNOWN = 0;
- FC_RGBA_RGB = 1;
- FC_RGBA_BGR = 2;
- FC_RGBA_VRGB = 3;
- FC_RGBA_VBGR = 4;
- FC_RGBA_NONE = 5;
- // hinting style */
- FC_HINT_NONE = 0;
- FC_HINT_SLIGHT = 1;
- FC_HINT_MEDIUM = 2;
- FC_HINT_FULL = 3;
- // LCD filter */
- FC_LCD_NONE = 0;
- FC_LCD_DEFAULT = 1;
- FC_LCD_LIGHT = 2;
- FC_LCD_LEGACY = 3;
- type
- TFcType = Byte; // In C was a enum
- const
- FcTypeVoid = 0;
- FcTypeInteger = 1;
- FcTypeDouble = 2;
- FcTypeString = 3;
- FcTypeBool = 4;
- FcTypeMatrix = 5;
- FcTypeCharSet = 6;
- FcTypeFTFace = 7;
- FcTypeLangSet = 8;
- type
- TFcMatrix = record
- xx, xy, yx, yy: double;
- end;
- //#define FcMatrixInit(m) ((m)->xx = (m)->yy = 1, \
- // (m)->xy = (m)->yx = 0)
- {*
- * A data structure to represent the available glyphs in a font.
- * This is represented as a sparse boolean btree.
- *}
- TFcCharSet = record
- dummy : integer;
- end;
- PFcCharSet = ^TFcCharSet;
- TFcObjectType = record
- object_: PAnsiChar;
- type_: TFcType;
- end;
- TFcConstant = record
- name: PFcChar8;
- object_: PAnsiChar;
- value: cint;
- end;
- TFcResult = (
- FcResultMatch, FcResultNoMatch, FcResultTypeMismatch, FcResultNoId,
- FcResultOutOfMemory);
- TFcPattern = record
- dummy : integer;
- end;
- PFcPattern = ^TFcPattern;
- PPFcPattern = ^PFcPattern;
- TFcLangSet = record
- dummy : integer;
- end;
- TFcValue = record
- type_: TFcType;
- (*union {
- const FcChar8 *s;
- int i;
- FcBool b;
- double d;
- const FcMatrix *m;
- const FcCharSet *c;
- void *f;
- const FcLangSet *l;
- } u;*)
- end;
- TFcFontSet = packed record
- nfont : integer;
- sfont : integer;
- fonts : PPFcPattern;
- end;
- PFcFontSet = ^TFcFontSet;
- implementation
- end.
|