remove Lisp_Free struct type
[bpt/emacs.git] / src / macfont.h
CommitLineData
d93ab42e 1/* Interface definition for Mac OSX Core text font backend.
ba318903 2 Copyright (C) 2009-2014 Free Software Foundation, Inc.
d93ab42e
JD
3
4This file is part of GNU Emacs.
5
6GNU Emacs is free software: you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation, either version 3 of the License, or
9(at your option) any later version.
10
11GNU Emacs is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
18
19Original author: YAMAMOTO Mitsuharu
20*/
21
22/* Structure used by Mac `shape' functions for storing layout
23 information for each glyph. */
24struct mac_glyph_layout
25{
26 /* Range of indices of the characters composed into the group of
27 glyphs that share the cursor position with this glyph. The
28 members `location' and `length' are in UTF-16 indices. */
29 CFRange comp_range;
30
31 /* UTF-16 index in the source string for the first character
32 associated with this glyph. */
33 CFIndex string_index;
34
35 /* Horizontal and vertical adjustments of glyph position. The
36 coordinate space is that of Core Text. So, the `baseline_delta'
37 value is negative if the glyph should be placed below the
38 baseline. */
39 CGFloat advance_delta, baseline_delta;
40
41 /* Typographical width of the glyph. */
42 CGFloat advance;
43
44 /* Glyph ID of the glyph. */
45 CGGlyph glyph_id;
46};
47
48typedef CTFontDescriptorRef FontDescriptorRef;
49typedef CTFontRef FontRef;
50typedef CTFontSymbolicTraits FontSymbolicTraits;
51typedef CTCharacterCollection CharacterCollection;
52
53#define MAC_FONT_NAME_ATTRIBUTE kCTFontNameAttribute
54#define MAC_FONT_FAMILY_NAME_ATTRIBUTE kCTFontFamilyNameAttribute
55#define MAC_FONT_TRAITS_ATTRIBUTE kCTFontTraitsAttribute
56#define MAC_FONT_SIZE_ATTRIBUTE kCTFontSizeAttribute
57#define MAC_FONT_CASCADE_LIST_ATTRIBUTE kCTFontCascadeListAttribute
58#define MAC_FONT_CHARACTER_SET_ATTRIBUTE kCTFontCharacterSetAttribute
59#define MAC_FONT_LANGUAGES_ATTRIBUTE kCTFontLanguagesAttribute
60#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
61#define MAC_FONT_FORMAT_ATTRIBUTE kCTFontFormatAttribute
62#else
63#define MAC_FONT_FORMAT_ATTRIBUTE (CFSTR ("NSCTFontFormatAttribute"))
64#endif
65#define MAC_FONT_SYMBOLIC_TRAIT kCTFontSymbolicTrait
66#define MAC_FONT_WEIGHT_TRAIT kCTFontWeightTrait
67#define MAC_FONT_WIDTH_TRAIT kCTFontWidthTrait
68#define MAC_FONT_SLANT_TRAIT kCTFontSlantTrait
69
70enum {
71 MAC_FONT_TRAIT_ITALIC = kCTFontItalicTrait,
72 MAC_FONT_TRAIT_BOLD = kCTFontBoldTrait,
73 MAC_FONT_TRAIT_MONO_SPACE = kCTFontMonoSpaceTrait,
74#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
75 MAC_FONT_TRAIT_COLOR_GLYPHS = kCTFontColorGlyphsTrait
76#else
77 MAC_FONT_TRAIT_COLOR_GLYPHS = (1 << 13)
78#endif
79};
80
81enum {
82#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
83 MAC_FONT_FORMAT_BITMAP = kCTFontFormatBitmap
84#else
85 MAC_FONT_FORMAT_BITMAP = 5
86#endif
87};
88
89enum {
90 MAC_CHARACTER_COLLECTION_IDENTITY_MAPPING = kCTIdentityMappingCharacterCollection,
91 MAC_CHARACTER_COLLECTION_ADOBE_JAPAN1 = kCTAdobeJapan1CharacterCollection
92};
93
94#define mac_font_descriptor_create_with_attributes \
95 CTFontDescriptorCreateWithAttributes
96#define mac_font_descriptor_create_matching_font_descriptors \
97 CTFontDescriptorCreateMatchingFontDescriptors
98#define mac_font_descriptor_create_matching_font_descriptor \
99 CTFontDescriptorCreateMatchingFontDescriptor
100#define mac_font_descriptor_copy_attribute CTFontDescriptorCopyAttribute
101#define mac_font_descriptor_supports_languages \
102 mac_ctfont_descriptor_supports_languages
103#define mac_font_create_with_name(name, size) \
104 CTFontCreateWithName (name, size, NULL)
105#define mac_font_get_size CTFontGetSize
106#define mac_font_copy_family_name CTFontCopyFamilyName
107#define mac_font_copy_character_set CTFontCopyCharacterSet
108#define mac_font_get_glyphs_for_characters CTFontGetGlyphsForCharacters
109#define mac_font_get_ascent CTFontGetAscent
110#define mac_font_get_descent CTFontGetDescent
111#define mac_font_get_leading CTFontGetLeading
112#define mac_font_get_underline_position CTFontGetUnderlinePosition
113#define mac_font_get_underline_thickness CTFontGetUnderlineThickness
114#define mac_font_copy_graphics_font(font) CTFontCopyGraphicsFont (font, NULL)
115#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
116#define mac_font_copy_non_synthetic_table(font, table) \
117 CTFontCopyTable (font, table, kCTFontTableOptionNoOptions)
118#else
119#define mac_font_copy_non_synthetic_table(font, table) \
120 CTFontCopyTable (font, table, kCTFontTableOptionExcludeSynthetic)
121#endif
122
123#define mac_font_create_preferred_family_for_attributes \
124 mac_ctfont_create_preferred_family_for_attributes
125#define mac_font_get_advance_width_for_glyph \
126 mac_ctfont_get_advance_width_for_glyph
127#define mac_font_get_bounding_rect_for_glyph \
128 mac_ctfont_get_bounding_rect_for_glyph
129#define mac_font_create_available_families mac_ctfont_create_available_families
130#define mac_font_shape mac_ctfont_shape
131#if USE_CT_GLYPH_INFO
132#define mac_font_get_glyph_for_cid mac_ctfont_get_glyph_for_cid
133#endif
134
135#define mac_nsctfont_copy_font_descriptor CTFontCopyFontDescriptor
136
5ee29210
JD
137#ifndef kCTVersionNumber10_9
138#define kCTVersionNumber10_9 0x00060000
139#endif
d93ab42e
JD
140#define MAC_FONT_CHARACTER_SET_STRING_ATTRIBUTE \
141 (CFSTR ("MAC_FONT_CHARACTER_SET_STRING_ATTRIBUTE"))
142
143typedef const struct _EmacsScreenFont *ScreenFontRef; /* opaque */
144
145extern void mac_register_font_driver (struct frame *f);
146extern void *macfont_get_nsctfont (struct font *font);
147