Imported Upstream version 2.9.1
[platform/upstream/freetype2.git] / docs / reference / ft2-sfnt_names.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "https://www.w3.org/TR/html4/loose.dtd">
3 <html>
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6 <title>FreeType-2.9.1 API Reference</title>
7 <style type="text/css">
8   a:link { color: #0000EF; }
9   a:visited { color: #51188E; }
10   a:hover { color: #FF0000; }
11
12   body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
13          color: #000000;
14          background: #FFFFFF;
15          width: 87%;
16          margin: auto; }
17
18   div.section { width: 75%;
19                 margin: auto; }
20   div.section hr { margin: 4ex 0 1ex 0; }
21   div.section h4 { background-color: #EEEEFF;
22                    font-size: medium;
23                    font-style: oblique;
24                    font-weight: bold;
25                    margin: 3ex 0 1.5ex 9%;
26                    padding: 0.3ex 0 0.3ex 1%; }
27   div.section p { margin: 1.5ex 0 1.5ex 10%; }
28   div.section pre { margin: 3ex 0 3ex 9%;
29                     background-color: #D6E8FF;
30                     padding: 2ex 0 2ex 1%; }
31   div.section table.fields { width: 90%;
32                              margin: 1.5ex 0 1.5ex 10%; }
33   div.section table.toc { width: 95%;
34                           margin: 1.5ex 0 1.5ex 5%; }
35   div.timestamp { text-align: center;
36                   font-size: 69%;
37                   margin: 1.5ex 0 1.5ex 0; }
38
39   h1 { text-align: center; }
40   h3 { font-size: medium;
41        margin: 4ex 0 1.5ex 0; }
42
43   p { text-align: justify; }
44
45   pre.colored { color: blue; }
46
47   span.keyword { font-family: monospace;
48                  text-align: left;
49                  white-space: pre;
50                  color: darkblue; }
51
52   table.fields td.val { font-weight: bold;
53                         text-align: right;
54                         width: 30%;
55                         vertical-align: baseline;
56                         padding: 1ex 1em 1ex 0; }
57   table.fields td.desc { vertical-align: baseline;
58                          padding: 1ex 0 1ex 1em; }
59   table.fields td.desc p:first-child { margin: 0; }
60   table.fields td.desc p { margin: 1.5ex 0 0 0; }
61   table.index { margin: 6ex auto 6ex auto;
62                 border: 0;
63                 border-collapse: separate;
64                 border-spacing: 1em 0.3ex; }
65   table.index tr { padding: 0; }
66   table.index td { padding: 0; }
67   table.index-toc-link { width: 100%;
68                          border: 0;
69                          border-spacing: 0;
70                          margin: 1ex 0 1ex 0; }
71   table.index-toc-link td.left { padding: 0 0.5em 0 0.5em;
72                                  font-size: 83%;
73                                  text-align: left; }
74   table.index-toc-link td.middle { padding: 0 0.5em 0 0.5em;
75                                    font-size: 83%;
76                                    text-align: center; }
77   table.index-toc-link td.right { padding: 0 0.5em 0 0.5em;
78                                   font-size: 83%;
79                                   text-align: right; }
80   table.synopsis { margin: 6ex auto 6ex auto;
81                    border: 0;
82                    border-collapse: separate;
83                    border-spacing: 2em 0.6ex; }
84   table.synopsis tr { padding: 0; }
85   table.synopsis td { padding: 0; }
86   table.toc td.link { width: 30%;
87                       text-align: right;
88                       vertical-align: baseline;
89                       padding: 1ex 1em 1ex 0; }
90   table.toc td.desc { vertical-align: baseline;
91                       padding: 1ex 0 1ex 1em;
92                       text-align: left; }
93   table.toc td.desc p:first-child { margin: 0;
94                                     text-align: left; }
95   table.toc td.desc p { margin: 1.5ex 0 0 0;
96                         text-align: left; }
97
98 </style>
99 </head>
100 <body>
101
102 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table>
103 <h1>FreeType-2.9.1 API Reference</h1>
104
105 <h1 id="sfnt_names">SFNT Names</h1>
106 <h2>Synopsis</h2>
107 <table class="synopsis">
108 <tr><td><a href="#FT_SfntName">FT_SfntName</a></td><td><a href="#FT_Get_Sfnt_Name">FT_Get_Sfnt_Name</a></td><td><a href="#FT_Get_Sfnt_LangTag">FT_Get_Sfnt_LangTag</a></td></tr>
109 <tr><td><a href="#FT_Get_Sfnt_Name_Count">FT_Get_Sfnt_Name_Count</a></td><td><a href="#FT_SfntLangTag">FT_SfntLangTag</a></td><td></td></tr>
110 </table>
111
112
113 <p>The TrueType and OpenType specifications allow the inclusion of a special names table (&lsquo;name&rsquo;) in font files. This table contains textual (and internationalized) information regarding the font, like family name, copyright, version, etc.</p>
114 <p>The definitions below are used to access them if available.</p>
115 <p>Note that this has nothing to do with glyph names!</p>
116
117 <div class="section">
118 <h3 id="FT_SfntName">FT_SfntName</h3>
119 <p>Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h).</p>
120 <pre>
121   <span class="keyword">typedef</span> <span class="keyword">struct</span>  FT_SfntName_
122   {
123     <a href="ft2-basic_types.html#FT_UShort">FT_UShort</a>  platform_id;
124     <a href="ft2-basic_types.html#FT_UShort">FT_UShort</a>  encoding_id;
125     <a href="ft2-basic_types.html#FT_UShort">FT_UShort</a>  language_id;
126     <a href="ft2-basic_types.html#FT_UShort">FT_UShort</a>  name_id;
127
128     <a href="ft2-basic_types.html#FT_Byte">FT_Byte</a>*   string;      /* this string is *not* null-terminated! */
129     <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a>    string_len;  /* in bytes                              */
130
131   } <b>FT_SfntName</b>;
132 </pre>
133
134 <p>A structure used to model an SFNT &lsquo;name&rsquo; table entry.</p>
135
136 <h4>fields</h4>
137 <table class="fields">
138 <tr><td class="val" id="platform_id">platform_id</td><td class="desc">
139 <p>The platform ID for &lsquo;string&rsquo;. See <a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_XXX</a> for possible values.</p>
140 </td></tr>
141 <tr><td class="val" id="encoding_id">encoding_id</td><td class="desc">
142 <p>The encoding ID for &lsquo;string&rsquo;. See <a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_XXX</a>, <a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_XXX</a>, <a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_XXX</a>, <a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_XXX</a>, and <a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_XXX</a> for possible values.</p>
143 </td></tr>
144 <tr><td class="val" id="language_id">language_id</td><td class="desc">
145 <p>The language ID for &lsquo;string&rsquo;. See <a href="ft2-truetype_tables.html#TT_MAC_LANGID_XXX">TT_MAC_LANGID_XXX</a> and <a href="ft2-truetype_tables.html#TT_MS_LANGID_XXX">TT_MS_LANGID_XXX</a> for possible values.</p>
146 <p>Registered OpenType values for &lsquo;language_id&rsquo; are always smaller than 0x8000; values equal or larger than 0x8000 usually indicate a language tag string (introduced in OpenType version 1.6). Use function <a href="ft2-sfnt_names.html#FT_Get_Sfnt_LangTag">FT_Get_Sfnt_LangTag</a> with &lsquo;language_id&rsquo; as its argument to retrieve the associated language tag.</p>
147 </td></tr>
148 <tr><td class="val" id="name_id">name_id</td><td class="desc">
149 <p>An identifier for &lsquo;string&rsquo;. See <a href="ft2-truetype_tables.html#TT_NAME_ID_XXX">TT_NAME_ID_XXX</a> for possible values.</p>
150 </td></tr>
151 <tr><td class="val" id="string">string</td><td class="desc">
152 <p>The &lsquo;name&rsquo; string. Note that its format differs depending on the (platform,encoding) pair, being either a string of bytes (without a terminating NULL byte) or containing UTF-16BE entities.</p>
153 </td></tr>
154 <tr><td class="val" id="string_len">string_len</td><td class="desc">
155 <p>The length of &lsquo;string&rsquo; in bytes.</p>
156 </td></tr>
157 </table>
158
159 <h4>note</h4>
160 <p>Please refer to the TrueType or OpenType specification for more details.</p>
161
162 <hr>
163 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
164
165 <div class="section">
166 <h3 id="FT_Get_Sfnt_Name_Count">FT_Get_Sfnt_Name_Count</h3>
167 <p>Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h).</p>
168 <pre>
169   FT_EXPORT( <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a> )
170   <b>FT_Get_Sfnt_Name_Count</b>( <a href="ft2-base_interface.html#FT_Face">FT_Face</a>  face );
171 </pre>
172
173 <p>Retrieve the number of name strings in the SFNT &lsquo;name&rsquo; table.</p>
174
175 <h4>input</h4>
176 <table class="fields">
177 <tr><td class="val" id="face">face</td><td class="desc">
178 <p>A handle to the source face.</p>
179 </td></tr>
180 </table>
181
182 <h4>return</h4>
183 <p>The number of strings in the &lsquo;name&rsquo; table.</p>
184
185 <hr>
186 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
187
188 <div class="section">
189 <h3 id="FT_Get_Sfnt_Name">FT_Get_Sfnt_Name</h3>
190 <p>Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h).</p>
191 <pre>
192   FT_EXPORT( <a href="ft2-basic_types.html#FT_Error">FT_Error</a> )
193   <b>FT_Get_Sfnt_Name</b>( <a href="ft2-base_interface.html#FT_Face">FT_Face</a>       face,
194                     <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a>       idx,
195                     <a href="ft2-sfnt_names.html#FT_SfntName">FT_SfntName</a>  *aname );
196 </pre>
197
198 <p>Retrieve a string of the SFNT &lsquo;name&rsquo; table for a given index.</p>
199
200 <h4>input</h4>
201 <table class="fields">
202 <tr><td class="val" id="face">face</td><td class="desc">
203 <p>A handle to the source face.</p>
204 </td></tr>
205 <tr><td class="val" id="idx">idx</td><td class="desc">
206 <p>The index of the &lsquo;name&rsquo; string.</p>
207 </td></tr>
208 </table>
209
210 <h4>output</h4>
211 <table class="fields">
212 <tr><td class="val" id="aname">aname</td><td class="desc">
213 <p>The indexed <a href="ft2-sfnt_names.html#FT_SfntName">FT_SfntName</a> structure.</p>
214 </td></tr>
215 </table>
216
217 <h4>return</h4>
218 <p>FreeType error code. 0&nbsp;means success.</p>
219
220 <h4>note</h4>
221 <p>The &lsquo;string&rsquo; array returned in the &lsquo;aname&rsquo; structure is not null-terminated. Note that you don't have to deallocate &lsquo;string&rsquo; by yourself; FreeType takes care of it if you call <a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a>.</p>
222 <p>Use <a href="ft2-sfnt_names.html#FT_Get_Sfnt_Name_Count">FT_Get_Sfnt_Name_Count</a> to get the total number of available &lsquo;name&rsquo; table entries, then do a loop until you get the right platform, encoding, and name ID.</p>
223 <p>&lsquo;name&rsquo; table format&nbsp;1 entries can use language tags also, see <a href="ft2-sfnt_names.html#FT_Get_Sfnt_LangTag">FT_Get_Sfnt_LangTag</a>.</p>
224
225 <hr>
226 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
227
228 <div class="section">
229 <h3 id="FT_SfntLangTag">FT_SfntLangTag</h3>
230 <p>Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h).</p>
231 <pre>
232   <span class="keyword">typedef</span> <span class="keyword">struct</span>  FT_SfntLangTag_
233   {
234     <a href="ft2-basic_types.html#FT_Byte">FT_Byte</a>*  string;      /* this string is *not* null-terminated! */
235     <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a>   string_len;  /* in bytes                              */
236
237   } <b>FT_SfntLangTag</b>;
238 </pre>
239
240 <p>A structure to model a language tag entry from an SFNT &lsquo;name&rsquo; table.</p>
241
242 <h4>fields</h4>
243 <table class="fields">
244 <tr><td class="val" id="string">string</td><td class="desc">
245 <p>The language tag string, encoded in UTF-16BE (without trailing NULL bytes).</p>
246 </td></tr>
247 <tr><td class="val" id="string_len">string_len</td><td class="desc">
248 <p>The length of &lsquo;string&rsquo; in <b>bytes</b>.</p>
249 </td></tr>
250 </table>
251
252 <h4>note</h4>
253 <p>Please refer to the TrueType or OpenType specification for more details.</p>
254
255 <h4>since</h4>
256 <p>2.8</p>
257
258 <hr>
259 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
260
261 <div class="section">
262 <h3 id="FT_Get_Sfnt_LangTag">FT_Get_Sfnt_LangTag</h3>
263 <p>Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h).</p>
264 <pre>
265   FT_EXPORT( <a href="ft2-basic_types.html#FT_Error">FT_Error</a> )
266   <b>FT_Get_Sfnt_LangTag</b>( <a href="ft2-base_interface.html#FT_Face">FT_Face</a>          face,
267                        <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a>          langID,
268                        <a href="ft2-sfnt_names.html#FT_SfntLangTag">FT_SfntLangTag</a>  *alangTag );
269 </pre>
270
271 <p>Retrieve the language tag associated with a language ID of an SFNT &lsquo;name&rsquo; table entry.</p>
272
273 <h4>input</h4>
274 <table class="fields">
275 <tr><td class="val" id="face">face</td><td class="desc">
276 <p>A handle to the source face.</p>
277 </td></tr>
278 <tr><td class="val" id="langID">langID</td><td class="desc">
279 <p>The language ID, as returned by <a href="ft2-sfnt_names.html#FT_Get_Sfnt_Name">FT_Get_Sfnt_Name</a>. This is always a value larger than 0x8000.</p>
280 </td></tr>
281 </table>
282
283 <h4>output</h4>
284 <table class="fields">
285 <tr><td class="val" id="alangTag">alangTag</td><td class="desc">
286 <p>The language tag associated with the &lsquo;name&rsquo; table entry's language ID.</p>
287 </td></tr>
288 </table>
289
290 <h4>return</h4>
291 <p>FreeType error code. 0&nbsp;means success.</p>
292
293 <h4>note</h4>
294 <p>The &lsquo;string&rsquo; array returned in the &lsquo;alangTag&rsquo; structure is not null-terminated. Note that you don't have to deallocate &lsquo;string&rsquo; by yourself; FreeType takes care of it if you call <a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a>.</p>
295 <p>Only &lsquo;name&rsquo; table format&nbsp;1 supports language tags. For format&nbsp;0 tables, this function always returns FT_Err_Invalid_Table. For invalid format&nbsp;1 language ID values, FT_Err_Invalid_Argument is returned.</p>
296
297 <h4>since</h4>
298 <p>2.8</p>
299
300 <hr>
301 <table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="middle">[<a href="#">Top</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table></div>
302
303 </body>
304 </html>