233 {
239
240#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
241 FT_Service_MetricsVariations
var =
242 (FT_Service_MetricsVariations)
face->var;
243#endif
244
245
247 {
248 void*
v = &
face->vertical;
249
250
252 table_pos =
face->vert_metrics_offset;
254 }
255 else
256 {
258 table_pos =
face->horz_metrics_offset;
260 }
261
263
264 k =
header->number_Of_HMetrics;
265
267 {
269 {
270 table_pos += 4 * gindex;
271 if ( table_pos + 4 > table_end )
272 goto NoData;
273
277 goto NoData;
278 }
279 else
280 {
281 table_pos += 4 * (
k - 1 );
282 if ( table_pos + 2 > table_end )
283 goto NoData;
284
287 goto NoData;
288
289 table_pos += 4 + 2 * ( gindex -
k );
290 if ( table_pos + 2 > table_end )
291 *abearing = 0;
292 else
293 {
295 *abearing = 0;
296 else
298 }
299 }
300 }
301 else
302 {
303 NoData:
304 *abearing = 0;
305 *aadvance = 0;
306 }
307
308#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
310 {
314
315
316 if ( vertical )
317 {
318 if (
var->vadvance_adjust )
319 var->vadvance_adjust(
f, gindex, &
a );
320 if (
var->tsb_adjust )
321 var->tsb_adjust(
f, gindex, &
b );
322 }
323 else
324 {
325 if (
var->hadvance_adjust )
326 var->hadvance_adjust(
f, gindex, &
a );
327 if (
var->lsb_adjust )
328 var->lsb_adjust(
f, gindex, &
b );
329 }
330
333 }
334#endif
335 }
#define FT_READ_USHORT(var)
#define FT_STREAM_SEEK(position)
#define FT_READ_SHORT(var)
GLenum GLuint GLint GLenum face
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a