Name Description Size Coverage
addTable.py 403 -
ArabicPUASimplified.txt 10765 -
ArabicPUATraditional.txt 13768 -
check-c-linkage-decls.py 1289 -
check-externs.py 675 -
check-header-guards.py 1177 -
check-includes.py 1732 -
check-libstdc++.py 1205 -
check-release-notes.py 591 -
check-static-inits.py 1807 -
check-symbols.py 3545 -
failing-alloc.c Based on https://software.intel.com/content/www/us/en/develop/articles/fast-random-number-generator-on-the-intel-pentiumr-4-processor.html 1908 -
fix_get_types.py 388 -
gen-arabic-joining-list.py usage: ./gen-arabic-joining-table.py ArabicShaping.txt Scripts.txt Input files: * https://unicode.org/Public/UCD/latest/ucd/ArabicShaping.txt * https://unicode.org/Public/UCD/latest/ucd/Scripts.txt 2402 -
gen-arabic-pua.py usage: ./gen-arabic-pua.py 873 -
gen-arabic-table.py usage: ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt Input files: * https://unicode.org/Public/UCD/latest/ucd/ArabicShaping.txt * https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt * https://unicode.org/Public/UCD/latest/ucd/Blocks.txt 10092 -
gen-def.py hb_shape_justify hb_subset_input_override_name_table hb_subset_cff_get_charstring_data hb_subset_cff_get_charstrings_index hb_subset_cff2_get_charstring_data hb_subset_cff2_get_charstrings_index 1082 -
gen-emoji-table.py usage: ./gen-emoji-table.py emoji-data.txt emoji-test.txt Input file: * https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt * https://www.unicode.org/Public/emoji/latest/emoji-test.txt 2447 -
gen-harfbuzzcc.py 808 -
gen-hb-version.py 1171 -
gen-indic-table.py usage: ./gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt Input files: * https://unicode.org/Public/UCD/latest/ucd/IndicSyllabicCategory.txt * https://unicode.org/Public/UCD/latest/ucd/IndicPositionalCategory.txt * https://unicode.org/Public/UCD/latest/ucd/Blocks.txt 17498 -
gen-os2-unicode-ranges.py Generates the code for a sorted unicode range array as used in hb-ot-os2-unicode-ranges.hh Input is a tab separated list of unicode ranges from the otspec (https://docs.microsoft.com/en-us/typography/opentype/spec/os2#ur). 1239 -
gen-ragel-artifacts.py 700 -
gen-tag-table.py Generator of the mapping from OpenType tags to BCP 47 tags and vice versa. It creates a ``const LangTag[]``, matching the tags from the OpenType languages system tag list to the language subtags of the BCP 47 language subtag registry, with some manual adjustments. The mappings are supplemented with macrolanguages' sublanguages and retired codes' replacements, according to BCP 47 and some manual additions where BCP 47 omits a retired code entirely. Also generated is a function, ``hb_ot_ambiguous_tag_to_language``, intended for use by ``hb_ot_tag_to_language``. It maps OpenType tags back to BCP 47 tags. Ambiguous OpenType tags (those that correspond to multiple BCP 47 tags) are listed here, except when the alphabetically first BCP 47 tag happens to be the chosen disambiguated tag. In that case, the fallback behavior will choose the right tag anyway. usage: ./gen-tag-table.py languagetags language-subtag-registry Input files: * https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags * https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry 37607 -
gen-ucd-table.py usage: ./gen-ucd-table [--rust] ucd.nounihan.grouped.xml [/path/to/hb-script-list.h] Input file: * https://unicode.org/Public/UCD/latest/ucdxml/ucd.nounihan.grouped.zip 7707 -
gen-use-table.py usage: ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt ArabicShaping.txt DerivedCoreProperties.txt UnicodeData.txt Blocks.txt Scripts.txt IndicSyllabicCategory-Additional.txt IndicPositionalCategory-Additional.txt Input files: * https://unicode.org/Public/UCD/latest/ucd/IndicSyllabicCategory.txt * https://unicode.org/Public/UCD/latest/ucd/IndicPositionalCategory.txt * https://unicode.org/Public/UCD/latest/ucd/ArabicShaping.txt * https://unicode.org/Public/UCD/latest/ucd/DerivedCoreProperties.txt * https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt * https://unicode.org/Public/UCD/latest/ucd/Blocks.txt * https://unicode.org/Public/UCD/latest/ucd/Scripts.txt * ms-use/IndicSyllabicCategory-Additional.txt * ms-use/IndicPositionalCategory-Additional.txt 15145 -
gen-vowel-constraints.py Generator of the function to prohibit certain vowel sequences. It creates ``_hb_preprocess_text_vowel_constraints``, which inserts dotted circles into sequences prohibited by the USE script development spec. This function should be used as the ``preprocess_text`` of an ``hb_ot_shaper_t``. usage: ./gen-vowel-constraints.py ms-use/IndicShapingInvalidCluster.txt Scripts.txt Input file: * https://unicode.org/Public/UCD/latest/ucd/Scripts.txt 7634 -
graph -
harfbuzz-cairo.pc.in 299 -
harfbuzz-config.cmake.in 1499 -
harfbuzz-gobject.pc.in 291 -
harfbuzz-icu.pc.in 287 -
harfbuzz-subset.cc 2121 -
harfbuzz-subset.pc.in 265 -
harfbuzz.cc 1907 -
harfbuzz.pc.in 293 -
hb-aat-layout-ankr-table.hh ankr -- Anchor Point https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ankr.html 2788 -
hb-aat-layout-bsln-table.hh bsln -- Baseline https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bsln.html 4636 -
hb-aat-layout-common.hh Unused. For debug tracing only. 41519 -
hb-aat-layout-feat-table.hh feat -- Feature Name https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6feat.html 7972 -
hb-aat-layout-just-table.hh just -- Justification https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6just.html 12997 -
hb-aat-layout-kerx-table.hh kerx -- Extended Kerning https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6kerx.html 35501 -
hb-aat-layout-morx-table.hh morx -- Extended Glyph Metamorphosis https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6morx.html https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6mort.html 45705 -
hb-aat-layout-opbd-table.hh opbd -- Optical Bounds https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6opbd.html 5236 -
hb-aat-layout-trak-table.hh trak -- Tracking https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6trak.html 8011 -
hb-aat-layout.cc hb_aat_apply_context_t 27149 -
hb-aat-layout.h 57382 -
hb-aat-layout.hh https://developer.apple.com/documentation/coretext/1508745-ctfontcreatewithgraphicsfont 2434 -
hb-aat-ltag-table.hh ltag -- Language Tag https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ltag.html 2650 -
hb-aat-map.cc Special case: Chain::compile_flags will fall back to the deprecated version of small-caps if necessary, so we need to check for that possibility. https://github.com/harfbuzz/harfbuzz/issues/2307 5994 -
hb-aat-map.hh For stable sorting only. 3512 -
hb-aat.h HB_AAT_H 1243 -
hb-algs.hh Flags 49120 -
hb-alloc-pool.hh Memory pool for persistent small- to medium-sized allocations. Some AI musings on this, not necessarily true: This is a very simple implementation, but it's good enough for our purposes. It's not thread-safe. It's not very fast. It's not very memory efficient. It's not very cache efficient. It's not very anything efficient. But it's simple and it works. And it's good enough for our purposes. If you need something more sophisticated, use a real allocator. Or use a real language. 3637 -
hb-array.hh Constructors. 15277 -
hb-atomic.hh Atomic integers and pointers. 8967 -
hb-bimap.hh Bi-directional map 5411 -
hb-bit-page.hh Compiler-assisted vectorization. 12054 -
hb-bit-set-invertible.hh Might return false if array looks unsorted. Used for faster rejection of corrupt data. 10657 -
hb-bit-set.hh Allocations successful 28516 -
hb-bit-vector.hh 5355 -
hb-blob.cc HAVE_UNISTD_H 20476 -
hb-blob.h hb_memory_mode_t: @HB_MEMORY_MODE_DUPLICATE: HarfBuzz immediately makes a copy of the data. @HB_MEMORY_MODE_READONLY: HarfBuzz client will never modify the data, and HarfBuzz will never modify the data. @HB_MEMORY_MODE_WRITABLE: HarfBuzz client made a copy of the data solely for HarfBuzz, so HarfBuzz may modify the data. @HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE: See above Data type holding the memory modes available to client programs. Regarding these various memory-modes: - In no case shall the HarfBuzz client modify memory that is passed to HarfBuzz in a blob. If there is any such possibility, @HB_MEMORY_MODE_DUPLICATE should be used such that HarfBuzz makes a copy immediately, - Use @HB_MEMORY_MODE_READONLY otherwise, unless you really really really know what you are doing, - @HB_MEMORY_MODE_WRITABLE is appropriate if you really made a copy of data solely for the purpose of passing to HarfBuzz and doing that just once (no reuse!), - If the font is mmap()ed, it's okay to use @HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, however, using that mode correctly is very tricky. Use @HB_MEMORY_MODE_READONLY instead. 4731 -
hb-blob.hh hb_blob_t 2765 -
hb-buffer-deserialize-json.hh 20147 -
hb-buffer-deserialize-json.rl 4125 -
hb-buffer-deserialize-text-glyphs.hh 15939 -
hb-buffer-deserialize-text-glyphs.rl 3442 -
hb-buffer-deserialize-text-unicode.hh 6504 -
hb-buffer-deserialize-text-unicode.rl 2504 -
hb-buffer-serialize.cc hb_buffer_serialize_list_formats: Returns a list of supported buffer serialization formats. Return value: (transfer none): A string array of buffer serialization formats. Should not be freed. Since: 0.9.7 26321 -
hb-buffer-verify.cc Cannot perform this check without monotone clusters. 13216 -
hb-buffer.cc SECTION: hb-buffer @title: hb-buffer @short_description: Input and output buffers @include: hb.h Buffers serve a dual role in HarfBuzz; before shaping, they hold the input characters that are passed to hb_shape(), and after shaping they hold the output glyphs. The input buffer is a sequence of Unicode codepoints, with associated attributes such as direction and script. The output buffer is a sequence of glyphs, with associated attributes such as position and cluster. 60701 -
hb-buffer.h hb_glyph_info_t: @codepoint: either a Unicode code point (before shaping) or a glyph index (after shaping). @cluster: the index of the character in the original text that corresponds to this #hb_glyph_info_t, or whatever the client passes to hb_buffer_add(). More than one #hb_glyph_info_t can have the same @cluster value, if they resulted from the same character (e.g. one to many glyph substitution), and when more than one character gets merged in the same glyph (e.g. many to one glyph substitution) the #hb_glyph_info_t will have the smallest cluster value of them. By default some characters are merged into the same cluster (e.g. combining marks have the same cluster as their bases) even if they are separate glyphs, hb_buffer_set_cluster_level() allow selecting more fine-grained cluster handling. The #hb_glyph_info_t is the structure that holds information about the glyphs and their relation to input text. 31540 -
hb-buffer.hh Reserved for shapers' internal use. 20754 -
hb-cache.hh Implements a lockfree and thread-safe cache for int->int functions, using (optionally) _relaxed_ atomic integer operations. The cache is a fixed-size array of 16-bit or 32-bit integers, typically 256 elements. The key is split into two parts: the cache index (high bits) and the rest (low bits). The cache index is used to index into the array. The array member is a 16-bit or 32-bit integer that is used *both* to store the low bits of the key, and the value. The value is stored in the least significant bits of the integer. The low bits of the key are stored in the most significant bits of the integer. A cache hit is detected by comparing the low bits of the key with the high bits of the integer at the array position indexed by the high bits of the key. If they match, the value is extracted from the least significant bits of the integer and returned. Otherwise, a cache miss is reported. Cache operations (storage and retrieval) involve just a few arithmetic operations and a single memory access. 4195 -
hb-cairo-utils.cc SVG currently. 23650 -
hb-cairo-utils.hh HB_CAIRO_UTILS_H 4364 -
hb-cairo.cc SECTION:hb-cairo @title: hb-cairo @short_description: Cairo integration @include: hb-cairo.h Functions for using HarfBuzz with the cairo library. HarfBuzz supports using cairo for rendering. 33285 -
hb-cairo.h hb_cairo_font_init_func_t: @font: The #hb_font_t being created @scaled_font: The respective #cairo_scaled_font_t @user_data: User data accompanying this method The type of a virtual method to be called when a cairo face created using hb_cairo_font_face_create_for_face() creates an #hb_font_t for a #cairo_scaled_font_t. Return value: the #hb_font_t value to use; in most cases same as @font Since: 7.0.0 3097 -
hb-cff-interp-common.hh === Dict operators === 20035 -
hb-cff-interp-cs-common.hh call stack 24089 -
hb-cff-interp-dict-common.hh an opstr and the parsed out dict value(s) 4900 -
hb-cff1-interp-cs.hh PostScript-originated legacy opcodes (OpCode_add etc) are unsupported 4296 -
hb-cff2-interp-cs.hh make up return or endchar op 8655 -
hb-common.cc SECTION:hb-common @title: hb-common @short_description: Common data types @include: hb.h Common data types used across HarfBuzz are defined here. 32249 -
hb-common.h !__cplusplus 13195 -
hb-config.hh Make test happy. 4492 -
hb-coretext-font.cc 16368 -
hb-coretext-shape.cc shaper 29851 -
hb-coretext.cc SECTION:hb-coretext @title: hb-coretext @short_description: CoreText integration @include: hb-coretext.h Functions for using HarfBuzz with the CoreText fonts. 18341 -
hb-coretext.h HB_CORETEXT_TAG_MORT: The #hb_tag_t tag for the `mort` (glyph metamorphosis) table, which holds AAT features. For more information, see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6mort.html 2932 -
hb-coretext.hh HB_CORETEXT_HH 1650 -
hb-cplusplus.hh 6262 -
hb-debug.hh Debug output (needs enabling at compile time.) 12077 -
hb-decycler.hh hb_decycler_t is an efficient cycle detector for graph traversal. It's a simple tortoise-and-hare algorithm with a twist: it's designed to detect cycles while traversing a graph in a DFS manner, instead of just a linked list. For Floyd's tortoise and hare algorithm, see: https://en.wikipedia.org/wiki/Cycle_detection#Floyd's_tortoise_and_hare hb_decycler_t is O(n) in the number of nodes in the DFS traversal if there are no cycles. Unlike Floyd's algorithm, hb_decycler_t can be used in a DFS traversal, where the graph is not a simple linked list, but a tree with possible cycles. Like Floyd's algorithm, it is constant-memory (~three pointers). The decycler works by creating an implicit linked-list on the stack, of the path from the root to the current node, and apply Floyd's algorithm on that list as it goes. The decycler is malloc-free, and as such, much faster to use than a hb_set_t or hb_map_t equivalent. The decycler detects cycles in the graph *eventually*, not *immediately*. That is, it may not detect a cycle until the cycle is fully traversed, even multiple times. See Floyd's algorithm analysis for details. The implementation saves a pointer storage on the stack by combining this->u.decycler and this->u.next into a union. This is possible because at any point we only need one of those values. The invariant is that after construction, and before destruction, of a node, the u.decycler field is always valid. The u.next field is only valid when the node is in the traversal path, parent to another node. There are three method's: - hb_decycler_node_t() constructor: Creates a new node in the traversal. The constructor takes a reference to the decycler object and inserts itself as the latest node in the traversal path, by advancing the hare pointer, and for every other descent, advancing the tortoise pointer. - ~hb_decycler_node_t() destructor: Restores the decycler object to its previous state by removing the node from the traversal path. - bool visit(uintptr_t value): Called on every node in the graph. Returns true if the node is not part of a cycle, and false if it is. The value parameter is used to detect cycles. It's the caller's responsibility to ensure that the value is unique for each node in the graph. The cycle detection is as simple as comparing the value to the value held by the tortoise pointer, which is the Floyd's algorithm. For usage examples see test-decycler.cc. 5451 -
hb-deprecated.h SECTION:hb-deprecated @title: hb-deprecated @short_description: Deprecated API @include: hb.h These API have been deprecated in favor of newer API, or because they were deemed unnecessary. 13343 -
hb-directwrite-font.cc 11940 -
hb-directwrite-shape.cc shaper face data 18958 -
hb-directwrite.cc SECTION:hb-directwrite @title: hb-directwrite @short_description: DirectWrite integration @include: hb-directwrite.h Functions for using HarfBuzz with DirectWrite fonts. 12397 -
hb-directwrite.h HB_DIRECTWRITE_H 2136 -
hb-directwrite.hh DirectWrite font stream helpers 5725 -
hb-dispatch.hh Dispatch 2301 -
hb-draw.cc SECTION:hb-draw @title: hb-draw @short_description: Glyph drawing @include: hb.h Functions for drawing (extracting) glyph shapes. The #hb_draw_funcs_t struct can be used with hb_font_draw_glyph(). 14346 -
hb-draw.h hb_draw_state_t @path_open: Whether there is an open path @path_start_x: X component of the start of current path @path_start_y: Y component of the start of current path @current_x: X component of current point @current_y: Y component of current point Current drawing state. Since: 4.0.0 10111 -
hb-draw.hh hb_draw_funcs_t 6274 -
hb-face-builder.cc face-builder: A face that has add_table(). 8285 -
hb-face.cc SECTION:hb-face @title: hb-face @short_description: Font face objects @include: hb.h A font face is an object that represents a single face from within a font family. More precisely, a font face represents a single face in a binary font file. Font faces are typically built from a binary blob and a face index. Font faces are used to create fonts. A font face can be created from a binary blob using hb_face_create(). The face index is used to select a face from a binary blob that contains multiple faces. For example, a binary blob that contains both a regular and a bold face can be used to create two font faces, one for each face index. 25917 -
hb-face.h hb_face_t 6453 -
hb-face.hh hb_face_t 3141 -
hb-fallback-shape.cc shaper face data 3127 -
hb-features.h.in 2661 -
hb-font.cc SECTION:hb-font @title: hb-font @short_description: Font objects @include: hb.h Functions for working with font objects. A font object represents a font face at a specific size and with certain other parameters (pixels-per-em, points-per-em, variation settings) specified. Font objects are created from font face objects, and are used as input to hb_shape(), among other things. Client programs can optionally pass in their own functions that implement the basic, lower-level queries of font objects. This set of font functions is defined by the virtual methods in #hb_font_funcs_t. HarfBuzz provides a built-in set of lightweight default functions for each method in #hb_font_funcs_t. The default font functions are implemented in terms of the #hb_font_funcs_t methods of the parent font object. This allows client programs to override only the methods they need to, and otherwise inherit the parent font's implementation, if any. 100087 -
hb-font.h hb_font_funcs_t 41731 -
hb-font.hh hb_font_funcs_t 33559 -
hb-fontations.h SECTION: hb-fontations @title: hb-fontations @short_description: Fontations integration @include: hb-fontations.h Functions for using HarfBuzz with [Fontations](https://github.com/googlefonts/fontations/) fonts. 1715 -
hb-free-pool.hh Memory pool for persistent alloc/free of small objects. Some AI musings on this, not necessarily true: This is a very simple implementation, but it's good enough for our purposes. It's not thread-safe. It's not very fast. It's not very memory efficient. It's not very cache efficient. It's not very anything efficient. But it's simple and it works. And it's good enough for our purposes. If you need something more sophisticated, use a real allocator. Or use a real language. 2893 -
hb-ft-colr.hh 18916 -
hb-ft.cc SECTION:hb-ft @title: hb-ft @short_description: FreeType integration @include: hb-ft.h Functions for using HarfBuzz with the FreeType library. HarfBuzz supports using FreeType to provide face and font data. <note>Note that FreeType is not thread-safe, therefore these functions are not thread-safe either.</note> 48917 -
hb-ft.h Note: FreeType is not thread-safe. Hence, these functions are not either. 4839 -
hb-gdi.cc SECTION:hb-gdi @title: hb-gdi @short_description: GDI integration @include: hb-gdi.h Functions for using HarfBuzz with GDI fonts. 2534 -
hb-gdi.h HB_GDI_H 1255 -
hb-geometry.hh 9804 -
hb-glib.cc SECTION:hb-glib @title: hb-glib @short_description: GLib integration @include: hb-glib.h Functions for using HarfBuzz with the GLib library. HarfBuzz supports using GLib to provide Unicode data, by attaching GLib functions to the virtual methods in a #hb_unicode_funcs_t function structure. 6053 -
hb-glib.h HB_GLIB_H 1625 -
hb-gobject-enums.cc.tmpl 2042 -
hb-gobject-enums.h.tmpl 1675 -
hb-gobject-structs.cc SECTION:hb-gobject @title: hb-gobject @short_description: GObject integration support @include: hb-gobject.h Support for using HarfBuzz with the GObject library to provide type data. The types and functions listed here are solely a linkage between HarfBuzz's public data types and the GTypes used by the GObject framework. HarfBuzz uses GObject introspection to generate its Python bindings (and potentially other language bindings); client programs should never need to access the GObject-integration mechanics. For client programs using the GNOME and GTK software stack, please see the GLib and FreeType integration pages. 3662 -
hb-gobject-structs.h Object types 4236 -
hb-gobject.h HB_GOBJECT_H 1335 -
hb-graphite2.cc SECTION:hb-graphite2 @title: hb-graphite2 @short_description: Graphite2 integration @include: hb-graphite2.h Functions for using HarfBuzz with fonts that include Graphite features. For Graphite features to work, you must be sure that HarfBuzz was compiled with the `graphite2` shaping engine enabled. Currently, the default is to not enable `graphite2` shaping. 12899 -
hb-graphite2.h HB_GRAPHITE2_TAG_SILF: The #hb_tag_t tag for the `Silf` table, which holds Graphite features. For more information, see http://graphite.sil.org/ 1723 -
hb-harfrust.cc buffer 5656 -
hb-icu.cc ICU extra semicolon, fixed since 65, https://github.com/unicode-org/icu/commit/480bec3 9560 -
hb-icu.h HB_ICU_H 1525 -
hb-iter.hh Unified iterator object. The goal of this template is to make the same iterator interface available to all types, and make it very easy and compact to use. hb_iter_tator objects are small, light-weight, objects that can be copied by value. If the collection / object being iterated on is writable, then the iterator returns lvalues, otherwise it returns rvalues. If iterator implementation implements operator!=, then it can be used in range-based for loop. That already happens if the iterator is random-access. Otherwise, the range-based for loop incurs one traversal to find end(), which can be avoided if written as a while-style for loop, or if iterator implements a faster __end__() method. 32141 -
hb-kbts.cc 9512 -
hb-kern.hh namespace OT 3608 -
hb-limits.hh Shaping more than a billion chars? Let us know! 2981 -
hb-machinery.hh Casts 11456 -
hb-map.cc SECTION:hb-map @title: hb-map @short_description: Object representing integer to integer mapping @include: hb.h Map objects are integer-to-integer hash-maps. Currently they are not used in the HarfBuzz public API, but are provided for client's use if desired. 7866 -
hb-map.h HB_MAP_VALUE_INVALID: Unset #hb_map_t value. Since: 1.7.7 3347 -
hb-map.hh hb_hashmap_t 15339 -
hb-meta.hh C++ template meta-programming & fundamentals used with them. 11086 -
hb-ms-feature-ranges.hh Variations of this code exist in hb-coretext-shape.cc as well as hb-aat-map.cc... 7255 -
hb-multimap.hh hb_multimap_t 2378 -
hb-mutex.hh mutex 4295 -
hb-null.hh Static pools 7992 -
hb-number-parser.hh Works only for n < 512 5390 -
hb-number-parser.rl 3216 -
hb-number.cc Check if consumed whole buffer if is requested 2414 -
hb-number.hh HB_NUMBER_HH 1502 -
hb-object.hh Lockable set 8295 -
hb-open-file.hh The OpenType Font File 15753 -
hb-open-type.hh The OpenType Font File: Data Types 61393 -
hb-ot-cff-common.hh CFF offsets can technically be negative 11038 -
hb-ot-cff1-std-str.hh Make checks happy. 8612 -
hb-ot-cff1-table.cc SID to code 23687 -
hb-ot-cff1-table.hh CFF -- Compact Font Format (CFF) https://www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5176.CFF.pdf 42938 -
hb-ot-cff2-table.cc include control points 7193 -
hb-ot-cff2-table.hh CFF2 -- Compact Font Format (CFF) Version 2 https://docs.microsoft.com/en-us/typography/opentype/spec/cff2 16242 -
hb-ot-cmap-table.hh cmap -- Character to Glyph Index Mapping https://docs.microsoft.com/en-us/typography/opentype/spec/cmap 66508 -
hb-ot-color.cc SECTION:hb-ot-color @title: hb-ot-color @short_description: OpenType Color Fonts @include: hb-ot.h Functions for fetching color-font information from OpenType font faces. HarfBuzz supports `COLR`/`CPAL`, `sbix`, `CBDT`, and `SVG` color fonts. 9917 -
hb-ot-color.h Color palettes. 4471 -
hb-ot-deprecated.h https://github.com/harfbuzz/harfbuzz/issues/1734 4130 -
hb-ot-face-table-list.hh HB_OT_FACE_TABLE_LIST_HH 4145 -
hb-ot-face.cc 2085 -
hb-ot-face.hh hb_ot_face_t 2557 -
hb-ot-font.cc SECTION:hb-ot-font @title: hb-ot-font @short_description: OpenType font implementation @include: hb-ot.h Functions for using OpenType fonts with hb_shape(). Note that fonts returned by hb_font_create() default to using these functions, so most clients would never need to call these functions directly. 30620 -
hb-ot-font.h HB_OT_FONT_H 1410 -
hb-ot-gasp-table.hh gasp -- Grid-fitting and Scan-conversion Procedure https://docs.microsoft.com/en-us/typography/opentype/spec/gasp 2369 -
hb-ot-glyf-table.hh HB_OT_GLYF_TABLE_HH 1367 -
hb-ot-hdmx-table.hh hdmx -- Horizontal Device Metrics https://docs.microsoft.com/en-us/typography/opentype/spec/hdmx 5137 -
hb-ot-head-table.hh head -- Font Header https://docs.microsoft.com/en-us/typography/opentype/spec/head 7713 -
hb-ot-hhea-table.hh hhea -- Horizontal Header https://docs.microsoft.com/en-us/typography/opentype/spec/hhea vhea -- Vertical Header https://docs.microsoft.com/en-us/typography/opentype/spec/vhea 3406 -
hb-ot-hmtx-table.hh hmtx -- Horizontal Metrics https://docs.microsoft.com/en-us/typography/opentype/spec/hmtx vmtx -- Vertical Metrics https://docs.microsoft.com/en-us/typography/opentype/spec/vmtx 15446 -
hb-ot-kern-table.hh kern -- Kerning https://docs.microsoft.com/en-us/typography/opentype/spec/kern https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6kern.html 12371 -
hb-ot-layout-base-table.hh BASE -- Baseline https://docs.microsoft.com/en-us/typography/opentype/spec/base 26957 -
hb-ot-layout-common.hh IN/OUT 148478 -
hb-ot-layout-gdef-table.hh HB_OT_LAYOUT_GDEF_TABLE_HH 1349 -
hb-ot-layout-gpos-table.hh Out-of-class implementation for methods recursing 3122 -
hb-ot-layout-gsub-table.hh Out-of-class implementation for methods recursing 3697 -
hb-ot-layout-gsubgpos.hh Have we visited this lookup with the current set of glyphs? 158960 -
hb-ot-layout-jstf-table.hh JstfModList -- Justification Modification List Tables 7249 -
hb-ot-layout.cc SECTION:hb-ot-layout @title: hb-ot-layout @short_description: OpenType Layout @include: hb-ot.h Functions for querying OpenType Layout features in the font face. See the [OpenType specification](http://www.microsoft.com/typography/otspec/) for details. 93143 -
hb-ot-layout.h HB_OT_TAG_BASE: OpenType [Baseline Table](https://docs.microsoft.com/en-us/typography/opentype/spec/base). 19223 -
hb-ot-layout.hh kern 19846 -
hb-ot-map.cc Fetch script/language indices for GSUB/GPOS. We need these later to skip features not available in either table and not waste precious bits for them. 12733 -
hb-ot-map.hh should be first for our bsearch to work 9787 -
hb-ot-math-table.hh The X or Y value in design units 38094 -
hb-ot-math.cc SECTION:hb-ot-math @title: hb-ot-math @short_description: OpenType Math information @include: hb-ot.h Functions for fetching mathematics layout data from OpenType fonts. HarfBuzz itself does not implement a math layout solution. The functions and types provided can be used by client programs to access the font data necessary for typesetting OpenType Math layout. 12300 -
hb-ot-math.h MATH 13761 -
hb-ot-maxp-table.hh maxp -- Maximum Profile https://docs.microsoft.com/en-us/typography/opentype/spec/maxp 5178 -
hb-ot-meta-table.hh meta -- Metadata Table https://docs.microsoft.com/en-us/typography/opentype/spec/meta https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6meta.html 3956 -
hb-ot-meta.cc SECTION:hb-ot-meta @title: hb-ot-meta @short_description: OpenType Metadata @include: hb-ot.h Functions for fetching metadata from fonts. 2433 -
hb-ot-meta.h hb_ot_meta_tag_t: @HB_OT_META_TAG_DESIGN_LANGUAGES: Design languages. Text, using only Basic Latin (ASCII) characters. Indicates languages and/or scripts for the user audiences that the font was primarily designed for. @HB_OT_META_TAG_SUPPORTED_LANGUAGES: Supported languages. Text, using only Basic Latin (ASCII) characters. Indicates languages and/or scripts that the font is declared to be capable of supporting. Known metadata tags from https://docs.microsoft.com/en-us/typography/opentype/spec/meta Since: 2.6.0 2553 -
hb-ot-metrics.cc SECTION:hb-ot-metrics @title: hb-ot-metrics @short_description: OpenType Metrics @include: hb-ot.h Functions for fetching metrics from fonts. 15524 -
hb-ot-metrics.h hb_ot_metrics_tag_t: @HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER: horizontal ascender. @HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER: horizontal descender. @HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP: horizontal line gap. @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT: horizontal clipping ascent. @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT: horizontal clipping descent. @HB_OT_METRICS_TAG_VERTICAL_ASCENDER: vertical ascender. @HB_OT_METRICS_TAG_VERTICAL_DESCENDER: vertical descender. @HB_OT_METRICS_TAG_VERTICAL_LINE_GAP: vertical line gap. @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE: horizontal caret rise. @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN: horizontal caret run. @HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET: horizontal caret offset. @HB_OT_METRICS_TAG_VERTICAL_CARET_RISE: vertical caret rise. @HB_OT_METRICS_TAG_VERTICAL_CARET_RUN: vertical caret run. @HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET: vertical caret offset. @HB_OT_METRICS_TAG_X_HEIGHT: x height. @HB_OT_METRICS_TAG_CAP_HEIGHT: cap height. @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE: subscript em x size. @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE: subscript em y size. @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET: subscript em x offset. @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET: subscript em y offset. @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE: superscript em x size. @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE: superscript em y size. @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET: superscript em x offset. @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET: superscript em y offset. @HB_OT_METRICS_TAG_STRIKEOUT_SIZE: strikeout size. @HB_OT_METRICS_TAG_STRIKEOUT_OFFSET: strikeout offset. @HB_OT_METRICS_TAG_UNDERLINE_SIZE: underline size. @HB_OT_METRICS_TAG_UNDERLINE_OFFSET: underline offset. Metric tags corresponding to [MVAR Value Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags) Since: 2.6.0 6020 -
hb-ot-metrics.hh OUT. May be NULL. 1363 -
hb-ot-name-language-static.hh Following two tables were generated by joining FreeType, FontConfig, and OpenType specification language lists, then filled in missing entries using: https://docs.microsoft.com/en-us/windows/desktop/intl/language-identifier-constants-and-strings 16705 -
hb-ot-name-language.hh HB_OT_NAME_LANGUAGE_HH 1391 -
hb-ot-name-table.hh HB_OT_NAME_TABLE_HH 1232 -
hb-ot-name.cc SECTION:hb-ot-name @title: hb-ot-name @short_description: OpenType font name information @include: hb-ot.h Functions for fetching name strings from OpenType fonts. 6135 -
hb-ot-name.h HB_OT_NAME_ID_RESERVED = 15, 5536 -
hb-ot-os2-table.hh OS/2 and Windows Metrics https://docs.microsoft.com/en-us/typography/opentype/spec/os2 12805 -
hb-ot-os2-unicode-ranges.hh Note: The contents of this array was generated using gen-os2-unicode-ranges.py. 10125 -
hb-ot-post-macroman.hh Make checks happy. 5696 -
hb-ot-post-table-v2subset.hh post -- PostScript https://docs.microsoft.com/en-us/typography/opentype/spec/post 5121 -
hb-ot-post-table.hh post -- PostScript https://docs.microsoft.com/en-us/typography/opentype/spec/post 10247 -
hb-ot-shape-fallback.cc Thai / Lao need some per-character work. 19677 -
hb-ot-shape-fallback.hh HB_OT_SHAPE_FALLBACK_HH 1904 -
hb-ot-shape-normalize.cc HIGHLEVEL DESIGN: This file exports one main function: _hb_ot_shape_normalize(). This function closely reflects the Unicode Normalization Algorithm, yet it's different. Each shaper specifies whether it prefers decomposed (NFD) or composed (NFC). The logic however tries to use whatever the font can support. In general what happens is that: each grapheme is decomposed in a chain of 1:2 decompositions, marks reordered, and then recomposed if desired, so far it's like Unicode Normalization. However, the decomposition and recomposition only happens if the font supports the resulting characters. The goals are: - Try to render all canonically equivalent strings similarly. To really achieve this we have to always do the full decomposition and then selectively recompose from there. It's kinda too expensive though, so we skip some cases. For example, if composed is desired, we simply don't touch 1-character clusters that are supported by the font, even though their NFC may be different. - When a font has a precomposed character for a sequence but the 'ccmp' feature in the font is not adequate, use the precomposed character which typically has better mark positioning. - When a font does not support a combining mark, but supports it precomposed with previous base, use that. This needs the itemizer to have this knowledge too. We need to provide assistance to the itemizer. - When a font does not support a character but supports its canonical decomposition, well, use the decomposition. - The shapers can customize the compose and decompose functions to offload some of their requirements to the normalizer. For example, the Indic shaper may want to disallow recomposing of two matras. 15460 -
hb-ot-shape-normalize.hh buffer var allocations, used during the normalization process 3365 -
hb-ot-shape.cc https://github.com/harfbuzz/harfbuzz/issues/2124 39505 -
hb-ot-shape.h TODO port to shape-plan / set. 1972 -
hb-ot-shape.hh In the order that they are filled in. 4488 -
hb-ot-shaper-arabic-fallback.hh Features ordered the same as the entries in shaping_table rows, followed by rlig. Don't change. We currently support one subtable per lookup, and one lookup per feature. But we allow duplicate features, so we use that! 13157 -
hb-ot-shaper-arabic-joining-list.hh == Start of generated function == 1076 -
hb-ot-shaper-arabic-pua.hh == Start of generated table == 7509 -
hb-ot-shaper-arabic-table.hh == Start of generated table == 24948 -
hb-ot-shaper-arabic-win1256.hh The macros in the first part of this file are generic macros that can be used to define the bytes for OpenType table data in code in a readable manner. We can move the macros to reside with their respective struct types, but since we only use these to define one data table, the Windows-1256 Arabic shaping table in this file, we keep them here. 9674 -
hb-ot-shaper-arabic.cc buffer var allocations 24650 -
hb-ot-shaper-arabic.hh HB_OT_SHAPER_ARABIC_HH 1648 -
hb-ot-shaper-default.cc collect_features 2343 -
hb-ot-shaper-hangul.cc Hangul shaper 13011 -
hb-ot-shaper-hebrew.cc Hebrew presentation-form shaping. https://bugzilla.mozilla.org/show_bug.cgi?id=728866 Hebrew presentation forms with dagesh, for characters U+05D0..05EA; Note that some letters do not have a dagesh presForm encoded. 5816 -
hb-ot-shaper-indic-machine.hh buffer var allocations 43893 -
hb-ot-shaper-indic-machine.rl 4399 -
hb-ot-shaper-indic-table.cc == Start of generated table == 27475 -
hb-ot-shaper-indic.cc Indic shaper. 51073 -
hb-ot-shaper-indic.hh Visual positions in a syllable from left to right. 1717 -
hb-ot-shaper-khmer-machine.hh buffer var allocations 12157 -
hb-ot-shaper-khmer-machine.rl 3505 -
hb-ot-shaper-khmer.cc Khmer shaper. 10865 -
hb-ot-shaper-myanmar-machine.hh buffer var allocations 21456 -
hb-ot-shaper-myanmar-machine.rl 4363 -
hb-ot-shaper-myanmar.cc Myanmar shaper. 10808 -
hb-ot-shaper-syllabic.cc Insert dottedcircle after possible Repha. 3533 -
hb-ot-shaper-syllabic.hh HB_OT_SHAPER_SYLLABIC_HH 1611 -
hb-ot-shaper-thai.cc Thai / Lao shaper 12169 -
hb-ot-shaper-use-machine.hh buffer var allocations 37116 -
hb-ot-shaper-use-machine.rl 9115 -
hb-ot-shaper-use-table.hh == Start of generated table == 54285 -
hb-ot-shaper-use.cc Universal Shaping Engine. https://docs.microsoft.com/en-us/typography/script-development/use 14493 -
hb-ot-shaper-vowel-constraints.cc == Start of generated functions == 11271 -
hb-ot-shaper-vowel-constraints.hh HB_OT_SHAPER_VOWEL_CONSTRAINTS_HH 1465 -
hb-ot-shaper.hh buffer var allocations, used by all OT shapers 11979 -
hb-ot-stat-table.hh STAT -- Style Attributes https://docs.microsoft.com/en-us/typography/opentype/spec/stat 21222 -
hb-ot-tag-table.hh == Start of generated table == 189876 -
hb-ot-tag.cc hb_script_t 18546 -
hb-ot-var-avar-table.hh avar -- Axis Variations https://docs.microsoft.com/en-us/typography/opentype/spec/avar 15131 -
hb-ot-var-common.hh https://docs.microsoft.com/en-us/typography/opentype/spec/otvarcommonformats#tuplevariationheader 72872 -
hb-ot-var-cvar-table.hh cvar -- control value table (CVT) Variations https://docs.microsoft.com/en-us/typography/opentype/spec/cvar 8658 -
hb-ot-var-fvar-table.hh fvar -- Font Variations https://docs.microsoft.com/en-us/typography/opentype/spec/fvar 15594 -
hb-ot-var-gvar-table.hh gvar -- Glyph Variation Table https://docs.microsoft.com/en-us/typography/opentype/spec/gvar 32378 -
hb-ot-var-hvar-table.hh dual as TSB 15347 -
hb-ot-var-mvar-table.hh Four-byte tag identifying a font-wide measure. 5728 -
hb-ot-var-varc-table.hh HB_OT_VAR_VARC_TABLE_HH 1243 -
hb-ot-var.cc SECTION:hb-ot-var @title: hb-ot-var @short_description: OpenType Font Variations @include: hb-ot.h Functions for fetching information about OpenType Variable Fonts. 10501 -
hb-ot-var.h HB_OT_TAG_VAR_AXIS_ITALIC: Registered tag for the roman/italic axis. 5209 -
hb-ot-vorg-table.hh VORG -- Vertical Origin Table https://docs.microsoft.com/en-us/typography/opentype/spec/vorg 3721 -
hb-ot.h HB_OT_H 1502 -
hb-outline.cc pacify compiler 8602 -
hb-outline.hh HB_OUTLINE_HH 2164 -
hb-paint-bounded.cc This file implements boundedness computation of COLRv1 fonts as described in: https://learn.microsoft.com/en-us/typography/opentype/spec/colr#glyph-metrics-and-boundedness 6539 -
hb-paint-bounded.hh HB_PAINT_BOUNDED_HH 2821 -
hb-paint-extents.cc This file implements bounds-extraction computation of COLRv1 fonts as described in: https://learn.microsoft.com/en-us/typography/opentype/spec/colr#glyph-metrics-and-boundedness 7911 -
hb-paint-extents.hh Transform extents and push a new clip. 3594 -
hb-paint.cc SECTION: hb-paint @title: hb-paint @short_description: Glyph painting @include: hb.h Functions for painting glyphs. The main purpose of these functions is to paint (extract) color glyph layers from the COLRv1 table, but the API works for drawing ordinary outlines and images as well. The #hb_paint_funcs_t struct can be used with hb_font_paint_glyph(). 22762 -
hb-paint.h hb_paint_funcs_t: Glyph paint callbacks. The callbacks assume that the caller maintains a stack of current transforms, clips and intermediate surfaces, as evidenced by the pairs of push/pop callbacks. The push/pop calls will be properly nested, so it is fine to store the different kinds of object on a single stack. Not all callbacks are required for all kinds of glyphs. For rendering COLRv0 or non-color outline glyphs, the gradient callbacks are not needed, and the composite callback only needs to handle simple alpha compositing (#HB_PAINT_COMPOSITE_MODE_SRC_OVER). The paint-image callback is only needed for glyphs with image blobs in the CBDT, sbix or SVG tables. The custom-palette-color callback is only necessary if you want to override colors from the font palette with custom colors. Since: 7.0.0 40140 -
hb-paint.hh ^--- Add new callbacks here 8957 -
hb-priority-queue.hh hb_priority_queue_t Priority queue implemented as a binary heap. Supports extract minimum and insert operations. The priority queue is implemented as a binary heap, which is a complete binary tree. The root of the tree is the minimum element. The heap property is that the priority of a node is less than or equal to the priority of its children. The heap is stored in an array, with the children of node i stored at indices 2i + 1 and 2i + 2. 4658 -
hb-repacker.hh For a detailed writeup on the overflow resolution algorithm see: docs/repacker.md 18120 -
hb-sanitize.hh Sanitize === Introduction === The sanitize machinery is at the core of our zero-cost font loading. We mmap() font file into memory and create a blob out of it. Font subtables are returned as a readonly sub-blob of the main font blob. These table blobs are then sanitized before use, to ensure invalid memory access does not happen. The toplevel sanitize API use is like, eg. to load the 'head' table: hb_blob_t *head_blob = hb_sanitize_context_t ().reference_table<OT::head> (face); The blob then can be converted to a head table struct with: const head *head_table = head_blob->as<head> (); What the reference_table does is, to call hb_face_reference_table() to load the table blob, sanitize it and return either the sanitized blob, or empty blob if sanitization failed. The blob->as() function returns the null object of its template type argument if the blob is empty. Otherwise, it just casts the blob contents to the desired type. Sanitizing a blob of data with a type T works as follows (with minor simplification): - Cast blob content to T*, call sanitize() method of it, - If sanitize succeeded, return blob. - Return empty blob otherwise. === The sanitize() contract === The sanitize() method of each object type shall return `true` if it's safe to call other methods of the object, and `false` otherwise. Note that what sanitize() checks for might align with what the specification describes as valid table data, but does not have to be. In particular, we do NOT want to be pedantic and concern ourselves with validity checks that are irrelevant to our use of the table. On the contrary, we want to be lenient with error handling and accept invalid data to the extent that it does not impose extra burden on us. Based on the sanitize contract, one can see that what we check for depends on how we use the data in other table methods. Ie. if other table methods assume that offsets do NOT point out of the table data block, then that's something sanitize() must check for (GSUB/GPOS/GDEF/etc work this way). On the other hand, if other methods do such checks themselves, then sanitize() does not have to bother with them (glyf/local work this way). The choice depends on the table structure and sanitize() performance. For example, to check glyf/loca offsets in sanitize() would cost O(num-glyphs). We try hard to avoid such costs during font loading. By postponing such checks to the actual glyph loading, we reduce the sanitize cost to O(1) and total runtime cost to O(used-glyphs). As such, this is preferred. The same argument can be made re GSUB/GPOS/GDEF, but there, the table structure is so complicated that by checking all offsets at sanitize() time, we make the code much simpler in other methods, as offsets and referenced objects do not need to be validated at each use site. Note: Sanitize was named so because it used to try to recover from errors by modifying the data to make it valid. This is no longer the case, as it could make HarfBuzz hallucinate new rules if there was aliasing in the data. However, the name stuck. See: https://behdad.github.io/harfbust/ 13759 -
hb-script-list.h This file belongs to the middle of hb-common.h. The reason it has been surgically extracted is because FreeType imports types and enums from hb-common.h, and since this enum is large and growing, we want to make it easy to just copy the file over to FreeType. https://github.com/harfbuzz/harfbuzz/issues/5271 20312 -
hb-serialize.hh Serialize 23593 -
hb-set-digest.hh The set-digests implement "filters" that support "approximate member query". Conceptually these are like Bloom Filter and Quotient Filter, however, much smaller, faster, and designed to fit the requirements of our uses for glyph coverage queries. Our filters are highly accurate if the lookup covers fairly local set of glyphs, but fully flooded and ineffective if coverage is all over the place. The way these are used is that the filter is first populated by a lookup's or subtable's Coverage table(s), and then when we want to apply the lookup or subtable to a glyph, before trying to apply, we ask the filter if the glyph may be covered. If it's not, we return early. We can also match a digest against another digest. We use these filters at three levels: - If the digest for all the glyphs in the buffer as a whole does not match the digest for the lookup, skip the lookup. - For each glyph, if it doesn't match the lookup digest, skip it. - For each glyph, if it doesn't match the subtable digest, skip it. The filter we use is a combination of three bits-pattern filters. A bits-pattern filter checks a number of bits (5 or 6) of the input number (glyph-id in most cases) and checks whether its pattern is amongst the patterns of any of the accepted values. The accepted patterns are represented as a "long" integer. Each check is done using four bitwise operations only. 5454 -
hb-set.cc SECTION:hb-set @title: hb-set @short_description: Objects representing a set of integers @include: hb.h Set objects represent a mathematical set of integer values. They are used in non-shaping APIs to query certain sets of characters or glyphs, or other integer values. 13636 -
hb-set.h HB_SET_VALUE_INVALID: Unset #hb_set_t value. Since: 0.9.21 5054 -
hb-set.hh Might return false if array looks unsorted. Used for faster rejection of corrupt data. 7189 -
hb-shape-plan.cc SECTION:hb-shape-plan @title: hb-shape-plan @short_description: Object representing a shaping plan @include: hb.h Shape plans are an internal mechanism. Each plan contains state describing how HarfBuzz will shape a particular text segment, based on the combination of segment properties and the capabilities in the font face in use. Shape plans are not used for shaping directly, but can be queried to access certain information about how shaping will perform, given a set of specific input parameters (script, language, direction, features, etc.). Most client programs will not need to deal with shape plans directly. 16466 -
hb-shape-plan.h hb_shape_plan_t: Data type for holding a shaping plan. Shape plans contain information about how HarfBuzz will shape a particular text segment, based on the segment's properties and the capabilities in the font face in use. Shape plans can be queried about how shaping will perform, given a set of specific input parameters (script, language, direction, features, etc.). 4121 -
hb-shape-plan.hh We don't carry a reference to face. 2429 -
hb-shape.cc SECTION:hb-shape @title: hb-shape @short_description: Conversion of text strings into positioned glyphs @include: hb.h Shaping is the central operation of HarfBuzz. Shaping operates on buffers, which are sequences of Unicode characters that use the same font and have the same text direction, script, and language. After shaping the buffer contains the output glyphs and their positions. 12862 -
hb-shape.h IN/OUT 2344 -
hb-shaper-impl.hh HB_SHAPER_IMPL_HH 1332 -
hb-shaper-list.hh HB_SHAPER_LIST_HH 2011 -
hb-shaper.cc Reorder shaper list to prefer requested shapers. 2985 -
hb-shaper.hh Type forward declaration. 4622 -
hb-static.cc thread_local 3480 -
hb-string-array.hh Make checks happy. 2925 -
hb-style.cc SECTION:hb-style @title: hb-style @short_description: Font Styles @include: hb.h Functions for fetching style information from fonts. 3902 -
hb-style.h hb_style_tag_t: @HB_STYLE_TAG_ITALIC: Used to vary between non-italic and italic. A value of 0 can be interpreted as "Roman" (non-italic); a value of 1 can be interpreted as (fully) italic. @HB_STYLE_TAG_OPTICAL_SIZE: Used to vary design to suit different text sizes. Non-zero. Values can be interpreted as text size, in points. @HB_STYLE_TAG_SLANT_ANGLE: Used to vary between upright and slanted text. Values must be greater than -90 and less than +90. Values can be interpreted as the angle, in counter-clockwise degrees, of oblique slant from whatever the designer considers to be upright for that font design. Typical right-leaning Italic fonts have a negative slant angle (typically around -12) @HB_STYLE_TAG_SLANT_RATIO: same as @HB_STYLE_TAG_SLANT_ANGLE expression as ratio. Typical right-leaning Italic fonts have a positive slant ratio (typically around 0.2) @HB_STYLE_TAG_WIDTH: Used to vary width of text from narrower to wider. Non-zero. Values can be interpreted as a percentage of whatever the font designer considers “normal width” for that font design. @HB_STYLE_TAG_WEIGHT: Used to vary stroke thicknesses or other design details to give variation from lighter to blacker. Values can be interpreted in direct comparison to values for usWeightClass in the OS/2 table, or the CSS font-weight property. Defined by [OpenType Design-Variation Axis Tag Registry](https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg). Since: 3.0.0 3340 -
hb-subset-accelerator.hh HB_SUBSET_ACCELERATOR_HH 3766 -
hb-subset-cff-common.cc Disable FDSelect format 0 for compatibility with fonttools which doesn't seem choose it. Rarely any/much smaller than format 3 anyway. 6730 -
hb-subset-cff-common.hh Used for writing a temporary charstring 34658 -
hb-subset-cff1.cc a copy of a parsed out cff1_top_dict_values_t augmented with additional operators 28232 -
hb-subset-cff2.cc dummy opcodes in CFF2. ignore 19566 -
hb-subset-input.cc 26384 -
hb-subset-input.hh HB_SUBSET_INPUT_HH 4132 -
hb-subset-instancer-iup.cc This file is a straight port of the following: https://github.com/fonttools/fonttools/blob/main/Lib/fontTools/varLib/iup.py Where that file returns optimzied deltas vector, we return optimized referenced point indices. 17458 -
hb-subset-instancer-iup.hh given contour points and deltas, optimize a set of referenced points within error tolerance. Returns optimized referenced point indices 2089 -
hb-subset-instancer-solver.cc This file is a straight port of the following: https://github.com/fonttools/fonttools/blob/f73220816264fc383b8a75f2146e8d69e455d398/Lib/fontTools/varLib/instancer/solver.py Where that file returns None for a triple, we return Triple{}. This should be safe. 13861 -
hb-subset-instancer-solver.hh pre-normalized distances 3827 -
hb-subset-plan-layout.cc Removes all tags from 'tags' that are not in filter. Additionally eliminates any duplicates. Returns true if anything was removed (not including duplicates). 14300 -
hb-subset-plan-member-list.hh HB_SUBSET_PLAN_MEMBER_LIST_HH 7597 -
hb-subset-plan-var.cc OUT 16357 -
hb-subset-plan.cc OUT 28926 -
hb-subset-plan.hh 10179 -
hb-subset-serialize.cc hb_subset_serialize_or_fail: @table_tag: tag of the table being packed, needed to allow table specific optimizations. @hb_objects: raw array of struct hb_subset_serialize_object_t, which provides object graph info @num_hb_objs: number of hb_subset_serialize_object_t in the hb_objects array. Given the input object graph info, repack a table to eliminate offset overflows and serialize it into a continuous array of bytes. A nullptr is returned if the serializing attempt fails. Table specific optimizations (eg. extension promotion in GSUB/GPOS) may be performed. Passing HB_TAG_NONE will disable table specific optimizations. Since: 10.2.0 2340 -
hb-subset-serialize.h hb_subset_serialize_link_t: @width: offsetSize in bytes @position: position of the offset field in bytes from beginning of subtable @objidx: index of subtable Represents a link between two objects in the object graph to be serialized. Since: 10.2.0 2639 -
hb-subset-table-cff.cc hb_subset_cff_get_charstring_data: @face: A face object @glyph_index: Glyph index to get data for. Returns the raw outline data from the CFF/CFF2 table associated with the given glyph index. XSince: EXPERIMENTAL 3961 -
hb-subset-table-color.cc skip CBDT, handled by CBLC 844 -
hb-subset-table-layout.cc 927 -
hb-subset-table-other.cc skip hhea, handled by hmtx 1663 -
hb-subset-table-var.cc 1625 -
hb-subset-table.hh OUT 6944 -
hb-subset.cc SECTION:hb-subset @title: hb-subset @short_description: Subsets font files. @include: hb-subset.h Subsetting reduces the codepoint coverage of font files and removes all data that is no longer needed. A subset input describes the desired subset. The input is provided along with a font to the subsetting operation. Output is a new font file containing only the data specified in the input. Currently most outline and bitmap tables are supported: glyf, CFF, CFF2, sbix, COLR, and CBDT/CBLC. This also includes fonts with variable outlines via OpenType variations. Notably EBDT/EBLC and SVG are not supported. Layout subsetting is supported only for OpenType Layout tables (GSUB, GPOS, GDEF). Notably subsetting of graphite or AAT tables is not yet supported. Fonts with graphite or AAT tables may still be subsetted but will likely need to use the retain glyph ids option and configure the subset to pass through the layout tables untouched. 13703 -
hb-subset.h hb_subset_input_t: Things that change based on the input. Characters to keep, etc. 10488 -
hb-subset.hh HB_SUBSET_HH 2467 -
hb-ucd-table.hh == Start of generated table == 420689 -
hb-ucd.cc Copyright (C) 2012 Grigori Goronzy <greg@kinoho.net> Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 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. 7196 -
hb-unicode-emoji-table.hh == Start of generated table == 3874 -
hb-unicode.cc SECTION: hb-unicode @title: hb-unicode @short_description: Unicode character property access @include: hb.h Unicode functions are used to access Unicode character properties. With these functions, client programs can query various properties from the Unicode Character Database for any code point, such as General Category (gc), Script (sc), Canonical Combining Class (ccc), etc. Client programs can optionally pass in their own Unicode functions that implement the same queries. The set of functions available is defined by the virtual methods in #hb_unicode_funcs_t. HarfBuzz provides built-in default functions for each method in #hb_unicode_funcs_t. 17313 -
hb-unicode.h HB_UNICODE_MAX: Maximum valid Unicode code point. Since: 1.9.0 22980 -
hb-unicode.hh hb_unicode_funcs_t 16921 -
hb-uniscribe.cc SECTION:hb-uniscribe @title: hb-uniscribe @short_description: Windows integration @include: hb-uniscribe.h Functions for using HarfBuzz with Windows fonts. 25090 -
hb-uniscribe.h HB_UNISCRIBE_H 1391 -
hb-utf.hh Written to only accept well-formed sequences. Based on ideas from ICU's U8_NEXT. Generates one "replacement" for each ill-formed byte. 11163 -
hb-vector.hh < 0 means allocation failed. 18683 -
hb-version.h HB_VERSION_MAJOR: The major component of the library version available at compile-time. 2597 -
hb-version.h.in 2653 -
hb-wasm-api-blob.hh HB_WASM_API_BLOB_HH 1453 -
hb-wasm-api-buffer.hh 6054 -
hb-wasm-api-common.hh HB_WASM_API_COMMON_HH 1444 -
hb-wasm-api-face.hh HB_WASM_API_FACE_HH 2717 -
hb-wasm-api-font.hh 7284 -
hb-wasm-api-list.hh Note: the array must be static defined since runtime will keep it after registration. Also not const, because it modifies it (sorts it). https://github.com/bytecodealliance/wasm-micro-runtime/blob/main/doc/export_native_api.md TODO Allocate this lazily in _hb_wasm_init(). 3950 -
hb-wasm-api-shape.hh Pre-conditions that make hb_shape_full() crash should be checked here. 2148 -
hb-wasm-api.cc 1465 -
hb-wasm-api.h #include "hb.h" HB_BEGIN_DECLS HB_END_DECLS 8063 -
hb-wasm-api.hh Check object type. 3826 -
hb-wasm-shape.cc Compile wasm-micro-runtime with: $ cmake -DWAMR_BUILD_MULTI_MODULE=1 -DWAMR_BUILD_REF_TYPES=1 -DWAMR_BUILD_FAST_JIT=1 $ make If you manage to build a wasm shared module successfully and want to use it, do the following: - Add -DWAMR_BUILD_MULTI_MODULE=1 to your cmake build for wasm-micro-runtime, - Remove the #define HB_WASM_NO_MODULES line below, - Install your shared module with name ending in .wasm in $(prefix)/$(libdir)/harfbuzz/wasm/ - Build your font's wasm code importing the shared modules with the desired name. This can be done eg.: __attribute__((import_module("graphite2"))) before each symbol in the shared-module's headers. - Try shaping your font and hope for the best... I haven't been able to get this to work since emcc's support for shared libraries requires support from the host that seems to be missing from wasm-micro-runtime? 12216 -
hb.h HB_H 1555 -
hb.hh Unknown pragma 18542 -
justify.py 7962 -
main.cc _png API is so easy to use unlike the below code, don't get confused 16856 -
meson.build 33746 -
moz.build 3822 -
ms-use -
OT -
relative_to.py 102 -
rust -
sample.py 1832 -
update-unicode-tables.make 2509 -
wasm -