24aa9c665e
Scripts like Khmer have blue zones that can't be directly represented by Unicode characters. Instead, it is necessary to let HarfBuzz convert character clusters into proper glyph representation forms, then deriving the blue zone information from the resulting glyphs. * src/autofit/hbshim.c, src/autofit/hbshim.h: Replaced by... * src/autofit/afshaper.c, src/autofit/afshaper.h: ... these two new files, providing a new API to access HarfBuzz. The new API manages a HarfBuzz buffer with `af_shaper_buf_create' and `af_shaper_buf_destroy'. The buffer receives a UTF8 encoded string with function `af_shaper_get_cluster', and the resulting glyph data (indices, advance widths, vertical offsets) can be iteratively accessed with function `af_shaper_get_elem'. * src/autofit/afcjk.c (af_cjk_metrics_init_widths, af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated. * src/autofit/aflatin.c (af_latin_metrics_init_widths, af_latin_metrics_init_blues, af_latin_metrics_check_digits): Updated. * include/freetype/internal/fttrace.h: s/afharfbuzz/afshaper/. * src/autofit/afglobal.c: s/hbshim.h/afshaper.h/. (af_face_globals_compute_style_coverage): Updated. * src/autofit/afglocal.h: s/hbshim.h/afshaper.h/. * src/autofit/autofit.c: s/hbshim.c/afshaper.c/. * src/autofit/Jamfile, src/autofit/rules.mk (AUTOF_DRV_SRC): Updated.
72 lines
2.2 KiB
C
72 lines
2.2 KiB
C
/***************************************************************************/
|
|
/* */
|
|
/* afshaper.h */
|
|
/* */
|
|
/* HarfBuzz interface for accessing OpenType features (specification). */
|
|
/* */
|
|
/* Copyright 2013-2015 by */
|
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
/* */
|
|
/* This file is part of the FreeType project, and may only be used, */
|
|
/* modified, and distributed under the terms of the FreeType project */
|
|
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
/* this file you indicate that you have read the license and */
|
|
/* understand and accept it fully. */
|
|
/* */
|
|
/***************************************************************************/
|
|
|
|
|
|
#ifndef __AFSHAPER_H__
|
|
#define __AFSHAPER_H__
|
|
|
|
|
|
#include <ft2build.h>
|
|
#include FT_FREETYPE_H
|
|
|
|
|
|
#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
|
|
|
|
#include <hb.h>
|
|
#include <hb-ot.h>
|
|
#include <hb-ft.h>
|
|
|
|
#endif
|
|
|
|
|
|
FT_BEGIN_HEADER
|
|
|
|
FT_Error
|
|
af_shaper_get_coverage( AF_FaceGlobals globals,
|
|
AF_StyleClass style_class,
|
|
FT_UShort* gstyles );
|
|
|
|
|
|
void*
|
|
af_shaper_buf_create( FT_Face face );
|
|
|
|
void
|
|
af_shaper_buf_destroy( FT_Face face,
|
|
void* buf );
|
|
|
|
const char*
|
|
af_shaper_get_cluster( const char* p,
|
|
AF_StyleMetrics metrics,
|
|
void* buf_,
|
|
unsigned int* count );
|
|
|
|
FT_ULong
|
|
af_shaper_get_elem( AF_StyleMetrics metrics,
|
|
void* buf_,
|
|
unsigned int idx,
|
|
FT_Long* x_advance,
|
|
FT_Long* y_offset );
|
|
|
|
/* */
|
|
|
|
FT_END_HEADER
|
|
|
|
#endif /* __AFSHAPER_H__ */
|
|
|
|
|
|
/* END */
|